//>>built define(["dojo/_base/lang","dojo/_base/array","../base64","./_base"],function(A,p,w,h){h.Blowfish=new function(){function b(b,a){return(b>>16^a>>16)<<16|(b&65535^a&65535)&65535}function e(b,a){var c=a.s3[b&255];b>>=8;var d=a.s2[b&255];b>>=8;var f=a.s1[b&255];b=a.s0[b>>8&255];f=(b>>16)+(f>>16)+((b&65535)+(f&65535)>>16)<<16|(b&65535)+(f&65535)&65535;f=(f>>16^d>>16)<<16|(f&65535^d&65535)&65535;return(f>>16)+(c>>16)+((f&65535)+(c&65535)>>16)<<16|(f&65535)+(c&65535)&65535}function y(f,a){var c=f.left,d= f.right,c=b(c,a.p[0]),d=b(d,b(e(c,a),a.p[1])),c=b(c,b(e(d,a),a.p[2])),d=b(d,b(e(c,a),a.p[3])),c=b(c,b(e(d,a),a.p[4])),d=b(d,b(e(c,a),a.p[5])),c=b(c,b(e(d,a),a.p[6])),d=b(d,b(e(c,a),a.p[7])),c=b(c,b(e(d,a),a.p[8])),d=b(d,b(e(c,a),a.p[9])),c=b(c,b(e(d,a),a.p[10])),d=b(d,b(e(c,a),a.p[11])),c=b(c,b(e(d,a),a.p[12])),d=b(d,b(e(c,a),a.p[13])),c=b(c,b(e(d,a),a.p[14])),d=b(d,b(e(c,a),a.p[15])),c=b(c,b(e(d,a),a.p[16]));f.right=c;f.left=b(d,a.p[17])}function B(f,a){var c=f.left,d=f.right,c=b(c,a.p[17]),d=b(d, b(e(c,a),a.p[16])),c=b(c,b(e(d,a),a.p[15])),d=b(d,b(e(c,a),a.p[14])),c=b(c,b(e(d,a),a.p[13])),d=b(d,b(e(c,a),a.p[12])),c=b(c,b(e(d,a),a.p[11])),d=b(d,b(e(c,a),a.p[10])),c=b(c,b(e(d,a),a.p[9])),d=b(d,b(e(c,a),a.p[8])),c=b(c,b(e(d,a),a.p[7])),d=b(d,b(e(c,a),a.p[6])),c=b(c,b(e(d,a),a.p[5])),d=b(d,b(e(c,a),a.p[4])),c=b(c,b(e(d,a),a.p[3])),d=b(d,b(e(c,a),a.p[2])),c=b(c,b(e(d,a),a.p[1]));f.right=c;f.left=b(d,a.p[0])}function z(b){var a=b;A.isString(a)&&(a=p.map(a.split(""),function(a){return a.charCodeAt(0)& 255}));var c=0,d=0;b={left:0,right:0};var f,x,e,g={p:p.map(q.p.slice(0),function(b){var f=a.length,g;for(g=0;4>g;g++)d=d*t|a[c++%f];return(b>>16^d>>16)<<16|(b&65535^d&65535)&65535}),s0:q.s0.slice(0),s1:q.s1.slice(0),s2:q.s2.slice(0),s3:q.s3.slice(0)};f=0;for(e=g.p.length;ff;f++)for(x=0,e=g["s"+f].length;x=a?"0":"")+a.toString(16)}).join("");case h.outputTypes.String:return m.join("");case h.outputTypes.Raw:return m;default:return w.encode(m)}};this.setIV=function(b,a){var c=null;switch(a||h.outputTypes.Base64){case h.outputTypes.String:c=p.map(b.split(""),function(a){return a.charCodeAt(0)});break; case h.outputTypes.Hex:c=[];a=0;for(var d=b.length-1;a>3,g=0,k={},f=f==h.cipherModes.CBC,r= m.left||null,n=m.right||null;for(c=0;c>16^r>>16)<<16|(k.left&65535^r&65535)&65535,k.right=(k.right>>16^n>>16)<<16|(k.right&65535^n&65535)&65535),y(k,a),f&&(r=k.left,n=k.right),e.push(k.left>>24&255),e.push(k.left>>16&255),e.push(k.left>>8&255),e.push(k.left&255),e.push(k.right>>24&255),e.push(k.right>>16& 255),e.push(k.right>>8&255),e.push(k.right&255),g+=8;switch(d){case h.outputTypes.Hex:return p.map(e,function(a){return(15>=a?"0":"")+a.toString(16)}).join("");case h.outputTypes.String:return e.join("");case h.outputTypes.Raw:return e;default:return w.encode(e)}};this.decrypt=function(b,a,c){var d=h.outputTypes.Base64,e=h.cipherModes.ECB;c&&(c.outputType&&(d=c.outputType),c.cipherMode&&(e=c.cipherMode));c=z(a);a=[];var f=null;switch(d){case h.outputTypes.Hex:for(var f=[],d=0,l=b.length-1;d>3;for(var l=0,g={},e=e==h.cipherModes.CBC,k=m.left||null,r=m.right||null,d=0;d>16^k>>16)<<16|(g.left&65535^k&65535)&65535,g.right=(g.right>>16^r>>16)<<16|(g.right& 65535^r&65535)&65535,k=n,r=q);a.push(g.left>>24&255);a.push(g.left>>16&255);a.push(g.left>>8&255);a.push(g.left&255);a.push(g.right>>24&255);a.push(g.right>>16&255);a.push(g.right>>8&255);a.push(g.right&255);l+=8}if(a[a.length-1]==a[a.length-2]||1==a[a.length-1])n=a[a.length-1],a.splice(a.length-n,n);return p.map(a,function(a){return String.fromCharCode(a)}).join("")};this.setIV("0000000000000000",h.outputTypes.Hex)};return h.Blowfish});