// base64Utils.js
let _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
const useBase64 = {
   encode64:(e) => {
    let t = "";
    let f = 0;
    e = useBase64.encodeUTF8(e);
    while (f < e.length) {
      const n = e.charCodeAt(f++);
      const r = e.charCodeAt(f++);
      const i = e.charCodeAt(f++);
      let s = n >> 2;
      let o = (n & 3) << 4 | r >> 4;
      let u = (r & 15) << 2 | i >> 6;
      let a = i & 63;
      if (isNaN(r)) {
        u = a = 64;
      } else if (isNaN(i)) {
        a = 64;
      }
      t += _keyStr[s] + _keyStr[o] + _keyStr[u] + _keyStr[a];
    }
    return t;
  },
   decode64: (e) => {
    let t = "";
    let f = 0;
    e = e.replace(/[^A-Za-z0-9+/=]/g, "");
    while (f < e.length) {
      const s = _keyStr.indexOf(e.charAt(f++));
      const o = _keyStr.indexOf(e.charAt(f++));
      const u = _keyStr.indexOf(e.charAt(f++));
      const a = _keyStr.indexOf(e.charAt(f++));
      let n = s << 2 | o >> 4;
      let r = (o & 15) << 4 | u >> 2;
      let i = (u & 3) << 6 | a;
      t += String.fromCharCode(n);
      if (u !== 64) {
        t += String.fromCharCode(r);
      }
      if (a !== 64) {
        t += String.fromCharCode(i);
      }
    }
    return useBase64.decodeUTF8(t);
  },

  encodeUTF8: (input) => {
    return unescape(encodeURIComponent(input));
  },

  decodeUTF8: (input) => {
    return decodeURIComponent(escape(input));
  },
}
export default useBase64;
