{"version":3,"sources":["jsdelivr-header.js","/npm/png-chunks-extract@1.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,MAAQ,QAAQ,UAEpB,OAAO,QAAU,cAKjB,IAAI,MAAQ,IAAI,WAAW,GACvB,MAAQ,IAAI,WAAW,MAAM,QAC7B,OAAS,IAAI,YAAY,MAAM,QAEnC,SAAS,cAAe,GACtB,GAAgB,MAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,4BACtC,GAAgB,KAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,4BACtC,GAAgB,KAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,4BACtC,GAAgB,KAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,4BACtC,GAAgB,KAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,iFACtC,GAAgB,KAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,iFACtC,GAAgB,KAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,4BACtC,GAAgB,KAAZ,EAAK,GAAa,MAAM,IAAI,MAAM,iFAMtC,IAJA,IAAI,GAAQ,EACR,EAAS,GACT,EAAM,EAEH,EAAM,EAAK,QAAQ,CAGxB,MAAM,GAAK,EAAK,KAChB,MAAM,GAAK,EAAK,KAChB,MAAM,GAAK,EAAK,KAChB,MAAM,GAAK,EAAK,KAGhB,IAAI,EAAS,OAAO,GAAK,EACrB,EAAQ,IAAI,WAAW,GAC3B,EAAM,GAAK,EAAK,KAChB,EAAM,GAAK,EAAK,KAChB,EAAM,GAAK,EAAK,KAChB,EAAM,GAAK,EAAK,KAGhB,IAAI,EACF,OAAO,aAAa,EAAM,IAC1B,OAAO,aAAa,EAAM,IAC1B,OAAO,aAAa,EAAM,IAC1B,OAAO,aAAa,EAAM,IAI5B,IAAK,EAAO,QAAmB,SAAT,EACpB,MAAM,IAAI,MAAM,uBAKlB,GAAa,SAAT,EAAiB,CACnB,GAAQ,EACR,EAAO,KAAK,CACV,KAAM,EACN,KAAM,IAAI,WAAW,KAGvB,KACF,CAGA,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,IAC1B,EAAM,GAAK,EAAK,KAKlB,MAAM,GAAK,EAAK,KAChB,MAAM,GAAK,EAAK,KAChB,MAAM,GAAK,EAAK,KAChB,MAAM,GAAK,EAAK,KAEhB,IAAI,EAAY,MAAM,GAEtB,GADgB,MAAM,IAAI,KACR,EAChB,MAAM,IAAI,MACR,kBAAoB,EAAO,sDAM/B,IAAI,EAAY,IAAI,WAAW,EAAM,OAAO,MAAM,IAElD,EAAO,KAAK,CACV,KAAM,EACN,KAAM,GAEV,CAEA,IAAK,EACH,MAAM,IAAI,MAAM,yDAGlB,OAAO,CACT","file":"/npm/png-chunks-extract@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/png-chunks-extract@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var crc32 = require('crc-32')\n\nmodule.exports = extractChunks\n\n// Used for fast-ish conversion between uint8s and uint32s/int32s.\n// Also required in order to remain agnostic for both Node Buffers and\n// Uint8Arrays.\nvar uint8 = new Uint8Array(4)\nvar int32 = new Int32Array(uint8.buffer)\nvar uint32 = new Uint32Array(uint8.buffer)\n\nfunction extractChunks (data) {\n  if (data[0] !== 0x89) throw new Error('Invalid .png file header')\n  if (data[1] !== 0x50) throw new Error('Invalid .png file header')\n  if (data[2] !== 0x4E) throw new Error('Invalid .png file header')\n  if (data[3] !== 0x47) throw new Error('Invalid .png file header')\n  if (data[4] !== 0x0D) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')\n  if (data[5] !== 0x0A) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')\n  if (data[6] !== 0x1A) throw new Error('Invalid .png file header')\n  if (data[7] !== 0x0A) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')\n\n  var ended = false\n  var chunks = []\n  var idx = 8\n\n  while (idx < data.length) {\n    // Read the length of the current chunk,\n    // which is stored as a Uint32.\n    uint8[3] = data[idx++]\n    uint8[2] = data[idx++]\n    uint8[1] = data[idx++]\n    uint8[0] = data[idx++]\n\n    // Chunk includes name/type for CRC check (see below).\n    var length = uint32[0] + 4\n    var chunk = new Uint8Array(length)\n    chunk[0] = data[idx++]\n    chunk[1] = data[idx++]\n    chunk[2] = data[idx++]\n    chunk[3] = data[idx++]\n\n    // Get the name in ASCII for identification.\n    var name = (\n      String.fromCharCode(chunk[0]) +\n      String.fromCharCode(chunk[1]) +\n      String.fromCharCode(chunk[2]) +\n      String.fromCharCode(chunk[3])\n    )\n\n    // The IHDR header MUST come first.\n    if (!chunks.length && name !== 'IHDR') {\n      throw new Error('IHDR header missing')\n    }\n\n    // The IEND header marks the end of the file,\n    // so on discovering it break out of the loop.\n    if (name === 'IEND') {\n      ended = true\n      chunks.push({\n        name: name,\n        data: new Uint8Array(0)\n      })\n\n      break\n    }\n\n    // Read the contents of the chunk out of the main buffer.\n    for (var i = 4; i < length; i++) {\n      chunk[i] = data[idx++]\n    }\n\n    // Read out the CRC value for comparison.\n    // It's stored as an Int32.\n    uint8[3] = data[idx++]\n    uint8[2] = data[idx++]\n    uint8[1] = data[idx++]\n    uint8[0] = data[idx++]\n\n    var crcActual = int32[0]\n    var crcExpect = crc32.buf(chunk)\n    if (crcExpect !== crcActual) {\n      throw new Error(\n        'CRC values for ' + name + ' header do not match, PNG file is likely corrupted'\n      )\n    }\n\n    // The chunk data is now copied to remove the 4 preceding\n    // bytes used for the chunk name/type.\n    var chunkData = new Uint8Array(chunk.buffer.slice(4))\n\n    chunks.push({\n      name: name,\n      data: chunkData\n    })\n  }\n\n  if (!ended) {\n    throw new Error('.png file ended prematurely: no IEND header was found')\n  }\n\n  return chunks\n}\n"]}