_atob = function(string) {
        // base64 character set, plus padding character (=)
        let b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
        // Regular expression to check formal correctness of base64 encoded strings
        let b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
        // remove data type signatures at the begining of the string
        // eg :  "data:audio/mid;base64,"
        string = string.replace( /^.*?base64,/ , '');
        // atob can work with strings with whitespaces, even inside the encoded part,
        // but only \t, \n, \f, \r and ' ', which can be stripped.
        string = String(string).replace(/[\t\n\f\r ]+/g, '');
        if (!b64re.test(string))
            throw new TypeError('Failed to execute _atob() : The string to be decoded is not correctly encoded.');

        // Adding the padding if missing, for semplicity
        string += '=='.slice(2 - (string.length & 3));
        let bitmap, result = '';
        let r1, r2, i = 0;
        for (; i < string.length;) {
            bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12
                    | (r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));

            result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255)
                    : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255)
                    : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
        }
        return result;
    }
CROSSBROWSER & NODEjs POLYFILL for ATOB() -
By: https://github.com/MaxArt2501 (modified)
@param  {string} string [description]
@return {[type]}        [description]