define(function(require,exports,module){const FileUtils=require("file/FileUtils"),LanguageManager=require("language/LanguageManager"),SNIFFABLE_EXTENSIONS=["html","htm","xhtml","shtml","php","xml"],SNIFF_BYTE_LIMIT=1024,META_CHARSET_RE=/]+charset\s*=\s*["']?\s*([a-zA-Z0-9_\-:.]+)/i,CHARSET_ALIASES={latin1:"windows1252",iso88591:"windows1252"};function _normalizeEncodingName(name){return name.toLowerCase().replace(/[^0-9a-z]/g,"")}const BOM_SIGNATURES=[{bytes:[239,187,191],encoding:"utf8"},{bytes:[255,254,0,0],encoding:"utf32le"},{bytes:[0,0,254,255],encoding:"utf32be"},{bytes:[255,254],encoding:"utf16le"},{bytes:[254,255],encoding:"utf16be"}];function _detectBOM(bytes){for(const sig of BOM_SIGNATURES)if(bytes.length>=sig.bytes.length&&sig.bytes.every(function(b,i){return bytes[i]===b}))return sig.encoding;return null}function _extractDeclaredCharset(bytes){const prefix=bytes.subarray(0,Math.min(bytes.length,SNIFF_BYTE_LIMIT));let asciiText="";for(let i=0;i