export function stringifyCookies(cookies) {
    return cookies.map(cookie => cookie.split(';')[0]).join('; ');
}

const LOOKUP = [
    "12nDjlVB", "1136148EijDiJ", "length", "3833564PCTrBF", 
    "125036Fmaqlb", "424BQwERO", "2222cxvJYR", "toBase64", 
    "min", "15459928mOwUKl", "65CjoIor", "6884325aeKsEh", 
    "8VQEOyR", "5186520rNJujb", "pow"
];

function look(a) {
    if (a < 136 || a >= 136 + LOOKUP.length) return undefined; 
    return LOOKUP[a - 136];
}

const C_NUMBER = 562586;

export function generateTokenId(id) {
    let f = 255, g = 0, h = 0, i = 0;
    let buffer = new Uint8Array(46), l = "";

    buffer[36] = id.length;

    function k(a, b, c) {
        for (let i = 0; i < Math.min(c, a.length); ++i) {
            h = parseInt(a[i]);
            buffer[i + b] = h;
            g += Math.pow(h, 8);
        }
    }

    k(id, 4, 32 - buffer[36]);

    for (i = id.length - 1; i >= 0; l += id[i--]);
    k(l, 36 - l.length, l.length);
    g >>>= 0;

    function m(a, b) {
        buffer[b] = a & 255;
        buffer[b + 1] = (a >> 8) & 255;
        buffer[b + 2] = (a >> 16) & 255;
        buffer[b + 3] = (a >> 24) & 255;
    }

    m(g, 0);
    for (i = 4; i < 36; ++i) {
        buffer[i] += g % (f - 10);
    }

    let n = f * 4, o = f * 4;
    for (i = 0; i < 32; ++i) {
        let p = buffer[i];
        n ^= p;
        n += (n << 1) + (n << 4) + (n << 7) + (n << 8) + (n << 24);
        o = (o << 5) - o + p;
    }

    m(n >>> 0, 37);
    m(o >>> 0, 39);
    buffer[buffer.length - 1] = 1;

    return toBase64(buffer);
}

function toBase64(buffer) {
    return Buffer.from(buffer).toString('base64');
}

function _btoa(input) {
    return Buffer.from(input, 'binary').toString('base64');
}