Difference between revisions of "MediaWiki:Common.js"

From Team Fortress Wiki
Jump to: navigation, search
m (Porting over from portal wiki: Fix for Chrome not displaying HD)
m (Enable custom CSS for User:Payn)
 
(175 intermediate revisions by 10 users not shown)
Line 1: Line 1:
// Note: This is a compressed version of the JavaScript code, for faster loading.
+
// This is the non-compressed version of MediaWiki:Common.js
// See http://wiki.teamfortress.com/wiki/MediaWiki:Common.js/Code.js for full readable code and licensing
 
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(12(E,B){12 ka(a,b,d){if(d===B&&a.1j===1){d=a.2y("1m-"+b);if(1k d==="1N"){1V{d=d==="1d"?1d:d==="1e"?1e:d==="1b"?1b:!c.6i(d)?28(d):cf.1i(d)?c.am(d):d}1X(e){}c.1m(a,b,d)}1a d=B}14 d}12 U(){14 1e}12 ca(){14 1d}12 la(a,b,d){d[0].1n=a;14 c.1s.2L.2a(b,d)}12 ds(a){17 b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.1m(6,6.1j?"2W":"6x");if(1k h==="12")h=h.2W;if(!(a.6t===6||!h||!h.4o||a.3K&&a.1n==="4y")){if(a.4k)A=4H("(^|\\\\.)"+a.4k.2M(".").4d("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)");a.6t=6;17 J=h.4o.2D(0);19(k=0;k<J.18;k++){h=J[k];h.8J.1D(X,"")===a.1n?f.1O(h.2j):J.3E(k--,1)}f=c(a.2I).5y(f,a.6y);o=0;19(x=f.18;o<x;o++){r=f[o];19(k=0;k<J.18;k++){h=J[k];if(r.2j===h.2j&&(!A||A.1i(h.4k))){l=r.1E;e=1b;if(h.8I==="5O"||h.8I==="61"){a.1n=h.8I;e=c(a.6J).5y(h.2j)[0]}if(!e||e!==l)C.1O({1E:l,5T:h,6L:r.6L})}}}o=0;19(x=C.18;o<x;o++){f=C[o];if(d&&f.6L>d)2i;a.6y=f.1E;a.1m=f.5T.1m;a.5T=f.5T;A=f.5T.cX.2a(f.1E,1I);if(A===1e||a.8l()){d=f.6L;if(A===1e)b=1e;if(a.8e())2i}}14 b}}12 Y(a,b){14(a&&a!=="*"?a+".":"")+b.1D(c7,"`").1D(c8,"&")}12 ma(a,b,d){if(c.1S(b))14 c.6h(a,12(f,h){14!!b.1p(f,h,f)===d});1a if(b.1j)14 c.6h(a,12(f){14 f===b===d});1a if(1k b==="1N"){17 e=c.6h(a,12(f){14 f.1j===1});if(dD.1i(b))14 c.29(b,e,!d);1a b=c.29(b,e)}14 c.6h(a,12(f){14 c.3U(f,b)>=0===d})}12 bH(a,b){17 d=0;b.1o(12(){if(6.1q===(a[d]&&a[d].1q)){17 e=c.1m(a[d++]),f=c.1m(6,e);if(e=e&&e.2W){3f f.2L;f.2W={};19(17 h in e)19(17 l in e[h])c.1s.3o(6,h,e[h][l],e[h][l].1m)}}})}12 cE(a,b){b.4I?c.6f({1K:b.4I,5l:1e,3m:"2K"}):c.ac(b.1Q||b.cQ||b.35||"");b.1r&&b.1r.3z(b)}12 aZ(a,b,d){17 e=b==="2b"?a.5N:a.7M;if(d==="4Y")14 e;c.1o(b==="2b"?dr:du,12(){d||(e-=28(c.1G(a,"67"+6))||0);if(d==="4K")e+=28(c.1G(a,"4K"+6))||0;1a e-=28(c.1G(a,"4Y"+6+"fE"))||0});14 e}12 da(a,b,d,e){if(c.3c(b)&&b.18)c.1o(b,12(f,h){d||cM.1i(a)?e(a,h):da(a+"["+(1k h==="2e"||c.3c(h)?f:"")+"]",h,d,e)});1a if(!d&&b!=1b&&1k b==="2e")c.5W(b)?e(a,""):c.1o(b,12(f,h){da(a+"["+f+"]",h,d,e)});1a e(a,b)}12 S(a,b){17 d={};c.1o(av.7W.2a([],av.2D(0,b)),12(){d[6]=a});14 d}12 9W(a){if(!ea[a]){17 b=c("<"+a+">").bV("1T"),d=b.1G("1M");b.2Q();if(d==="2H"||d==="")d="5x";ea[a]=d}14 ea[a]}12 fa(a){14 c.5b(a)?a:a.1j===9?a.6Y||a.i4:1e}17 t=E.1F,c=12(){12 a(){if(!b.77){1V{t.2g.cx("1R")}1X(j){3t(a,1);14}b.3B()}}17 b=12(j,s){14 3n b.fn.3Z(j,s)},d=E.3J,e=E.$,f,h=/^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]+)$)/,l=/\\S/,k=/^\\s+/,o=/\\s+$/,x=/\\W/,r=/\\d/,A=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,C=/^[\\],:{}\\s]*$/,J=/\\\\(?:["\\\\\\/i3]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\\\\n\\r]*"|1d|1e|1b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,I=/(?:^|:|,)(?:\\s*\\[)+/g,L=/(co)[ \\/]([\\w.]+)/,g=/(i5)(?:.*5z)?[ \\/]([\\w.]+)/,i=/(i6) ([\\w.]+)/,n=/(i8)(?:.*? i7:([\\w.]+))?/,m=i2.i1,p=1e,q=[],u,y=71.2C.3O,F=71.2C.hW,M=3j.2C.1O,N=3j.2C.2D,O=9B.2C.6c,D=3j.2C.2d,R={};b.fn=b.2C={3Z:12(j,s){17 v,z,H;if(!j)14 6;if(j.1j){6.2m=6[0]=j;6.18=1;14 6}if(j==="1T"&&!s&&t.1T){6.2m=t;6[0]=t.1T;6.2j="1T";6.18=1;14 6}if(1k j==="1N")if((v=h.22(j))&&(v[1]||!s))if(v[1]){H=s?s.2A||s:t;if(z=A.22(j))if(b.8V(s)){j=[t.24(z[1])];b.fn.1y.1p(j,s,1d)}1a j=[H.24(z[1])];1a{z=b.bM([v[1]],[H]);j=(z.bS?z.7g.5e(1d):z.7g).2N}14 b.58(6,j)}1a{if((z=t.2U(v[2]))&&z.1r){if(z.id!==v[2])14 f.1Y(j);6.18=1;6[0]=z}6.2m=t;6.2j=j;14 6}1a if(!s&&!x.1i(j)){6.2j=j;6.2m=t;j=t.26(j);14 b.58(6,j)}1a 14!s||s.7q?(s||f).1Y(j):b(s).1Y(j);1a if(b.1S(j))14 f.3B(j);if(j.2j!==B){6.2j=j.2j;6.2m=j.2m}14 b.4f(j,6)},2j:"",7q:"1.4.4",18:0,hV:12(){14 6.18},7F:12(){14 N.1p(6,0)},3l:12(j){14 j==1b?6.7F():j<0?6.2D(j)[0]:6[j]},3C:12(j,s,v){17 z=b();b.3c(j)?M.2a(z,j):b.58(z,j);z.b7=6;z.2m=6.2m;if(s==="1Y")z.2j=6.2j+(6.2j?" ":"")+v;1a if(s)z.2j=6.2j+"."+s+"("+v+")";14 z},1o:12(j,s){14 b.1o(6,j,s)},3B:12(j){b.ap();if(b.77)j.1p(t,b);1a q&&q.1O(j);14 6},eq:12(j){14 j===-1?6.2D(j):6.2D(j,+j+1)},5I:12(){14 6.eq(0)},7b:12(){14 6.eq(-1)},2D:12(){14 6.3C(N.2a(6,1I),"2D",N.1p(1I).4d(","))},39:12(j){14 6.3C(b.39(6,12(s,v){14 j.1p(s,v,s)}))},44:12(){14 6.b7||b(1b)},1O:M,4W:[].4W,3E:[].3E};b.fn.3Z.2C=b.fn;b.1L=b.fn.1L=12(){17 j,s,v,z,H,G=1I[0]||{},K=1,Q=1I.18,ga=1e;if(1k G==="7U"){ga=G;G=1I[1]||{};K=2}if(1k G!=="2e"&&!b.1S(G))G={};if(Q===K){G=6;--K}19(;K<Q;K++)if((j=1I[K])!=1b)19(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.8V(z)||(H=b.3c(z)))){if(H){H=1e;v=v&&b.3c(v)?v:[]}1a v=v&&b.8V(v)?v:{};G[s]=b.1L(ga,v,z)}1a if(z!==B)G[s]=z}14 G};b.1L({hU:12(j){E.$=e;if(j)E.3J=d;14 b},77:1e,8X:1,3B:12(j){j===1d&&b.8X--;if(!b.8X||j!==1d&&!b.77){if(!t.1T)14 3t(b.3B,1);b.77=1d;if(!(j!==1d&&--b.8X>0))if(q){17 s=0,v=q;19(q=1b;j=v[s++];)j.1p(t,b);b.fn.30&&b(t).30("3B").62("3B")}}},ap:12(){if(!p){p=1d;if(t.5n==="3L")14 3t(b.3B,1);if(t.3N){t.3N("cp",u,1e);E.3N("4J",b.3B,1e)}1a if(t.3P){t.3P("5m",u);E.3P("aB",b.3B);17 j=1e;1V{j=E.dz==1b}1X(s){}t.2g.cx&&j&&a()}}},1S:12(j){14 b.1n(j)==="12"},3c:3j.3c||12(j){14 b.1n(j)==="hY"},5b:12(j){14 j&&1k j==="2e"&&"cF"in j},6i:12(j){14 j==1b||!r.1i(j)||6i(j)},1n:12(j){14 j==1b?9B(j):R[y.1p(j)]||"2e"},8V:12(j){if(!j||b.1n(j)!=="2e"||j.1j||b.5b(j))14 1e;if(j.7X&&!F.1p(j,"7X")&&!F.1p(j.7X.2C,"hZ"))14 1e;19(17 s in j);14 s===B||F.1p(j,s)},5W:12(j){19(17 s in j)14 1e;14 1d},3g:12(j){d4 j},am:12(j){if(1k j!=="1N"||!j)14 1b;j=b.6c(j);if(C.1i(j.1D(J,"@").1D(w,"]").1D(I,"")))14 E.8S&&E.8S.cA?E.8S.cA(j):(3n 92("14 "+j))();1a b.3g("ic 8S: "+j)},7n:12(){},ac:12(j){if(j&&l.1i(j)){17 s=t.26("9n")[0]||t.2g,v=t.24("2K");v.1n="1Q/41";if(b.1B.97)v.2t(t.4p(j));1a v.1Q=j;s.3G(v,s.1C);s.3z(v)}},1q:12(j,s){14 j.1q&&j.1q.7H()===s.7H()},1o:12(j,s,v){17 z,H=0,G=j.18,K=G===B||b.1S(j);if(v)if(K)19(z in j){if(s.2a(j[z],v)===1e)2i}1a 19(;H<G;){if(s.2a(j[H++],v)===1e)2i}1a if(K)19(z in j){if(s.1p(j[z],z,j[z])===1e)2i}1a 19(v=j[0];H<G&&s.1p(v,H,v)!==1e;v=j[++H]);14 j},6c:O?12(j){14 j==1b?"":O.1p(j)}:12(j){14 j==1b?"":j.3O().1D(k,"").1D(o,"")},4f:12(j,s){17 v=s||[];if(j!=1b){17 z=b.1n(j);j.18==1b||z==="1N"||z==="12"||z==="iq"||b.5b(j)?M.1p(v,j):b.58(v,j)}14 v},3U:12(j,s){if(s.2d)14 s.2d(j);19(17 v=0,z=s.18;v<z;v++)if(s[v]===j)14 v;14-1},58:12(j,s){17 v=j.18,z=0;if(1k s.18==="4T")19(17 H=s.18;z<H;z++)j[v++]=s[z];1a 19(;s[z]!==B;)j[v++]=s[z++];j.18=v;14 j},6h:12(j,s,v){17 z=[],H;v=!!v;19(17 G=0,K=j.18;G<K;G++){H=!!s(j[G],G);v!==H&&z.1O(j[G])}14 z},39:12(j,s,v){19(17 z=[],H,G=0,K=j.18;G<K;G++){H=s(j[G],G,v);if(H!=1b)z[z.18]=H}14 z.7W.2a([],z)},2p:1,69:12(j,s,v){if(1I.18===2)if(1k s==="1N"){v=j;j=v[s];s=B}1a if(s&&!b.1S(s)){v=s;s=B}if(!s&&j)s=12(){14 j.2a(v||6,1I)};if(j)s.2p=j.2p=j.2p||s.2p||b.2p++;14 s},82:12(j,s,v,z,H,G){17 K=j.18;if(1k s==="2e"){19(17 Q in s)b.82(j,Q,s[Q],z,H,v);14 j}if(v!==B){z=!G&&z&&b.1S(v);19(Q=0;Q<K;Q++)H(j[Q],s,z?v.1p(j[Q],Q,H(j[Q],s)):v,G);14 j}14 K?H(j[0],s):B},2V:12(){14(3n bi).cH()},cm:12(j){j=j.1W();j=L.22(j)||g.22(j)||i.22(j)||j.2d("iu")<0&&n.22(j)||[];14{4P:j[1]||"",5z:j[2]||"0"}},4P:{}});b.1o("iv ix 9B 92 3j bi 4H 71".2M(" "),12(j,s){R["[2e "+s+"]"]=s.1W()});m=b.cm(m);if(m.4P){b.4P[m.4P]=1d;b.4P.5z=m.5z}if(b.4P.co)b.4P.iw=1d;if(D)b.3U=12(j,s){14 D.1p(s,j)};if(!/\\s/.1i("\\ip")){k=/^[\\s\\ct]+/;o=/[\\s\\ct]+$/}f=b(t);if(t.3N)u=12(){t.6p("cp",u,1e);b.3B()};1a if(t.3P)u=12(){if(t.5n==="3L"){t.8m("5m",u);b.3B()}};14 E.3J=E.$=b}();(12(){c.1B={};17 a=t.2g,b=t.24("2K"),d=t.24("1J"),e="2K"+c.2V();d.1g.1M="2H";d.35="  <3i/><2J></2J><a 2Y=\'/a\' 1g=\'2q:9q;8L:1R;2w:.55;\'>a</a><2T 1n=\'5p\'/>";17 f=d.26("*"),h=d.26("a")[0],l=t.24("33"),k=l.2t(t.24("5E"));if(!(!f||!f.18||!h)){c.1B={bn:d.1C.1j===3,3r:!d.26("3r").18,bZ:!!d.26("3i").18,1g:/9q/.1i(h.2y("1g")),c4:h.2y("2Y")==="/a",2w:/^0.55$/.1i(h.1g.2w),78:!!h.1g.78,cr:d.26("2T")[0].3s==="3I",io:k.2P,7V:1d,a9:1e,7u:1e,97:1e,bE:1d,5R:1b,9O:1e,az:1e,76:1d};l.4s=1d;c.1B.a9=!k.4s;b.1n="1Q/41";1V{b.2t(t.4p("5o."+e+"=1;"))}1X(o){}a.3G(b,a.1C);if(E[e]){c.1B.97=1d;3f E[e]}1V{3f b.1i}1X(x){c.1B.7V=1e}a.3z(b);if(d.3P&&d.cC){d.3P("9c",12 r(){c.1B.bE=1e;d.8m("9c",r)});d.5e(1d).cC("9c")}d=t.24("1J");d.35="<2T 1n=\'4E\' 3p=\'ie\' 4j=\'4j\'/>";a=t.cG();a.2t(d.1C);c.1B.7u=a.5e(1d).5e(1d).aJ.4j;c(12(){17 r=t.24("1J");r.1g.2b=r.1g.dt="5d";t.1T.2t(r);c.5R=c.1B.5R=r.5N===2;if("6E"in r.1g){r.1g.1M="66";r.1g.6E=1;c.1B.9O=r.5N===2;r.1g.1M="";r.35="<1J 1g=\'2b:ij;\'></1J>";c.1B.az=r.5N!==2}r.35="<2J><4q><4w 1g=\'67:0;1M:2H\'></4w><4w>t</4w></4q></2J>";17 A=r.26("4w");c.1B.76=A[0].7M===0;A[0].1g.1M="";A[1].1g.1M="2H";c.1B.76=c.1B.76&&A[0].7M===0;r.35="";t.1T.3z(r).1g.1M="2H"});a=12(r){17 A=t.24("1J");r="3I"+r;17 C=r in A;if(!C){A.2o(r,"14;");C=1k A[r]==="12"}14 C};c.1B.dP=a("4t");c.1B.dT=a("6R");a=b=d=f=h=1b}})();17 aj={},cf=/^(?:\\{.*\\}|\\[.*\\])$/;c.1L({3T:{},c3:0,3H:"3J"+c.2V(),6P:{6I:1d,2e:"im:il-hT-hS-hw-hv",hx:1d},1m:12(a,b,d){if(c.ah(a)){a=a==E?aj:a;17 e=a.1j,f=e?a[c.3H]:1b,h=c.3T;if(!(e&&!f&&1k b==="1N"&&d===B)){if(e)f||(a[c.3H]=f=++c.c3);1a h=a;if(1k b==="2e")if(e)h[f]=c.1L(h[f],b);1a c.1L(h,b);1a if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;14 1k b==="1N"?a[b]:a}}},68:12(a,b){if(c.ah(a)){a=a==E?aj:a;17 d=a.1j,e=d?a[c.3H]:a,f=c.3T,h=d?f[e]:e;if(b){if(h){3f h[b];d&&c.5W(h)&&c.68(a)}}1a if(d&&c.1B.7V)3f a[c.3H];1a if(a.5u)a.5u(c.3H);1a if(d)3f f[e];1a 19(17 l in a)3f a[l]}},ah:12(a){if(a.1q){17 b=c.6P[a.1q.1W()];if(b)14!(b===1d||a.2y("hA")!==b)}14 1d}});c.fn.1L({1m:12(a,b){17 d=1b;if(1k a==="3w"){if(6.18){17 e=6[0].a3,f;d=c.1m(6[0]);19(17 h=0,l=e.18;h<l;h++){f=e[h].3p;if(f.2d("1m-")===0){f=f.4v(5);ka(6[0],f,d[f])}}}14 d}1a if(1k a==="2e")14 6.1o(12(){c.1m(6,a)});17 k=a.2M(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=6.8v("hz"+k[1]+"!",[k[0]]);if(d===B&&6.18){d=c.1m(6[0],a);d=ka(6[0],a,d)}14 d===B&&k[1]?6.1m(k[0]):d}1a 14 6.1o(12(){17 o=c(6),x=[k[0],b];o.8v("ht"+k[1]+"!",x);c.1m(6,a,b);o.8v("hs"+k[1]+"!",x)})},68:12(a){14 6.1o(12(){c.68(6,a)})}});c.1L({3M:12(a,b,d){if(a){b=(b||"fx")+"3M";17 e=c.1m(a,b);if(!d)14 e||[];if(!e||c.3c(d))e=c.1m(a,b,c.4f(d));1a e.1O(d);14 e}},4Q:12(a,b){b=b||"fx";17 d=c.3M(a,b),e=d.4r();if(e==="aw")e=d.4r();if(e){b==="fx"&&d.7l("aw");e.1p(a,12(){c.4Q(a,b)})}}});c.fn.1L({3M:12(a,b){if(1k a!=="1N"){b=a;a="fx"}if(b===B)14 c.3M(6[0],a);14 6.1o(12(){17 d=c.3M(6,a,b);a==="fx"&&d[0]!=="aw"&&c.4Q(6,a)})},4Q:12(a){14 6.1o(12(){c.4Q(6,a)})},hm:12(a,b){a=c.fx?c.fx.7d[a]||a:a;b=b||"fx";14 6.3M(b,12(){17 d=6;3t(12(){c.4Q(d,b)},a)})},hl:12(a){14 6.3M(a||"fx",[])}});17 as=/[\\n\\t]/g,ha=/\\s+/,cn=/\\r/g,cB=/^(?:2Y|4I|1g)$/,cy=/^(?:3K|2T)$/i,c2=/^(?:3K|2T|2e|33|72)$/i,bX=/^a(?:hk)?$/i,ak=/^(?:4E|5p)$/i;c.6z={"19":"d2","2O":"21",hn:"dN",ho:"hq",fV:"hp",hB:"hC",hN:"hM",hO:"a1",hP:"hR",hQ:"hL"};c.fn.1L({1y:12(a,b){14 c.82(6,a,b,1d,c.1y)},hK:12(a){14 6.1o(12(){c.1y(6,a,"");6.1j===1&&6.5u(a)})},6Q:12(a){if(c.1S(a))14 6.1o(12(x){17 r=c(6);r.6Q(a.1p(6,x,r.1y("2O")))});if(a&&1k a==="1N")19(17 b=(a||"").2M(ha),d=0,e=6.18;d<e;d++){17 f=6[d];if(f.1j===1)if(f.21){19(17 h=" "+f.21+" ",l=f.21,k=0,o=b.18;k<o;k++)if(h.2d(" "+b[k]+" ")<0)l+=" "+b[k];f.21=c.6c(l)}1a f.21=a}14 6},5F:12(a){if(c.1S(a))14 6.1o(12(o){17 x=c(6);x.5F(a.1p(6,o,x.1y("2O")))});if(a&&1k a==="1N"||a===B)19(17 b=(a||"").2M(ha),d=0,e=6.18;d<e;d++){17 f=6[d];if(f.1j===1&&f.21)if(a){19(17 h=(" "+f.21+" ").1D(as," "),l=0,k=b.18;l<k;l++)h=h.1D(" "+b[l]+" "," ");f.21=c.6c(h)}1a f.21=""}14 6},cv:12(a,b){17 d=1k a,e=1k b==="7U";if(c.1S(a))14 6.1o(12(f){17 h=c(6);h.cv(a.1p(6,f,h.1y("2O"),b),b)});14 6.1o(12(){if(d==="1N")19(17 f,h=0,l=c(6),k=b,o=a.2M(ha);f=o[h++];){k=e?k:!l.2k(f);l[k?"6Q":"5F"](f)}1a if(d==="3w"||d==="7U"){6.21&&c.1m(6,"cl",6.21);6.21=6.21||a===1e?"":c.1m(6,"cl")||""}})},2k:12(a){a=" "+a+" ";19(17 b=0,d=6.18;b<d;b++)if((" "+6[b].21+" ").1D(as," ").2d(a)>-1)14 1d;14 1e},4Z:12(a){if(!1I.18){17 b=6[0];if(b){if(c.1q(b,"5E")){17 d=b.a3.3s;14!d||d.bY?b.3s:b.1Q}if(c.1q(b,"33")){17 e=b.8g;d=[];17 f=b.2c;b=b.1n==="33-6q";if(e<0)14 1b;17 h=b?e:0;19(e=b?e+1:f.18;h<e;h++){17 l=f[h];if(l.2P&&(c.1B.a9?!l.4s:l.2y("4s")===1b)&&(!l.1r.4s||!c.1q(l.1r,"c5"))){a=c(l).4Z();if(b)14 a;d.1O(a)}}14 d}if(ak.1i(b.1n)&&!c.1B.cr)14 b.2y("3s")===1b?"3I":b.3s;14(b.3s||"").1D(cn,"")}14 B}17 k=c.1S(a);14 6.1o(12(o){17 x=c(6),r=a;if(6.1j===1){if(k)r=a.1p(6,o,x.4Z());if(r==1b)r="";1a if(1k r==="4T")r+="";1a if(c.3c(r))r=c.39(r,12(C){14 C==1b?"":C+""});if(c.3c(r)&&ak.1i(6.1n))6.4j=c.3U(x.4Z(),r)>=0;1a if(c.1q(6,"33")){17 A=c.4f(r);c("5E",6).1o(12(){6.2P=c.3U(c(6).4Z(),A)>=0});if(!A.18)6.8g=-1}1a 6.3s=r}})}});c.1L({8E:{4Z:1d,1G:1d,2x:1d,1Q:1d,1m:1d,2b:1d,2z:1d,2u:1d},1y:12(a,b,d,e){if(!a||a.1j===3||a.1j===8)14 B;if(e&&b in c.8E)14 c(a)[b](d);e=a.1j!==1||!c.bG(a);17 f=d!==B;b=e&&c.6z[b]||b;17 h=cB.1i(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="1n"&&cy.1i(a.1q)&&a.1r&&c.3g("1n hG hH\'t be hJ");if(d===1b)a.1j===1&&a.5u(b);1a a[b]=d}if(c.1q(a,"6Z")&&a.5v(b))14 a.5v(b).8Q;if(b==="a1")14(b=a.5v("a1"))&&b.bY?b.3s:c2.1i(a.1q)||bX.1i(a.1q)&&a.2Y?0:B;14 a[b]}if(!c.1B.1g&&e&&b==="1g"){if(f)a.1g.c0=""+d;14 a.1g.c0}f&&a.2o(b,""+d);if(!a.a3[b]&&a.cc&&!a.cc(b))14 B;a=!c.1B.c4&&e&&h?a.2y(b,2):a.2y(b);14 a===1b?B:a}});17 X=/\\.(.*)$/,ia=/^(?:72|2T|33)$/i,c7=/\\./g,c8=/ /g,dW=/[^\\w\\s.|`]/g,dy=12(a){14 a.1D(dW,"\\\\$&")},9j={8N:0,5Q:0};c.1s={3o:12(a,b,d,e){if(!(a.1j===3||a.1j===8)){if(c.5b(a)&&a!==E&&!a.dz)a=E;if(d===1e)d=U;1a if(!d)14;17 f,h;if(d.3e){f=d;d=f.3e}if(!d.2p)d.2p=c.2p++;if(h=c.1m(a)){17 l=a.1j?"2W":"6x",k=h[l],o=h.2L;if(1k k==="12"){o=k.2L;k=k.2W}1a if(!k){a.1j||(h[l]=h=12(){});h.2W=k={}}if(!o)h.2L=o=12(){14 1k c!=="3w"&&!c.1s.9X?c.1s.2L.2a(o.1E,1I):B};o.1E=a;b=b.2M(" ");19(17 x=0,r;l=b[x++];){h=f?c.1L({},f):{3e:d,1m:e};if(l.2d(".")>-1){r=l.2M(".");l=r.4r();h.4k=r.2D(0).4W().4d(".")}1a{r=[];h.4k=""}h.1n=l;if(!h.2p)h.2p=d.2p;17 A=k[l],C=c.1s.49[l]||{};if(!A){A=k[l]=[];if(!C.4N||C.4N.1p(a,e,r,o)===1e)if(a.3N)a.3N(l,o,1e);1a a.3P&&a.3P("3I"+l,o)}if(C.3o){C.3o.1p(a,h);if(!h.3e.2p)h.3e.2p=d.2p}A.1O(h);c.1s.3R[l]=1d}a=1b}}},3R:{},2Q:12(a,b,d,e){if(!(a.1j===3||a.1j===8)){if(d===1e)d=U;17 f,h,l=0,k,o,x,r,A,C,J=a.1j?"2W":"6x",w=c.1m(a),I=w&&w[J];if(w&&I){if(1k I==="12"){w=I;I=I.2W}if(b&&b.1n){d=b.3e;b=b.1n}if(!b||1k b==="1N"&&b.jj(0)==="."){b=b||"";19(f in I)c.1s.2Q(a,f+b)}1a{19(b=b.2M(" ");f=b[l++];){r=f;k=f.2d(".")<0;o=[];if(!k){o=f.2M(".");f=o.4r();x=4H("(^|\\\\.)"+c.39(o.2D(0).4W(),dy).4d("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)")}if(A=I[f])if(d){r=c.1s.49[f]||{};19(h=e||0;h<A.18;h++){C=A[h];if(d.2p===C.2p){if(k||x.1i(C.4k)){e==1b&&A.3E(h--,1);r.2Q&&r.2Q.1p(a,C)}if(e!=1b)2i}}if(A.18===0||e!=1b&&A.18===1){if(!r.4L||r.4L.1p(a,o)===1e)c.b1(a,f,w.2L);3f I[f]}}1a 19(h=0;h<A.18;h++){C=A[h];if(k||x.1i(C.4k)){c.1s.2Q(a,r,C.3e,h);A.3E(h--,1)}}}if(c.5W(I)){if(b=w.2L)b.1E=1b;3f w.2W;3f w.2L;if(1k w==="12")c.68(a,J);1a c.5W(w)&&c.68(a)}}}}},30:12(a,b,d,e){17 f=a.1n||a;if(!e){a=1k a==="2e"?a[c.3H]?a:c.1L(c.5w(f),a):c.5w(f);if(f.2d("!")>=0){a.1n=f=f.2D(0,-1);a.dB=1d}if(!d){a.5r();c.1s.3R[f]&&c.1o(c.3T,12(){6.2W&&6.2W[f]&&c.1s.30(a,b,6.2L.1E)})}if(!d||d.1j===3||d.1j===8)14 B;a.23=B;a.2I=d;b=c.4f(b);b.7l(a)}a.6y=d;(e=d.1j?c.1m(d,"2L"):(c.1m(d,"6x")||{}).2L)&&e.2a(d,b);e=d.1r||d.2A;1V{if(!(d&&d.1q&&c.6P[d.1q.1W()]))if(d["3I"+f]&&d["3I"+f].2a(d,b)===1e){a.23=1e;a.4l()}}1X(h){}if(!a.8l()&&e)c.1s.30(a,b,e,1d);1a if(!a.ax()){17 l;e=a.2I;17 k=f.1D(X,""),o=c.1q(e,"a")&&k==="4y",x=c.1s.49[k]||{};if((!x.3W||x.3W.1p(d,a)===1e)&&!o&&!(e&&e.1q&&c.6P[e.1q.1W()])){1V{if(e[k]){if(l=e["3I"+k])e["3I"+k]=1b;c.1s.9X=1d;e[k]()}}1X(r){}if(l)e["3I"+k]=l;c.1s.9X=1e}}},2L:12(a){17 b,d,e,f;d=[];17 h=c.4f(1I);a=h[0]=c.1s.9g(a||E.1s);a.6y=6;b=a.1n.2d(".")<0&&!a.dB;if(!b){e=a.1n.2M(".");a.1n=e.4r();d=e.2D(0).4W();e=4H("(^|\\\\.)"+d.4d("\\\\.(?:.*\\\\.)?")+"(\\\\.|$)")}a.4k=a.4k||d.4d(".");f=c.1m(6,6.1j?"2W":"6x");if(1k f==="12")f=f.2W;d=(f||{})[a.1n];if(f&&d){d=d.2D(0);f=0;19(17 l=d.18;f<l;f++){17 k=d[f];if(b||e.1i(k.4k)){a.3e=k.3e;a.1m=k.1m;a.5T=k;k=k.3e.2a(6,h);if(k!==B){a.23=k;if(k===1e){a.4l();a.5r()}}if(a.8e())2i}}}14 a.23},6z:"jc j9 j8 jd 3K je 8u 9U dq aq 6y 1m jf jp 8q 3e 4F jq jB a8 jA jC jD 6W 8A jF jE 6J jz jy jt dC 2I dw jr ju 6O".2M(" "),9g:12(a){if(a[c.3H])14 a;17 b=a;a=c.5w(b);19(17 d=6.6z.18,e;d;){e=6.6z[--d];a[e]=b[e]}if(!a.2I)a.2I=a.dC||t;if(a.2I.1j===3)a.2I=a.2I.1r;if(!a.6J&&a.8q)a.6J=a.8q===a.2I?a.dw:a.8q;if(a.6W==1b&&a.9U!=1b){b=t.2g;d=t.1T;a.6W=a.9U+(b&&b.4B||d&&d.4B||0)-(b&&b.7z||d&&d.7z||0);a.8A=a.dq+(b&&b.4C||d&&d.4C||0)-(b&&b.7w||d&&d.7w||0)}if(a.6O==1b&&(a.8u!=1b||a.4F!=1b))a.6O=a.8u!=1b?a.8u:a.4F;if(!a.a8&&a.aq)a.a8=a.aq;if(!a.6O&&a.3K!==B)a.6O=a.3K&1?1:a.3K&2?3:a.3K&4?2:0;14 a},2p:iJ,69:c.69,49:{3B:{4N:c.ap,4L:c.7n},4o:{3o:12(a){c.1s.3o(6,Y(a.8J,a.2j),c.1L({},a,{3e:ds,2p:a.3e.2p}))},2Q:12(a){c.1s.2Q(6,Y(a.8J,a.2j),a)}},iL:{4N:12(a,b,d){if(c.5b(6))6.au=d},4L:12(a,b){if(6.au===b)6.au=1b}}}};c.b1=t.6p?12(a,b,d){a.6p&&a.6p(b,d,1e)}:12(a,b,d){a.8m&&a.8m("3I"+b,d)};c.5w=12(a){if(!6.4l)14 3n c.5w(a);if(a&&a.1n){6.ay=a;6.1n=a.1n}1a 6.1n=a;6.iM=c.2V();6[c.3H]=1d};c.5w.2C={4l:12(){6.ax=ca;17 a=6.ay;if(a)if(a.4l)a.4l();1a a.iO=1e},5r:12(){6.8l=ca;17 a=6.ay;if(a){a.5r&&a.5r();a.iI=1d}},iH:12(){6.8e=ca;6.5r()},ax:U,8l:U,8e:U};17 ai=12(a){17 b=a.6J;1V{19(;b&&b!==6;)b=b.1r;if(b!==6){a.1n=a.1m;c.1s.2L.2a(6,1I)}}1X(d){}},ag=12(a){a.1n=a.1m;c.1s.2L.2a(6,1I)};c.1o({5O:"9E",61:"9F"},12(a,b){c.1s.49[a]={4N:12(d){c.1s.3o(6,b,d&&d.2j?ag:ai,a)},4L:12(d){c.1s.2Q(6,b,d&&d.2j?ag:ai)}}});if(!c.1B.dP)c.1s.49.4t={4N:12(){if(6.1q.1W()!=="6Z"){c.1s.3o(6,"4y.9K",12(a){17 b=a.2I,d=b.1n;if((d==="4t"||d==="3x")&&c(b).5y("6Z").18){a.6t=B;14 la("4t",6,1I)}});c.1s.3o(6,"d7.9K",12(a){17 b=a.2I,d=b.1n;if((d==="1Q"||d==="7p")&&c(b).5y("6Z").18&&a.4F===13){a.6t=B;14 la("4t",6,1I)}})}1a 14 1e},4L:12(){c.1s.2Q(6,".9K")}};if(!c.1B.dT){17 V,9d=12(a){17 b=a.1n,d=a.3s;if(b==="4E"||b==="5p")d=a.4j;1a if(b==="33-8Z")d=a.8g>-1?c.39(a.2c,12(e){14 e.2P}).4d("-"):"";1a if(a.1q.1W()==="33")d=a.8g;14 d},Z=12(a,b){17 d=a.2I,e,f;if(!(!ia.1i(d.1q)||d.dN)){e=c.1m(d,"9e");f=9d(d);if(a.1n!=="5Q"||d.1n!=="4E")c.1m(d,"9e",f);if(!(e===B||f===e))if(e!=1b||f){a.1n="6R";a.6t=B;14 c.1s.30(a,b,d)}}};c.1s.49.6R={3S:{5Q:Z,iF:Z,4y:12(a){17 b=a.2I,d=b.1n;if(d==="4E"||d==="5p"||b.1q.1W()==="33")14 Z.1p(6,a)},bm:12(a){17 b=a.2I,d=b.1n;if(a.4F===13&&b.1q.1W()!=="72"||a.4F===32&&(d==="5p"||d==="4E")||d==="33-8Z")14 Z.1p(6,a)},dK:12(a){a=a.2I;c.1m(a,"9e",9d(a))}},4N:12(){if(6.1n==="6s")14 1e;19(17 a in V)c.1s.3o(6,a+".dJ",V[a]);14 ia.1i(6.1q)},4L:12(){c.1s.2Q(6,".dJ");14 ia.1i(6.1q)}};V=c.1s.49.6R.3S;V.7k=V.dK}t.3N&&c.1o({7k:"8N",5B:"5Q"},12(a,b){12 d(e){e=c.1s.9g(e);e.1n=b;14 c.1s.30(e,1b,e.2I)}c.1s.49[b]={4N:12(){9j[b]++===0&&t.3N(a,d,1d)},4L:12(){--9j[b]===0&&t.6p(a,d,1d)}}});c.1o(["7R","6q"],12(a,b){c.fn[b]=12(d,e,f){if(1k d==="2e"){19(17 h in d)6[b](h,e,d[h],f);14 6}if(c.1S(e)||e===1e){f=e;e=B}17 l=b==="6q"?c.69(f,12(o){c(6).62(o,l);14 f.2a(6,1I)}):f;if(d==="9w"&&b!=="6q")6.6q(d,e,f);1a{h=0;19(17 k=6.18;h<k;h++)c.1s.3o(6[h],d,l,e)}14 6}});c.fn.1L({62:12(a,b){if(1k a==="2e"&&!a.4l)19(17 d in a)6.62(d,a[d]);1a{d=0;19(17 e=6.18;d<e;d++)c.1s.2Q(6[d],a,b)}14 6},j5:12(a,b,d,e){14 6.4o(b,d,e,a)},j4:12(a,b,d){14 1I.18===0?6.62("4o"):6.dk(b,1b,d,a)},30:12(a,b){14 6.1o(12(){c.1s.30(a,b,6)})},8v:12(a,b){if(6[0]){17 d=c.5w(a);d.4l();d.5r();c.1s.30(d,b,6[0]);14 d.23}},4n:12(a){19(17 b=1I,d=1;d<b.18;)c.69(a,b[d++]);14 6.4y(c.69(a,12(e){17 f=(c.1m(6,"dL"+a.2p)||0)%d;c.1m(6,"dL"+a.2p,f+1);e.4l();14 b[f].2a(6,1I)||1e}))},cT:12(a,b){14 6.5O(a).61(b||a)}});17 9b={7k:"8N",5B:"5Q",5O:"9E",61:"9F"};c.1o(["4o","dk"],12(a,b){c.fn[b]=12(d,e,f,h){17 l,k=0,o,x,r=h||6.2j;h=h?6:c(6.2m);if(1k d==="2e"&&!d.4l){19(l in d)h[b](l,e,d[l],r);14 6}if(c.1S(e)){f=e;e=B}19(d=(d||"").2M(" ");(l=d[k++])!=1b;){o=X.22(l);x="";if(o){x=o[0];l=l.1D(X,"")}if(l==="cT")d.1O("5O"+x,"61"+x);1a{o=l;if(l==="7k"||l==="5B"){d.1O(9b[l]+x);l+=x}1a l=(9b[l]||l)+x;if(b==="4o"){x=0;19(17 A=h.18;x<A;x++)c.1s.3o(h[x],"4o."+Y(l,r),{1m:e,2j:r,3e:f,8J:l,cX:f,8I:o})}1a h.62("4o."+Y(l,r),f)}}14 6}});c.1o("5B 7k 8N 5Q 4J 8R 89 9w 4y jG ge gr gp 9E 9F 5O 61 6R 33 4t bm d7 gl 3g".2M(" "),12(a,b){c.fn[b]=12(d,e){if(e==1b){e=d;d=1b}14 1I.18>0?6.7R(b,d,e):6.30(b)};if(c.8E)c.8E[b]=1d});E.3P&&!E.3N&&c(E).7R("9w",12(){19(17 a in c.3T)if(c.3T[a].2L)1V{c.1s.2Q(c.3T[a].2L.1E)}1X(b){}});(12(){12 a(g,i,n,m,p,q){p=0;19(17 u=m.18;p<u;p++){17 y=m[p];if(y){17 F=1e;19(y=y[g];y;){if(y.5K===n){F=m[y.8C];2i}if(y.1j===1&&!q){y.5K=n;y.8C=p}if(y.1q.1W()===i){F=y;2i}y=y[g]}m[p]=F}}}12 b(g,i,n,m,p,q){p=0;19(17 u=m.18;p<u;p++){17 y=m[p];if(y){17 F=1e;19(y=y[g];y;){if(y.5K===n){F=m[y.8C];2i}if(y.1j===1){if(!q){y.5K=n;y.8C=p}if(1k i!=="1N"){if(y===i){F=1d;2i}}1a if(k.29(i,[y]).18>0){F=y;2i}}y=y[g]}m[p]=F}}}17 d=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|[\'"][^\'"]*[\'"]|[^\\[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,e=0,f=71.2C.3O,h=1e,l=1d;[0,0].4W(12(){l=1e;14 0});17 k=12(g,i,n,m){n=n||[];17 p=i=i||t;if(i.1j!==1&&i.1j!==9)14[];if(!g||1k g!=="1N")14 n;17 q,u,y,F,M,N=1d,O=k.5A(i),D=[],R=g;do{d.22("");if(q=d.22(R)){R=q[3];D.1O(q[1]);if(q[2]){F=q[3];2i}}}er(q);if(D.18>1&&x.22(g))if(D.18===2&&o.4i[D[0]])u=L(D[0]+D[1],i);1a 19(u=o.4i[D[0]]?[i]:k(D.4r(),i);D.18;){g=D.4r();if(o.4i[g])g+=D.4r();u=L(g,u)}1a{if(!m&&D.18>1&&i.1j===9&&!O&&o.2l.4x.1i(D[0])&&!o.2l.4x.1i(D[D.18-1])){q=k.1Y(D.4r(),i,O);i=q.2E?k.29(q.2E,q.46)[0]:q.46[0]}if(i){q=m?{2E:D.8D(),46:C(m)}:k.1Y(D.8D(),D.18===1&&(D[0]==="~"||D[0]==="+")&&i.1r?i.1r:i,O);u=q.2E?k.29(q.2E,q.46):q.46;if(D.18>0)y=C(u);1a N=1e;19(;D.18;){q=M=D.8D();if(o.4i[M])q=D.8D();1a M="";if(q==1b)q=i;o.4i[M](y,q,O)}}1a y=[]}y||(y=u);y||k.3g(M||g);if(f.1p(y)==="[2e 3j]")if(N)if(i&&i.1j===1)19(g=0;y[g]!=1b;g++){if(y[g]&&(y[g]===1d||y[g].1j===1&&k.3V(i,y[g])))n.1O(u[g])}1a 19(g=0;y[g]!=1b;g++)y[g]&&y[g].1j===1&&n.1O(u[g]);1a n.1O.2a(n,y);1a C(y,n);if(F){k(F,p,n,m);k.b4(n)}14 n};k.b4=12(g){if(w){h=l;g.4W(w);if(h)19(17 i=1;i<g.18;i++)g[i]===g[i-1]&&g.3E(i--,1)}14 g};k.cD=12(g,i){14 k(g,1b,1b,i)};k.6B=12(g,i){14 k(i,1b,1b,[g]).18>0};k.1Y=12(g,i,n){17 m;if(!g)14[];19(17 p=0,q=o.8r.18;p<q;p++){17 u,y=o.8r[p];if(u=o.8c[y].22(g)){17 F=u[1];u.3E(1,1);if(F.4v(F.18-1)!=="\\\\"){u[1]=(u[1]||"").1D(/\\\\/g,"");m=o.1Y[y](u,i,n);if(m!=1b){g=g.1D(o.2l[y],"");2i}}}}m||(m=i.26("*"));14{46:m,2E:g}};k.29=12(g,i,n,m){19(17 p,q,u=g,y=[],F=i,M=i&&i[0]&&k.5A(i[0]);g&&i.18;){19(17 N in o.29)if((p=o.8c[N].22(g))!=1b&&p[2]){17 O,D,R=o.29[N];D=p[1];q=1e;p.3E(1,1);if(D.4v(D.18-1)!=="\\\\"){if(F===y)y=[];if(o.bw[N])if(p=o.bw[N](p,F,n,y,m,M)){if(p===1d)bB}1a q=O=1d;if(p)19(17 j=0;(D=F[j])!=1b;j++)if(D){O=R(D,p,j,F);17 s=m^!!O;if(n&&O!=1b)if(s)q=1d;1a F[j]=1e;1a if(s){y.1O(D);q=1d}}if(O!==B){n||(F=y);g=g.1D(o.2l[N],"");if(!q)14[];2i}}}if(g===u)if(q==1b)k.3g(g);1a 2i;u=g}14 F};k.3g=12(g){d4"cR 3g, cY cV: "+g};17 o=k.dv={8r:["4x","bv","5L"],2l:{4x:/#((?:[\\w\\64-\\6e\\-]|\\\\.)+)/,6v:/\\.((?:[\\w\\64-\\6e\\-]|\\\\.)+)/,bv:/\\[3p=[\'"]*((?:[\\w\\64-\\6e\\-]|\\\\.)+)[\'"]*\\]/,aD:/\\[\\s*((?:[\\w\\64-\\6e\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*([\'"]*)(.*?)\\3|)\\s*\\]/,5L:/^((?:[\\w\\64-\\6e\\*\\-]|\\\\.)+)/,8w:/:(dM|4U|7b|5I)-g5(?:\\((8K|8H|[\\dn+\\-]*)\\))?/,5j:/:(4U|eq|gt|lt|5I|7b|8K|8H)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,5G:/:((?:[\\w\\64-\\6e\\-]|\\\\.)+)(?:\\(([\'"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},8c:{},bQ:{"2O":"21","19":"d2"},8t:{2Y:12(g){14 g.2y("2Y")}},4i:{"+":12(g,i){17 n=1k i==="1N",m=n&&!/\\W/.1i(i);n=n&&!m;if(m)i=i.1W();m=0;19(17 p=g.18,q;m<p;m++)if(q=g[m]){19(;(q=q.5C)&&q.1j!==1;);g[m]=n||q&&q.1q.1W()===i?q||1e:q===i}n&&k.29(i,g,1d)},">":12(g,i){17 n,m=1k i==="1N",p=0,q=g.18;if(m&&!/\\W/.1i(i))19(i=i.1W();p<q;p++){if(n=g[p]){n=n.1r;g[p]=n.1q.1W()===i?n:1e}}1a{19(;p<q;p++)if(n=g[p])g[p]=m?n.1r:n.1r===i;m&&k.29(i,g,1d)}},"":12(g,i,n){17 m,p=e++,q=b;if(1k i==="1N"&&!/\\W/.1i(i)){m=i=i.1W();q=a}q("1r",i,p,g,m,n)},"~":12(g,i,n){17 m,p=e++,q=b;if(1k i==="1N"&&!/\\W/.1i(i)){m=i=i.1W();q=a}q("5C",i,p,g,m,n)}},1Y:{4x:12(g,i,n){if(1k i.2U!=="3w"&&!n)14(g=i.2U(g[1]))&&g.1r?[g]:[]},bv:12(g,i){if(1k i.di!=="3w"){19(17 n=[],m=i.di(g[1]),p=0,q=m.18;p<q;p++)m[p].2y("3p")===g[1]&&n.1O(m[p]);14 n.18===0?1b:n}},5L:12(g,i){14 i.26(g[1])}},bw:{6v:12(g,i,n,m,p,q){g=" "+g[1].1D(/\\\\/g,"")+" ";if(q)14 g;q=0;19(17 u;(u=i[q])!=1b;q++)if(u)if(p^(u.21&&(" "+u.21+" ").1D(/[\\t\\n]/g," ").2d(g)>=0))n||m.1O(u);1a if(n)i[q]=1e;14 1e},4x:12(g){14 g[1].1D(/\\\\/g,"")},5L:12(g){14 g[1].1W()},8w:12(g){if(g[1]==="4U"){17 i=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.22(g[2]==="8K"&&"2n"||g[2]==="8H"&&"2n+1"||!/\\D/.1i(g[2])&&"h6+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;14 g},aD:12(g,i,n,m,p,q){i=g[1].1D(/\\\\/g,"");if(!q&&o.bQ[i])g[1]=o.bQ[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";14 g},5G:12(g,i,n,m,p){if(g[1]==="6A")if((d.22(g[3])||"").18>1||/^\\w/.1i(g[3]))g[3]=k(g[3],1b,1b,i);1a{g=k.29(g[3],i,n,1d^p);n||m.1O.2a(m,g);14 1e}1a if(o.2l.5j.1i(g[0])||o.2l.8w.1i(g[0]))14 1d;14 g},5j:12(g){g.7l(1d);14 g}},3S:{hg:12(g){14 g.4s===1e&&g.1n!=="3y"},4s:12(g){14 g.4s===1d},4j:12(g){14 g.4j===1d},2P:12(g){14 g.2P===1d},7c:12(g){14!!g.1C},7s:12(g){14!g.1C},83:12(g,i,n){14!!k(n[3],g).18},hh:12(g){14/h\\d/i.1i(g.1q)},1Q:12(g){14"1Q"===g.1n},4E:12(g){14"4E"===g.1n},5p:12(g){14"5p"===g.1n},6s:12(g){14"6s"===g.1n},7p:12(g){14"7p"===g.1n},4t:12(g){14"4t"===g.1n},3x:12(g){14"3x"===g.1n},cK:12(g){14"cK"===g.1n},3K:12(g){14"3K"===g.1n||g.1q.1W()==="3K"},2T:12(g){14/2T|33|72|3K/i.1i(g.1q)}},dV:{5I:12(g,i){14 i===0},7b:12(g,i,n,m){14 i===m.18-1},8K:12(g,i){14 i%2===0},8H:12(g,i){14 i%2===1},lt:12(g,i,n){14 i<n[3]-0},gt:12(g,i,n){14 i>n[3]-0},4U:12(g,i,n){14 n[3]-0===i},eq:12(g,i,n){14 n[3]-0===i}},29:{5G:12(g,i,n,m){17 p=i[1],q=o.3S[p];if(q)14 q(g,n,i,m);1a if(p==="3V")14(g.cQ||g.gI||k.8n([g])||"").2d(i[3])>=0;1a if(p==="6A"){i=i[3];n=0;19(m=i.18;n<m;n++)if(i[n]===g)14 1e;14 1d}1a k.3g("cR 3g, cY cV: "+p)},8w:12(g,i){17 n=i[1],m=g;gV(n){8i"dM":8i"5I":19(;m=m.5C;)if(m.1j===1)14 1e;if(n==="5I")14 1d;m=g;8i"7b":19(;m=m.34;)if(m.1j===1)14 1e;14 1d;8i"4U":n=i[2];17 p=i[3];if(n===1&&p===0)14 1d;17 q=i[0],u=g.1r;if(u&&(u.5K!==q||!g.aX)){17 y=0;19(m=u.1C;m;m=m.34)if(m.1j===1)m.aX=++y;u.5K=q}m=g.aX-p;14 n===0?m===0:m%n===0&&m/n>=0}},4x:12(g,i){14 g.1j===1&&g.2y("id")===i},5L:12(g,i){14 i==="*"&&g.1j===1||g.1q.1W()===i},6v:12(g,i){14(" "+(g.21||g.2y("2O"))+" ").2d(i)>-1},aD:12(g,i){17 n=i[1];n=o.8t[n]?o.8t[n](g):g[n]!=1b?g[n]:g.2y(n);17 m=n+"",p=i[2],q=i[4];14 n==1b?p==="!=":p==="="?m===q:p==="*="?m.2d(q)>=0:p==="~="?(" "+m+" ").2d(q)>=0:!q?m&&n!==1e:p==="!="?m!==q:p==="^="?m.2d(q)===0:p==="$="?m.4v(m.18-q.18)===q:p==="|="?m===q||m.4v(0,q.18+1)===q+"-":1e},5j:12(g,i,n,m){17 p=o.dV[i[2]];if(p)14 p(g,n,i,m)}}},x=o.2l.5j,r=12(g,i){14"\\\\"+(i-0+1)},A;19(A in o.2l){o.2l[A]=4H(o.2l[A].8d+/(?![^\\[]*\\])(?![^\\(]*\\))/.8d);o.8c[A]=4H(/(^(?:.|\\r|\\n)*?)/.8d+o.2l[A].8d.1D(/\\\\(\\d+)/g,r))}17 C=12(g,i){g=3j.2C.2D.1p(g,0);if(i){i.1O.2a(i,g);14 i}14 g};1V{3j.2C.2D.1p(t.2g.2N,0)}1X(J){C=12(g,i){17 n=0,m=i||[];if(f.1p(g)==="[2e 3j]")3j.2C.1O.2a(m,g);1a if(1k g.18==="4T")19(17 p=g.18;n<p;n++)m.1O(g[n]);1a 19(;g[n];n++)m.1O(g[n]);14 m}}17 w,I;if(t.2g.5s)w=12(g,i){if(g===i){h=1d;14 0}if(!g.5s||!i.5s)14 g.5s?-1:1;14 g.5s(i)&4?-1:1};1a{w=12(g,i){17 n,m,p=[],q=[];n=g.1r;m=i.1r;17 u=n;if(g===i){h=1d;14 0}1a if(n===m)14 I(g,i);1a if(n){if(!m)14 1}1a 14-1;19(;u;){p.7l(u);u=u.1r}19(u=m;u;){q.7l(u);u=u.1r}n=p.18;m=q.18;19(u=0;u<n&&u<m;u++)if(p[u]!==q[u])14 I(p[u],q[u]);14 u===n?I(g,q[u],-1):I(p[u],i,1)};I=12(g,i,n){if(g===i)14 n;19(g=g.34;g;){if(g===i)14-1;g=g.34}14 1}}k.8n=12(g){19(17 i="",n,m=0;g[m];m++){n=g[m];if(n.1j===3||n.1j===4)i+=n.8Q;1a if(n.1j!==8)i+=k.8n(n.2N)}14 i};(12(){17 g=t.24("1J"),i="2K"+(3n bi).cH(),n=t.2g;g.35="<a 3p=\'"+i+"\'/>";n.3G(g,n.1C);if(t.2U(i)){o.1Y.4x=12(m,p,q){if(1k p.2U!=="3w"&&!q)14(p=p.2U(m[1]))?p.id===m[1]||1k p.5v!=="3w"&&p.5v("id").8Q===m[1]?[p]:B:[]};o.29.4x=12(m,p){17 q=1k m.5v!=="3w"&&m.5v("id");14 m.1j===1&&q&&q.8Q===p}}n.3z(g);n=g=1b})();(12(){17 g=t.24("1J");g.2t(t.gv(""));if(g.26("*").18>0)o.1Y.5L=12(i,n){17 m=n.26(i[1]);if(i[1]==="*"){19(17 p=[],q=0;m[q];q++)m[q].1j===1&&p.1O(m[q]);m=p}14 m};g.35="<a 2Y=\'#\'></a>";if(g.1C&&1k g.1C.2y!=="3w"&&g.1C.2y("2Y")!=="#")o.8t.2Y=12(i){14 i.2y("2Y",2)};g=1b})();t.6u&&12(){17 g=k,i=t.24("1J");i.35="<p 2O=\'dp\'></p>";if(!(i.6u&&i.6u(".dp").18===0)){k=12(m,p,q,u){p=p||t;m=m.1D(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");if(!u&&!k.5A(p))if(p.1j===9)1V{14 C(p.6u(m),q)}1X(y){}1a if(p.1j===1&&p.1q.1W()!=="2e"){17 F=p.2y("id"),M=F||"gu";F||p.2o("id",M);1V{14 C(p.6u("#"+M+" "+m),q)}1X(N){}gw{F||p.5u("id")}}14 g(m,p,q,u)};19(17 n in g)k[n]=g[n];i=1b}}();(12(){17 g=t.2g,i=g.6B||g.gy||g.gc||g.gd,n=1e;1V{i.1p(t.2g,"[1i!=\'\']:gh")}1X(m){n=1d}if(i)k.6B=12(p,q){q=q.1D(/\\=\\s*([^\'"\\]]*)\\s*\\]/g,"=\'$1\']");if(!k.5A(p))1V{if(n||!o.2l.5G.1i(q)&&!/!=/.1i(q))14 i.1p(p,q)}1X(u){}14 k(q,1b,1b,[p]).18>0}})();(12(){17 g=t.24("1J");g.35="<1J 2O=\'1i e\'></1J><1J 2O=\'1i\'></1J>";if(!(!g.6m||g.6m("e").18===0)){g.aJ.21="e";if(g.6m("e").18!==1){o.8r.3E(1,0,"6v");o.1Y.6v=12(i,n,m){if(1k n.6m!=="3w"&&!m)14 n.6m(i[1])};g=1b}}})();k.3V=t.2g.3V?12(g,i){14 g!==i&&(g.3V?g.3V(i):1d)}:t.2g.5s?12(g,i){14!!(g.5s(i)&16)}:12(){14 1e};k.5A=12(g){14(g=(g?g.2A||g:0).2g)?g.1q!=="gz":1e};17 L=12(g,i){19(17 n,m=[],p="",q=i.1j?[i]:i;n=o.2l.5G.22(g);){p+=n[0];g=g.1D(o.2l.5G,"")}g=o.4i[g]?g+"*":g;n=0;19(17 u=q.18;n<u;n++)k(g,q[n],m);14 k.29(p,m)};c.1Y=k;c.2E=k.dv;c.2E[":"]=c.2E.3S;c.8a=k.b4;c.1Q=k.8n;c.bG=k.5A;c.3V=k.3V})();17 ci=/h2$/,$a=/^(?:dA|ce|dx)/,ab=/,/,dD=/^.[^:#\\[\\.,]*$/,bb=3j.2C.2D,cb=c.2E.2l.5j;c.fn.1L({1Y:12(a){19(17 b=6.3C("","1Y",a),d=0,e=0,f=6.18;e<f;e++){d=b.18;c.1Y(a,6[e],b);if(e>0)19(17 h=d;h<b.18;h++)19(17 l=0;l<d;l++)if(b[l]===b[h]){b.3E(h--,1);2i}}14 b},83:12(a){17 b=c(a);14 6.29(12(){19(17 d=0,e=b.18;d<e;d++)if(c.3V(6,b[d]))14 1d})},6A:12(a){14 6.3C(ma(6,a,1e),"6A",a)},29:12(a){14 6.3C(ma(6,a,1d),"29",a)},is:12(a){14!!a&&c.29(a,6).18>0},5y:12(a,b){17 d=[],e,f,h=6[0];if(c.3c(a)){17 l,k={},o=1;if(h&&a.18){e=0;19(f=a.18;e<f;e++){l=a[e];k[l]||(k[l]=c.2E.2l.5j.1i(l)?c(l,b||6.2m):l)}19(;h&&h.2A&&h!==b;){19(l in k){e=k[l];if(e.7q?e.3F(h)>-1:c(h).is(e))d.1O({2j:l,1E:h,6L:o})}h=h.1r;o++}}14 d}l=cb.1i(a)?c(a,b||6.2m):1b;e=0;19(f=6.18;e<f;e++)19(h=6[e];h;)if(l?l.3F(h)>-1:c.1Y.6B(h,a)){d.1O(h);2i}1a{h=h.1r;if(!h||!h.2A||h===b)2i}d=d.18>1?c.8a(d):d;14 6.3C(d,"5y",a)},3F:12(a){if(!a||1k a==="1N")14 c.3U(6[0],a?c(a):6.7c().1U());14 c.3U(a.7q?a[0]:a,6)},3o:12(a,b){17 d=1k a==="1N"?c(a,b||6.2m):c.4f(a),e=c.58(6.3l(),d);14 6.3C(!d[0]||!d[0].1r||d[0].1r.1j===11||!e[0]||!e[0].1r||e[0].1r.1j===11?e:c.8a(e))},gS:12(){14 6.3o(6.b7)}});c.1o({7c:12(a){14(a=a.1r)&&a.1j!==11?a:1b},dA:12(a){14 c.52(a,"1r")},gH:12(a,b,d){14 c.52(a,"1r",d)},gL:12(a){14 c.4U(a,2,"34")},gY:12(a){14 c.4U(a,2,"5C")},he:12(a){14 c.52(a,"34")},dx:12(a){14 c.52(a,"5C")},h7:12(a,b,d){14 c.52(a,"34",d)},ce:12(a,b,d){14 c.52(a,"5C",d)},h0:12(a){14 c.aL(a.1r.1C,a)},1U:12(a){14 c.aL(a.1C)},9u:12(a){14 c.1q(a,"h3")?a.hi||a.gj.1F:c.4f(a.2N)}},12(a,b){c.fn[a]=12(d,e){17 f=c.39(6,b,d);ci.1i(a)||(e=d);if(e&&1k e==="1N")f=c.29(e,f);f=6.18>1?c.8a(f):f;if((6.18>1||ab.1i(e))&&$a.1i(a))f=f.gC();14 6.3C(f,a,bb.1p(1I).4d(","))}});c.1L({29:12(a,b,d){if(d)a=":6A("+a+")";14 b.18===1?c.1Y.6B(b[0],a)?[b[0]]:[]:c.1Y.cD(a,b)},52:12(a,b,d){17 e=[];19(a=a[b];a&&a.1j!==9&&(d===B||a.1j!==1||!c(a).is(d));){a.1j===1&&e.1O(a);a=a[b]}14 e},4U:12(a,b,d){b=b||1;19(17 e=0;a;a=a[d])if(a.1j===1&&++e===b)2i;14 a},aL:12(a,b){19(17 d=[];a;a=a.34)a.1j===1&&a!==b&&d.1O(a);14 d}});17 bK=/ 3J\\d+="(?:\\d+|1b)"/g,$=/^\\s+/,bq=/<(?!c1|br|cu|6I|hr|4X|2T|3i|mr|5g)(([\\w:]+)[^>]*)\\/>/ig,aN=/<([\\w:]+)/,db=/<3r/i,eb=/<|&#?\\w+;/,bs=/<(?:2K|2e|6I|5E|1g)/i,bL=/4j\\s*(?:[^=]|=\\s*.4j.)/i,fb=/\\=([^="\'>\\s]+\\/)>/g,P={5E:[1,"<33 8Z=\'8Z\'>","</33>"],mD:[1,"<ck>","</ck>"],cw:[1,"<2J>","</2J>"],4q:[2,"<2J><3r>","</3r></2J>"],4w:[3,"<2J><3r><4q>","</4q></3r></2J>"],cu:[2,"<2J><3r></3r><bA>","</bA></2J>"],c1:[1,"<39>","</39>"],3W:[0,"",""]};P.c5=P.5E;P.3r=P.lS=P.bA=P.lO=P.cw;P.eX=P.4w;if(!c.1B.bZ)P.3W=[1,"1J<1J>","</1J>"];c.fn.1L({1Q:12(a){if(c.1S(a))14 6.1o(12(b){17 d=c(6);d.1Q(a.1p(6,b,d.1Q()))});if(1k a!=="2e"&&a!==B)14 6.7s().4g((6[0]&&6[0].2A||t).4p(a));14 c.1Q(6)},8M:12(a){if(c.1S(a))14 6.1o(12(d){c(6).8M(a.1p(6,d))});if(6[0]){17 b=c(a,6[0].2A).eq(0).aP(1d);6[0].1r&&b.3G(6[0]);b.39(12(){19(17 d=6;d.1C&&d.1C.1j===1;)d=d.1C;14 d}).4g(6)}14 6},bW:12(a){if(c.1S(a))14 6.1o(12(b){c(6).bW(a.1p(6,b))});14 6.1o(12(){17 b=c(6),d=b.9u();d.18?d.8M(a):b.4g(a)})},lQ:12(a){14 6.1o(12(){c(6).8M(a)})},md:12(){14 6.7c().1o(12(){c.1q(6,"1T")||c(6).6H(6.2N)}).44()},4g:12(){14 6.5c(1I,1d,12(a){6.1j===1&&6.2t(a)})},cg:12(){14 6.5c(1I,1d,12(a){6.1j===1&&6.3G(a,6.1C)})},7A:12(){if(6[0]&&6[0].1r)14 6.5c(1I,1e,12(b){6.1r.3G(b,6)});1a if(1I.18){17 a=c(1I[0]);a.1O.2a(a,6.7F());14 6.3C(a,"7A",1I)}},bp:12(){if(6[0]&&6[0].1r)14 6.5c(1I,1e,12(b){6.1r.3G(b,6.34)});1a if(1I.18){17 a=6.3C(6,"bp",1I);a.1O.2a(a,c(1I[0]).7F());14 a}},2Q:12(a,b){19(17 d=0,e;(e=6[d])!=1b;d++)if(!a||c.29(a,[e]).18){if(!b&&e.1j===1){c.6N(e.26("*"));c.6N([e])}e.1r&&e.1r.3z(e)}14 6},7s:12(){19(17 a=0,b;(b=6[a])!=1b;a++)19(b.1j===1&&c.6N(b.26("*"));b.1C;)b.3z(b.1C);14 6},aP:12(a){17 b=6.39(12(){if(!c.1B.bE&&!c.bG(6)){17 d=6.m3,e=6.2A;if(!d){d=e.24("1J");d.2t(6.5e(1d));d=d.35}14 c.aO([d.1D(bK,"").1D(fb,\'="$1">\').1D($,"")],e)[0]}1a 14 6.5e(1d)});if(a===1d){bH(6,b);bH(6.1Y("*"),b.1Y("*"))}14 b},2x:12(a){if(a===B)14 6[0]&&6[0].1j===1?6[0].35.1D(bK,""):1b;1a if(1k a==="1N"&&!bs.1i(a)&&(c.1B.bn||!$.1i(a))&&!P[(aN.22(a)||["",""])[1].1W()]){a=a.1D(bq,"<$1></$2>");1V{19(17 b=0,d=6.18;b<d;b++)if(6[b].1j===1){c.6N(6[b].26("*"));6[b].35=a}}1X(e){6.7s().4g(a)}}1a c.1S(a)?6.1o(12(f){17 h=c(6);h.2x(a.1p(6,f,h.2x()))}):6.7s().4g(a);14 6},6H:12(a){if(6[0]&&6[0].1r){if(c.1S(a))14 6.1o(12(b){17 d=c(6),e=d.2x();d.6H(a.1p(6,b,e))});if(1k a!=="1N")a=c(a).cz();14 6.1o(12(){17 b=6.34,d=6.1r;c(6).2Q();b?c(b).7A(a):c(d).4g(a)})}1a 14 6.3C(c(c.1S(a)?a():a),"6H",a)},cz:12(a){14 6.2Q(a,1d)},5c:12(a,b,d){17 e,f,h,l=a[0],k=[];if(!c.1B.7u&&1I.18===3&&1k l==="1N"&&bL.1i(l))14 6.1o(12(){c(6).5c(a,b,d,1d)});if(c.1S(l))14 6.1o(12(x){17 r=c(6);a[0]=l.1p(6,x,b?r.2x():B);r.5c(a,b,d)});if(6[0]){e=l&&l.1r;e=c.1B.1r&&e&&e.1j===11&&e.2N.18===6.18?{7g:e}:c.bM(a,6,k);h=e.7g;if(f=h.2N.18===1?h=h.1C:h.1C){b=b&&c.1q(f,"4q");f=0;19(17 o=6.18;f<o;f++)d.1p(b?c.1q(6[f],"2J")?6[f].26("3r")[0]||6[f].2t(6[f].2A.24("3r")):6[f]:6[f],f>0||e.bS||6.18>1?h.5e(1d):h)}k.18&&c.1o(k,cE)}14 6}});c.bM=12(a,b,d){17 e,f,h;b=b&&b[0]?b[0].2A||b[0]:t;if(a.18===1&&1k a[0]==="1N"&&a[0].18<mc&&b===t&&!bs.1i(a[0])&&(c.1B.7u||!bL.1i(a[0]))){f=1d;if(h=c.bN[a[0]])if(h!==1)e=h}if(!e){e=b.cG();c.aO(a,b,e,d)}if(f)c.bN[a[0]]=h?e:1;14{7g:e,bS:f}};c.bN={};c.1o({bV:"4g",mm:"cg",3G:"7A",mE:"bp",mx:"6H"},12(a,b){c.fn[a]=12(d){17 e=[];d=c(d);17 f=6.18===1&&6[0].1r;if(f&&f.1j===11&&f.2N.18===1&&d.18===1){d[b](6[0]);14 6}1a{f=0;19(17 h=d.18;f<h;f++){17 l=(f>0?6.aP(1d):6).3l();c(d[f])[b](l);e=e.7W(l)}14 6.3C(e,a,d.2j)}}});c.1L({aO:12(a,b,d,e){b=b||t;if(1k b.24==="3w")b=b.2A||b[0]&&b[0].2A||t;19(17 f=[],h=0,l;(l=a[h])!=1b;h++){if(1k l==="4T")l+="";if(l){if(1k l==="1N"&&!eb.1i(l))l=b.4p(l);1a if(1k l==="1N"){l=l.1D(bq,"<$1></$2>");17 k=(aN.22(l)||["",""])[1].1W(),o=P[k]||P.3W,x=o[0],r=b.24("1J");19(r.35=o[1]+l+o[2];x--;)r=r.aJ;if(!c.1B.3r){x=db.1i(l);k=k==="2J"&&!x?r.1C&&r.1C.2N:o[1]==="<2J>"&&!x?r.2N:[];19(o=k.18-1;o>=0;--o)c.1q(k[o],"3r")&&!k[o].2N.18&&k[o].1r.3z(k[o])}!c.1B.bn&&$.1i(l)&&r.3G(b.4p($.22(l)[0]),r.1C);l=r.2N}if(l.1j)f.1O(l);1a f=c.58(f,l)}}if(d)19(h=0;f[h];h++)if(e&&c.1q(f[h],"2K")&&(!f[h].1n||f[h].1n.1W()==="1Q/41"))e.1O(f[h].1r?f[h].1r.3z(f[h]):f[h]);1a{f[h].1j===1&&f.3E.2a(f,[h+1,0].7W(c.4f(f[h].26("2K"))));d.2t(f[h])}14 f},6N:12(a){19(17 b,d,e=c.3T,f=c.1s.49,h=c.1B.7V,l=0,k;(k=a[l])!=1b;l++)if(!(k.1q&&c.6P[k.1q.1W()]))if(d=k[c.3H]){if((b=e[d])&&b.2W)19(17 o in b.2W)f[o]?c.1s.2Q(k,o):c.b1(k,o,b.2L);if(h)3f k[c.3H];1a k.5u&&k.5u(c.3H);3f e[d]}}});17 aG=/dQ\\([^)]*\\)/i,gb=/2w=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,aE=/^-?\\d+(?:3h)?$/i,jb=/^-?\\d/,kb={2R:"5H",aY:"3y",1M:"5x"},dr=["fp","mq"],du=["dX","mo"],W,aR,aa,lb=12(a,b){14 b.7H()};c.fn.1G=12(a,b){if(1I.18===2&&b===B)14 6;14 c.82(6,a,b,1d,12(d,e,f){14 f!==B?c.1g(d,e,f):c.1G(d,e)})};c.1L({7j:{2w:{3l:12(a,b){if(b){17 d=W(a,"2w","2w");14 d===""?"1":d}1a 14 a.1g.2w}}},dE:{mh:1d,eP:1d,2w:1d,6E:1d,mw:1d},bh:{"8L":c.1B.78?"78":"eQ"},1g:12(a,b,d,e){if(!(!a||a.1j===3||a.1j===8||!a.1g)){17 f,h=c.7Z(b),l=a.1g,k=c.7j[h];b=c.bh[h]||h;if(d!==B){if(!(1k d==="4T"&&6i(d)||d==1b)){if(1k d==="4T"&&!c.dE[h])d+="3h";if(!k||!("46"in k)||(d=k.46(a,d))!==B)1V{l[b]=d}1X(o){}}}1a{if(k&&"3l"in k&&(f=k.3l(a,1e,e))!==B)14 f;14 l[b]}}},1G:12(a,b,d){17 e,f=c.7Z(b),h=c.7j[f];b=c.bh[f]||f;if(h&&"3l"in h&&(e=h.3l(a,1d,d))!==B)14 e;1a if(W)14 W(a,b,f)},dF:12(a,b,d){17 e={},f;19(f in b){e[f]=a.1g[f];a.1g[f]=b[f]}d.1p(a);19(f in b)a.1g[f]=e[f]},7Z:12(a){14 a.1D(hb,lb)}});c.g4=c.1G;c.1o(["2z","2b"],12(a,b){c.7j[b]={3l:12(d,e,f){17 h;if(e){if(d.5N!==0)h=aZ(d,b,f);1a c.dF(d,kb,12(){h=aZ(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="3A"&&aa)h=aa(d,b,b);if(h!=1b)14 h===""||h==="7t"?"3A":h}if(h<0||h==1b){h=d.1g[b];14 h===""||h==="7t"?"3A":h}14 1k h==="1N"?h:h+"3h"}},46:12(d,e){if(aE.1i(e)){e=28(e);if(e>=0)14 e+"3h"}1a 14 e}}});if(!c.1B.2w)c.7j.2w={3l:12(a,b){14 gb.1i((b&&a.4D?a.4D.29:a.1g.29)||"")?28(4H.$1)/6M+"":b?"1":""},46:12(a,b){17 d=a.1g;d.6E=1;17 e=c.6i(b)?"":"dQ(2w="+b*6M+")",f=d.29||"";d.29=aG.1i(f)?f.1D(aG,e):d.29+" "+e}};if(t.6Y&&t.6Y.7y)aR=12(a,b,d){17 e;d=d.1D(ib,"-$1").1W();if(!(b=a.2A.6Y))14 B;if(b=b.7y(a,1b)){e=b.m5(d);if(e===""&&!c.3V(a.2A.2g,a))e=c.1g(a,d)}14 e};if(t.2g.4D)aa=12(a,b){17 d,e,f=a.4D&&a.4D[b],h=a.1g;if(!aE.1i(f)&&jb.1i(f)){d=h.1R;e=a.aU.1R;a.aU.1R=a.4D.1R;h.1R=b==="m1"?"m2":f||0;f=h.m6+"3h";h.1R=d;a.aU.1R=e}14 f===""?"7t":f};W=aR||aa;if(c.2E&&c.2E.3S){c.2E.3S.3y=12(a){17 b=a.7M;14 a.5N===0&&b===0||!c.1B.76&&(a.1g.1M||c.1G(a,"1M"))==="2H"};c.2E.3S.fK=12(a){14!c.2E.3S.3y(a)}}17 mb=c.2V(),cO=/<2K\\b[^<]*(?:(?!<\\/2K>)<[^<]*)*<\\/2K>/gi,d1=/^(?:33|72)/i,d6=/^(?:2q|lR|lN|lY|3y|lW|4T|7p|mA|mG|mH|1Q|mF|1K|mv)$/i,d3=/^(?:65|ml)$/,cM=/\\[\\]$/,T=/\\=\\?(&|$)/,ja=/\\?/,dh=/([?&])dg=[^&]*/,dd=/^(\\w+:)?\\/\\/([^\\/?#]+)/,cW=/%20/g,d8=/#.*$/,by=c.fn.4J;c.fn.1L({4J:12(a,b,d){if(1k a!=="1N"&&by)14 by.2a(6,1I);1a if(!6.18)14 6;17 e=a.2d(" ");if(e>=0){17 f=a.2D(e,a.18);a=a.2D(0,e)}e="65";if(b)if(c.1S(b)){d=b;b=1b}1a if(1k b==="2e"){b=c.5g(b,c.5t.99);e="d5"}17 h=6;c.6f({1K:a,1n:e,3m:"2x",1m:b,3L:12(l,k){if(k==="4G"||k==="9J")h.2x(f?c("<1J>").4g(l.87.1D(cO,"")).1Y(f):l.87);d&&h.1o(d,[l.87,k,l])}});14 6},mi:12(){14 c.5g(6.cZ())},cZ:12(){14 6.39(12(){14 6.dj?c.4f(6.dj):6}).29(12(){14 6.3p&&!6.4s&&(6.4j||d1.1i(6.1q)||d6.1i(6.1n))}).39(12(a,b){17 d=c(6).4Z();14 d==1b?1b:c.3c(d)?c.39(d,12(e){14{3p:b.3p,3s:e}}):{3p:b.3p,3s:d}}).3l()}});c.1o("dc 9h dl cS cU cI".2M(" "),12(a,b){c.fn[b]=12(d){14 6.7R(b,d)}});c.1L({3l:12(a,b,d,e){if(c.1S(b)){e=e||d;d=b;b=1b}14 c.6f({1n:"65",1K:a,1m:b,4G:d,3m:e})},fC:12(a,b){14 c.3l(a,1b,b,"2K")},mp:12(a,b,d){14 c.3l(a,b,d,"51")},kp:12(a,b,d,e){if(c.1S(b)){e=e||d;d=b;b={}}14 c.6f({1n:"d5",1K:a,1m:b,4G:d,3m:e})},kq:12(a){c.1L(c.5t,a)},5t:{1K:5P.2Y,3R:1d,1n:"65",9H:"7K/x-kr-6Z-km",d9:1d,5l:1d,81:12(){14 3n E.an},7S:{6l:"7K/6l, 1Q/6l",2x:"1Q/2x",2K:"1Q/41, 7K/41",51:"7K/51, 1Q/41",1Q:"1Q/kg",3W:"*/*"}},6f:12(a){17 b=c.1L(1d,{},c.5t,a),d,e,f,h=b.1n.7H(),l=d3.1i(h);b.1K=b.1K.1D(d8,"");b.2m=a&&a.2m!=1b?a.2m:b;if(b.1m&&b.d9&&1k b.1m!=="1N")b.1m=c.5g(b.1m,b.99);if(b.3m==="7J"){if(h==="65")T.1i(b.1K)||(b.1K+=(ja.1i(b.1K)?"&":"?")+(b.7J||"3D")+"=?");1a if(!b.1m||!T.1i(b.1m))b.1m=(b.1m?b.1m+"&":"")+(b.7J||"3D")+"=?";b.3m="51"}if(b.3m==="51"&&(b.1m&&T.1i(b.1m)||T.1i(b.1K))){d=b.kj||"7J"+mb++;if(b.1m)b.1m=(b.1m+"").1D(T,"="+d+"$1");b.1K=b.1K.1D(T,"="+d+"$1");b.3m="2K";17 k=E[d];E[d]=12(m){if(c.1S(k))k(m);1a{E[d]=B;1V{3f E[d]}1X(p){}}f=m;c.84(b,w,e,f);c.6k(b,w,e,f);r&&r.3z(A)}}if(b.3m==="2K"&&b.3T===1b)b.3T=1e;if(b.3T===1e&&l){17 o=c.2V(),x=b.1K.1D(dh,"$kE="+o);b.1K=x+(x===b.1K?(ja.1i(b.1K)?"&":"?")+"dg="+o:"")}if(b.1m&&l)b.1K+=(ja.1i(b.1K)?"&":"?")+b.1m;b.3R&&c.86++===0&&c.1s.30("dc");o=(o=dd.22(b.1K))&&(o[1]&&o[1].1W()!==5P.ae||o[2].1W()!==5P.kH);if(b.3m==="2K"&&h==="65"&&o){17 r=t.26("9n")[0]||t.2g,A=t.24("2K");if(b.df)A.lM=b.df;A.4I=b.1K;if(!d){17 C=1e;A.aB=A.5m=12(){if(!C&&(!6.5n||6.5n==="kv"||6.5n==="3L")){C=1d;c.84(b,w,e,f);c.6k(b,w,e,f);A.aB=A.5m=1b;r&&A.1r&&r.3z(A)}}}r.3G(A,r.1C);14 B}17 J=1e,w=b.81();if(w){b.d0?w.cN(h,b.1K,b.5l,b.d0,b.7p):w.cN(h,b.1K,b.5l);1V{if(b.1m!=1b&&!l||a&&a.9H)w.7m("kz-ke",b.9H);if(b.cJ){c.88[b.1K]&&w.7m("cP-dI-jR",c.88[b.1K]);c.7D[b.1K]&&w.7m("cP-jS-jT",c.7D[b.1K])}o||w.7m("X-jV-jU","an");w.7m("jP",b.3m&&b.7S[b.3m]?b.7S[b.3m]+", */*; q=0.jO":b.7S.3W)}1X(I){}if(b.cL&&b.cL.1p(b.2m,w,b)===1e){b.3R&&c.86--===1&&c.1s.30("9h");w.63();14 1e}b.3R&&c.6o(b,"cI",[w,b]);17 L=w.5m=12(m){if(!w||w.5n===0||m==="63"){J||c.6k(b,w,e,f);J=1d;if(w)w.5m=c.7n}1a if(!J&&w&&(w.5n===4||m==="5k")){J=1d;w.5m=c.7n;e=m==="5k"?"5k":!c.dG(w)?"3g":b.cJ&&c.dH(w,b.1K)?"9J":"4G";17 p;if(e==="4G")1V{f=c.dU(w,b.3m,b)}1X(q){e="al";p=q}if(e==="4G"||e==="9J")d||c.84(b,w,e,f);1a c.94(b,w,e,p);d||c.6k(b,w,e,f);m==="5k"&&w.63();if(b.5l)w=1b}};1V{17 g=w.63;w.63=12(){w&&92.2C.1p.1p(g,w);L("63")}}1X(i){}b.5l&&b.5k>0&&3t(12(){w&&!J&&L("5k")},b.5k);1V{w.k7(l||b.1m==1b?1b:b.1m)}1X(n){c.94(b,w,1b,n);c.6k(b,w,e,f)}b.5l||L();14 w}},5g:12(a,b){17 d=[],e=12(h,l){l=c.1S(l)?l():l;d[d.18]=8T(h)+"="+8T(l)};if(b===B)b=c.5t.99;if(c.3c(a)||a.7q)c.1o(a,12(){e(6.3p,6.3s)});1a 19(17 f in a)da(f,a[f],b,e);14 d.4d("&").1D(cW,"+")}});c.1L({86:0,88:{},7D:{},94:12(a,b,d,e){a.3g&&a.3g.1p(a.2m,b,d,e);a.3R&&c.6o(a,"cS",[b,a,e])},84:12(a,b,d,e){a.4G&&a.4G.1p(a.2m,e,d,b);a.3R&&c.6o(a,"cU",[b,a])},6k:12(a,b,d){a.3L&&a.3L.1p(a.2m,b,d);a.3R&&c.6o(a,"dl",[b,a]);a.3R&&c.86--===1&&c.1s.30("9h")},6o:12(a,b,d){(a.2m&&a.2m.1K==1b?c(a.2m):c.1s).30(b,d)},dG:12(a){1V{14!a.5S&&5P.ae==="6s:"||a.5S>=b8&&a.5S<ls||a.5S===dO||a.5S===lu}1X(b){}14 1e},dH:12(a,b){17 d=a.aA("lv-dI"),e=a.aA("lo");if(d)c.88[b]=d;if(e)c.7D[b]=e;14 a.5S===dO},dU:12(a,b,d){17 e=a.aA("56-1n")||"",f=b==="6l"||!b&&e.2d("6l")>=0;a=f?a.lx:a.87;f&&a.2g.1q==="al"&&c.3g("al");if(d&&d.dS)a=d.dS(a,b);if(1k a==="1N")if(b==="51"||!b&&e.2d("51")>=0)a=c.am(a);1a if(b==="2K"||!b&&e.2d("41")>=0)c.ac(a);14 a}});if(E.dR)c.5t.81=12(){if(E.5P.ae!=="6s:")1V{14 3n E.an}1X(a){}1V{14 3n E.dR("lA.lB")}1X(b){}};c.1B.6f=!!c.5t.81();17 ea={},c6=/^(?:4n|3v|3d)$/,c9=/^([+\\-]=)?([\\d+.\\-]+)(.*)$/,ba,av=[["2z","7B","lC","lg","lf"],["2b","9R","kT","dt","kS"],["2w"]];c.fn.1L({3v:12(a,b,d){if(a||a===0)14 6.4A(S("3v",3),a,b,d);1a{d=0;19(17 e=6.18;d<e;d++){a=6[d];b=a.1g.1M;if(!c.1m(a,"80")&&b==="2H")b=a.1g.1M="";b===""&&c.1G(a,"1M")==="2H"&&c.1m(a,"80",9W(a.1q))}19(d=0;d<e;d++){a=6[d];b=a.1g.1M;if(b===""||b==="2H")a.1g.1M=c.1m(a,"80")||""}14 6}},3d:12(a,b,d){if(a||a===0)14 6.4A(S("3d",3),a,b,d);1a{a=0;19(b=6.18;a<b;a++){d=c.1G(6[a],"1M");d!=="2H"&&c.1m(6[a],"80",d)}19(a=0;a<b;a++)6[a].1g.1M="2H";14 6}},dm:c.fn.4n,4n:12(a,b,d){17 e=1k a==="7U";if(c.1S(a)&&c.1S(b))6.dm.2a(6,1I);1a a==1b||e?6.1o(12(){17 f=e?a:c(6).is(":3y");c(6)[f?"3v":"3d"]()}):6.4A(S("4n",3),a,b,d);14 6},kU:12(a,b,d,e){14 6.29(":3y").1G("2w",0).3v().44().4A({2w:b},a,d,e)},4A:12(a,b,d,e){17 f=c.ch(b,d,e);if(c.5W(a))14 6.1o(f.3L);14 6[f.3M===1e?"1o":"3M"](12(){17 h=c.1L({},f),l,k=6.1j===1,o=k&&c(6).is(":3y"),x=6;19(l in a){17 r=c.7Z(l);if(l!==r){a[r]=a[l];3f a[l];l=r}if(a[l]==="3d"&&o||a[l]==="3v"&&!o)14 h.3L.1p(6);if(k&&(l==="2z"||l==="2b")){h.48=[6.1g.48,6.1g.kQ,6.1g.kL];if(c.1G(6,"1M")==="66"&&c.1G(6,"8L")==="2H")if(c.1B.9O)if(9W(6.1q)==="66")6.1g.1M="66-5x";1a{6.1g.1M="66";6.1g.6E=1}1a 6.1g.1M="66-5x"}if(c.3c(a[l])){(h.7x=h.7x||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.48!=1b)6.1g.48="3y";h.6r=c.1L({},a);c.1o(a,12(A,C){17 J=3n c.fx(x,h,A);if(c6.1i(C))J[C==="4n"?o?"3v":"3d":C](a);1a{17 w=c9.22(C),I=J.6K()||0;if(w){17 L=28(w[2]),g=w[3]||"3h";if(g!=="3h"){c.1g(x,A,(L||1)+g);I=(L||1)/J.6K()*I;c.1g(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.6D(I,L,g)}1a J.6D(I,C,"")}});14 1d})},9m:12(a,b){17 d=c.7a;a&&6.3M([]);6.1o(12(){19(17 e=d.18-1;e>=0;e--)if(d[e].1E===6){b&&d[e](1d);d.3E(e,1)}});b||6.4Q();14 6}});c.1o({ez:S("3v",1),ej:S("3d",1),kP:S("4n",1),e6:{2w:"3v"},e7:{2w:"3d"},kO:{2w:"4n"}},12(a,b){c.fn[a]=12(d,e,f){14 6.4A(b,d,e,f)}});c.1L({ch:12(a,b,d){17 e=a&&1k a==="2e"?c.1L({},a):{3L:d||!d&&b||c.1S(a)&&a,2F:a,45:d&&b||b&&!c.1S(b)&&b};e.2F=c.fx.kZ?0:1k e.2F==="4T"?e.2F:e.2F in c.fx.7d?c.fx.7d[e.2F]:c.fx.7d.3W;e.9Z=e.3L;e.3L=12(){e.3M!==1e&&c(6).4Q();c.1S(e.9Z)&&e.9Z.1p(6)};14 e},45:{cd:12(a,b,d,e){14 d+e*a},9k:12(a,b,d,e){14(-2r.lc(a*2r.ey)/2+0.5)*e+d}},7a:[],fx:12(a,b,d){6.2c=b;6.1E=a;6.2B=d;if(!b.6X)b.6X={}}});c.fx.2C={93:12(){6.2c.4M&&6.2c.4M.1p(6.1E,6.2V,6);(c.fx.4M[6.2B]||c.fx.4M.3W)(6)},6K:12(){if(6.1E[6.2B]!=1b&&(!6.1E.1g||6.1E.1g[6.2B]==1b))14 6.1E[6.2B];17 a=28(c.1G(6.1E,6.2B));14 a&&a>-ld?a:0},6D:12(a,b,d){12 e(l){14 f.4M(l)}17 f=6,h=c.fx;6.9l=c.2V();6.43=a;6.44=b;6.9p=d||6.9p||"3h";6.2V=6.43;6.59=6.6G=0;e.1E=6.1E;if(e()&&c.7a.1O(e)&&!ba)ba=cF(h.cq,h.cj)},3v:12(){6.2c.6X[6.2B]=c.1g(6.1E,6.2B);6.2c.3v=1d;6.6D(6.2B==="2b"||6.2B==="2z"?1:0,6.6K());c(6.1E).3v()},3d:12(){6.2c.6X[6.2B]=c.1g(6.1E,6.2B);6.2c.3d=1d;6.6D(6.6K(),0)},4M:12(a){17 b=c.2V(),d=1d;if(a||b>=6.2c.2F+6.9l){6.2V=6.44;6.59=6.6G=1;6.93();6.2c.6r[6.2B]=1d;19(17 e in 6.2c.6r)if(6.2c.6r[e]!==1d)d=1e;if(d){if(6.2c.48!=1b&&!c.1B.az){17 f=6.1E,h=6.2c;c.1o(["","X","Y"],12(k,o){f.1g["48"+o]=h.48[k]})}6.2c.3d&&c(6.1E).3d();if(6.2c.3d||6.2c.3v)19(17 l in 6.2c.6r)c.1g(6.1E,l,6.2c.6X[l]);6.2c.3L.1p(6.1E)}14 1e}1a{a=b-6.9l;6.6G=a/6.2c.2F;b=6.2c.45||(c.45.9k?"9k":"cd");6.59=c.45[6.2c.7x&&6.2c.7x[6.2B]||b](6.6G,a,0,1,6.2c.2F);6.2V=6.43+(6.44-6.43)*6.59;6.93()}14 1d}};c.1L(c.fx,{cq:12(){19(17 a=c.7a,b=0;b<a.18;b++)a[b]()||a.3E(b--,1);a.18||c.fx.9m()},cj:13,9m:12(){l1(ba);ba=1b},7d:{l0:l2,l3:b8,3W:l5},4M:{2w:12(a){c.1g(a.1E,"2w",a.2V)},3W:12(a){if(a.1E.1g&&a.1E.1g[a.2B]!=1b)a.1E.1g[a.2B]=(a.2B==="2b"||a.2B==="2z"?2r.4m(0,a.2V):a.2V)+a.9p;1a a.1E[a.2B]=a.2V}}});if(c.2E&&c.2E.3S)c.2E.3S.gq=12(a){14 c.6h(c.7a,12(b){14 a===b.1E}).18};17 fN=/^t(?:l4|d|h)$/i,a7=/^(?:1T|2x)$/i;c.fn.2u="fM"in t.2g?12(a){17 b=6[0],d;if(a)14 6.1o(12(l){c.2u.af(6,a,l)});if(!b||!b.2A)14 1b;if(b===b.2A.1T)14 c.2u.9A(b);1V{d=b.fM()}1X(e){}17 f=b.2A,h=f.2g;if(!d||!c.3V(h,b))14 d||{2h:0,1R:0};b=f.1T;f=fa(f);14{2h:d.2h+(f.fy||c.1B.5R&&h.4C||b.4C)-(h.7w||b.7w||0),1R:d.1R+(f.9Y||c.1B.5R&&h.4B||b.4B)-(h.7z||b.7z||0)}}:12(a){17 b=6[0];if(a)14 6.1o(12(x){c.2u.af(6,a,x)});if(!b||!b.2A)14 1b;if(b===b.2A.1T)14 c.2u.9A(b);c.2u.7v();17 d,e=b.6a,f=b.2A,h=f.2g,l=f.1T;d=(f=f.6Y)?f.7y(b,1b):b.4D;19(17 k=b.4h,o=b.7C;(b=b.1r)&&b!==l&&b!==h;){if(c.2u.9i&&d.2R==="90")2i;d=f?f.7y(b,1b):b.4D;k-=b.4C;o-=b.4B;if(b===e){k+=b.4h;o+=b.7C;if(c.2u.fT&&!(c.2u.fS&&fN.1i(b.1q))){k+=28(d.9Q)||0;o+=28(d.9P)||0}e=b.6a}if(c.2u.fG&&d.48!=="fK"){k+=28(d.9Q)||0;o+=28(d.9P)||0}d=d}if(d.2R==="4i"||d.2R==="a2"){k+=l.4h;o+=l.7C}if(c.2u.9i&&d.2R==="90"){k+=2r.4m(h.4C,l.4C);o+=2r.4m(h.4B,l.4B)}14{2h:k,1R:o}};c.2u={7v:12(){17 a=t.1T,b=t.24("1J"),d,e,f,h=28(c.1G(a,"7B"))||0;c.1L(b.1g,{2R:"5H",2h:0,1R:0,4K:0,4Y:0,2b:"5d",2z:"5d",aY:"3y"});b.35="<1J 1g=\'2R:5H;2h:0;1R:0;4K:0;4Y:fJ fP #fU;67:0;2b:5d;2z:5d;\'><1J></1J></1J><2J 1g=\'2R:5H;2h:0;1R:0;4K:0;4Y:fJ fP #fU;67:0;2b:5d;2z:5d;\' l6=\'0\' fV=\'0\'><4q><4w></4w></4q></2J>";a.3G(b,a.1C);d=b.1C;e=d.1C;f=d.34.1C.1C;6.fT=e.4h!==5;6.fS=f.4h===5;e.1g.2R="90";e.1g.2h="l7";6.9i=e.4h===20||e.4h===15;e.1g.2R=e.1g.2h="";d.1g.48="3y";d.1g.2R="4i";6.fG=e.4h===-5;6.fu=a.4h!==h;a.3z(b);c.2u.7v=c.7n},9A:12(a){17 b=a.4h,d=a.7C;c.2u.7v();if(c.2u.fu){b+=28(c.1G(a,"7B"))||0;d+=28(c.1G(a,"9R"))||0}14{2h:b,1R:d}},af:12(a,b,d){17 e=c.1G(a,"2R");if(e==="a2")a.1g.2R="4i";17 f=c(a),h=f.2u(),l=c.1G(a,"2h"),k=c.1G(a,"1R"),o=e==="5H"&&c.3U("7t",[l,k])>-1;e={};17 x={};if(o)x=f.2R();l=o?x.2h:2s(l,10)||0;k=o?x.1R:2s(k,10)||0;if(c.1S(b))b=b.1p(a,d,h);if(b.2h!=1b)e.2h=b.2h-h.2h+l;if(b.1R!=1b)e.1R=b.1R-h.1R+k;"fo"in b?b.fo.1p(a,e):f.1G(e)}};c.fn.1L({2R:12(){if(!6[0])14 1b;17 a=6[0],b=6.6a(),d=6.2u(),e=a7.1i(b[0].1q)?{2h:0,1R:0}:b.2u();d.2h-=28(c.1G(a,"7B"))||0;d.1R-=28(c.1G(a,"9R"))||0;e.2h+=28(c.1G(b[0],"9Q"))||0;e.1R+=28(c.1G(b[0],"9P"))||0;14{2h:d.2h-e.2h,1R:d.1R-e.1R}},6a:12(){14 6.39(12(){19(17 a=6.6a||t.1T;a&&!a7.1i(a.1q)&&c.1G(a,"2R")==="a2";)a=a.6a;14 a})}});c.1o(["fp","dX"],12(a,b){17 d="89"+b;c.fn[d]=12(e){17 f=6[0],h;if(!f)14 1b;if(e!==B)14 6.1o(12(){if(h=fa(6))h.le(!a?e:c(h).4B(),a?e:c(h).4C());1a 6[d]=e});1a 14(h=fa(f))?"9Y"in h?h[a?"fy":"9Y"]:c.1B.5R&&h.1F.2g[d]||h.1F.1T[d]:f[d]}});c.1o(["l8","fE"],12(a,b){17 d=b.1W();c.fn["l9"+b]=12(){14 6[0]?28(c.1G(6[0],d,"67")):1b};c.fn["kY"+b]=12(e){14 6[0]?28(c.1G(6[0],d,e?"4K":"4Y")):1b};c.fn[d]=12(e){17 f=6[0];if(!f)14 e==1b?1b:6;if(c.1S(e))14 6.1o(12(l){17 k=c(6);k[d](e.1p(6,l,k[d]()))});if(c.5b(f))14 f.1F.kN==="kM"&&f.1F.2g["a6"+b]||f.1F.1T["a6"+b];1a if(f.1j===9)14 2r.4m(f.2g["a6"+b],f.1T["89"+b],f.2g["89"+b],f.1T["2u"+b],f.2g["2u"+b]);1a if(e===B){f=c.1G(f,d);17 h=28(f);14 c.6i(h)?f:h}1a 14 6.1G(d,1k e==="1N"?e:e+"3h")}})})(5o);(12(3J){3J.1o([\'fl\',\'kK\',\'kR\',\'kW\',\'kX\',\'2q\',\'kV\'],12(i,1y){3J.fx.4M[1y]=12(fx){if(fx.6G==0){fx.43=g1(fx.1E,1y);fx.44=ao(fx.44)}fx.1E.1g[1y]="at("+[2r.4m(2r.9V(2s((fx.59*(fx.44[0]-fx.43[0]))+fx.43[0]),1Z),0),2r.4m(2r.9V(2s((fx.59*(fx.44[1]-fx.43[1]))+fx.43[1]),1Z),0),2r.4m(2r.9V(2s((fx.59*(fx.44[2]-fx.43[2]))+fx.43[2]),1Z),0)].4d(",")+")"}});12 ao(2q){17 23;if(2q&&2q.7X==3j&&2q.18==3)14 2q;if(23=/at\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.22(2q))14[2s(23[1]),2s(23[2]),2s(23[3])];if(23=/at\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.22(2q))14[28(23[1])*2.55,28(23[2])*2.55,28(23[3])*2.55];if(23=/#([a-fA-5Z-9]{2})([a-fA-5Z-9]{2})([a-fA-5Z-9]{2})/.22(2q))14[2s(23[1],16),2s(23[2],16),2s(23[3],16)];if(23=/#([a-fA-5Z-9])([a-fA-5Z-9])([a-fA-5Z-9])/.22(2q))14[2s(23[1]+23[1],16),2s(23[2]+23[2],16),2s(23[3]+23[3],16)];14 eu[3J.6c(2q).1W()]}12 g1(1E,1y){17 2q;do{2q=3J.g4(1E,1y);if(2q!=\'\'&&2q!=\'lD\'||3J.1q(1E,"1T"))2i;1y="fl"}er(1E=1E.1r);14 ao(2q)};17 eu={ly:[0,1Z,1Z],lz:[eh,1Z,1Z],lE:[eo,eo,lF],lK:[0,0,0],lJ:[0,0,1Z],lI:[eL,42,42],lG:[0,1Z,1Z],lH:[0,0,60],lw:[0,60,60],lm:[9f,9f,9f],ln:[0,6M,0],ll:[lk,lh,ei],lj:[60,0,60],lp:[85,ei,47],lq:[1Z,ed,0],lr:[kJ,50,kI],k2:[60,0,0],k3:[k1,k0,jY],jZ:[k4,0,7I],k5:[1Z,0,1Z],kc:[1Z,k9,0],k8:[0,4z,0],k6:[75,0,jX],jW:[eh,ec,ed],jM:[jN,jL,ec],jK:[fd,1Z,1Z],jI:[f7,jJ,f7],jQ:[7I,7I,7I],kd:[1Z,kA,ky],kx:[1Z,1Z,fd],kw:[0,1Z,0],kC:[1Z,0,1Z],kG:[4z,0,0],kF:[0,0,4z],kD:[4z,4z,0],ku:[1Z,eL,0],kt:[1Z,7G,kk],ki:[4z,0,4z],kh:[4z,0,4z],9q:[1Z,0,0],kf:[7G,7G,7G],kl:[1Z,1Z,1Z],ks:[1Z,1Z,0]}})(3J);$(\'a.kn\').1y(\'2I\',\'lL\');17 2k=(12(){17 7Q={};14 12(eU,21){14(7Q[21]?7Q[21]:(7Q[21]=3n 4H("(?:\\\\s|^)"+21+"(?:\\\\s|$)"))).1i(eU.21)}})();17 fg=2;17 79="3d";17 bP="3v";12 bO(3Y){17 31=1F.2U("eK"+3Y);17 bF=1F.2U("eW"+3Y);if(!bF||!31){14 1e}17 5V=bF.ms;if(31.1C.1m==79){19(17 i=1;i<5V.18;i++){5V[i].1g.1M="2H"}31.1C.1m=bP}1a{19(17 i=1;i<5V.18;i++){5V[i].1g.1M=5V[0].1g.1M}31.1C.1m=79}}12 fj(){17 3Y=0;17 7N=3n 71();17 6d=1F.26("2J");19(17 i=0;i<6d.18;i++){if(2k(6d[i],"mt")){17 bC=6d[i].26("4q")[0];if(!bC)bB;17 6n=bC.26("eX")[0];if(!6n)bB;7N[3Y]=6d[i];6d[i].2o("id","eW"+3Y);17 31=1F.24("e5");17 6b=1F.24("a");17 fc=1F.4p(79);31.1g.eQ="bz";31.1g.78="bz";31.1g.eP="mn";31.1g.mj="bz";31.1g.2b="mk";6b.1g.2q=6n.1g.2q;6b.2o("id","eK"+3Y);6b.2o("2Y","41:bO("+3Y+");");6b.2t(fc);31.2t(1F.4p("["));31.2t(6b);31.2t(1F.4p("]"));6n.3G(31,6n.2N[0]);3Y++}}19(17 i=0;i<3Y;i++){if(2k(7N[i],"b0")||(3Y>=fg&&2k(7N[i],"m8"))){bO(i)}}}3Q(fj);17 7E=\'[\'+79+\']\';17 7L=\'[\'+bP+\']\';12 f0(4R){17 2X=1F.2U("2X"+4R);17 2S=1F.2U("2S"+4R);if(!2S||!2X){14 1e}if(2X.1C.1m==7E){19(17 27=2S.1C;27!=1b;27=27.34){if(2k(27,\'7P\')||2k(27,\'7O\')){27.1g.1M=\'2H\'}}2X.1C.1m=7L}1a if(2X.1C.1m==7L){19(17 27=2S.1C;27!=1b;27=27.34){if(2k(27,\'7P\')||2k(27,\'7O\')){27.1g.1M=\'5x\'}}2X.1C.1m=7E}}12 eg(){17 4R=0;17 f9=1F.26("1J");19(17 i=0;2S=f9[i];i++){if(2k(2S,"2S")){4R++;17 2X=1F.24("a");2X.21=\'2X\';2X.2o(\'id\',\'2X\'+4R);2X.2o(\'2Y\',\'41:f0(\'+4R+\');\');17 6V=2k(2S,"b0");19(17 27=2S.1C;27!=1b&&!6V;27=27.34){if(2k(27,\'7O\')||2k(27,\'7P\')){if(27.1g.1M==\'2H\'){6V=1d}}}if(6V){19(17 27=2S.1C;27!=1b;27=27.34){if(2k(27,\'7O\')||2k(27,\'7P\')){27.1g.1M=\'2H\'}}}17 eF=1F.4p(6V?7L:7E);2X.2t(eF);19(17 j=0;j<2S.2N.18;j++){if(2k(2S.2N[j],"m4")){2X.1g.2q=2S.2N[j].1g.2q;2S.2N[j].2t(2X)}}2S.2o(\'id\',\'2S\'+4R)}}}3Q(eg);17 3u={b3:$.1B.2w,bg:12(1h,3F){14 $(1h.1U(\'.1h-1H\').1U(\'b6\').1U(\'li\')[2s(3F)])},aW:12(1h,3F,2F,ef){if(3F==2s(1h.1y(\'7o\'))&&!ef&&2F)14;if(!3u.b3){2F=0}1h.1y(\'7o\',3F.3O());17 7T=1h.1U(\'.1h-1H-56\').1U();7T.1o(12(){$(6).e7(2F,12(){$(6).5F(\'1h-1H-2P\')})});$(7T[3F]).1o(12(){$(6).e6(2F,12(){$(6).6Q(\'1h-1H-2P\')})});17 bj=1h.1U(\'.1h-1H\').1U(\'b6\').1U(\'li\');bj.5F(\'1h-1H-2P\');$(bj[3F]).6Q(\'1h-1H-2P\');3u.e0(1h,$(7T[3F]).2z())},e0:12(1h,e3){if(1h.2k(\'1h-1H-mu\')){1h.1Y(\'.1h-1H-b5\').2x(3u.bg(1h,1h.1y(\'7o\')).2x())}1a{1h.1Y(\'.1h-1H-b5\').2x(1h.1y(\'ex\')+\' &mz; \'+3u.bg(1h,1h.1y(\'7o\')).2x())}if(1h.83(\'.1h-1H-e2\')&&1h.83(\'.1h-1H-e1\')){1V{1h.1Y(\'.1h-1H-e1\').2x($(1h.1U(\'.1h-1H-e2\').1U(\'e5\')[2s(1h.1y(\'7o\'))]).2x())}1X(e){}}17 bc=2r.4m(1h.1U(\'.1h-1H-56\').2z(),2r.4m(1h.1U(\'.1h-1H\').2z(),e3)).3O()+\'3h\';1h.1U(\'.1h-1H-56\').1G(\'2z\',bc);if(1h.1y(\'ek\')){1h.1U(\'.1h-1H\').1G(\'2z\',bc)}},aM:12(1h){17 b2=1h.1U(\'.1h-1H-mB\').1Q().2M(\';\');17 2F=3u.b3?2s(1h.1y(\'eB\')):0;if(1h.1y(\'7Y\')!=\'1d\'){1h.1y(\'7Y\',\'1d\');1h.1Y(\'.1h-1H-aF a\').1Q(b2[0]);1h.1U(\'.1h-1H, .1h-1H-56\').ej(2F)}1a{1h.1y(\'7Y\',\'\');1h.1Y(\'.1h-1H-aF a\').1Q(b2[1]);1h.1U(\'.1h-1H, .1h-1H-56\').ez(2F)}},b9:12(1h,2P){3t(12(){1h.1y(\'mg\',2P.3O());3u.aW(1h,2P,0,1d);if(1h.2k(\'1h-1H-b0\')){3u.aM(1h)}},6M)},1h:12(){17 2G=$(6);2G.5F(\'1h-1H-lV\');17 bd=0;2G.1y(\'ex\',2G.1Y(\'.1h-1H-b5\').2x());17 2P=/1h-1H-2P-(\\d+)/i.22(2G.1y(\'2O\'));if(2P){3u.b9(2G,2s(2P[1])-1)}1a{3u.b9(2G,0)}17 2F=2G.2k(\'1h-1H-eC\')?0:b8;2G.1y(\'eB\',2G.2k(\'1h-1H-eC\')?\'0\':\'75\');2G.1U(\'.1h-1H\').1U(\'b6\').1U(\'li\').1o(12(){17 em=bd;$(6).4y(12(){3u.aW(2G,em,2F,1e);$(6).5B();$(6).1Y(\'*\').5B();14 1e});bd++});17 bo=2G.2k(\'1h-1H-ek\');2G.1y(\'lP\',bo?\'1d\':\'\');if(bo){17 ep=2G.1U(\'.1h-1H\').2b().3O()+\'3h\';2G.1U(\'.1h-1H-56\').1G(\'4K-1R\',ep)}2G.1y(\'7Y\',\'\');2G.1Y(\'.1h-1H-aF a\').4y(12(){3u.aM(2G);14 1e})},3Z:12(){$(\'.1h-1H-m7\').1o(3u.1h)}};3Q(3u.3Z);12 fz(){17 6U=[\'ar\',\'cs\',\'da\',\'de\',\'es\',\'fi\',\'fr\',\'hu\',\'it\',\'ja\',\'ko\',\'lX\',\'dY\',\'lT\',\'g0\',\'g0-br\',\'m0\',\'mf\',\'m9\',\'fW-lZ\',\'fW-lU\'];17 fB=\'en\';1V{17 1T=1F.26(\'1T\')[0]}1X(e){14}17 5D=fB;19(17 i in 6U){if(53.4v(53.18-1-6U[i].18).1W()==\'/\'+6U[i].1W()){5D=6U[i];2i}}if(1T.2y(\'2O\')){1T.2o(\'2O\',1T.2y(\'2O\')+\' 5D-\'+5D)}1a{1T.2o(\'2O\',\'5D-\'+5D)}}3Q(fz);17 2Z={fO:25,fq:0.85,fR:/5h-(\\d+)x(\\d+)/i,fF:/5i((?:-\\d+)+)/i,fI:12(){17 5i=2Z.fF.22($(6).1y(\'2O\'));if(5i!=1b){5i=5i[1].4v(1).2M(\'-\');17 8Y=$(\'#me\').2b();if($(\'.fw\').18){8Y-=$(\'.fw\').2b()}8Y*=2Z.fq;17 5a=[];19(17 w=0;w<5i.18;w++){5a[w]=2s(5i[w])}5a.4W(12(a,b){14 b-a});19(17 w=0;w<5a.18;w++){if(5a[w]<=8Y||w==5a.18-1){2Z.bt(6,5a[w]);2i}}}1a{2Z.bt(6,28(2v.1y(\'2b\')))}},hd:12(){17 2v=$(6).1U(\'2e\');if(!2v)14;if($(6).2k(\'hd-3I\')){17 bu=2v.1U(\'5g[3p="fs"]\').1y(\'3s\')+\'&hd=1\';2v.1U(\'5g[3p="fs"]\').1y(\'3s\',bu);2v.1U(\'6I\').1y(\'4I\',bu);17 ft=$(6).2x();$(6).2x(\'\').2x(ft)}},bt:12(bU,2b){17 2v=$(bU).1U(\'2e\');if(!2v)14;17 5h=2Z.fR.22($(bU).1y(\'2O\'));if(5h!=1b){5h=28(5h[1])/28(5h[2]);17 aQ=2r.my(2b/5h+2Z.fO).3O();2v.1y(\'2b\',2b).1y(\'2z\',aQ);2v.1U(\'6I\').1y(\'2b\',2b).1y(\'2z\',aQ)}},8W:1b,8R:12(){if(2Z.8W!=1b){mC(2Z.8W)}2Z.8W=3t(2Z.aC,6M)},aC:12(){$(\'.fL\').1o(2Z.fI)},3Z:12(){$(\'.fL\').1o(2Z.hd);$(5o).8R(2Z.8R);2Z.aC()}};3Q(2Z.3Z);if(eY=="kB"||eY=="4t"||53=="gs:jH"){fQ(\'1J.8P-1Q { 1M:2H; }\');3Q(12(){17 8p=1F.2U("gm-gn");if(!8p||5o.gF){fQ(\'1J.8P-1Q { 1M:5x; }\');14}17 2l=/(?:^| )8P-5z-(\\d+)(?: |$)/.22(8p.21);if(!2l&&5o.h1)2l=/(?:^| )8P-5z-(1i\\d+)(?: |$)/.22(8p.21);if(!2l)14;17 1K=9z+\'?38=hf:gW.js&9x=9v&9s=1Q/41&gU=\'+2l[1];gQ(1K)})}12 fY(){17 8o=1F.2U(\'ca-gJ\');if(8o&&8o.21==\'3n\'){8o.1C.2Y+=\'&gN=3n\'}}3Q(fY);17 1l={};1l.aS=\'1x://1v.1w.1z/w/1u/7/73/gG.1A\';1l.bR=h4;1l.bT=\'1x://1v.1w.1z/w/1u/8/8f/g6.1A\';1l.bD=\'1x://1v.1w.1z/w/1u/4/4a/gf.go\';1l.7f=40;1l.e8=et;1l.fe=h8;1l.f5=et;1l.fh=gD;1l.74=12(){14 1F.2U(\'gE\')};1l.8b=[];1l.7h=[];1l.aI={};1l.7r=[1l.aS,1l.bT];1l.1t=1b;1l.bl=1e;1l.bk=1e;1l.8j=1e;if(!3j.2C.2d){3j.2C.2d=12(2v,5q){if(5q==1b){5q=0}1a if(5q<0){5q=2r.4m(0,6.18+5q)}19(17 i=5q,j=6.18;i<j;i++){if(6[i]===2v)14 i}14-1}}17 95={gA:1l,ew:12(3x){17 1t=1l.1t;17 1J=1F.24(\'1J\');17 4X=1F.24(\'4X\');4X.4I=3x;1J.2t(4X);3t(12(){1l.74().2t(1J)},1);14{\'1J\':1J,\'4X\':4X}},eZ:12(){1l.bk=1d;if(1l.bl){1l.1t.aT()}},eN:12(){1l.bl=1d;if(1l.bk){1l.1t.aT()}},eM:12(8k,3D){17 1t=1l.1t;1V{17 3q=1F.24(\'3q\');3q.2o(\'4I\',8k);3q.2o(\'1g\',\'1M: 2H;\');3q.2o(\'g7\',\'1d\');1l.74().2t(3q);3q.3N(\'g9\',3D,1e)}1X(e){}3t(3D,gk)},aK:12(3x){17 1t=1l.1t;if(1l.7h.2d(3x)==-1){1l.7h[1l.7h.18]=3x;17 5J=1t.ew(3x);1l.aI[3x]=5J[\'4X\'];5J[\'1J\'].2o(\'1g\',\'aY: 3y; 2z: 3A; 2b: 3A; 48: 3y; z-3F: -dZ;\')}if(1l.aI[3x].2b){1l.8b[1l.8b.18]=3x}1a{3t(12(){1t.aK(3x)},1l.7f)}},bJ:12(3D){17 1t=1l.1t;17 aH=1d;19(17 i in 1l.7r){if(1l.8b.2d(1l.7r[i])==-1){aH=1e}if(1l.7h.2d(1l.7r[i])==-1){1t.aK(1l.7r[i])}}if(aH){3D()}1a{3t(12(){1t.bJ(3D)},1l.7f)}},e4:12(6T){1V{6T.1r.3z(6T)}1X(e){}},bI:12(4b){14(2r.gZ((4b-.5)*2r.ey)+1)/2},aV:12(7e,8h,5M,3D,45){17 1t=1l.1t;7e(45(8h/5M));if(8h>=5M){3D()}1a{3t(12(){1t.aV(7e,8h+1l.7f,5M,3D,45)},1l.7f)}},4A:12(7e,5M,3D,45){17 1t=1l.1t;14 1t.aV(7e,0.0,5M,3D,45)},e9:12(8k){17 1t=1l.1t;1V{17 3q=1F.24(\'3q\');3q.2o(\'4I\',8k);3q.2o(\'1g\',\'1M: 2H;\');3q.2o(\'gX\',\'1d\');1l.74().2t(3q)}1X(e){}},fk:12(5J){17 1t=1l.1t;19(17 6T in 5J){1t.e4(5J[6T])}1l.8j=1e},aT:12(){17 1t=1l.1t;if(1l.8j)14;1l.8j=1d;17 6j=1F.24(\'a\');6j.2o(\'2Y\',\'/\');6j.2o(\'1g\',\'1M:5x; 2R: 5H; 2h: 3A; 1R: 3A; 2b: h5; 2z: gR; 4Y: 3A; gT: 1K(\'+1l.aS+\') dY-gP 3A -gO; z-3F: dZ;\');1l.74().2t(6j);17 4V=1F.2U(\'p-gK\');4V.1g.ee=\'gM hc\';17 6g=1F.24(\'1J\');6g.2o(\'2O\',\'h9\');6g.2o(\'1g\',\'8L: 1R; 4K:3A; 67:3A; 2z: 3A;\');4V.1r.3G(6g,4V);17 bx=12(4b){4b=2s(4b*1l.bR);6j.1g.ee=\'3A \'+(-1l.bR+4b).3O()+\'3h\';4V.1g.2h=4b.3O()+\'3h\';6g.1g.2z=4b.3O()+\'3h\'};1t.4A(bx,1l.e8,12(){1t.e9(1l.bD);3t(12(){17 f8=4V.26(\'a\')[0].1g.8U;4V.26(\'a\')[0].1g.8U=\'1K(\'+1l.bT+\')\';1t.4A(12(4b){bx(1.0-4b)},1l.f5,12(){3t(12(){4V.26(\'a\')[0].1g.8U=f8;1t.fk([6j,6g])},1l.fh)},1t.bI)},1l.fe)},1t.bI)},eS:12(){17 1t=1l.1t;1t.bJ(1t.eZ);1t.eM(1l.bD,1t.eN)},eR:12(){17 1t=1l.1t;17 eT=12(){17 1P={6S:12(2v,1n,fn,70){if(2v.3N)2v.3N(1n,fn,1e);1a if(2v.3P){2v["e"+1n+fn]=fn;2v[1n+fn]=12(){2v["e"+1n+fn](5o.1s,70)};2v.3P("3I"+1n,2v[1n+fn])}},2T:"",8s:"g8",4J:12(3i){6.6S(1F,"bm",12(e,70){if(70)1P=70;1P.2T+=e?e.4F:1s.4F;if(1P.2T.18>1P.8s.18)1P.2T=1P.2T.4v((1P.2T.18-1P.8s.18));if(1P.2T==1P.8s){1P.5Y();1P.2T="";14}},6);6.3k.4J(3i)},5Y:12(3i){5o.5P=3i},3k:{8y:0,8F:0,8z:0,8G:0,7i:1e,8x:1e,9C:"",4S:["9I","9I","9G","9G","9y","9r","9y","9r","8O","8O","8O"],5Y:12(3i){1P.5Y(3i)},4J:12(3i){9C=6.4S;1P.6S(1F,"gg",12(e){if(e.eO.18==1&&1P.3k.8x==1d){17 9t=e.eO[0];1P.3k.8z=9t.6W;1P.3k.8G=9t.8A;1P.3k.7i=1e;1P.3k.8x=1e;1P.3k.9o()}});1P.6S(1F,"gx",12(8B){if(1P.3k.7i==1d)1P.3k.9o(3i)},1e);1P.6S(1F,"gB",12(8B){1P.3k.8y=8B.eH[0].6W;1P.3k.8F=8B.eH[0].8A;1P.3k.7i=1d;1P.3k.8x=1d})},9o:12(3i){eJ=2r.eI(6.8y-6.8z);eV=2r.eI(6.8F-6.8G);x=((6.8y-6.8z)<0)?"9r":"9y";y=((6.8F-6.8G)<0)?"9G":"9I";23=(eJ>eV)?x:y;23=(6.7i==1d)?"8O":23;if(23==6.4S[0])6.4S=6.4S.2D(1,6.4S.18);if(6.4S.18==0){6.4S=6.9C;6.5Y(3i)}}}};14 1P};17 1P=3n eT();1P.5Y=12(){1t.eS.2a(1t)};1P.4J()}};1l.1t=95;3Q(95.eR);17 4u={6w:{\'iW\':\'1x://1v.1w.1z/w/1u/3/36/iX.1A\',\'iV\':\'1x://1v.1w.1z/w/1u/f/ff/iU.1A\',\'iR\':\'1x://1v.1w.1z/w/1u/9/91/iS.1A\',\'iT\':\'1x://1v.1w.1z/w/1u/4/4c/iY.1A\',\'iZ\':\'1x://1v.1w.1z/w/1u/1/1c/j3.1A\',\'j2\':\'1x://1v.1w.1z/w/1u/3/37/j0.1A\',\'j1\':\'1x://1v.1w.1z/w/1u/1/1f/iQ.1A\',\'iP\':\'1x://1v.1w.1z/w/1u/b/bf/iG.1A\',\'iE\':\'1x://1v.1w.1z/w/1u/9/96/hj.1A\',\'iD\':\'1x://1v.1w.1z/w/1u/f/fa/iA.1A\',\'57 9N 3X\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'f2 f1 6F f3 3X\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'38-57 iB\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'38-57 9N\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'38-57 iC iN\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'38-f2 f1 6F f3\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'38-f4 57\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'f4 57 3X\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'38-f6\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'f6 3X\':\'1x://1v.1w.1z/w/1u/1/16/4e.1A\',\'9M 6F 9L 3X\':\'1x://1v.1w.1z/w/1u/5/54/eG.1A\',\'38-9M 6F 9L\':\'1x://1v.1w.1z/w/1u/5/54/eG.1A\',\'9S 3X\':\'1x://1v.1w.1z/w/1u/5/54/9T.1A\',\'9S iK 3X\':\'1x://1v.1w.1z/w/1u/5/54/9T.1A\',\'38-9S\':\'1x://1v.1w.1z/w/1u/5/54/9T.1A\',\'a4 a5 3b\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'j6/j7 (3b) 3X\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jw/jx (3b) 3X\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'9M 6F 9L (3b) 3X\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jv (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'57 9N (3b) 3X\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jg (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jh (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'ji (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jn (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jo (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jm (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'a4 a5 3b 3q\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'a4 a5 3b 1u\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'jl (3b)\':\'1x://1v.1w.1z/w/1u/a/ad/3a.1A\',\'38-jk iz 2\':\'1x://1v.1w.1z/w/1u/2/2f/iy.1A\'},fm:12(){17 eA=1F.2U(\'6C\');if(!eA)14[];17 6C=1F.2U(\'6C\').26(\'a\');17 5X=[];17 l;19(17 i=0;i<6C.18;i++){l=6C[i].2y(\'38\');if(l.2l(/^hI:/i,\'\')){5X[5X.18]=l.4v(9).1D(/\\/[^/]+$/,\'\')}}14 5X},3U:12(a0,eD){19(17 i=0;i<a0.18;i++){if(a0[i]==eD){14 i}}14-1},3Z:12(){if(1k(ev)!=\'3w\'){if(4u.3U(ev,\'hD\')!=-1){14}}1V{17 5X=4u.fm();17 1T=1F.26(\'1T\')[0]}1X(e){14}17 5f=[];if(1k(4u.6w[\'38-\'+el])!=\'3w\'){5f[0]=4u.6w[\'38-\'+el]}1a{19(17 i in 4u.6w){if(4u.3U(5X,i)!=-1){5f[5f.18]=4u.6w[i]}}}if(!5f.18)14;17 g3=5f[2r.hE(2r.hF()*5f.18)];1T.1g.8U=\'1K(\'+g3+\')\'}};3Q(4u.3Z);17 4O={98:[\'5U:g2\'],9D:[\'5U:g2\',\'5U:fZ/hy\',\'5U:fZ/ik\',\'5U:ih\',\'5U:ii\'],fD:\'/fX.js\',fv:\'/fX.1G\',3Z:12(){19(17 i in 4O.98){if(53==4O.98[i]){$.fC(9z+\'?38=\'+8T(53+4O.fD)+\'&9s=1Q/41&9x=9v\')}}19(17 i in 4O.9D){if(53==4O.9D[i]){$(\'9n\').4g($(\'<3i ir="i9" 1n="1Q/1G" i0="hX" />\').1y(\'2Y\',9z+\'?38=\'+8T(53+4O.fv)+\'&9s=1Q/1G&9x=9v\'))}}}};3Q(4O.3Z);3Q(12(){$(\'.fH-3p-1Q\').4y(12(){$(6).7c().1U(\'.fH-9u\').4n()})});',62,1408,'||||||this||||||||||||||||||||||||||||||||||||||||||||||||||||||||||function||return|||var|length|for|else|null||true|false||style|poot|test|nodeType|typeof|spaiConstants|data|type|each|call|nodeName|parentNode|event|self|images|wiki|teamfortress|http|attr|com|png|support|firstChild|replace|elem|document|css|tabs|arguments|div|url|extend|display|string|push|konami|text|left|isFunction|body|children|try|toLowerCase|catch|find|255||className|exec|result|createElement||getElementsByTagName|NavChild|parseFloat|filter|apply|width|options|indexOf|object||documentElement|top|break|selector|hasClass|match|context||setAttribute|guid|color|Math|parseInt|appendChild|offset|obj|opacity|html|getAttribute|height|ownerDocument|prop|prototype|slice|expr|duration|dis|none|target|table|script|handle|split|childNodes|class|selected|remove|position|NavFrame|input|getElementById|now|events|NavToggle|href|youtubeHelper|trigger|Button||select|nextSibling|innerHTML|||title|map|Background_TFC|Classic|isArray|hide|handler|delete|error|px|link|Array|iphone|get|dataType|new|add|name|audio|tbody|value|setTimeout|pootTabsHere|show|undefined|image|hidden|removeChild|0px|ready|pushStack|callback|splice|index|insertBefore|expando|on|jQuery|button|complete|queue|addEventListener|toString|attachEvent|addOnloadHook|global|filters|cache|inArray|contains|_default|maps|tableIndex|init||javascript||start|end|easing|set||overflow|special||progress||join|Background_CP|makeArray|append|offsetTop|relative|checked|namespace|preventDefault|max|toggle|live|createTextNode|tr|shift|disabled|submit|dynamicBg|substr|td|ID|click|128|animate|scrollLeft|scrollTop|currentStyle|radio|keyCode|success|RegExp|src|load|margin|teardown|step|setup|pageScripts|browser|dequeue|indexNavigationBar|keys|number|nth|logoPortlet|sort|img|border|val||json|dir|wgPageName|||content|Control|merge|pos|intWidths|isWindow|domManip|1px|cloneNode|selectedCats|param|ratio|widths|POS|timeout|async|onreadystatechange|readyState|window|checkbox|fromIndex|stopPropagation|compareDocumentPosition|ajaxSettings|removeAttribute|getAttributeNode|Event|block|closest|version|isXML|blur|previousSibling|lang|option|removeClass|PSEUDO|absolute|first|nodes|sizcache|TAG|totalTime|offsetWidth|mouseenter|location|focusout|boxModel|status|handleObj|User|Rows|isEmptyObject|cats|code|F0|139|mouseleave|unbind|abort|u00c0|GET|inline|padding|removeData|proxy|offsetParent|ButtonLink|trim|Tables|uFFFF|ajax|tempPortlet|grep|isNaN|spai|handleComplete|xml|getElementsByClassName|Header|triggerGlobal|removeEventListener|one|curAnim|file|liveFired|querySelectorAll|CLASS|categories|__events__|currentTarget|props|not|matchesSelector|catlinks|custom|zoom|the|state|replaceWith|embed|relatedTarget|cur|level|100|cleanData|which|noData|addClass|change|addEvent|node|langList|isCollapsed|pageX|orig|defaultView|form|ref_obj|Object|textarea||theBody||reliableHiddenOffsets|isReady|cssFloat|collapseCaption|timers|last|parent|speeds|func|timeStep|fragment|preloadingImages|tap|cssHooks|focus|unshift|setRequestHeader|noop|pootSelected|password|jquery|toPreloadImages|empty|auto|checkClone|initialize|clientTop|specialEasing|getComputedStyle|clientLeft|before|marginTop|offsetLeft|etag|NavigationBarHide|toArray|192|toUpperCase|211|jsonp|application|NavigationBarShow|offsetHeight|NavigationBoxes|NavPic|NavContent|reCache|bind|accepts|babies|boolean|deleteExpando|concat|constructor|pootcollapse|camelCase|olddisplay|xhr|access|has|handleSuccess||active|responseText|lastModified|scroll|unique|preloadedImages|leftMatch|source|isImmediatePropagationStopped||selectedIndex|progressTime|case|fired|sound|isPropagationStopped|detachEvent|getText|talkpagelink|placeholder|fromElement|order|pattern|attrHandle|charCode|triggerHandler|CHILD|capture|start_x|stop_x|pageY|evt|sizset|pop|attrFn|start_y|stop_y|odd|preType|origType|even|float|wrapAll|focusin|TAP|edittools|nodeValue|resize|JSON|encodeURIComponent|backgroundImage|isPlainObject|resizeTimer|readyWait|availableWidth|multiple|fixed||Function|update|handleError|spaiSappinMahWiki||scriptEval|pagesJS|traditional||ya|onclick|xa|_change_data|169|fix|ajaxStop|supportsFixedPosition|ua|swing|startTime|stop|head|check_direction|unit|red|RIGHT|ctype|touch|contents|raw|unload|action|LEFT|wgScript|bodyOffset|String|orig_keys|pagesCSS|mouseover|mouseout|DOWN|contentType|UP|notmodified|specialSubmit|Flag|Capture|Point|inlineBlockNeedsLayout|borderLeftWidth|borderTopWidth|marginLeft|Payload|Background_Payload|clientX|min|qa|triggered|pageXOffset|old|haystack|tabIndex|static|attributes|Team|Fortress|client|Ia|metaKey|optDisabled|||globalEval||protocol|setOffset|wa|acceptData|va|ra|ta|parsererror|parseJSON|XMLHttpRequest|getRGB|bindReady|ctrlKey||sa|rgb|onbeforeunload|pa|inprogress|isDefaultPrevented|originalEvent|shrinkWrapBlocks|getResponseHeader|onload|onResize|ATTR|Fa|hidelink|Ea|allPreloaded|preloadingRefs|lastChild|preloadImage|sibling|toggleCollapse|Ba|clean|clone|newHeight|Ga|spaiImage|spySappingMahWiki|runtimeStyle|inAnimation|changeTab|nodeIndex|visibility|oa|collapsed|removeEvent|pootLinkText|animationsEnabled|uniqueSort|titletext|ul|prevObject|200|delayHeight|||bestHeight|ind|||getTab|cssProps|Date|cowtabs|loadedImages|loadedSound|keydown|leadingWhitespace|isVertical|after|Aa||Ca|setWidth|playerUrl|NAME|preFilter|changeHeight|Ha|right|colgroup|continue|HeaderRow|spaiSappingMahWikiWav|noCloneEvent|Table|isXMLDoc|na|smoothInOut|preloadImages|za|Da|buildFragment|fragments|collapseTable|expandCaption|attrMap|spaiHeight|cacheable|sappedLogo|youtube|appendTo|wrapInner|Wa|specified|htmlSerialize|cssText|area|Va|uuid|hrefNormalized|optgroup|vb|La|Ma|wb|||hasAttribute|linear|prevUntil|Ja|prepend|speed|Za|interval|fieldset|__className__|uaMatch|Sa|webkit|DOMContentLoaded|tick|checkOn||xA0|col|toggleClass|thead|doScroll|Ua|detach|parse|Ta|fireEvent|matches|Oa|setInterval|createDocumentFragment|getTime|ajaxSend|ifModified|reset|beforeSend|Ra|open|nb|If|textContent|Syntax|ajaxError|hover|ajaxSuccess|expression|tb|origHandler|unrecognized|serializeArray|username|ob|htmlFor|qb|throw|POST|pb|keypress|ub|processData|||ajaxStart|sb||scriptCharset|_|rb|getElementsByName|elements|die|ajaxComplete|_toggle|||TEST|clientY|Pa|Ka|paddingLeft|Qa|selectors|toElement|prevAll|Ya|frameElement|parents|exclusive|srcElement|Na|cssNumber|swap|httpSuccess|httpNotModified|Modified|specialChange|beforeactivate|lastToggle|only|readOnly|304|submitBubbles|alpha|ActiveXObject|dataFilter|changeBubbles|httpData|setFilters|Xa|Top|no|10000|updatePoot|navbar|edittabs|babysize|destroyNode|span|fadeIn|fadeOut|anim_spaiFallDown|playSound|||230|140|backgroundPosition|force|createNavigationBarToggleButton|240|107|slideUp|vertical|wgTitle|thisInd||245|teenie||while||2000|colors|wPrefs|createImgDiv|originalTitle|PI|slideDown|catlinksnode|pootslideduration|noanimations|needle||NavToggleText|Background_Intelligence|changedTouches|abs|x_magnitude|collapseButton|165|preloadSound|soundLoaded|touches|fontWeight|styleFloat|initKonami|hitItDoc|Konami|element|y_magnitude|collapsibleTable|th|wgAction|imagesLoaded|toggleNavigationBar|of|King|Hill|Territorial|anim_spaiBackUp|Arena|144|oldBackground|divs|||ButtonText|224|anim_spaiWait||autoCollapse|anim_sapperDestroyed||createCollapseButtons|spyAnimationFinished|backgroundColor|getCategories||using|Left|maxWidth||movie|resultHtml|doesNotIncludeMarginInBodyOffset|suffixCSS|infobox||pageYOffset|langClass||defaultLang|getScript|suffixJS|Width|widthsR|subtractsBorderForOverflowNotVisible|diff|setSize|5px|visible|youtubebox|getBoundingClientRect|xb|chromeSize|solid|appendCSS|ratioR|doesAddBorderForTableAndCells|doesNotAddBorder|000|cellspacing|zh|Page|talkpageplus|Pilk|pt|getColor|WindPower|selectedCat|curCSS|child|Team_Fortress_Wiki_Egg_Logo_Sap|preload|3838404037393739666513|canplaythrough|||webkitMatchesSelector|msMatchesSelector|mousedown|Team_Fortress_Wiki_Egg|touchmove|sizzle||contentWindow|1000|keyup|editpage|specialchars|wav|mousemove|animated|mouseup|Special||__sizzle__|createComment|finally|touchend|mozMatchesSelector|HTML|constants|touchstart|reverse|2250|globalWrapper|noDefaultEdittools|Team_Fortress_Wiki_Egg_Spy|parentsUntil|innerText|talk|logo|next|center|section|50000px|repeat|importScriptURI|200px|andSelf|background|nocache|switch|Edittools|autoplay|prev|sin|siblings|testJsEdittools|Until|iframe|196|160px|0n|nextUntil|900|portlet|||bottom||nextAll|MediaWiki|enabled|header|contentDocument|Background_Spy|rea|clearQueue|delay|readonly|maxlength|cellSpacing|maxLength||changeData|setData||444553540000|96B8|applet|armory|getData|classid|rowspan|rowSpan|noDynamicBackground|floor|random|property|can|Category|changed|removeAttr|frameBorder|colSpan|colspan|tabindex|usemap|frameborder|useMap|11cf|AE6D|noConflict|size|hasOwnProperty|screen|array|isPrototypeOf|media|userAgent|navigator|bfnrt|parentWindow|opera|msie|rv|mozilla|stylesheet|||Invalid||radiotest|||Esquilax|Lagg|4px|armorytest|D27CDB6E|clsid||optSelected|u00a0|regexp|rel|||compatible|Boolean|safari|Number|Background_GG2|Garrison|Background_Achievements|points|point|Achievements|Spy|beforedeactivate|Background_Sniper|stopImmediatePropagation|cancelBubble|1E8|Race|beforeunload|timeStamp|timing|returnValue|Sniper|Background_Medic|Pyro|Background_Pyro|Demoman|Background_Soldier|Soldier|Scout|Background_Scout|Background_Demoman|Engineer|Background_Heavy|Medic|Heavy|Background_Engineer|undelegate|delegate|Assassination|Protection|attrName|attrChange|||altKey|bubbles|cancelable|detail|Gameplay|Lists|Mapping|charAt|Gang|Weapons|Patches|Maps|Movement|eventPhase|layerX|view||shiftKey|wheelDelta|Classes|Attack|Defend|screenY|screenX|newValue|layerY|offsetX|offsetY|relatedNode|prevValue|dblclick|Upload|lightgreen|238|lightcyan|216|lightblue|173|01|Accept|lightgrey|Since|None|Match|With|Requested|khaki|130|122|darkviolet|150|233|darkred|darksalmon|148|fuchsia|indigo|send|green|215|||gold|lightpink|Type|silver|plain|violet|purple|jsonpCallback|203|white|urlencoded|external||post|ajaxSetup|www|yellow|pink|orange|loaded|lime|lightyellow|193|Content|182|edit|magenta|olive|1_|navy|maroon|host|204|153|borderBottomColor|overflowY|CSS1Compat|compatMode|fadeToggle|slideToggle|overflowX|borderLeftColor|paddingRight|marginRight|fadeTo|outlineColor|borderRightColor|borderTopColor|outer|off|slow|clearInterval|600|fast|able|400|cellpadding|20px|Height|inner|||cos|1E4|scrollTo|paddingBottom|paddingTop|183||darkmagenta|189|darkkhaki|darkgrey|darkgreen|Etag|darkolivegreen|darkorange|darkorchid|300||1223|Last|darkcyan|responseXML|aqua|azure|Microsoft|XMLHTTP|marginBottom|transparent|beige|220|cyan|darkblue|brown|blue|black|_blank|charset|datetime|caption|pootvertical|wrap|date|tfoot|pl|hant|nojs|month|nl|email|hans|ro|fontSize|1em|outerHTML|NavHead|getPropertyValue|pixelLeft|container|autocollapse|sv|||512|unwrap|bodyContent|ru|pootselected|zIndex|serialize|textAlign|6em|HEAD|prependTo|normal|Bottom|getJSON|Right|meta|rows|collapsible|notitle|week|lineHeight|replaceAll|round|mdash|range|showhide|clearTimeout|legend|insertAfter|time|search|tel'.split('|'),0,{}))
 
  
/* Google Analytics - Uncompressed */
+
// External links open in new windows/tabs:
var _gaq = _gaq || [];
+
$('a.external').attr('target', '_blank');
_gaq.push(['_setAccount', 'UA-18260470-1']);
+
 
_gaq.push(['_trackPageview']);
+
/** Collapsible tables *********************************************************
_gaq.push(['_trackPageLoadTime']);
+
  *
(function() {
+
  *  Description: Allows tables to be collapsed, showing only the header. See
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+
  *              [[Wikipedia:NavFrame]].
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+
  *  Maintainers: [[User:R. Koot]]
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+
  */
})();
+
var hasClass = (function () {
 +
    var reCache = {};
 +
    return function (element, className) {
 +
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
 +
    };
 +
})();
 +
 
 +
var autoCollapse = 2;
 +
var collapseCaptionLang = {'ar': 'أخف', 'cs': 'sbalit', 'da': 'fold sammen', 'de': 'einklappen', 'es': 'contraer', 'fi': 'supista', 'fr': 'masquer', 'hu': 'becsuk', 'it': 'comprimi', 'ja': '折り畳む', 'ko': '접기', 'nl': 'samenvouwen', 'pl': 'zwiń', 'pt': 'ocultar', 'pt-br': 'ocultar', 'ro': 'restrânge', 'ru': 'свернуть', 'sv': 'dölj', 'tr': 'daralt', 'zh-hans': '折叠', 'zh-hant': '合併'};
 +
var expandCaptionLang = {'ar': 'أظهر', 'cs': 'rozbalit', 'da': 'fold ud', 'de': 'ausklappen', 'es': 'expandir', 'fi': 'Laajenna', 'fr': 'afficher', 'hu': 'kinyit', 'it': 'espandi', 'ja': '展開する', 'ko': '펼치기', 'nl': 'uitvouwen', 'pl': 'rozwiń', 'pt': 'expandir', 'pt-br': 'expandir', 'ro': 'extinde', 'ru': 'развернуть', 'sv': 'visa', 'tr': 'genişlet', 'zh-hans': '展开', 'zh-hant': '展開'};
 +
var collapseCaption = collapseCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'collapse';
 +
var expandCaption = expandCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'expand';
 +
 +
window.collapseTable = function ( tableIndex ) {
 +
    var Button = document.getElementById( 'collapseButton' + tableIndex );
 +
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 +
 +
    if ( !Table || !Button ) {
 +
        return false;
 +
    }
 +
 +
    var Rows = Table.rows;
 +
    var i;
 +
 +
    if ( Button.firstChild.data === collapseCaption ) {
 +
        for ( i = 1; i < Rows.length; i++ ) {
 +
            Rows[i].style.display = 'none';
 +
        }
 +
        Button.firstChild.data = expandCaption;
 +
    } else {
 +
        for ( i = 1; i < Rows.length; i++ ) {
 +
            Rows[i].style.display = Rows[0].style.display;
 +
        }
 +
        Button.firstChild.data = collapseCaption;
 +
    }
 +
};
 +
 +
function createCollapseButtons() {
 +
    var tableIndex = 0;
 +
    var NavigationBoxes = {};
 +
    var Tables = document.getElementsByTagName( 'table' );
 +
    var i;
 +
 +
    function handleButtonLink( index, e ) {
 +
        window.collapseTable( index );
 +
        e.preventDefault();
 +
    }
 +
 +
    for ( i = 0; i < Tables.length; i++ ) {
 +
        if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
 +
 +
            /* only add button and increment count if there is a header row to work with */
 +
            var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
 +
            if ( !HeaderRow ) continue;
 +
            var Header = HeaderRow.getElementsByTagName( 'th' )[0];
 +
            if ( !Header ) continue;
 +
 +
            NavigationBoxes[ tableIndex ] = Tables[i];
 +
            Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
 +
 +
            var Button    = document.createElement( 'span' );
 +
            var ButtonLink = document.createElement( 'a' );
 +
            var ButtonText = document.createTextNode( collapseCaption );
 +
 +
            Button.className = 'collapseButton';  /* Styles are declared in Common.css */
 +
 +
            ButtonLink.style.color = Header.style.color;
 +
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
 +
            ButtonLink.setAttribute( 'href', '#' );
 +
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
 +
            ButtonLink.appendChild( ButtonText );
 +
 +
            Button.appendChild( document.createTextNode( '[' ) );
 +
            Button.appendChild( ButtonLink );
 +
            Button.appendChild( document.createTextNode( ']' ) );
 +
 +
            Header.insertBefore( Button, Header.firstChild );
 +
            tableIndex++;
 +
        }
 +
    }
 +
 +
    for ( i = 0;  i < tableIndex; i++ ) {
 +
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
 +
            window.collapseTable( i );
 +
        }
 +
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
 +
            var element = NavigationBoxes[i];
 +
            while ((element = element.parentNode)) {
 +
                if ( $( element ).hasClass( 'outercollapse' ) ) {
 +
                    window.collapseTable ( i );
 +
                    break;
 +
                }
 +
            }
 +
        }
 +
    }
 +
}
 +
 +
$( createCollapseButtons );
 +
 
 +
/** Dynamic Navigation Bars (experimental) *************************************
 +
*
 +
*  Description: See [[Wikipedia:NavFrame]].
 +
*  Maintainers: UNMAINTAINED
 +
*/
 +
 
 +
// set up the words in your language
 +
var NavigationBarHide = '[' + collapseCaption + ']';
 +
var NavigationBarShow = '[' + expandCaption + ']';
 +
 
 +
// shows and hides content and picture (if available) of navigation bars
 +
// Parameters:
 +
//    indexNavigationBar: the index of navigation bar to be toggled
 +
function toggleNavigationBar(indexNavigationBar){
 +
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
 +
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 +
 
 +
    if (!NavFrame || !NavToggle) {
 +
        return false;
 +
    }
 +
 
 +
    // if shown now
 +
    if (NavToggle.firstChild.data == NavigationBarHide) {
 +
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
 +
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
 +
                NavChild.style.display = 'none';
 +
            }
 +
        }
 +
    NavToggle.firstChild.data = NavigationBarShow;
 +
 
 +
    // if hidden now
 +
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
 +
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
 +
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
 +
                NavChild.style.display = 'block';
 +
            }
 +
        }
 +
        NavToggle.firstChild.data = NavigationBarHide;
 +
    }
 +
}
 +
 
 +
// adds show/hide-button to navigation bars
 +
function createNavigationBarToggleButton(){
 +
    var indexNavigationBar = 0;
 +
    // iterate over all < div >-elements
 +
    var divs = document.getElementsByTagName("div");
 +
    for (var i = 0; NavFrame = divs[i]; i++) {
 +
        // if found a navigation bar
 +
        if (hasClass(NavFrame, "NavFrame")) {
 +
 
 +
            indexNavigationBar++;
 +
            var NavToggle = document.createElement("a");
 +
            NavToggle.className = 'NavToggle';
 +
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
 +
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 +
 
 +
            var isCollapsed = hasClass( NavFrame, "collapsed" );
 +
            /*
 +
            * Check if any children are already hidden.  This loop is here for backwards compatibility:
 +
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
 +
            * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
 +
            * the content visible without JavaScript support), the new recommended way is to add the class
 +
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
 +
            */
 +
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
 +
                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
 +
                    if ( NavChild.style.display == 'none' ) {
 +
                        isCollapsed = true;
 +
                    }
 +
                }
 +
            }
 +
            if (isCollapsed) {
 +
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
 +
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
 +
                        NavChild.style.display = 'none';
 +
                    }
 +
                }
 +
            }
 +
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
 +
            NavToggle.appendChild(NavToggleText);
 +
 
 +
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
 +
            for(var j=0; j < NavFrame.childNodes.length; j++) {
 +
                if (hasClass(NavFrame.childNodes[j], "NavHead")) {
 +
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
 +
                    NavFrame.childNodes[j].appendChild(NavToggle);
 +
                }
 +
            }
 +
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
 +
        }
 +
    }
 +
}
 +
 
 +
$( createNavigationBarToggleButton );
 +
 
 +
//END Collapsible tables *********************************************************
 +
 
 +
// PootTabs by User:WindPower~
 +
// It puts tabs on pages.
 +
var pootTabsHere = {
 +
    animationsEnabled: $.support.opacity,
 +
getTab:function(poot, index) {
 +
return $(poot.children('.poot-tabs').children('ul').children('li')[parseInt(index)]);
 +
},
 +
changeTab:function(poot, index, duration, force) {
 +
if(index == parseInt(poot.attr('pootSelected')) && !force && duration) return;
 +
if(!pootTabsHere.animationsEnabled) {
 +
duration = 0;
 +
}
 +
poot.attr('pootSelected', index.toString());
 +
var babies = poot.children('.poot-tabs-content').children();
 +
babies.each(function() {
 +
$(this).fadeOut(duration, function(){
 +
$(this).removeClass('poot-tabs-selected');
 +
});
 +
});
 +
$(babies[index]).each(function() {
 +
$(this).fadeIn(duration, function(){
 +
$(this).addClass('poot-tabs-selected');
 +
});
 +
});
 +
var cowtabs = poot.children('.poot-tabs').children('ul').children('li');
 +
cowtabs.removeClass('poot-tabs-selected');
 +
$(cowtabs[index]).addClass('poot-tabs-selected');
 +
pootTabsHere.updatePoot(poot, $(babies[index]).height());
 +
},
 +
updatePoot:function(poot, babysize) {
 +
if(poot.hasClass('poot-tabs-notitle')) {
 +
poot.find('.poot-tabs-titletext').html(pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
 +
} else {
 +
poot.find('.poot-tabs-titletext').html(poot.attr('originalTitle') + ' &mdash; ' + pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
 +
}
 +
if(poot.has('.poot-tabs-edittabs') && poot.has('.poot-tabs-navbar')) {
 +
try {
 +
poot.find('.poot-tabs-navbar').html($(poot.children('.poot-tabs-edittabs').children('span')[parseInt(poot.attr('pootSelected'))]).html());
 +
} catch(e) {}
 +
}
 +
var bestHeight = Math.max(poot.children('.poot-tabs-content').height(), Math.max(poot.children('.poot-tabs').height(), babysize)).toString() + 'px';
 +
poot.children('.poot-tabs-content').css('height', bestHeight);
 +
if(poot.attr('vertical')) {
 +
poot.children('.poot-tabs').css('height', bestHeight);
 +
}
 +
},
 +
toggleCollapse:function(poot) {
 +
var pootLinkText = poot.children('.poot-tabs-showhide').text().split(';');
 +
var duration = pootTabsHere.animationsEnabled ? parseInt(poot.attr('pootslideduration')) : 0;
 +
if(poot.attr('pootcollapse') != 'true') {
 +
poot.attr('pootcollapse', 'true');
 +
poot.find('.poot-tabs-hidelink a').text(pootLinkText[0]);
 +
poot.children('.poot-tabs, .poot-tabs-content').slideUp(duration);
 +
}
 +
else {
 +
poot.attr('pootcollapse', '');
 +
poot.find('.poot-tabs-hidelink a').text(pootLinkText[1]);
 +
poot.children('.poot-tabs, .poot-tabs-content').slideDown(duration);
 +
}
 +
},
 +
delayHeight:function(poot, selected) {
 +
setTimeout(function() {
 +
poot.attr('pootselected', selected.toString());
 +
pootTabsHere.changeTab(poot, selected, 0, true);
 +
if(poot.hasClass('poot-tabs-collapsed')) {
 +
pootTabsHere.toggleCollapse(poot);
 +
}
 +
}, 100);
 +
},
 +
poot:function() {
 +
var dis = $(this);
 +
dis.removeClass('poot-tabs-nojs'); // If this thing runs, JS is on
 +
var ind = 0;
 +
dis.attr('originalTitle', dis.find('.poot-tabs-titletext').html());
 +
var selected = /poot-tabs-selected-(\d+)/i.exec(dis.attr('class'));
 +
if(selected) {
 +
pootTabsHere.delayHeight(dis, parseInt(selected[1])-1);
 +
}
 +
else {
 +
pootTabsHere.delayHeight(dis, 0);
 +
}
 +
var duration = dis.hasClass('poot-tabs-noanimations') ? 0 : 200;
 +
dis.attr('pootslideduration', dis.hasClass('poot-tabs-noanimations') ? '0' : '75');
 +
dis.children('.poot-tabs').children('ul').children('li').each(function(){
 +
var thisInd = ind;
 +
$(this).click(function(){
 +
pootTabsHere.changeTab(dis, thisInd, duration, false);
 +
$(this).blur();
 +
$(this).find('*').blur();
 +
return false;
 +
});
 +
ind++;
 +
});
 +
var isVertical = dis.hasClass('poot-tabs-vertical');
 +
dis.attr('pootvertical', isVertical ? 'true' : '');
 +
if(isVertical) {
 +
var teenie = dis.children('.poot-tabs').width().toString() + 'px';
 +
dis.children('.poot-tabs-content').css('margin-left', teenie);
 +
}
 +
dis.attr('pootcollapse', ''); // False
 +
dis.find('.poot-tabs-hidelink a').click(function(){
 +
pootTabsHere.toggleCollapse(dis);
 +
return false;
 +
});
 +
},
 +
init:function() {
 +
$('.poot-tabs-container').each(pootTabsHere.poot);
 +
}
 +
};
 +
$(pootTabsHere.init);
 +
 
 +
// Language support fixes
 +
var langFixes = {
 +
init: function() {
 +
// Supported list of languages (not including the default one):
 +
var langList = ['ar', 'cs', 'da', 'de', 'es', 'fi', 'fr', 'hu', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'pt-br', 'ro', 'ru', 'sv', 'tr', 'zh-hans', 'zh-hant'];
 +
// Assumed language if the page is in none of the languages above:
 +
var defaultLang = 'en';
 +
var lang = defaultLang;
 +
for(var i in langList) {
 +
if(mw.config.get('wgPageName').substr(mw.config.get('wgPageName').length - 1 - langList[i].length).toLowerCase() == '/' + langList[i].toLowerCase()) {
 +
lang = langList[i];
 +
break;
 +
}
 +
}
 +
$('body').addClass('lang-' + lang);
 +
}
 +
};
 +
$(langFixes.init);
 +
 
 +
// Custom tooltip component. See Template:Tooltip
 +
var wikiTooltip = {
 +
    init: function() {
 +
        var $tooltips = $('.wiki-tooltip .wiki-tooltip-content');
 +
        if ($tooltips[0]) {
 +
            $tooltips.each(function() {
 +
                var $this = $(this);
 +
                function handler() {
 +
                    // Check for links and handle them on handheld devices
 +
                    if (!!$this.closest('a').attr('href')) {
 +
                        $this.closest('a').removeAttr('title');
 +
 
 +
                        widthRect <= 1000 ? wikiTooltip.hasLink($this) : wikiTooltip.removeAnchor($this);
 +
                    }
 +
                   
 +
                    // Prevent tooltips from overflowing the viewport
 +
                    var bounding = $this[0].getBoundingClientRect();
 +
                    edgeRect = {
 +
                        left: Math.floor(($this.width() + bounding.left + 10)),
 +
                        right: Math.floor(($this.width() + bounding.right + 10))
 +
                    };
 +
 
 +
                    widthRect = $(window).innerWidth();
 +
                    if (edgeRect.left >= (widthRect || document.documentElement.clientWidth)) {
 +
                        $this.css('left', '');
 +
                        $this.css('right', '50%');
 +
                    } else if (edgeRect.right <= (widthRect || document.documentElement.clientWidth)) {
 +
                        $this.css('right', '');
 +
                        $this.css('left', '50%');
 +
                    }
 +
                }
 +
                $(handler);
 +
                setTimeout(function() {
 +
                    $(window).on('resize', handler);
 +
                }, 250);
 +
            });
 +
        }
 +
    },
 +
    hasLink: function(tooltip) {
 +
        if (tooltip.find('a').length < 1) {
 +
            var $a = $('<a>');
 +
            var url = tooltip.closest('a');
 +
            var href = url.attr('href');
 +
 
 +
            $a.attr('href', href);
 +
            url.attr('href', 'javascript:void(0);');
 +
            tooltip.append($a);
 +
        }
 +
    },
 +
    removeAnchor: function(tooltip) {
 +
        var url = tooltip.closest('a');
 +
        var href = url.attr('href');
 +
 
 +
        innerLink = tooltip.find('a').attr('href');
 +
        if (innerLink) {
 +
            href = innerLink;
 +
            url.attr('href', href);
 +
            tooltip.find('a').remove();
 +
        } else {
 +
            return;
 +
        }
 +
    }
 +
};
 +
$(wikiTooltip.init);
 +
 
 +
// Logged-in body class injection
 +
var loggedinBodyClass = {
 +
init: function() {
 +
$('body').addClass(mw.config.get('wgUserName') == null ? 'not-logged-in' : 'logged-in');
 +
}
 +
};
 +
$(loggedinBodyClass.init);
 +
 
 +
// Resize YouTube embed, turn HD on, etc, by User:WindPower
 +
var youtubeHelper = {
 +
chromeSize: 25, // This is the height (in pixels) of the chrome of YouTube's embedded video player. Update this whenever they release a new embedded video player
 +
maxWidth: 0.85, // Maximum fraction of the available width that the video may take
 +
infoboxes: ['.infobox', '.testchamber'], // Selectors of infobox-style boxes that should be deducted from the page's available width
 +
ratioR: /ratio-(\d+)x(\d+)/i,
 +
widthsR: /widths((?:\D+\d+)+)/i,
 +
setSize:function() {
 +
var widths = youtubeHelper.widthsR.exec($(this).attr('class'));
 +
if(widths != null) {
 +
widths = widths[1].substr(1).split(/\D+/g);
 +
var availableWidth = $('#bodyContent').width();
 +
for(var i in youtubeHelper.infoboxes) {
 +
if($(youtubeHelper.infoboxes[i]).length) {
 +
availableWidth -= $(youtubeHelper.infoboxes[i]).width();
 +
}
 +
}
 +
availableWidth *= youtubeHelper.maxWidth;
 +
var intWidths = [];
 +
for(var w = 0; w < widths.length; w++) {
 +
intWidths[w] = parseInt(widths[w]);
 +
}
 +
intWidths.sort(function(a, b){return b - a;});
 +
for(var w = 0; w < intWidths.length; w++) {
 +
if(intWidths[w] <= availableWidth || w == intWidths.length-1) {
 +
youtubeHelper.setWidth(this, intWidths[w]);
 +
break;
 +
}
 +
}
 +
}
 +
else {
 +
youtubeHelper.setWidth(this, parseFloat(obj.attr('width')));
 +
}
 +
},
 +
setUrl:function() {
 +
var obj = $(this).children('object');
 +
if(!obj.length) return;
 +
obj.append($('<param name="allowscriptaccess" value="true"></param>'));
 +
obj.append($('<param name="allowfullscreen" value="true"></param>'));
 +
var titleParts = mw.config.get('wgPageName').split(/\//g);
 +
var lang = 'en';
 +
if(titleParts.length == 2 && !mw.config.get('wgCanonicalSpecialPageName')) {
 +
lang = titleParts[titleParts.length-1];
 +
}
 +
var playerUrl = obj.children('param[name="movie"]').attr('value') + '&version=2&fs=1&theme=dark&color=white' + ($(this).hasClass('hd-on') ? '&hd=1' : '') + '&cc_load_policy=1&modestbranding=1&hl=' + lang + '&cc_lang_pref=' + lang;
 +
obj.children('param[name="movie"]').attr('value', playerUrl);
 +
obj.children('embed').attr('src', playerUrl).attr('allowscriptaccess', 'always').attr('allowfullscreen', 'true');
 +
var resultHtml = $(this).html();
 +
$(this).html('').html(resultHtml);
 +
},
 +
setWidth:function(youtube, width) {
 +
var obj = $(youtube).children('object');
 +
if(!obj) return;
 +
if($(youtube).hasClass('youtube-audio')) {
 +
obj.attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <object> height
 +
obj.children('embed').attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <embed> height
 +
}
 +
else {
 +
var ratio = youtubeHelper.ratioR.exec($(youtube).attr('class'));
 +
if(ratio != null) {
 +
ratio = parseFloat(ratio[1])/parseFloat(ratio[2]);
 +
var newHeight = Math.round(width / ratio + youtubeHelper.chromeSize).toString();
 +
obj.attr('width', width).attr('height', newHeight); // Set <object> height
 +
obj.children('embed').attr('width', width).attr('height', newHeight); // Set <embed> height
 +
}
 +
}
 +
},
 +
resizeTimer:null,
 +
resize:function() {
 +
if(youtubeHelper.resizeTimer != null) {
 +
clearTimeout(youtubeHelper.resizeTimer);
 +
}
 +
youtubeHelper.resizeTimer = setTimeout(youtubeHelper.onResize, 100);
 +
},
 +
onResize:function() {
 +
$('.youtubebox').each(youtubeHelper.setSize);
 +
},
 +
init:function() {
 +
$('.youtubebox').each(youtubeHelper.setUrl);
 +
$(window).resize(youtubeHelper.resize);
 +
youtubeHelper.onResize();
 +
}
 +
};
 +
$(youtubeHelper.init);
 +
 
 +
// Edittools loader copied from http://en.wikipedia.org/wiki/MediaWiki:Common.js/edit.js?oldid=407371785
 +
// Only slightly modified by seb26
 +
 
 +
/**
 +
*  Edittools javascript loader ************************************************
 +
*
 +
*  Description: Pulls in [[MediaWiki:Edittools.js]]. Includes a cache-bypassing
 +
*  version number in the URL in order to allow any changes to the edittools to
 +
*  be rapidly deployed to users.
 +
*
 +
*  Note that, by default, this function does nothing unless the element with
 +
*  the ID "editpage-specialchars" (which contains the old edittools code in
 +
*  [[MediaWiki:Edittools]], and will be retained as a placeholder in the new
 +
*  implementation) has a class named "edittools-version-NNN", where NNN is a
 +
*  number.  If the class name has "test" before the number, the code will only
 +
*  run for users who have set "window.testJsEdittools = true" in their user JS.
 +
*  The "test" should be retained in the class name until the new edittools
 +
*  implementation is ready and fully tested, and until at least 30 days have
 +
*  passed since this loader stub was added (which will be in 27 June 2008).
 +
*
 +
*  For compatibility with Alex Smotrov's original implementation, on which this
 +
*  code is loosely based (see [[mw:User talk:Alex Smotrov/edittools.js]]), this
 +
*  loader can also be disabled by setting "window.noDefaultEdittools = true".
 +
*
 +
*  Maintainers: [[User:Ilmari Karonen]]
 +
*/
 +
 
 +
if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1 || mw.config.get('wgPageName') == "Special:Upload") //scripts specific to editing pages
 +
{
 +
 +
  // Prevent the static edittools from flashing before the compact edittools below is loaded.
 +
  mw.util.addCSS('div.edittools-text { display:none; }');
 +
 +
  $(function () {
 +
    // needs to be deferred until the DOM has fully loaded
 +
    var placeholder = document.getElementById("editpage-specialchars");
 +
    if (!placeholder || window.noDefaultEdittools) {
 +
      //Show the static edittools again for users with "window.noDefaultEdittools=true".
 +
      mw.util.addCSS('div.edittools-text { display:block; }');
 +
      return;
 +
    }
 +
    var match = /(?:^| )edittools-version-(\d+)(?: |$)/.exec(placeholder.className);
 +
 +
    // set window.testJsEdittools = true to enable testing before full deployment
 +
    if (!match && window.testJsEdittools)
 +
        match = /(?:^| )edittools-version-(test\d+)(?: |$)/.exec(placeholder.className);
 +
 +
    if (!match) return;
 +
    var url = mw.config.get('wgScript') + '?title=MediaWiki:Edittools.js&action=raw&ctype=text/javascript&nocache=' + match[1];
 +
    mw.loader.load(url);
 +
  });
 +
}
 +
 
 +
/********* MediaWiki:Valve.js *********/
 +
function talkpageplus()
 +
{
 +
    var talkpagelink = document.getElementById('ca-talk');
 +
    if (talkpagelink && talkpagelink.className == 'new')
 +
    {
 +
        talkpagelink.firstChild.href += '&section=new';
 +
    }
 +
}
 +
$(talkpageplus);
 +
 
 +
// Konami code easter egg by WindPower, modified by Wookipan
 +
// Constants:
 +
var spaiConstants = {};
 +
// Editable constants:
 +
// General info:
 +
spaiConstants.spaiEnabled = true;
 +
spaiConstants.spaiImage = '/w/images/7/73/Team_Fortress_Wiki_Egg_Spy.png';
 +
spaiConstants.spaiHeight = 196;
 +
spaiConstants.sapperClass = '--sapped';
 +
spaiConstants.spaiSappingMahWikiWav = '/w/images/4/4a/Team_Fortress_Wiki_Egg.wav';
 +
spaiConstants.timeStep = 40; // In milliseconds; 40 ms => 25 fps
 +
// Animation timing (all times in milliseconds):
 +
spaiConstants.anim_spaiFallDown = 2000; // Time for Spy to fall down
 +
spaiConstants.anim_spaiWait = 900; // Time Spy waits before going back up
 +
spaiConstants.anim_spaiBackUp = 2000; // Time for Spy to go back up
 +
spaiConstants.anim_sapperDestroyed = 2250; // Time until Sapper gets destroyed
 +
// End editable constants
 +
spaiConstants.theBody = function(){return document.getElementById('content');};
 +
spaiConstants.preloadedImages = [];
 +
spaiConstants.preloadingImages = [];
 +
spaiConstants.preloadingRefs = {};
 +
spaiConstants.toPreloadImage = spaiConstants.spaiImage;
 +
spaiConstants.self = null;
 +
spaiConstants.loadedSound = false;
 +
spaiConstants.loadedImages = false;
 +
spaiConstants.fired = false;
 +
// End constants
 +
 
 +
if (!Array.prototype.indexOf) {
 +
  Array.prototype.indexOf = function (obj, fromIndex) {
 +
    if (fromIndex == null) {
 +
        fromIndex = 0;
 +
    } else if (fromIndex < 0) {
 +
        fromIndex = Math.max(0, this.length + fromIndex);
 +
    }
 +
    for (var i = fromIndex, j = this.length; i < j; i++) {
 +
        if (this[i] === obj)
 +
            return i;
 +
    }
 +
    return -1;
 +
  };
 +
}
 +
 
 +
var spaiSappinMahWiki = {
 +
constants: spaiConstants,
 +
createImgDiv:function(image) {
 +
var self = spaiConstants.self;
 +
var div = document.createElement('div');
 +
var img = document.createElement('img');
 +
img.src = image;
 +
div.appendChild(img);
 +
setTimeout(function(){spaiConstants.theBody().appendChild(div);}, 1);
 +
return {
 +
'div': div,
 +
'img': img
 +
};
 +
},
 +
imagesLoaded:function() {
 +
spaiConstants.loadedImages = true;
 +
if(spaiConstants.loadedSound) {
 +
spaiConstants.self.spySappingMahWiki();
 +
}
 +
},
 +
soundLoaded:function() {
 +
spaiConstants.loadedSound = true;
 +
if(spaiConstants.loadedImages) {
 +
spaiConstants.self.spySappingMahWiki();
 +
}
 +
},
 +
preloadSound:function(sound, callback) {
 +
var self = spaiConstants.self;
 +
try {
 +
var audio = document.createElement('audio');
 +
audio.setAttribute('src', sound);
 +
audio.setAttribute('style', 'display: none;');
 +
audio.setAttribute('preload', 'true');
 +
spaiConstants.theBody().appendChild(audio);
 +
audio.addEventListener('canplaythrough', callback, false);
 +
}
 +
catch(e) {}
 +
setTimeout(callback, 1000); // Fallback
 +
},
 +
preloadImage:function(image) {
 +
var self = spaiConstants.self;
 +
if(spaiConstants.preloadingImages.indexOf(image) == -1) {
 +
spaiConstants.preloadingImages[spaiConstants.preloadingImages.length] = image;
 +
var nodes = self.createImgDiv(image);
 +
spaiConstants.preloadingRefs[image] = nodes['img'];
 +
nodes['div'].setAttribute('style', 'visibility: hidden; height: 0px; width: 0px; overflow: hidden; z-index: -10000;');
 +
}
 +
if(spaiConstants.preloadingRefs[image].width) {
 +
spaiConstants.preloadedImages[spaiConstants.preloadedImages.length] = image;
 +
}
 +
else
 +
{
 +
setTimeout(function(){self.preloadImage(image);}, spaiConstants.timeStep);
 +
}
 +
},
 +
preloadImages:function(callback) {
 +
var self = spaiConstants.self;
 +
var allPreloaded = true;
 +
for(var i in spaiConstants.toPreloadImages) {
 +
if(spaiConstants.preloadedImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
 +
allPreloaded = false;
 +
}
 +
if(spaiConstants.preloadingImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
 +
self.preloadImage(spaiConstants.toPreloadImages[i]);
 +
}
 +
}
 +
if(allPreloaded) {
 +
callback();
 +
} else {
 +
setTimeout(function(){self.preloadImages(callback);}, spaiConstants.timeStep);
 +
}
 +
},
 +
destroyNode:function(node) {
 +
try {
 +
node.parentNode.removeChild(node);
 +
} catch(e) {
 +
// Ze goggles, zey do nothin
 +
}
 +
},
 +
smoothInOut:function(progress) {
 +
return (Math.sin((progress-.5)*Math.PI)+1)/2;
 +
},
 +
inAnimation:function(func, progressTime, totalTime, callback, easing) {
 +
var self = spaiConstants.self;
 +
func(easing(progressTime / totalTime));
 +
if(progressTime >= totalTime) {
 +
callback();
 +
} else {
 +
setTimeout(function(){self.inAnimation(func, progressTime + spaiConstants.timeStep, totalTime, callback, easing);}, spaiConstants.timeStep);
 +
}
 +
},
 +
animate:function(func, totalTime, callback, easing) {
 +
var self = spaiConstants.self;
 +
return self.inAnimation(func, 0.0, totalTime, callback, easing);
 +
},
 +
playSound:function(sound) {
 +
var self = spaiConstants.self;
 +
try {
 +
var audio = document.createElement('audio');
 +
audio.setAttribute('src', sound);
 +
audio.setAttribute('style', 'display: none;');
 +
audio.setAttribute('autoplay', 'true');
 +
spaiConstants.theBody().appendChild(audio);
 +
}
 +
catch(e) {}
 +
},
 +
spyAnimationFinished:function(nodes) {
 +
var self = spaiConstants.self;
 +
for(var node in nodes) {
 +
self.destroyNode(nodes[node]);
 +
}
 +
spaiConstants.fired = false;
 +
},
 +
spySappingMahWiki:function() {
 +
var self = spaiConstants.self;
 +
if(spaiConstants.fired) return;
 +
spaiConstants.fired = true;
 +
var spai = document.createElement('a');
 +
spai.setAttribute('href', '/');
 +
spai.setAttribute('style', 'display:block; position: absolute; top: 0px; left: 0px; width: 160px; height: 200px; border: 0px; background: url('+spaiConstants.spaiImage+') no-repeat 0px -50000px; z-index: 10000;');
 +
spaiConstants.theBody().appendChild(spai);
 +
var logoPortlet = document.getElementById('p-logo');
 +
var changeHeight = function(progress) {
 +
progress = parseInt(progress * spaiConstants.spaiHeight);
 +
spai.style.backgroundPosition = '0px ' + (-spaiConstants.spaiHeight + progress).toString() + 'px';
 +
};
 +
self.animate(changeHeight, spaiConstants.anim_spaiFallDown, function(){
 +
self.playSound(spaiConstants.spaiSappingMahWikiWav);
 +
setTimeout(function(){
 +
logoPortlet.classList.add('wiki-logo' + spaiConstants.sapperClass);
 +
self.animate(function(progress){changeHeight(1.0-progress);}, spaiConstants.anim_spaiBackUp, function(){
 +
setTimeout(function(){
 +
logoPortlet.removeAttribute('class');
 +
self.spyAnimationFinished([spai]);
 +
}, spaiConstants.anim_sapperDestroyed);
 +
}, self.smoothInOut);
 +
}, spaiConstants.anim_spaiWait);
 +
}, self.smoothInOut);
 +
},
 +
hitItDoc:function() {
 +
var self = spaiConstants.self;
 +
self.preloadImages(self.imagesLoaded);
 +
self.preloadSound(spaiConstants.spaiSappingMahWikiWav, self.soundLoaded);
 +
},
 +
initKonami: function () {
 +
var self = spaiConstants.self;
 +
/*
 +
* Konami-JS ~
 +
* :: Now with support for touch events and multiple instances for
 +
* :: those situations that call for multiple easter eggs!
 +
* Code: https://github.com/georgemandis/konami-js
 +
* Copyright (c) 2009 George Mandis (https://george.mand.is)
 +
* Version: 1.6.3 (11/11/2021)
 +
* Licensed under the MIT License (http://opensource.org/licenses/MIT)
 +
* Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1+ and Android
 +
*/
 +
var Konami = function (callback) {
 +
var konami = {
 +
addEvent: function (obj, type, fn, ref_obj) {
 +
if (obj.addEventListener)
 +
obj.addEventListener(type, fn, false);
 +
else if (obj.attachEvent) {
 +
// IE
 +
obj["e" + type + fn] = fn;
 +
obj[type + fn] = function () {
 +
obj["e" + type + fn](window.event, ref_obj);
 +
}
 +
obj.attachEvent("on" + type, obj[type + fn]);
 +
}
 +
},
 +
removeEvent: function (obj, eventName, eventCallback) {
 +
if (obj.removeEventListener) {
 +
obj.removeEventListener(eventName, eventCallback);
 +
} else if (obj.attachEvent) {
 +
obj.detachEvent(eventName);
 +
}
 +
},
 +
input: "",
 +
pattern: "38384040373937396665",
 +
keydownHandler: function (e, ref_obj) {
 +
if (ref_obj) {
 +
konami = ref_obj;
 +
} // IE
 +
konami.input += e ? e.keyCode : event.keyCode;
 +
if (konami.input.length > konami.pattern.length) {
 +
konami.input = konami.input.substr((konami.input.length - konami.pattern.length));
 +
}
 +
if (konami.input === konami.pattern) {
 +
konami.code(konami._currentLink);
 +
konami.input = '';
 +
e.preventDefault();
 +
return false;
 +
}
 +
},
 +
load: function (link) {
 +
this._currentLink = link;
 +
this.addEvent(document, "keydown", this.keydownHandler, this);
 +
this.iphone.load(link);
 +
},
 +
unload: function () {
 +
this.removeEvent(document, 'keydown', this.keydownHandler);
 +
this.iphone.unload();
 +
},
 +
code: function (link) {
 +
window.location = link
 +
},
 +
iphone: {
 +
start_x: 0,
 +
start_y: 0,
 +
stop_x: 0,
 +
stop_y: 0,
 +
tap: false,
 +
capture: false,
 +
orig_keys: "",
 +
keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"],
 +
input: [],
 +
code: function (link) {
 +
konami.code(link);
 +
},
 +
touchmoveHandler: function (e) {
 +
if (e.touches.length === 1 && konami.iphone.capture === true) {
 +
var touch = e.touches[0];
 +
konami.iphone.stop_x = touch.pageX;
 +
konami.iphone.stop_y = touch.pageY;
 +
konami.iphone.tap = false;
 +
konami.iphone.capture = false;
 +
konami.iphone.check_direction();
 +
}
 +
},
 +
touchendHandler: function () {
 +
konami.iphone.input.push(konami.iphone.check_direction());
 +
 
 +
if (konami.iphone.input.length > konami.iphone.keys.length) konami.iphone.input.shift();
 +
 
 +
if (konami.iphone.input.length === konami.iphone.keys.length) {
 +
var match = true;
 +
for (var i = 0; i < konami.iphone.keys.length; i++) {
 +
if (konami.iphone.input[i] !== konami.iphone.keys[i]) {
 +
match = false;
 +
}
 +
}
 +
if (match) {
 +
konami.iphone.code(konami._currentLink);
 +
}
 +
}
 +
},
 +
touchstartHandler: function (e) {
 +
konami.iphone.start_x = e.changedTouches[0].pageX;
 +
konami.iphone.start_y = e.changedTouches[0].pageY;
 +
konami.iphone.tap = true;
 +
konami.iphone.capture = true;
 +
},
 +
load: function (link) {
 +
this.orig_keys = this.keys;
 +
konami.addEvent(document, "touchmove", this.touchmoveHandler);
 +
konami.addEvent(document, "touchend", this.touchendHandler, false);
 +
konami.addEvent(document, "touchstart", this.touchstartHandler);
 +
},
 +
unload: function () {
 +
konami.removeEvent(document, 'touchmove', this.touchmoveHandler);
 +
konami.removeEvent(document, 'touchend', this.touchendHandler);
 +
konami.removeEvent(document, 'touchstart', this.touchstartHandler);
 +
},
 +
check_direction: function () {
 +
x_magnitude = Math.abs(this.start_x - this.stop_x);
 +
y_magnitude = Math.abs(this.start_y - this.stop_y);
 +
x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT";
 +
y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP";
 +
result = (x_magnitude > y_magnitude) ? x : y;
 +
result = (this.tap === true) ? "TAP" : result;
 +
return result;
 +
}
 +
}
 +
}
 +
 
 +
typeof callback === "string" && konami.load(callback);
 +
if (typeof callback === "function") {
 +
konami.code = callback;
 +
konami.load();
 +
}
 +
 
 +
return konami;
 +
};
 +
// End of Konami-JS
 +
var konami = new Konami();
 +
konami.code = function() {
 +
if (spaiConstants.spaiEnabled) {
 +
self.hitItDoc.apply(self);
 +
}
 +
 +
document.dispatchEvent(new CustomEvent('konami:fire'));
 +
};
 +
konami.load();
 +
}
 +
};
 +
spaiConstants.self = spaiSappinMahWiki;
 +
$(spaiSappinMahWiki.initKonami);
 +
 
 +
// Dynamic background by WindPower
 +
// WindPower is secksy and makes this wiki awesome with his very breath. (- Smashman)
 +
var dynamicBg = {
 +
categories: {
 +
// Format:
 +
// 'CategoryName': 'URL of background image',  ---OR--- 'title-PageTitle': 'URL of background image',
 +
// Categories don't have to be class names, they can be things like "Weapons", "Featured articles", "Maps", "Help", etc.
 +
'Scout': '/w/images/e/ea/Background_Scout_vector.png',
 +
'Soldier': '/w/images/5/54/Background_Soldier_vector.png',
 +
'Pyro': '/w/images/e/ed/Background_Pyro_vector.png',
 +
                'Demoman': '/w/images/5/59/Background_Demoman_vector.png',
 +
                'Engineer': '/w/images/f/f7/Background_Engineer_vector.png',
 +
                'Heavy': '/w/images/0/03/Background_Heavy_vector.png',
 +
                'Medic': '/w/images/2/24/Background_Medic_vector.png',
 +
                'Sniper': '/w/images/e/ed/Background_Sniper_vector.png',
 +
                'Spy': '/w/images/b/b9/Background_Spy_vector.png'
 +
// (No comma at the end of the last line)
 +
},
 +
getCategories:function() {
 +
var catlinksnode = document.getElementById('catlinks');
 +
if(!catlinksnode) return [];
 +
var catlinks = document.getElementById('catlinks').getElementsByTagName('a');
 +
var cats = [];
 +
var l;
 +
for(var i = 0; i < catlinks.length; i++) {
 +
l = catlinks[i].getAttribute('title');
 +
if(l.match(/^Category:/i, '')) {
 +
cats[cats.length] = l.substr(9).replace(/\/[^/]+$/, '');
 +
}
 +
}
 +
return cats;
 +
},
 +
inArray:function(haystack, needle) {
 +
for(var i = 0; i < haystack.length; i++) {
 +
if(haystack[i] == needle) {
 +
return i;
 +
}
 +
}
 +
return -1;
 +
},
 +
init:function() {
 +
if(typeof(wPrefs) != 'undefined') {
 +
if(dynamicBg.inArray(wPrefs, 'noDynamicBackground') != -1) {
 +
return; // Script disabled
 +
}
 +
}
 +
try {
 +
var cats = dynamicBg.getCategories();
 +
var body = document.getElementsByTagName('body')[0];
 +
} catch(e) {
 +
return;
 +
}
 +
var selectedCats = [];
 +
if(typeof(dynamicBg.categories['title-' + mw.config.get('wgTitle')]) != 'undefined') {
 +
selectedCats[0] = dynamicBg.categories['title-' + mw.config.get('wgTitle')];
 +
}
 +
else {
 +
for(var i in dynamicBg.categories) {
 +
if(dynamicBg.inArray(cats, i) != -1) {
 +
selectedCats[selectedCats.length] = dynamicBg.categories[i];
 +
}
 +
}
 +
}
 +
if(!selectedCats.length) return; // No match, keep default style
 +
var selectedCat = selectedCats[Math.floor(Math.random()*selectedCats.length)];
 +
body.style.backgroundImage='url('+selectedCat+')';
 +
}
 +
};
 +
$(dynamicBg.init);
 +
 
 +
// Page-specific JavaScript/CSS
 +
var pageScripts = {
 +
pagesJS: ['Main_Page', 'User:WindPower', 'User:MogDog66', 'User:WindPower/Main_Page', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:Lexar/responsive_infobox', 'User:Lexar/sandbox', 'User:Tark', 'User:Tark/Sandbox', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Wookipan/Sandbox'],
 +
pagesCSS: ['Main_Page', 'User:WindPower', 'User:Pilk/armory', 'User:Pilk', 'User:Esky', 'User:Lagg', 'User:MogDog66', 'User:CrushBOT', 'User:MogDog66/userpagev2', 'User:NVis', 'User:NVis/Sandbox', 'User:Lexar', 'User:MogDog66/MPR', 'User:WindPower/Main_Page', 'User:Moussekateer/3DViewer', 'User:T-Wayne', 'User:FreeXMan', 'User:Nixshadow', 'User:Ath', 'User:Carez', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:MogDog66/Sandbox', 'User:Obilisk', 'User:Lexar/itembox_tooltip', 'User:Lexar/sandbox', 'User:Lexar/responsive_infobox', 'User:Hagbard Celine', 'User:Wookipan', 'User:Wookipan/Sandbox', 'User:GrampaSwood', 'Team_Fortress_Wiki:April_Fools\'_Day/2019/Main_Page', 'User:Tark', 'User:Tark/Sandbox', 'User:Boba', 'User:Boba/Projects', 'User:FanCyy', 'User:Dan_greene', 'User:Boba/Sandbox', 'User:Ashe', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Foxbite', 'User:Mediarch', 'User:Payn'],
 +
suffixJS: '/Page.js',
 +
suffixCSS: '/Page.css',
 +
init: function() {
 +
for(var i in pageScripts.pagesJS) {
 +
if(mw.config.get('wgPageName') == pageScripts.pagesJS[i]) {
 +
mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixJS) + '&ctype=text/javascript&action=raw');
 +
}
 +
}
 +
for(var i in pageScripts.pagesCSS) {
 +
if(mw.config.get('wgPageName') == pageScripts.pagesCSS[i]) {
 +
mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixCSS) + '&ctype=text/css&action=raw', 'text/css');
 +
}
 +
}
 +
}
 +
};
 +
$(pageScripts.init);
 +
 
 +
// Fancy diffs
 +
var fancyDiffs = {
 +
isBigDiff: false,
 +
isBigDiffThreshold: 72,
 +
toggle: function(element) {
 +
var expanded = element.hasClass('diff-expanded');
 +
var contents = element.parent().children('.diff-contents');
 +
if(expanded) { // Just collapse then
 +
element.removeClass('diff-expanded');
 +
if(fancyDiffs.isBigDiff) {
 +
contents.hide();
 +
} else {
 +
contents.slideUp('fast');
 +
}
 +
} else if(element.hasClass('diff-data-loaded')) { // Stuff is already loaded, expand
 +
element.addClass('diff-expanded');
 +
contents.slideDown('fast');
 +
} else if(!element.hasClass('diff-data-requested')) { // Stuff is not loaded
 +
element.addClass('diff-data-requested');
 +
var fileName = element.find('span').text().replace(/^\s+|\s+$/g);
 +
var patchName = element.closest('.diffname');
 +
var diffName = mw.config.get('wgPageName');
 +
if(patchName && patchName.length && patchName.attr('class')) {
 +
diffName = patchName.attr('class').substr(9);
 +
}
 +
$.get('/w/?title=Template:PatchDiff/' + encodeURIComponent(diffName.replace(/^Template:PatchDiff\//, '')) + '/' + encodeURIComponent(fileName) + '&action=raw', function(data) {
 +
contents.html(data);
 +
if(fancyDiffs.isBigDiff) {
 +
contents.show();
 +
} else {
 +
contents.slideDown('fast');
 +
}
 +
element.removeClass('diff-data-requested').addClass('diff-data-loaded').addClass('diff-expanded');
 +
});
 +
}
 +
 +
},
 +
init: function() {
 +
var diffText = $('.diff-name-text');
 +
if(diffText.length) {
 +
// Preload leetle gif
 +
$('body').append($('<img/>').attr('src', '/w/images/4/43/Patch_diff_loading.gif').css('display', 'none'));
 +
diffText.find('span').each(function() {
 +
$(this).text($(this).find('a').text().replace(/^\s+|\s+$/g));
 +
});
 +
diffText.click(function() {
 +
fancyDiffs.toggle($(this));
 +
return false;
 +
});
 +
fancyDiffs.isBigDiff = $('.diff-file').length > fancyDiffs.isBigDiffThreshold;
 +
}
 +
}
 +
};
 +
$(fancyDiffs.init);
 +
 
 +
// 3D/2D viewer
 +
$('#switch-to-3d').click(function() {
 +
$('.container-2d').hide();
 +
$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').show();
 +
});
 +
 
 +
$('#switch-to-2d').click(function() {
 +
$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').hide();
 +
$('.container-2d').show();
 +
});
 +
 
 +
// 3D model viewer
 +
var viewer3d = {
 +
dragging: null,
 +
draggingFrameX: 0,
 +
draggingFrameY: 0,
 +
viewers: [],
 +
frameThresholdX: 10,
 +
frameThresholdY: 128,
 +
realMod: function(x, y) {
 +
return ((x % y) + y) % y;
 +
},
 +
init: function() {
 +
$('.viewer-3d').each(viewer3d.bind);
 +
$(document).mouseup(viewer3d.release);
 +
$(document).mousemove(viewer3d.move);
 +
},
 +
bind: function() {
 +
var v = $(this);
 +
var num = viewer3d.viewers.length;
 +
var allModels = [];
 +
var modelID = 0;
 +
var viewerSize = 0;
 +
while(true) {
 +
var modelMap = v.find('.viewer-3d-map-' + modelID);
 +
var urlNode = v.find('.viewer-3d-url-' + modelID);
 +
if(!modelMap.length || !urlNode.length) break;
 +
var url = $('<div/>').html(urlNode.text()).text();
 +
var framesS = $('<div/>').html(modelMap.text()).text().replace(/^\s+|\s+$/g).split(/,/g);
 +
var frameMap = [];
 +
var heightMap = [];
 +
var leftCropMap = [];
 +
var totalW = parseInt(framesS[0]);
 +
var maxFrameW = parseInt(framesS[1]);
 +
var totalH = parseInt(framesS[2]);
 +
var verticalSteps = parseInt(framesS[3]);
 +
var midVertical = Math.floor(verticalSteps / 2);
 +
for(var f = 4; f < framesS.length; f += 3) {
 +
frameMap.push(parseInt(framesS[f]));
 +
heightMap.push(parseInt(framesS[f + 1]));
 +
leftCropMap.push(parseInt(framesS[f + 2]));
 +
}
 +
allModels.push({
 +
imageURL: url,
 +
map: frameMap,
 +
cropMap: leftCropMap,
 +
totalWidth: totalW,
 +
totalHeight: totalH,
 +
maxFrameWidth: maxFrameW,
 +
xStep: verticalSteps
 +
});
 +
viewerSize = Math.max(viewerSize, totalH, maxFrameW);
 +
modelID++;
 +
}
 +
if(!modelID) return;
 +
var overlayNode = $('<div class="viewer-3d-overlay"></div>');
 +
var frameN = v.find('.viewer-3d-frame');
 +
v.find('img').detach();
 +
var klasses = v.attr('class').split(/ /g);
 +
var startFrame = 0;
 +
for(var k in klasses) {
 +
if(klasses[k].substr(0, 11) == 'startframe-') {
 +
startFrame = Math.max(0, parseInt(klasses[k].substr(11)));
 +
}
 +
}
 +
var viewer = {
 +
node: v,
 +
frameX: startFrame,
 +
frameY: midVertical,
 +
models: allModels,
 +
currentModel: -1,
 +
frameNode: frameN,
 +
width: viewerSize,
 +
height: viewerSize,
 +
mouseX: 0,
 +
mouseY: 0,
 +
overlay: overlayNode
 +
};
 +
viewer3d.viewers.push(viewer);
 +
v.hover(viewer3d.hover, viewer3d.unhover).mousedown(viewer3d.drag).append(overlayNode).attr('data-id', num).css({
 +
width: viewer.width + 'px',
 +
height: viewer.height + 'px'
 +
});
 +
frameN.mousedown(viewer3d.drag).attr('data-id', num).css('height', viewer.height + 'px');
 +
viewer3d.changeVersion(viewer, 0);
 +
},
 +
getCurrentModel: function(v) {
 +
return v.models[v.currentModel];
 +
},
 +
changeVersion: function(v, version) {
 +
version = Math.max(0, Math.min(v.models.length - 1, version));
 +
if(v.currentModel == version) return;
 +
v.currentModel = version;
 +
v.frameNode.css('background', 'url(' + viewer3d.getCurrentModel(v).imageURL + ') top left no-repeat');
 +
viewer3d.display(v, v.frameX, v.frameY);
 +
},
 +
hover: function(e) {
 +
var v = viewer3d.getViewer(this);
 +
if(viewer3d.dragging != v) {
 +
v.overlay.animate({'opacity': '1'}, 'fast');
 +
}
 +
},
 +
unhover: function(e) {
 +
var v = viewer3d.getViewer(this);
 +
if(viewer3d.dragging != v) {
 +
v.overlay.animate({'opacity': '0.5'}, 'fast');
 +
}
 +
},
 +
drag: function(e) {
 +
var v = viewer3d.getViewer(this);
 +
v.mouseX = e.pageX;
 +
v.mouseY = e.pageY;
 +
viewer3d.dragging = v;
 +
draggingFrameX = v.frameX;
 +
draggingFrameY = v.frameY;
 +
return false;
 +
},
 +
release: function() {
 +
var v = viewer3d.dragging;
 +
viewer3d.dragging = null;
 +
if(v != null) {
 +
v.frameX = viewer3d.draggingFrameX;
 +
v.frameY = viewer3d.draggingFrameY;
 +
v.overlay.animate({'opacity': '0.5'}, 'fast');
 +
}
 +
viewer3d.draggingFrameX = 0;
 +
viewer3d.draggingFrameY = 0;
 +
},
 +
getViewer: function(node) {
 +
return viewer3d.viewers[parseInt($(node).attr('data-id'))];
 +
},
 +
display: function(v, frameX, frameY) {
 +
var model = viewer3d.getCurrentModel(v);
 +
var frameID = viewer3d.realMod(frameX * model.xStep + frameY, model.map.length);
 +
var frameOffset = model.map[frameID];
 +
var frameWidth = 0;
 +
if(frameID == model.map.length - 1) {
 +
frameWidth = model.totalWidth - frameOffset;
 +
} else {
 +
frameWidth = model.map[frameID + 1] - frameOffset;
 +
}
 +
v.frameNode.css({
 +
backgroundPosition: (-frameOffset - frameID) + 'px 0px',
 +
left: Math.round((v.width - model.maxFrameWidth) / 2.0 + model.cropMap[frameID]) + 'px',
 +
top: Math.round((v.height - model.totalHeight) / 2) + 'px',
 +
width: frameWidth + 'px',
 +
height: model.totalHeight + 'px'
 +
});
 +
},
 +
move: function(e) {
 +
if(viewer3d.dragging == null) {
 +
return;
 +
}
 +
var v = viewer3d.dragging;
 +
var model = viewer3d.getCurrentModel(v);
 +
var mouseDeltaX = e.pageX - v.mouseX;
 +
var mouseDeltaY = e.pageY - v.mouseY;
 +
var frameDeltaX = Math.round(mouseDeltaX / viewer3d.frameThresholdX);
 +
var frameDeltaY = -Math.round(mouseDeltaY / viewer3d.frameThresholdY);
 +
viewer3d.draggingFrameX = v.frameX + frameDeltaX;
 +
viewer3d.draggingFrameY = Math.max(0, Math.min(model.xStep - 1, v.frameY + frameDeltaY));
 +
viewer3d.display(v, viewer3d.draggingFrameX, viewer3d.draggingFrameY);
 +
}
 +
};
 +
$(viewer3d.init);
 +
var selector3d = {
 +
bind: function() {
 +
var viewer = viewer3d.getViewer($(this).find('.viewer-3d'));
 +
var keepGoing = true;
 +
var modelVariant = 0;
 +
var selector;
 +
while(keepGoing) {
 +
selector = $(this).find('.selector-' + modelVariant);
 +
if(selector.length) {
 +
selector.attr('data-variant', modelVariant).click(function() {
 +
viewer3d.changeVersion(viewer, parseInt($(this).attr('data-variant')));
 +
return false;
 +
});
 +
}
 +
modelVariant++;
 +
keepGoing = selector.length;
 +
}
 +
},
 +
init: function() {
 +
$('.viewer-3d-multi, .viewer-3d-container').each(selector3d.bind);
 +
}
 +
};
 +
$(selector3d.init);
 +
 
 +
// Code to get 3D viewer drag working on touch devices
 +
// Source: http://www.jquery4u.com/mobile/jquery-add-dragtouch-support-ipad/
 +
$.fn.addTouch = function(){
 +
    this.each(function(i,el){
 +
      $(el).bind('touchstart touchmove touchend touchcancel',function(){
 +
        //we pass the original event object because the jQuery event
 +
        //object is normalized to w3c specs and does not provide the TouchList
 +
        handleTouch(event);
 +
      });
 +
    });
 +
 
 +
    var handleTouch = function(event)
 +
    {
 +
      var touches = event.changedTouches,
 +
              first = touches[0],
 +
              type = '';
 +
 
 +
      switch(event.type)
 +
      {
 +
        case 'touchstart':
 +
          type = 'mousedown';
 +
          break;
 +
 
 +
        case 'touchmove':
 +
          type = 'mousemove';
 +
          event.preventDefault();
 +
          break;
 +
 
 +
        case 'touchend':
 +
          type = 'mouseup';
 +
          break;
 +
 
 +
        default:
 +
          return;
 +
      }
 +
 
 +
      var simulatedEvent = document.createEvent('MouseEvent');
 +
      simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);
 +
      first.target.dispatchEvent(simulatedEvent);
 +
    };
 +
  };
 +
 
 +
$('.viewer-3d').addTouch();
 +
 
 +
// End 3D viewer touch device code
 +
 
 +
// Start weapon wear table tabs -----
 +
var WeaponWearTable = {
 +
tabSwitch: function($this,tab,weapons,weapon) {
 +
if (!$this.hasClass('current')) {
 +
var tabIndex = $this.index();
 +
$this.parent().find('.current').removeClass('current');
 +
$this.addClass('current');
 +
weapons.find('.current').removeClass('current');
 +
weapon.eq(tabIndex).addClass('current');
 +
}
 +
},
 +
init: function() {
 +
$('.weapon-wear-table').each(function(){
 +
var $this = $(this),
 +
tabs = $this.children('.tabs'),
 +
tab = tabs.children('li'),
 +
weapons = $this.children('.weapons'),
 +
weapon = weapons.children('li');
 +
tab.click(function(){
 +
WeaponWearTable.tabSwitch($(this),tab,weapons,weapon);
 +
});
 +
});
 +
}
 +
};
 +
$(WeaponWearTable.init);
 +
// End weapon wear table tabs -----
 +
 
 +
// Start Bilibili iframe support -----
 +
var Bilibili = {
 +
  init: function() {
 +
    var $videos = $('.bilibili-video');
 +
    $videos.each(function() {
 +
      var $this = $(this);
 +
      var aid = parseInt($this.data('vaid'));
 +
      var danmaku = parseInt($this.data('vdanmaku'));
 +
      var page = parseInt($this.data('vpage'));
 +
      var width = $this.data('vwidth');
 +
      var height = $this.data('vheight');
 +
      var iframeSrc = 'https://www.bilibili.com/blackboard/html5mobileplayer.html?aid=' + aid + '&high_quality=1&danmaku=' + danmaku + '&page=' + page + '&hideCoverInfo=1&hideDanmakuButton=1';
 +
      var iframe = '<iframe src="' + iframeSrc + '" width="' + width + '" height="' + height + '" frameborder="0" allowfullscreen="true"></iframe>';
 +
      $this.append(iframe);
 +
    });
 +
  }
 +
};
 +
$(Bilibili.init);
 +
// End Bilibili iframe support -----
 +
 
 +
// Start custom username highlighting -----
 +
var uGroupHighlight = {
 +
  init: function() {
 +
    if ($('.mw-userlink')[0]) {
 +
      var params = {
 +
        action: 'query',
 +
        list: 'allusers',
 +
        augroup: ['sysop', 'moderator', 'bot'],
 +
        auprop: 'groups',
 +
        aulimit: 100,
 +
        format: 'json'
 +
      };
 +
 
 +
      var api = new mw.Api();
 +
 
 +
      api.get(params).done(function(data) {
 +
        var uGroups = data.query.allusers, user;
 +
        for (user in uGroups) {
 +
          var name = uGroups[user].name;
 +
          var group = uGroups[user].groups;
 +
 
 +
          $('bdi').each(function() {
 +
            if ($(this).text().match('\\b' + name + '\\b')) {
 +
              $(this).closest('.mw-userlink').addClass(group.includes('bot') ? 'bot' : 'staff');
 +
            }
 +
          });
 +
        }
 +
      });
 +
    }
 +
  },
 +
};
 +
$(uGroupHighlight.init);
 +
// End custom username highlighting -----
 +
 
 +
// Start login icon randomizer -----
 +
var iconRandomizer = {
 +
    init: function() {
 +
        var classes = [
 +
            '/w/images/3/33/Login_Scout.png',
 +
            '/w/images/d/d8/Login_Soldier.png',
 +
            '/w/images/7/71/Login_Pyro.png',
 +
            '/w/images/5/53/Login_Demoman.png',
 +
            '/w/images/3/35/Login_Heavy.png',
 +
            '/w/images/a/ab/Login_Engineer.png',
 +
            '/w/images/d/d4/Login_Medic.png',
 +
            '/w/images/e/e4/Login_Sniper.png',
 +
            '/w/images/2/27/Login_Spy.png'
 +
        ];
 +
 
 +
        // pick a random class image out of nine choices
 +
        pickClass = classes[Math.floor(Math.random() * classes.length)];
 +
 
 +
        // ensure all relative elements are hit
 +
        var nodes = $('#pt-userpage, #pt-anonuserpage, #pt-login');
 +
        if (nodes.length) {
 +
            for (var i = 0; i < nodes.length; i++) {
 +
                nodes.css('background-image', 'url(' + pickClass + ')');
 +
            }
 +
        }
 +
    }
 +
};
 +
 
 +
$(iconRandomizer.init);
 +
// End login icon randomizer -----
 +
 
 +
// Start 'Audio player'
 +
var audioPlayer = {
 +
    currentAudio: null,
 +
 
 +
    init: function () {
 +
        var audioPauseImg = new Image();
 +
        var audioPlayImg = new Image();
 +
        audioPauseImg.src = '/w/images/d/d2/Pause_icon.png';
 +
        audioPlayImg.src = '/w/images/6/67/Play_icon.png';
 +
 
 +
        $('.tfwiki-audio-player').each(function () {
 +
            var audioPlayerElement = $(this);
 +
            var audioLink = audioPlayerElement.children('a');
 +
            var audioURL = audioLink.attr('href');
 +
            var audio = null;
 +
            var audioStatus = audioPlayerElement.find('.tfwiki-audio-player-action');
 +
 +
audioStatus.removeClass('inactive');
 +
 
 +
            audioPlayerElement.on('click', function (e) {
 +
                if (e.target !== audioStatus[0]) {
 +
                    return;
 +
                }
 +
 
 +
                e.preventDefault();
 +
 +
                if (!audio) {
 +
                    audio = new Audio(audioURL);
 +
                    audio.volume = 0.5;
 +
                    audio.addEventListener('ended', function () {
 +
                        audioStatus.text(audioStatus.data('text-play'));
 +
                        audioStatus.removeClass('playing');
 +
                    });
 +
                }
 +
 
 +
                if (audioPlayer.currentAudio && audioPlayer.currentAudio !== audio) {
 +
                    audioPlayer.currentAudio.pause();
 +
                    audioPlayer.currentAudio.currentTime = 0;
 +
                    audioPlayer.currentAudioStatus.text(audioPlayer.currentAudioStatus.data('text-play'));
 +
                    audioPlayer.currentAudioStatus.removeClass('playing');
 +
                }
 +
 
 +
                if (audio.paused) {
 +
                    audio.play();
 +
                    audioStatus.text(audioStatus.data('text-pause'));
 +
                    audioPlayer.currentAudio = audio;
 +
                    audioPlayer.currentAudioStatus = audioStatus;
 +
                    audioStatus.addClass('playing');
 +
                } else {
 +
                    audio.pause();
 +
                    audioStatus.text(audioStatus.data('text-resume'));
 +
                    audioPlayer.currentAudio = null;
 +
                    audioPlayer.currentAudioStatus = null;
 +
                    audioStatus.removeClass('playing');
 +
                }
 +
            });
 +
 
 +
            audioLink.on('click', function (e) {
 +
                e.preventDefault();
 +
                window.open(audioURL, '_blank');
 +
            });
 +
        });
 +
    }
 +
};
 +
 
 +
$(audioPlayer.init);
 +
// End 'Audio player'
 +
 
 +
/* Google Analytics */
 +
  var _gaq = _gaq || [];
 +
  _gaq.push(['_setAccount', 'UA-18260470-1']);
 +
  _gaq.push(['_setDomainName', '.teamfortress.com']);
 +
  _gaq.push(['_trackPageview']);
 +
 
 +
  (function() {
 +
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 +
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 +
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 +
  })();
 +
/* GoSquared analytics */
 +
  var GoSquared = {};
 +
  GoSquared.acct = "GSN-106863-S";
 +
  (function(w){
 +
    function gs(){
 +
      w._gstc_lt = +new Date;
 +
      var d = document, g = d.createElement("script");
 +
      g.type = "text/javascript";
 +
      g.src = "//d1l6p2sc9645hc.cloudfront.net/tracker.js";
 +
      var s = d.getElementsByTagName("script")[0];
 +
      s.parentNode.insertBefore(g, s);
 +
    }
 +
    w.addEventListener ?
 +
      w.addEventListener("load", gs, false) :
 +
      w.attachEvent("onload", gs);
 +
  })(window);

Latest revision as of 03:59, 10 May 2024

// This is the non-compressed version of MediaWiki:Common.js

// External links open in new windows/tabs:
$('a.external').attr('target', '_blank');

 /** Collapsible tables *********************************************************
  *
  *  Description: Allows tables to be collapsed, showing only the header. See
  *               [[Wikipedia:NavFrame]].
  *  Maintainers: [[User:R. Koot]]
  */
 var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
 })(); 

var autoCollapse = 2;
var collapseCaptionLang = {'ar': 'أخف', 'cs': 'sbalit', 'da': 'fold sammen', 'de': 'einklappen', 'es': 'contraer', 'fi': 'supista', 'fr': 'masquer', 'hu': 'becsuk', 'it': 'comprimi', 'ja': '折り畳む', 'ko': '접기', 'nl': 'samenvouwen', 'pl': 'zwiń', 'pt': 'ocultar', 'pt-br': 'ocultar', 'ro': 'restrânge', 'ru': 'свернуть', 'sv': 'dölj', 'tr': 'daralt', 'zh-hans': '折叠', 'zh-hant': '合併'};
var expandCaptionLang = {'ar': 'أظهر', 'cs': 'rozbalit', 'da': 'fold ud', 'de': 'ausklappen', 'es': 'expandir', 'fi': 'Laajenna', 'fr': 'afficher', 'hu': 'kinyit', 'it': 'espandi', 'ja': '展開する', 'ko': '펼치기', 'nl': 'uitvouwen', 'pl': 'rozwiń', 'pt': 'expandir', 'pt-br': 'expandir', 'ro': 'extinde', 'ru': 'развернуть', 'sv': 'visa', 'tr': 'genişlet', 'zh-hans': '展开', 'zh-hant': '展開'};
var collapseCaption = collapseCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'collapse';
var expandCaption = expandCaptionLang[mw.config.get("wgPageName").split("/").pop()] || 'expand';
 
window.collapseTable = function ( tableIndex ) {
    var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
    if ( !Table || !Button ) {
        return false;
    }
 
    var Rows = Table.rows;
    var i;
 
    if ( Button.firstChild.data === collapseCaption ) {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = 'none';
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
};
 
function createCollapseButtons() {
    var tableIndex = 0;
    var NavigationBoxes = {};
    var Tables = document.getElementsByTagName( 'table' );
    var i;
 
    function handleButtonLink( index, e ) {
        window.collapseTable( index );
        e.preventDefault();
    }
 
    for ( i = 0; i < Tables.length; i++ ) {
        if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
 
            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
            if ( !HeaderRow ) continue;
            var Header = HeaderRow.getElementsByTagName( 'th' )[0];
            if ( !Header ) continue;
 
            NavigationBoxes[ tableIndex ] = Tables[i];
            Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
 
            var Button     = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
            var ButtonText = document.createTextNode( collapseCaption );
 
            Button.className = 'collapseButton';  /* Styles are declared in Common.css */
 
            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
            ButtonLink.appendChild( ButtonText );
 
            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( ']' ) );
 
            Header.insertBefore( Button, Header.firstChild );
            tableIndex++;
        }
    }
 
    for ( i = 0;  i < tableIndex; i++ ) {
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
            window.collapseTable( i );
        } 
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    window.collapseTable ( i );
                    break;
                }
            }
        }
    }
}
 
$( createCollapseButtons );

/** Dynamic Navigation Bars (experimental) *************************************
 *
 *  Description: See [[Wikipedia:NavFrame]].
 *  Maintainers: UNMAINTAINED
 */

// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';

// shows and hides content and picture (if available) of navigation bars
// Parameters:
//     indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar){
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

    if (!NavFrame || !NavToggle) {
        return false;
    }

    // if shown now
    if (NavToggle.firstChild.data == NavigationBarHide) {
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
                NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;

    // if hidden now
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
                NavChild.style.display = 'block';
            }
        }
        NavToggle.firstChild.data = NavigationBarHide;
    }
}

// adds show/hide-button to navigation bars
function createNavigationBarToggleButton(){
    var indexNavigationBar = 0;
    // iterate over all < div >-elements 
    var divs = document.getElementsByTagName("div");
    for (var i = 0; NavFrame = divs[i]; i++) {
        // if found a navigation bar
        if (hasClass(NavFrame, "NavFrame")) {

            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');

            var isCollapsed = hasClass( NavFrame, "collapsed" );
            /*
             * Check if any children are already hidden.  This loop is here for backwards compatibility:
             * the old way of making NavFrames start out collapsed was to manually add style="display:none"
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
             * the content visible without JavaScript support), the new recommended way is to add the class
             * "collapsed" to the NavFrame itself, just like with collapsible tables.
             */
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                    if ( NavChild.style.display == 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
            NavToggle.appendChild(NavToggleText);

            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            for(var j=0; j < NavFrame.childNodes.length; j++) {
                if (hasClass(NavFrame.childNodes[j], "NavHead")) {
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}

 $( createNavigationBarToggleButton );

//END Collapsible tables *********************************************************

// PootTabs by User:WindPower~
// It puts tabs on pages.
var pootTabsHere = {
    animationsEnabled: $.support.opacity,
	getTab:function(poot, index) {
		return $(poot.children('.poot-tabs').children('ul').children('li')[parseInt(index)]);
	},
	changeTab:function(poot, index, duration, force) {
		if(index == parseInt(poot.attr('pootSelected')) && !force && duration) return;
		if(!pootTabsHere.animationsEnabled) {
			duration = 0;
		}
		poot.attr('pootSelected', index.toString());
		var babies = poot.children('.poot-tabs-content').children();
		babies.each(function() {
			$(this).fadeOut(duration, function(){
				$(this).removeClass('poot-tabs-selected');
			});
		});
		$(babies[index]).each(function() {
			$(this).fadeIn(duration, function(){
				$(this).addClass('poot-tabs-selected');
			});
		});
		var cowtabs = poot.children('.poot-tabs').children('ul').children('li');
		cowtabs.removeClass('poot-tabs-selected');
		$(cowtabs[index]).addClass('poot-tabs-selected');
		pootTabsHere.updatePoot(poot, $(babies[index]).height());
	},
	updatePoot:function(poot, babysize) {
		if(poot.hasClass('poot-tabs-notitle')) {
			poot.find('.poot-tabs-titletext').html(pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
		} else {
			poot.find('.poot-tabs-titletext').html(poot.attr('originalTitle') + ' &mdash; ' + pootTabsHere.getTab(poot, poot.attr('pootSelected')).html());
		}
		if(poot.has('.poot-tabs-edittabs') && poot.has('.poot-tabs-navbar')) {
			try {
				poot.find('.poot-tabs-navbar').html($(poot.children('.poot-tabs-edittabs').children('span')[parseInt(poot.attr('pootSelected'))]).html());
			} catch(e) {}
		}
		var bestHeight = Math.max(poot.children('.poot-tabs-content').height(), Math.max(poot.children('.poot-tabs').height(), babysize)).toString() + 'px';
		poot.children('.poot-tabs-content').css('height', bestHeight);
		if(poot.attr('vertical')) {
			poot.children('.poot-tabs').css('height', bestHeight);
		}
	},
	toggleCollapse:function(poot) {
		var pootLinkText = poot.children('.poot-tabs-showhide').text().split(';');
		var duration = pootTabsHere.animationsEnabled ? parseInt(poot.attr('pootslideduration')) : 0;
		if(poot.attr('pootcollapse') != 'true') {
			poot.attr('pootcollapse', 'true');
			poot.find('.poot-tabs-hidelink a').text(pootLinkText[0]);
			poot.children('.poot-tabs, .poot-tabs-content').slideUp(duration);
		}
		else {
			poot.attr('pootcollapse', '');
			poot.find('.poot-tabs-hidelink a').text(pootLinkText[1]);
			poot.children('.poot-tabs, .poot-tabs-content').slideDown(duration);
		}
	},
	delayHeight:function(poot, selected) {
		setTimeout(function() {
			poot.attr('pootselected', selected.toString());
			pootTabsHere.changeTab(poot, selected, 0, true);
			if(poot.hasClass('poot-tabs-collapsed')) {
				pootTabsHere.toggleCollapse(poot);
			}
		}, 100);
	},
	poot:function() {
		var dis = $(this);
		dis.removeClass('poot-tabs-nojs'); // If this thing runs, JS is on
		var ind = 0;
		dis.attr('originalTitle', dis.find('.poot-tabs-titletext').html());
		var selected = /poot-tabs-selected-(\d+)/i.exec(dis.attr('class'));
		if(selected) {
			pootTabsHere.delayHeight(dis, parseInt(selected[1])-1);
		}
		else {
			pootTabsHere.delayHeight(dis, 0);
		}
		var duration = dis.hasClass('poot-tabs-noanimations') ? 0 : 200;
		dis.attr('pootslideduration', dis.hasClass('poot-tabs-noanimations') ? '0' : '75');
		dis.children('.poot-tabs').children('ul').children('li').each(function(){
			var thisInd = ind;
			$(this).click(function(){
				pootTabsHere.changeTab(dis, thisInd, duration, false);
				$(this).blur();
				$(this).find('*').blur();
				return false;
			});
			ind++;
		});
		var isVertical = dis.hasClass('poot-tabs-vertical');
		dis.attr('pootvertical', isVertical ? 'true' : '');
		if(isVertical) {
			var teenie = dis.children('.poot-tabs').width().toString() + 'px';
			dis.children('.poot-tabs-content').css('margin-left', teenie);
		}
		dis.attr('pootcollapse', ''); // False
		dis.find('.poot-tabs-hidelink a').click(function(){
			pootTabsHere.toggleCollapse(dis);
			return false;
		});
	},
	init:function() {
		$('.poot-tabs-container').each(pootTabsHere.poot);
	}
};
$(pootTabsHere.init);

// Language support fixes
var langFixes = {
	init: function() {
		// Supported list of languages (not including the default one):
		var langList = ['ar', 'cs', 'da', 'de', 'es', 'fi', 'fr', 'hu', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'pt-br', 'ro', 'ru', 'sv', 'tr', 'zh-hans', 'zh-hant'];
		// Assumed language if the page is in none of the languages above:
		var defaultLang = 'en';
		var lang = defaultLang;
		for(var i in langList) {
			if(mw.config.get('wgPageName').substr(mw.config.get('wgPageName').length - 1 - langList[i].length).toLowerCase() == '/' + langList[i].toLowerCase()) {
				lang = langList[i];
				break;
			}
		}
		$('body').addClass('lang-' + lang);
	}
};
$(langFixes.init);

// Custom tooltip component. See Template:Tooltip
var wikiTooltip = {
    init: function() {
        var $tooltips = $('.wiki-tooltip .wiki-tooltip-content');
        if ($tooltips[0]) {
            $tooltips.each(function() {
                var $this = $(this);
                function handler() {
                    // Check for links and handle them on handheld devices
                    if (!!$this.closest('a').attr('href')) {
                        $this.closest('a').removeAttr('title');

                        widthRect <= 1000 ? wikiTooltip.hasLink($this) : wikiTooltip.removeAnchor($this);
                    }
                    
                    // Prevent tooltips from overflowing the viewport
                    var bounding = $this[0].getBoundingClientRect();
                    edgeRect = {
                        left: Math.floor(($this.width() + bounding.left + 10)),
                        right: Math.floor(($this.width() + bounding.right + 10))
                    };

                    widthRect = $(window).innerWidth();
                    if (edgeRect.left >= (widthRect || document.documentElement.clientWidth)) {
                        $this.css('left', '');
                        $this.css('right', '50%');
                    } else if (edgeRect.right <= (widthRect || document.documentElement.clientWidth)) {
                        $this.css('right', '');
                        $this.css('left', '50%');
                    }
                }
                $(handler);
                setTimeout(function() {
                    $(window).on('resize', handler);
                }, 250);
            });
        }
    },
    hasLink: function(tooltip) {
        if (tooltip.find('a').length < 1) {
            var $a = $('<a>');
            var url = tooltip.closest('a');
            var href = url.attr('href');

            $a.attr('href', href);
            url.attr('href', 'javascript:void(0);');
            tooltip.append($a);
        }
    },
    removeAnchor: function(tooltip) {
        var url = tooltip.closest('a');
        var href = url.attr('href');

        innerLink = tooltip.find('a').attr('href');
        if (innerLink) {
            href = innerLink;
            url.attr('href', href);
            tooltip.find('a').remove();
        } else {
            return;
        }
    }
};
$(wikiTooltip.init);

// Logged-in body class injection
var loggedinBodyClass = {
	init: function() {
		$('body').addClass(mw.config.get('wgUserName') == null ? 'not-logged-in' : 'logged-in');
	}
};
$(loggedinBodyClass.init);

// Resize YouTube embed, turn HD on, etc, by User:WindPower
var youtubeHelper = {
	chromeSize: 25, // This is the height (in pixels) of the chrome of YouTube's embedded video player. Update this whenever they release a new embedded video player
	maxWidth: 0.85, // Maximum fraction of the available width that the video may take
	infoboxes: ['.infobox', '.testchamber'], // Selectors of infobox-style boxes that should be deducted from the page's available width
	ratioR: /ratio-(\d+)x(\d+)/i,
	widthsR: /widths((?:\D+\d+)+)/i,
	setSize:function() {
		var widths = youtubeHelper.widthsR.exec($(this).attr('class'));
		if(widths != null) {
			widths = widths[1].substr(1).split(/\D+/g);
			var availableWidth = $('#bodyContent').width();
			for(var i in youtubeHelper.infoboxes) {
				if($(youtubeHelper.infoboxes[i]).length) {
					availableWidth -= $(youtubeHelper.infoboxes[i]).width();
				}
			}
			availableWidth *= youtubeHelper.maxWidth;
			var intWidths = [];
			for(var w = 0; w < widths.length; w++) {
				intWidths[w] = parseInt(widths[w]);
			}
			intWidths.sort(function(a, b){return b - a;});
			for(var w = 0; w < intWidths.length; w++) {
				if(intWidths[w] <= availableWidth || w == intWidths.length-1) {
					youtubeHelper.setWidth(this, intWidths[w]);
					break;
				}
			}
		}
		else {
			youtubeHelper.setWidth(this, parseFloat(obj.attr('width')));
		}
	},
	setUrl:function() {
		var obj = $(this).children('object');
		if(!obj.length) return;
		obj.append($('<param name="allowscriptaccess" value="true"></param>'));
		obj.append($('<param name="allowfullscreen" value="true"></param>'));
		var titleParts = mw.config.get('wgPageName').split(/\//g);
		var lang = 'en';
		if(titleParts.length == 2 && !mw.config.get('wgCanonicalSpecialPageName')) {
			lang = titleParts[titleParts.length-1];
		}
		var playerUrl = obj.children('param[name="movie"]').attr('value') + '&version=2&fs=1&theme=dark&color=white' + ($(this).hasClass('hd-on') ? '&hd=1' : '') + '&cc_load_policy=1&modestbranding=1&hl=' + lang + '&cc_lang_pref=' + lang;
		obj.children('param[name="movie"]').attr('value', playerUrl);
		obj.children('embed').attr('src', playerUrl).attr('allowscriptaccess', 'always').attr('allowfullscreen', 'true');
		var resultHtml = $(this).html();
		$(this).html('').html(resultHtml);
	},
	setWidth:function(youtube, width) {
		var obj = $(youtube).children('object');
		if(!obj) return;
		if($(youtube).hasClass('youtube-audio')) {
			obj.attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <object> height
			obj.children('embed').attr('width', width).attr('height', youtubeHelper.chromeSize); // Set <embed> height
		}
		else {
			var ratio = youtubeHelper.ratioR.exec($(youtube).attr('class'));
			if(ratio != null) {
				ratio = parseFloat(ratio[1])/parseFloat(ratio[2]);
				var newHeight = Math.round(width / ratio + youtubeHelper.chromeSize).toString();
				obj.attr('width', width).attr('height', newHeight); // Set <object> height
				obj.children('embed').attr('width', width).attr('height', newHeight); // Set <embed> height
			}
		}
	},
	resizeTimer:null,
	resize:function() {
		if(youtubeHelper.resizeTimer != null) {
			clearTimeout(youtubeHelper.resizeTimer);
		}
		youtubeHelper.resizeTimer = setTimeout(youtubeHelper.onResize, 100);
	},
	onResize:function() {
		$('.youtubebox').each(youtubeHelper.setSize);
	},
	init:function() {
		$('.youtubebox').each(youtubeHelper.setUrl);
		$(window).resize(youtubeHelper.resize);
		youtubeHelper.onResize();
	}
};
$(youtubeHelper.init);

// Edittools loader copied from http://en.wikipedia.org/wiki/MediaWiki:Common.js/edit.js?oldid=407371785
// Only slightly modified by seb26

/** 
 *  Edittools javascript loader ************************************************
 *
 *  Description: Pulls in [[MediaWiki:Edittools.js]]. Includes a cache-bypassing
 *  version number in the URL in order to allow any changes to the edittools to
 *  be rapidly deployed to users.
 *
 *  Note that, by default, this function does nothing unless the element with
 *  the ID "editpage-specialchars" (which contains the old edittools code in
 *  [[MediaWiki:Edittools]], and will be retained as a placeholder in the new
 *  implementation) has a class named "edittools-version-NNN", where NNN is a
 *  number.  If the class name has "test" before the number, the code will only
 *  run for users who have set "window.testJsEdittools = true" in their user JS.
 *  The "test" should be retained in the class name until the new edittools
 *  implementation is ready and fully tested, and until at least 30 days have
 *  passed since this loader stub was added (which will be in 27 June 2008).
 *
 *  For compatibility with Alex Smotrov's original implementation, on which this
 *  code is loosely based (see [[mw:User talk:Alex Smotrov/edittools.js]]), this
 *  loader can also be disabled by setting "window.noDefaultEdittools = true".
 *
 *  Maintainers: [[User:Ilmari Karonen]]
 */

if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1 || mw.config.get('wgPageName') == "Special:Upload") //scripts specific to editing pages
{
 
  // Prevent the static edittools from flashing before the compact edittools below is loaded.
  mw.util.addCSS('div.edittools-text { display:none; }');
 
  $(function () {
    // needs to be deferred until the DOM has fully loaded
    var placeholder = document.getElementById("editpage-specialchars");
    if (!placeholder || window.noDefaultEdittools) {
      //Show the static edittools again for users with "window.noDefaultEdittools=true".
      mw.util.addCSS('div.edittools-text { display:block; }');
      return;
    }
    var match = /(?:^| )edittools-version-(\d+)(?: |$)/.exec(placeholder.className);
 
    // set window.testJsEdittools = true to enable testing before full deployment
    if (!match && window.testJsEdittools)
        match = /(?:^| )edittools-version-(test\d+)(?: |$)/.exec(placeholder.className);
 
    if (!match) return;
    var url = mw.config.get('wgScript') + '?title=MediaWiki:Edittools.js&action=raw&ctype=text/javascript&nocache=' + match[1];
    mw.loader.load(url);
  });
}

/********* MediaWiki:Valve.js *********/
function talkpageplus()
{
    var talkpagelink = document.getElementById('ca-talk');
    if (talkpagelink && talkpagelink.className == 'new')
    {
        talkpagelink.firstChild.href += '&section=new';
    }
}
$(talkpageplus);

// Konami code easter egg by WindPower, modified by Wookipan
// Constants:
	var spaiConstants = {};
	// Editable constants:
		// General info:
			spaiConstants.spaiEnabled = true;
			spaiConstants.spaiImage = '/w/images/7/73/Team_Fortress_Wiki_Egg_Spy.png';
			spaiConstants.spaiHeight = 196;
			spaiConstants.sapperClass = '--sapped';
			spaiConstants.spaiSappingMahWikiWav = '/w/images/4/4a/Team_Fortress_Wiki_Egg.wav';
			spaiConstants.timeStep = 40; // In milliseconds; 40 ms => 25 fps
		// Animation timing (all times in milliseconds):
			spaiConstants.anim_spaiFallDown = 2000; // Time for Spy to fall down
			spaiConstants.anim_spaiWait = 900; // Time Spy waits before going back up
			spaiConstants.anim_spaiBackUp = 2000; // Time for Spy to go back up
			spaiConstants.anim_sapperDestroyed = 2250; // Time until Sapper gets destroyed
	// End editable constants
	spaiConstants.theBody = function(){return document.getElementById('content');};
	spaiConstants.preloadedImages = [];
	spaiConstants.preloadingImages = [];
	spaiConstants.preloadingRefs = {};
	spaiConstants.toPreloadImage = spaiConstants.spaiImage;
	spaiConstants.self = null;
	spaiConstants.loadedSound = false;
	spaiConstants.loadedImages = false;
	spaiConstants.fired = false;
// End constants

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function (obj, fromIndex) {
    if (fromIndex == null) {
        fromIndex = 0;
    } else if (fromIndex < 0) {
        fromIndex = Math.max(0, this.length + fromIndex);
    }
    for (var i = fromIndex, j = this.length; i < j; i++) {
        if (this[i] === obj)
            return i;
    }
    return -1;
  };
}

var spaiSappinMahWiki = {
	constants: spaiConstants,
	createImgDiv:function(image) {
		var self = spaiConstants.self;
		var div = document.createElement('div');
		var img = document.createElement('img');
		img.src = image;
		div.appendChild(img);
		setTimeout(function(){spaiConstants.theBody().appendChild(div);}, 1);
		return {
			'div': div,
			'img': img
		};
	},
	imagesLoaded:function() {
		spaiConstants.loadedImages = true;
		if(spaiConstants.loadedSound) {
			spaiConstants.self.spySappingMahWiki();
		}
	},
	soundLoaded:function() {
		spaiConstants.loadedSound = true;
		if(spaiConstants.loadedImages) {
			spaiConstants.self.spySappingMahWiki();
		}
	},
	preloadSound:function(sound, callback) {
		var self = spaiConstants.self;
		try {
			var audio = document.createElement('audio');
			audio.setAttribute('src', sound);
			audio.setAttribute('style', 'display: none;');
			audio.setAttribute('preload', 'true');
			spaiConstants.theBody().appendChild(audio);
			audio.addEventListener('canplaythrough', callback, false);
		}
		catch(e) {}
		setTimeout(callback, 1000); // Fallback
	},
	preloadImage:function(image) {
		var self = spaiConstants.self;
		if(spaiConstants.preloadingImages.indexOf(image) == -1) {
			spaiConstants.preloadingImages[spaiConstants.preloadingImages.length] = image;
			var nodes = self.createImgDiv(image);
			spaiConstants.preloadingRefs[image] = nodes['img'];
			nodes['div'].setAttribute('style', 'visibility: hidden; height: 0px; width: 0px; overflow: hidden; z-index: -10000;');
		}
		if(spaiConstants.preloadingRefs[image].width) {
			spaiConstants.preloadedImages[spaiConstants.preloadedImages.length] = image;
		}
		else
		{
			setTimeout(function(){self.preloadImage(image);}, spaiConstants.timeStep);
		}
	},
	preloadImages:function(callback) {
		var self = spaiConstants.self;
		var allPreloaded = true;
		for(var i in spaiConstants.toPreloadImages) {
			if(spaiConstants.preloadedImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
				allPreloaded = false;
			}
			if(spaiConstants.preloadingImages.indexOf(spaiConstants.toPreloadImages[i]) == -1) {
				self.preloadImage(spaiConstants.toPreloadImages[i]);
			}
		}
		if(allPreloaded) {
			callback();
		} else {
			setTimeout(function(){self.preloadImages(callback);}, spaiConstants.timeStep);
		}
	},
	destroyNode:function(node) {
		try {
			node.parentNode.removeChild(node);
		} catch(e) {
			// Ze goggles, zey do nothin
		}
	},
	smoothInOut:function(progress) {
		return (Math.sin((progress-.5)*Math.PI)+1)/2;
	},
	inAnimation:function(func, progressTime, totalTime, callback, easing) {
		var self = spaiConstants.self;
		func(easing(progressTime / totalTime));
		if(progressTime >= totalTime) {
			callback();
		} else {
			setTimeout(function(){self.inAnimation(func, progressTime + spaiConstants.timeStep, totalTime, callback, easing);}, spaiConstants.timeStep);
		}
	},
	animate:function(func, totalTime, callback, easing) {
		var self = spaiConstants.self;
		return self.inAnimation(func, 0.0, totalTime, callback, easing);
	},
	playSound:function(sound) {
		var self = spaiConstants.self;
		try {
			var audio = document.createElement('audio');
			audio.setAttribute('src', sound);
			audio.setAttribute('style', 'display: none;');
			audio.setAttribute('autoplay', 'true');
			spaiConstants.theBody().appendChild(audio);
		}
		catch(e) {}
	},
	spyAnimationFinished:function(nodes) {
		var self = spaiConstants.self;
		for(var node in nodes) {
			self.destroyNode(nodes[node]);
		}
		spaiConstants.fired = false;
	},
	spySappingMahWiki:function() {
		var self = spaiConstants.self;
		if(spaiConstants.fired) return;
		spaiConstants.fired = true;
		var spai = document.createElement('a');
		spai.setAttribute('href', '/');
		spai.setAttribute('style', 'display:block; position: absolute; top: 0px; left: 0px; width: 160px; height: 200px; border: 0px; background: url('+spaiConstants.spaiImage+') no-repeat 0px -50000px; z-index: 10000;');
		spaiConstants.theBody().appendChild(spai);
		var logoPortlet = document.getElementById('p-logo');
		var changeHeight = function(progress) {
			progress = parseInt(progress * spaiConstants.spaiHeight);
			spai.style.backgroundPosition = '0px ' + (-spaiConstants.spaiHeight + progress).toString() + 'px';
		};
		self.animate(changeHeight, spaiConstants.anim_spaiFallDown, function(){
			self.playSound(spaiConstants.spaiSappingMahWikiWav);
			setTimeout(function(){
				logoPortlet.classList.add('wiki-logo' + spaiConstants.sapperClass);
				self.animate(function(progress){changeHeight(1.0-progress);}, spaiConstants.anim_spaiBackUp, function(){
					setTimeout(function(){
						logoPortlet.removeAttribute('class');
						self.spyAnimationFinished([spai]);
					}, spaiConstants.anim_sapperDestroyed);
				}, self.smoothInOut);
			}, spaiConstants.anim_spaiWait);
		}, self.smoothInOut);
	},
	hitItDoc:function() {
		var self = spaiConstants.self;
		self.preloadImages(self.imagesLoaded);
		self.preloadSound(spaiConstants.spaiSappingMahWikiWav, self.soundLoaded);
	},
	initKonami: function () {
		var self = spaiConstants.self;
		/*
			 * Konami-JS ~
			 * :: Now with support for touch events and multiple instances for
			 * :: those situations that call for multiple easter eggs!
			 * Code: https://github.com/georgemandis/konami-js
			 * Copyright (c) 2009 George Mandis (https://george.mand.is)
			 * Version: 1.6.3 (11/11/2021)
			 * Licensed under the MIT License (http://opensource.org/licenses/MIT)
			 * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1+ and Android
		*/
		var Konami = function (callback) {
			var konami = {
				addEvent: function (obj, type, fn, ref_obj) {
					if (obj.addEventListener)
						obj.addEventListener(type, fn, false);
					else if (obj.attachEvent) {
						// IE
						obj["e" + type + fn] = fn;
						obj[type + fn] = function () {
							obj["e" + type + fn](window.event, ref_obj);
						}
						obj.attachEvent("on" + type, obj[type + fn]);
					}
				},
				removeEvent: function (obj, eventName, eventCallback) {
					if (obj.removeEventListener) {
						obj.removeEventListener(eventName, eventCallback);
					} else if (obj.attachEvent) {
						obj.detachEvent(eventName);
					}
				},
				input: "",
				pattern: "38384040373937396665",
				keydownHandler: function (e, ref_obj) {
					if (ref_obj) {
						konami = ref_obj;
					} // IE
					konami.input += e ? e.keyCode : event.keyCode;
					if (konami.input.length > konami.pattern.length) {
						konami.input = konami.input.substr((konami.input.length - konami.pattern.length));
					}
					if (konami.input === konami.pattern) {
						konami.code(konami._currentLink);
						konami.input = '';
						e.preventDefault();
						return false;
					}
				},
				load: function (link) {
					this._currentLink = link;
					this.addEvent(document, "keydown", this.keydownHandler, this);
					this.iphone.load(link);
				},
				unload: function () {
					this.removeEvent(document, 'keydown', this.keydownHandler);
					this.iphone.unload();
				},
				code: function (link) {
					window.location = link
				},
				iphone: {
					start_x: 0,
					start_y: 0,
					stop_x: 0,
					stop_y: 0,
					tap: false,
					capture: false,
					orig_keys: "",
					keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"],
					input: [],
					code: function (link) {
						konami.code(link);
					},
					touchmoveHandler: function (e) {
						if (e.touches.length === 1 && konami.iphone.capture === true) {
							var touch = e.touches[0];
							konami.iphone.stop_x = touch.pageX;
							konami.iphone.stop_y = touch.pageY;
							konami.iphone.tap = false;
							konami.iphone.capture = false;
							konami.iphone.check_direction();
						}
					},
					touchendHandler: function () {
						konami.iphone.input.push(konami.iphone.check_direction());

						if (konami.iphone.input.length > konami.iphone.keys.length) konami.iphone.input.shift();

						if (konami.iphone.input.length === konami.iphone.keys.length) {
							var match = true;
							for (var i = 0; i < konami.iphone.keys.length; i++) {
								if (konami.iphone.input[i] !== konami.iphone.keys[i]) {
									match = false;
								}
							}
							if (match) {
								konami.iphone.code(konami._currentLink);
							}
						}
					},
					touchstartHandler: function (e) {
						konami.iphone.start_x = e.changedTouches[0].pageX;
						konami.iphone.start_y = e.changedTouches[0].pageY;
						konami.iphone.tap = true;
						konami.iphone.capture = true;
					},
					load: function (link) {
						this.orig_keys = this.keys;
						konami.addEvent(document, "touchmove", this.touchmoveHandler);
						konami.addEvent(document, "touchend", this.touchendHandler, false);
						konami.addEvent(document, "touchstart", this.touchstartHandler);
					},
					unload: function () {
						konami.removeEvent(document, 'touchmove', this.touchmoveHandler);
						konami.removeEvent(document, 'touchend', this.touchendHandler);
						konami.removeEvent(document, 'touchstart', this.touchstartHandler);
					},
					check_direction: function () {
						x_magnitude = Math.abs(this.start_x - this.stop_x);
						y_magnitude = Math.abs(this.start_y - this.stop_y);
						x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT";
						y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP";
						result = (x_magnitude > y_magnitude) ? x : y;
						result = (this.tap === true) ? "TAP" : result;
						return result;
					}
				}
			}

			typeof callback === "string" && konami.load(callback);
			if (typeof callback === "function") {
				konami.code = callback;
				konami.load();
			}

			return konami;
		};
		// End of Konami-JS
		var konami = new Konami();
		konami.code = function() {
			if (spaiConstants.spaiEnabled) {
				self.hitItDoc.apply(self);
			}
			
			document.dispatchEvent(new CustomEvent('konami:fire'));
		};
		konami.load();
	}
};
spaiConstants.self = spaiSappinMahWiki;
$(spaiSappinMahWiki.initKonami);

// Dynamic background by WindPower
// WindPower is secksy and makes this wiki awesome with his very breath. (- Smashman)
var dynamicBg = {
	categories: {
		// Format:
		// 'CategoryName': 'URL of background image',  ---OR--- 'title-PageTitle': 'URL of background image',
		// Categories don't have to be class names, they can be things like "Weapons", "Featured articles", "Maps", "Help", etc.
		'Scout': '/w/images/e/ea/Background_Scout_vector.png',
		'Soldier': '/w/images/5/54/Background_Soldier_vector.png',
		'Pyro': '/w/images/e/ed/Background_Pyro_vector.png',
                'Demoman': '/w/images/5/59/Background_Demoman_vector.png',
                'Engineer': '/w/images/f/f7/Background_Engineer_vector.png',
                'Heavy': '/w/images/0/03/Background_Heavy_vector.png',
                'Medic': '/w/images/2/24/Background_Medic_vector.png',
                'Sniper': '/w/images/e/ed/Background_Sniper_vector.png',
                'Spy': '/w/images/b/b9/Background_Spy_vector.png'
		// (No comma at the end of the last line)
	},
	getCategories:function() {
		var catlinksnode = document.getElementById('catlinks');
		if(!catlinksnode) return [];
		var catlinks = document.getElementById('catlinks').getElementsByTagName('a');
		var cats = [];
		var l;
		for(var i = 0; i < catlinks.length; i++) {
			l = catlinks[i].getAttribute('title');
			if(l.match(/^Category:/i, '')) {
				cats[cats.length] = l.substr(9).replace(/\/[^/]+$/, '');
			}
		}
		return cats;
	},
	inArray:function(haystack, needle) {
		for(var i = 0; i < haystack.length; i++) {
			if(haystack[i] == needle) {
				return i;
			}
		}
		return -1;
	},
	init:function() {
		if(typeof(wPrefs) != 'undefined') {
			if(dynamicBg.inArray(wPrefs, 'noDynamicBackground') != -1) {
				return; // Script disabled
			}
		}
		try {
			var cats = dynamicBg.getCategories();
			var body = document.getElementsByTagName('body')[0];
		} catch(e) {
			return;
		}
		var selectedCats = [];
		if(typeof(dynamicBg.categories['title-' + mw.config.get('wgTitle')]) != 'undefined') {
			selectedCats[0] = dynamicBg.categories['title-' + mw.config.get('wgTitle')];
		}
		else {
			for(var i in dynamicBg.categories) {
				if(dynamicBg.inArray(cats, i) != -1) {
					selectedCats[selectedCats.length] = dynamicBg.categories[i];
				}
			}
		}
		if(!selectedCats.length) return; // No match, keep default style
		var selectedCat = selectedCats[Math.floor(Math.random()*selectedCats.length)];
		body.style.backgroundImage='url('+selectedCat+')';
	}
};
$(dynamicBg.init);

// Page-specific JavaScript/CSS
var pageScripts = {
	pagesJS: ['Main_Page', 'User:WindPower', 'User:MogDog66', 'User:WindPower/Main_Page', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:Lexar/responsive_infobox', 'User:Lexar/sandbox', 'User:Tark', 'User:Tark/Sandbox', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Wookipan/Sandbox'],
	pagesCSS: ['Main_Page', 'User:WindPower', 'User:Pilk/armory', 'User:Pilk', 'User:Esky', 'User:Lagg', 'User:MogDog66', 'User:CrushBOT', 'User:MogDog66/userpagev2', 'User:NVis', 'User:NVis/Sandbox', 'User:Lexar', 'User:MogDog66/MPR', 'User:WindPower/Main_Page', 'User:Moussekateer/3DViewer', 'User:T-Wayne', 'User:FreeXMan', 'User:Nixshadow', 'User:Ath', 'User:Carez', 'User:Lexar/Main_Page/Template:Benjas', 'User:Lexar/RandomPage', 'User:MogDog66/Sandbox', 'User:Obilisk', 'User:Lexar/itembox_tooltip', 'User:Lexar/sandbox', 'User:Lexar/responsive_infobox', 'User:Hagbard Celine', 'User:Wookipan', 'User:Wookipan/Sandbox', 'User:GrampaSwood', 'Team_Fortress_Wiki:April_Fools\'_Day/2019/Main_Page', 'User:Tark', 'User:Tark/Sandbox', 'User:Boba', 'User:Boba/Projects', 'User:FanCyy', 'User:Dan_greene', 'User:Boba/Sandbox', 'User:Ashe', 'Team_Fortress_Wiki:April_Fools\'_Day/2021/Main_Page', 'User:PhoneWave', 'User:Foxbite', 'User:Mediarch', 'User:Payn'],
	suffixJS: '/Page.js',
	suffixCSS: '/Page.css',
	init: function() {
		for(var i in pageScripts.pagesJS) {
			if(mw.config.get('wgPageName') == pageScripts.pagesJS[i]) {
				mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixJS) + '&ctype=text/javascript&action=raw');
			}
		}
		for(var i in pageScripts.pagesCSS) {
			if(mw.config.get('wgPageName') == pageScripts.pagesCSS[i]) {
				mw.loader.load(mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName') + pageScripts.suffixCSS) + '&ctype=text/css&action=raw', 'text/css');
			}
		}
	}
};
$(pageScripts.init);

// Fancy diffs
var fancyDiffs = {
	isBigDiff: false,
	isBigDiffThreshold: 72,
	toggle: function(element) {
		var expanded = element.hasClass('diff-expanded');
		var contents = element.parent().children('.diff-contents');
		if(expanded) { // Just collapse then
			element.removeClass('diff-expanded');
			if(fancyDiffs.isBigDiff) {
				contents.hide();
			} else {
				contents.slideUp('fast');
			}
		} else if(element.hasClass('diff-data-loaded')) { // Stuff is already loaded, expand
			element.addClass('diff-expanded');
			contents.slideDown('fast');
		} else if(!element.hasClass('diff-data-requested')) { // Stuff is not loaded
			element.addClass('diff-data-requested');
			var fileName = element.find('span').text().replace(/^\s+|\s+$/g);
			var patchName = element.closest('.diffname');
			var diffName = mw.config.get('wgPageName');
			if(patchName && patchName.length && patchName.attr('class')) {
				diffName = patchName.attr('class').substr(9);
			}
			$.get('/w/?title=Template:PatchDiff/' + encodeURIComponent(diffName.replace(/^Template:PatchDiff\//, '')) + '/' + encodeURIComponent(fileName) + '&action=raw', function(data) {
				contents.html(data);
				if(fancyDiffs.isBigDiff) {
					contents.show();
				} else {
					contents.slideDown('fast');
				}
				element.removeClass('diff-data-requested').addClass('diff-data-loaded').addClass('diff-expanded');
			});
		}
		
	},
	init: function() {
		var diffText = $('.diff-name-text');
		if(diffText.length) {
			// Preload leetle gif
			$('body').append($('<img/>').attr('src', '/w/images/4/43/Patch_diff_loading.gif').css('display', 'none'));
			diffText.find('span').each(function() {
				$(this).text($(this).find('a').text().replace(/^\s+|\s+$/g));
			});
			diffText.click(function() {
				fancyDiffs.toggle($(this));
				return false;
			});
			fancyDiffs.isBigDiff = $('.diff-file').length > fancyDiffs.isBigDiffThreshold;
		}
	}
};
$(fancyDiffs.init);

// 3D/2D viewer
$('#switch-to-3d').click(function() {
	$('.container-2d').hide();
	$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').show();
});

$('#switch-to-2d').click(function() {
	$('.viewer-3d, .viewer-3d-multi, .buttons-container-3d').hide();
	$('.container-2d').show();
});

// 3D model viewer
var viewer3d = {
	dragging: null,
	draggingFrameX: 0,
	draggingFrameY: 0,
	viewers: [],
	frameThresholdX: 10,
	frameThresholdY: 128,
	realMod: function(x, y) {
		return ((x % y) + y) % y;
	},
	init: function() {
		$('.viewer-3d').each(viewer3d.bind);
		$(document).mouseup(viewer3d.release);
		$(document).mousemove(viewer3d.move);
	},
	bind: function() {
		var v = $(this);
		var num = viewer3d.viewers.length;
		var allModels = [];
		var modelID = 0;
		var viewerSize = 0;
		while(true) {
			var modelMap = v.find('.viewer-3d-map-' + modelID);
			var urlNode = v.find('.viewer-3d-url-' + modelID);
			if(!modelMap.length || !urlNode.length) break;
			var url = $('<div/>').html(urlNode.text()).text();
			var framesS = $('<div/>').html(modelMap.text()).text().replace(/^\s+|\s+$/g).split(/,/g);
			var frameMap = [];
			var heightMap = [];
			var leftCropMap = [];
			var totalW = parseInt(framesS[0]);
			var maxFrameW = parseInt(framesS[1]);
			var totalH = parseInt(framesS[2]);
			var verticalSteps = parseInt(framesS[3]);
			var midVertical = Math.floor(verticalSteps / 2);
			for(var f = 4; f < framesS.length; f += 3) {
				frameMap.push(parseInt(framesS[f]));
				heightMap.push(parseInt(framesS[f + 1]));
				leftCropMap.push(parseInt(framesS[f + 2]));
			}
			allModels.push({
				imageURL: url,
				map: frameMap,
				cropMap: leftCropMap,
				totalWidth: totalW,
				totalHeight: totalH,
				maxFrameWidth: maxFrameW,
				xStep: verticalSteps
			});
			viewerSize = Math.max(viewerSize, totalH, maxFrameW);
			modelID++;
		}
		if(!modelID) return;
		var overlayNode = $('<div class="viewer-3d-overlay"></div>');
		var frameN = v.find('.viewer-3d-frame');
		v.find('img').detach();
		var klasses = v.attr('class').split(/ /g);
		var startFrame = 0;
		for(var k in klasses) {
			if(klasses[k].substr(0, 11) == 'startframe-') {
				startFrame = Math.max(0, parseInt(klasses[k].substr(11)));
			}
		}
		var viewer = {
			node: v,
			frameX: startFrame,
			frameY: midVertical,
			models: allModels,
			currentModel: -1,
			frameNode: frameN,
			width: viewerSize,
			height: viewerSize,
			mouseX: 0,
			mouseY: 0,
			overlay: overlayNode
		};
		viewer3d.viewers.push(viewer);
		v.hover(viewer3d.hover, viewer3d.unhover).mousedown(viewer3d.drag).append(overlayNode).attr('data-id', num).css({
			width: viewer.width + 'px',
			height: viewer.height + 'px'
		});
		frameN.mousedown(viewer3d.drag).attr('data-id', num).css('height', viewer.height + 'px');
		viewer3d.changeVersion(viewer, 0);
	},
	getCurrentModel: function(v) {
		return v.models[v.currentModel];
	},
	changeVersion: function(v, version) {
		version = Math.max(0, Math.min(v.models.length - 1, version));
		if(v.currentModel == version) return;
		v.currentModel = version;
		v.frameNode.css('background', 'url(' + viewer3d.getCurrentModel(v).imageURL + ') top left no-repeat');
		viewer3d.display(v, v.frameX, v.frameY);
	},
	hover: function(e) {
		var v = viewer3d.getViewer(this);
		if(viewer3d.dragging != v) {
			v.overlay.animate({'opacity': '1'}, 'fast');
		}
	},
	unhover: function(e) {
		var v = viewer3d.getViewer(this);
		if(viewer3d.dragging != v) {
			v.overlay.animate({'opacity': '0.5'}, 'fast');
		}
	},
	drag: function(e) {
		var v = viewer3d.getViewer(this);
		v.mouseX = e.pageX;
		v.mouseY = e.pageY;
		viewer3d.dragging = v;
		draggingFrameX = v.frameX;
		draggingFrameY = v.frameY;
		return false;
	},
	release: function() {
		var v = viewer3d.dragging;
		viewer3d.dragging = null;
		if(v != null) {
			v.frameX = viewer3d.draggingFrameX;
			v.frameY = viewer3d.draggingFrameY;
			v.overlay.animate({'opacity': '0.5'}, 'fast');
		}
		viewer3d.draggingFrameX = 0;
		viewer3d.draggingFrameY = 0;
	},
	getViewer: function(node) {
		return viewer3d.viewers[parseInt($(node).attr('data-id'))];
	},
	display: function(v, frameX, frameY) {
		var model = viewer3d.getCurrentModel(v);
		var frameID = viewer3d.realMod(frameX * model.xStep + frameY, model.map.length);
		var frameOffset = model.map[frameID];
		var frameWidth = 0;
		if(frameID == model.map.length - 1) {
			frameWidth = model.totalWidth - frameOffset;
		} else {
			frameWidth = model.map[frameID + 1] - frameOffset;
		}
		v.frameNode.css({
			backgroundPosition: (-frameOffset - frameID) + 'px 0px',
			left: Math.round((v.width - model.maxFrameWidth) / 2.0 + model.cropMap[frameID]) + 'px',
			top: Math.round((v.height - model.totalHeight) / 2) + 'px',
			width: frameWidth + 'px',
			height: model.totalHeight + 'px'
		});
	},
	move: function(e) {
		if(viewer3d.dragging == null) {
			return;
		}
		var v = viewer3d.dragging;
		var model = viewer3d.getCurrentModel(v);
		var mouseDeltaX = e.pageX - v.mouseX;
		var mouseDeltaY = e.pageY - v.mouseY;
		var frameDeltaX = Math.round(mouseDeltaX / viewer3d.frameThresholdX);
		var frameDeltaY = -Math.round(mouseDeltaY / viewer3d.frameThresholdY);
		viewer3d.draggingFrameX = v.frameX + frameDeltaX;
		viewer3d.draggingFrameY = Math.max(0, Math.min(model.xStep - 1, v.frameY + frameDeltaY));
		viewer3d.display(v, viewer3d.draggingFrameX, viewer3d.draggingFrameY);
	}
};
$(viewer3d.init);
var selector3d = {
	bind: function() {
		var viewer = viewer3d.getViewer($(this).find('.viewer-3d'));
		var keepGoing = true;
		var modelVariant = 0;
		var selector;
		while(keepGoing) {
			selector = $(this).find('.selector-' + modelVariant);
			if(selector.length) {
				selector.attr('data-variant', modelVariant).click(function() {
					viewer3d.changeVersion(viewer, parseInt($(this).attr('data-variant')));
					return false;
				});
			}
			modelVariant++;
			keepGoing = selector.length;
		}
	},
	init: function() {
		$('.viewer-3d-multi, .viewer-3d-container').each(selector3d.bind);
	}
};
$(selector3d.init);

// Code to get 3D viewer drag working on touch devices
// Source: http://www.jquery4u.com/mobile/jquery-add-dragtouch-support-ipad/
$.fn.addTouch = function(){
    this.each(function(i,el){
      $(el).bind('touchstart touchmove touchend touchcancel',function(){
        //we pass the original event object because the jQuery event
        //object is normalized to w3c specs and does not provide the TouchList
        handleTouch(event);
      });
    });

    var handleTouch = function(event)
    {
      var touches = event.changedTouches,
              first = touches[0],
              type = '';

      switch(event.type)
      {
        case 'touchstart':
          type = 'mousedown';
          break;

        case 'touchmove':
          type = 'mousemove';
          event.preventDefault();
          break;

        case 'touchend':
          type = 'mouseup';
          break;

        default:
          return;
      }

      var simulatedEvent = document.createEvent('MouseEvent');
      simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);
      first.target.dispatchEvent(simulatedEvent);
    };
  };

$('.viewer-3d').addTouch();

// End 3D viewer touch device code

// Start weapon wear table tabs -----
var WeaponWearTable = {
	tabSwitch: function($this,tab,weapons,weapon) {
		if (!$this.hasClass('current')) {
			var tabIndex = $this.index();
			$this.parent().find('.current').removeClass('current');
			$this.addClass('current');
			weapons.find('.current').removeClass('current');
			weapon.eq(tabIndex).addClass('current');
		}
	},
	init: function() {
		$('.weapon-wear-table').each(function(){
			var $this = $(this),
			tabs = $this.children('.tabs'),
			tab = tabs.children('li'),
			weapons = $this.children('.weapons'),
			weapon = weapons.children('li');
			tab.click(function(){
				WeaponWearTable.tabSwitch($(this),tab,weapons,weapon);
			});
		});
	}
};
$(WeaponWearTable.init);
// End weapon wear table tabs -----

// Start Bilibili iframe support -----
var Bilibili = {
  init: function() {
    var $videos = $('.bilibili-video');
    $videos.each(function() {
      var $this = $(this);
      var aid = parseInt($this.data('vaid'));
      var danmaku = parseInt($this.data('vdanmaku'));
      var page = parseInt($this.data('vpage'));
      var width = $this.data('vwidth');
      var height = $this.data('vheight');
      var iframeSrc = 'https://www.bilibili.com/blackboard/html5mobileplayer.html?aid=' + aid + '&high_quality=1&danmaku=' + danmaku + '&page=' + page + '&hideCoverInfo=1&hideDanmakuButton=1';
      var iframe = '<iframe src="' + iframeSrc + '" width="' + width + '" height="' + height + '" frameborder="0" allowfullscreen="true"></iframe>';
      $this.append(iframe);
    });
  }
};
$(Bilibili.init);
// End Bilibili iframe support -----

// Start custom username highlighting -----
var uGroupHighlight = {
  init: function() {
    if ($('.mw-userlink')[0]) {
      var params = {
        action: 'query',
        list: 'allusers',
        augroup: ['sysop', 'moderator', 'bot'],
        auprop: 'groups',
        aulimit: 100,
        format: 'json'
      };

      var api = new mw.Api();

      api.get(params).done(function(data) {
        var uGroups = data.query.allusers, user;
        for (user in uGroups) {
          var name = uGroups[user].name;
          var group = uGroups[user].groups;

          $('bdi').each(function() {
            if ($(this).text().match('\\b' + name + '\\b')) {
              $(this).closest('.mw-userlink').addClass(group.includes('bot') ? 'bot' : 'staff');
            }
          });
        }
      });
    }
  },
};
$(uGroupHighlight.init);
// End custom username highlighting -----

// Start login icon randomizer -----
var iconRandomizer = {
    init: function() {
        var classes = [
            '/w/images/3/33/Login_Scout.png',
            '/w/images/d/d8/Login_Soldier.png',
            '/w/images/7/71/Login_Pyro.png',
            '/w/images/5/53/Login_Demoman.png',
            '/w/images/3/35/Login_Heavy.png',
            '/w/images/a/ab/Login_Engineer.png',
            '/w/images/d/d4/Login_Medic.png',
            '/w/images/e/e4/Login_Sniper.png',
            '/w/images/2/27/Login_Spy.png'
        ];

        // pick a random class image out of nine choices
        pickClass = classes[Math.floor(Math.random() * classes.length)];

        // ensure all relative elements are hit
        var nodes = $('#pt-userpage, #pt-anonuserpage, #pt-login');
        if (nodes.length) {
            for (var i = 0; i < nodes.length; i++) {
                nodes.css('background-image', 'url(' + pickClass + ')');
            }
        }
    }
};

$(iconRandomizer.init);
// End login icon randomizer -----

// Start 'Audio player'
var audioPlayer = {
    currentAudio: null,

    init: function () {
        var audioPauseImg = new Image();
        var audioPlayImg = new Image();
        audioPauseImg.src = '/w/images/d/d2/Pause_icon.png';
        audioPlayImg.src = '/w/images/6/67/Play_icon.png';

        $('.tfwiki-audio-player').each(function () {
            var audioPlayerElement = $(this);
            var audioLink = audioPlayerElement.children('a');
            var audioURL = audioLink.attr('href');
            var audio = null;
            var audioStatus = audioPlayerElement.find('.tfwiki-audio-player-action');
		
			audioStatus.removeClass('inactive');

            audioPlayerElement.on('click', function (e) {
                if (e.target !== audioStatus[0]) {
                    return;
                }

                e.preventDefault();
				
                if (!audio) {
                    audio = new Audio(audioURL);
                    audio.volume = 0.5;
                    audio.addEventListener('ended', function () {
                        audioStatus.text(audioStatus.data('text-play'));
                        audioStatus.removeClass('playing');
                    });
                }

                if (audioPlayer.currentAudio && audioPlayer.currentAudio !== audio) {
                    audioPlayer.currentAudio.pause();
                    audioPlayer.currentAudio.currentTime = 0;
                    audioPlayer.currentAudioStatus.text(audioPlayer.currentAudioStatus.data('text-play'));
                    audioPlayer.currentAudioStatus.removeClass('playing');
                }

                if (audio.paused) {
                    audio.play();
                    audioStatus.text(audioStatus.data('text-pause'));
                    audioPlayer.currentAudio = audio;
                    audioPlayer.currentAudioStatus = audioStatus;
                    audioStatus.addClass('playing');
                } else {
                    audio.pause();
                    audioStatus.text(audioStatus.data('text-resume'));
                    audioPlayer.currentAudio = null;
                    audioPlayer.currentAudioStatus = null;
                    audioStatus.removeClass('playing');
                }
            });

            audioLink.on('click', function (e) {
                e.preventDefault();
                window.open(audioURL, '_blank');
            });
        });
    }
};

$(audioPlayer.init);
// End 'Audio player'

/* Google Analytics */
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-18260470-1']);
  _gaq.push(['_setDomainName', '.teamfortress.com']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
/* GoSquared analytics */
  var GoSquared = {};
  GoSquared.acct = "GSN-106863-S";
  (function(w){
    function gs(){
      w._gstc_lt = +new Date;
      var d = document, g = d.createElement("script");
      g.type = "text/javascript";
      g.src = "//d1l6p2sc9645hc.cloudfront.net/tracker.js";
      var s = d.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(g, s);
    }
    w.addEventListener ?
      w.addEventListener("load", gs, false) :
      w.attachEvent("onload", gs);
  })(window);