| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | /* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');/** * Encode an integer in the range of 0 to 63 to a single base 64 digit. */exports.encode = function (number) {  if (0 <= number && number < intToCharMap.length) {    return intToCharMap[number];  }  throw new TypeError("Must be between 0 and 63: " + number);};/** * Decode a single base 64 character code digit to an integer. Returns -1 on * failure. */exports.decode = function (charCode) {  var bigA = 65;     // 'A'  var bigZ = 90;     // 'Z'  var littleA = 97;  // 'a'  var littleZ = 122; // 'z'  var zero = 48;     // '0'  var nine = 57;     // '9'  var plus = 43;     // '+'  var slash = 47;    // '/'  var littleOffset = 26;  var numberOffset = 52;  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ  if (bigA <= charCode && charCode <= bigZ) {    return (charCode - bigA);  }  // 26 - 51: abcdefghijklmnopqrstuvwxyz  if (littleA <= charCode && charCode <= littleZ) {    return (charCode - littleA + littleOffset);  }  // 52 - 61: 0123456789  if (zero <= charCode && charCode <= nine) {    return (charCode - zero + numberOffset);  }  // 62: +  if (charCode == plus) {    return 62;  }  // 63: /  if (charCode == slash) {    return 63;  }  // Invalid base64 digit.  return -1;};
 |