| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
exports = module.exports = function(bytes){    var i = 0;    while(i < bytes.length)    {        if(     (// ASCII                    bytes[i] == 0x09 ||                    bytes[i] == 0x0A ||                    bytes[i] == 0x0D ||                    (0x20 <= bytes[i] && bytes[i] <= 0x7E)                )          ) {              i += 1;              continue;          }        if(     (// non-overlong 2-byte                    (0xC2 <= bytes[i] && bytes[i] <= 0xDF) &&                    (0x80 <= bytes[i+1] && bytes[i+1] <= 0xBF)                )          ) {              i += 2;              continue;          }        if(     (// excluding overlongs                    bytes[i] == 0xE0 &&                    (0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&                    (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF)                ) ||                (// straight 3-byte                 ((0xE1 <= bytes[i] && bytes[i] <= 0xEC) ||                  bytes[i] == 0xEE ||                  bytes[i] == 0xEF) &&                 (0x80 <= bytes[i + 1] && bytes[i+1] <= 0xBF) &&                 (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF)                ) ||                (// excluding surrogates                 bytes[i] == 0xED &&                 (0x80 <= bytes[i+1] && bytes[i+1] <= 0x9F) &&                 (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF)                )          ) {              i += 3;              continue;          }        if(     (// planes 1-3                    bytes[i] == 0xF0 &&                    (0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&                    (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&                    (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)                ) ||                (// planes 4-15                 (0xF1 <= bytes[i] && bytes[i] <= 0xF3) &&                 (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&                 (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&                 (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)                ) ||                (// plane 16                 bytes[i] == 0xF4 &&                 (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) &&                 (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&                 (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)                )          ) {              i += 4;              continue;          }        return false;    }    return true;}
 |