var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(aa){var ba="";var ca,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;aa=Base64._utf8_encode(aa);while(i<aa.length){ca=aa.charCodeAt(i++);chr2=aa.charCodeAt(i++);chr3=aa.charCodeAt(i++);enc1=ca>>2;enc2=((ca&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}
else if(isNaN(chr3)){enc4=64;}
ba=ba+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4);}
return ba;},decode:function(da){var ea="";var fa,chr2,chr3;var ga,enc2,enc3,enc4;var i=0;da=da.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<da.length){ga=this._keyStr.indexOf(da.charAt(i++));enc2=this._keyStr.indexOf(da.charAt(i++));enc3=this._keyStr.indexOf(da.charAt(i++));enc4=this._keyStr.indexOf(da.charAt(i++));fa=(ga<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;ea=ea+String.fromCharCode(fa);if(enc3!=64){ea=ea+String.fromCharCode(chr2);}
if(enc4!=64){ea=ea+String.fromCharCode(chr3);}}
ea=Base64._utf8_decode(ea);return ea;},_utf8_encode:function(ha){ha=ha.replace(/\r\n/g,"\n");var ia="";for(var n=0;n<ha.length;n++){var c=ha.charCodeAt(n);if(c<128){ia+=String.fromCharCode(c);}
else if((c>127)&&(c<2048)){ia+=String.fromCharCode((c>>6)|192);ia+=String.fromCharCode((c&63)|128);}
else{ia+=String.fromCharCode((c>>12)|224);ia+=String.fromCharCode(((c>>6)&63)|128);ia+=String.fromCharCode((c&63)|128);}}
return ia;},_utf8_decode:function(ja){var ka="";var i=0;var c=c1=c2=0;while(i<ja.length){c=ja.charCodeAt(i);if(c<128){ka+=String.fromCharCode(c);i++;}
else if((c>191)&&(c<224)){c2=ja.charCodeAt(i+1);ka+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}
else{c2=ja.charCodeAt(i+1);c3=ja.charCodeAt(i+2);ka+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
return ka;}}