// base64 js decoding routine
// may, 2005 // by morgan
// the code works correctly only with ascii-127 base64 encoded chars
// (as fromCharCode likes the unicode)

var base64_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var base64_keys = [];
for ( var i=0; i<=64; i++) {
 base64_keys[base64_chars.charAt(i)] = i;
}

function base64_decode( s) {
 if ((s.length&3)||(!s.match(/^[a-z0-9+\/]+={0,2}$/i))) {
  return ''; // invalid input
 }

 var i = 0, rz = '', n = s.length;
 while (i < n) {
  k = base64_keys[s.charAt(i++)]<<18|
      base64_keys[s.charAt(i++)]<<12|
      base64_keys[s.charAt(i++)]<<6|
      base64_keys[s.charAt(i++)];

  rz += String.fromCharCode(k>>16,(k>>8)&0xff,k&0xff);
 }

 if ((i = s.indexOf('=')) != -1) {
  rz = rz.substr(0,rz.length-(n-i));
 }

 return rz;
}