{"version":3,"file":"mp4box.all.cjs","names":["MultiBufferStream","MP4BoxBuffer","parseOneBox","DataStream","Box","Box","FullBox","Box","FullBox","Box","Box","Box","Box","Box","FullBox","Box","FullBox","FullBox","FullBox","FullBox","FullBox","FullBox","FullBox","Box","Box","FullBox","Box","Box","Box","Box","Box","FullBox","MAX_UINT32","FullBox","Box","Box","Box","FullBox","Box","FullBox","FullBox","FullBox","FullBox","Box","Box","Box","Box","FullBox","FullBox","Box","Box","FullBox","Box","Box","Box","FullBox","FullBox","Box","FullBox","FullBox","FullBox","FullBox","parseHex16","FullBox","Box","FullBox","Box","parseOneBox","FullBox","FullBox","ContainerBox","Box","FullBox","FullBox","FullBox","FullBox","Box","FullBox","FullBox","FullBox","FullBox","FullBox","FullBox","FullBox","FullBox","FullBox","parseOneBox","FullBox","FullBox","FullBox","FullBox","parseHex16","FullBox","Box","Box","Box","Box","Box","TrackGroupTypeBox","Box","parseOneBox","TrackReferenceTypeBox","FullBox","parseOneBox","Box","FullBox","FullBox","Box","FullBox","FullBox","FullBox","Box","FullBox","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","parseHex16","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","SampleGroupEntry","Box","FullBox","parseHex16","registerBoxes","BOXES","registerDescriptors","DESCRIPTORS"],"sources":["../src/descriptor.ts","../src/text-mp4.ts","../src/boxes/a1lx.ts","../src/boxes/a1op.ts","../src/boxes/auxC.ts","../src/boxes/btrt.ts","../src/boxes/ccst.ts","../src/boxes/cdef.ts","../src/boxes/clap.ts","../src/boxes/clli.ts","../src/boxes/cmex.ts","../src/boxes/cmin.ts","../src/boxes/cmpC.ts","../src/boxes/cmpd.ts","../src/boxes/co64.ts","../src/boxes/CoLL.ts","../src/boxes/covi.ts","../src/boxes/cprt.ts","../src/boxes/csch.ts","../src/boxes/cslg.ts","../src/boxes/ctts.ts","../src/boxes/dac3.ts","../src/boxes/dec3.ts","../src/boxes/dfLa.ts","../src/boxes/dimm.ts","../src/boxes/dmax.ts","../src/boxes/dmed.ts","../src/boxes/dOps.ts","../src/boxes/drep.ts","../src/boxes/elst.ts","../src/boxes/EntityToGroup/base.ts","../src/boxes/EntityToGroup/index.ts","../src/boxes/fiel.ts","../src/boxes/frma.ts","../src/boxes/imir.ts","../src/boxes/ipma.ts","../src/boxes/irot.ts","../src/boxes/ispe.ts","../src/boxes/itai.ts","../src/boxes/kind.ts","../src/boxes/leva.ts","../src/boxes/lhvC.ts","../src/boxes/lsel.ts","../src/boxes/maxr.ts","../src/boxes/displays/colorPoint.ts","../src/boxes/mdcv.ts","../src/boxes/mfro.ts","../src/boxes/mskC.ts","../src/boxes/npck.ts","../src/boxes/nump.ts","../src/boxes/padb.ts","../src/boxes/pasp.ts","../src/boxes/payl.ts","../src/boxes/payt.ts","../src/boxes/pdin.ts","../src/boxes/pixi.ts","../src/boxes/pmax.ts","../src/boxes/prdi.ts","../src/boxes/prfr.ts","../src/boxes/prft.ts","../src/boxes/pssh.ts","../src/boxes/qt/clef.ts","../src/boxes/qt/data.ts","../src/boxes/qt/enof.ts","../src/boxes/qt/ilst.ts","../src/boxes/qt/keys.ts","../src/boxes/qt/prof.ts","../src/boxes/qt/tapt.ts","../src/boxes/rtp.ts","../src/boxes/saio.ts","../src/boxes/saiz.ts","../src/boxes/displays/pixel.ts","../src/boxes/sbpm.ts","../src/boxes/schm.ts","../src/boxes/sdp.ts","../src/boxes/senc.ts","../src/boxes/SmDm.ts","../src/boxes/srat.ts","../src/boxes/stdp.ts","../src/boxes/stri.ts","../src/boxes/stsg.ts","../src/boxes/stsh.ts","../src/boxes/stss.ts","../src/boxes/stvi.ts","../src/boxes/stz2.ts","../src/boxes/subs.ts","../src/boxes/taic.ts","../src/boxes/tenc.ts","../src/boxes/tfra.ts","../src/boxes/tmax.ts","../src/boxes/tmin.ts","../src/boxes/totl.ts","../src/boxes/tpay.ts","../src/boxes/tpyl.ts","../src/boxes/trackgroups/msrc.ts","../src/boxes/tref.ts","../src/boxes/trep.ts","../src/boxes/trpy.ts","../src/boxes/tsel.ts","../src/boxes/txtC.ts","../src/boxes/tyco.ts","../src/boxes/udes.ts","../src/boxes/uncC.ts","../src/boxes/urn.ts","../src/boxes/vttC.ts","../src/boxes/vvnC.ts","../src/boxes/samplegroups/alst.ts","../src/boxes/samplegroups/avll.ts","../src/boxes/samplegroups/avss.ts","../src/boxes/samplegroups/dtrt.ts","../src/boxes/samplegroups/mvif.ts","../src/boxes/samplegroups/prol.ts","../src/boxes/samplegroups/rap.ts","../src/boxes/samplegroups/rash.ts","../src/boxes/samplegroups/roll.ts","../src/boxes/samplegroups/scif.ts","../src/boxes/samplegroups/scnm.ts","../src/boxes/samplegroups/seig.ts","../src/boxes/samplegroups/stsa.ts","../src/boxes/samplegroups/sync.ts","../src/boxes/samplegroups/tele.ts","../src/boxes/samplegroups/tsas.ts","../src/boxes/samplegroups/tscl.ts","../src/boxes/samplegroups/vipr.ts","../src/boxes/uuid/index.ts","../entries/all-boxes.ts","../entries/all.ts"],"sourcesContent":["/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\n\nimport { MultiBufferStream } from '#/buffer';\nimport { DataStream } from '#/DataStream';\nimport { Log } from '#/log';\n\nconst ES_DescrTag = 0x03;\nconst DecoderConfigDescrTag = 0x04;\nconst DecSpecificInfoTag = 0x05;\nconst SLConfigDescrTag = 0x06;\n\nexport class Descriptor {\n  descs = [];\n  data: Uint8Array;\n\n  constructor(\n    public tag: number,\n    public size: number,\n  ) {}\n\n  parse(stream: DataStream) {\n    this.data = stream.readUint8Array(this.size);\n  }\n\n  findDescriptor(tag: number) {\n    for (let i = 0; i < this.descs.length; i++) {\n      if (this.descs[i].tag === tag) {\n        return this.descs[i];\n      }\n    }\n  }\n\n  parseOneDescriptor(stream: DataStream): DescriptorKinds {\n    let size = 0;\n    const tag = stream.readUint8();\n    let byteRead = stream.readUint8();\n    while (byteRead & 0x80) {\n      size = (size << 7) + (byteRead & 0x7f);\n      byteRead = stream.readUint8();\n    }\n    size = (size << 7) + (byteRead & 0x7f);\n    Log.debug(\n      'Descriptor',\n      'Found ' +\n        (descTagToName[tag] || 'Descriptor ' + tag) +\n        ', size ' +\n        size +\n        ' at position ' +\n        stream.getPosition(),\n    );\n    const desc = descTagToName[tag]\n      ? new DESCRIPTOR_CLASSES[descTagToName[tag]](size)\n      : // @ts-expect-error FIXME: Descriptor expects a tag as first parameter\n        new Descriptor(size);\n\n    desc.parse(stream);\n    return desc;\n  }\n\n  parseRemainingDescriptors(stream: DataStream) {\n    const start = stream.getPosition();\n    while (stream.getPosition() < start + this.size) {\n      const desc = this.parseOneDescriptor?.(stream);\n      this.descs.push(desc);\n    }\n  }\n}\n\nexport class ES_Descriptor extends Descriptor {\n  dependsOn_ES_ID: number;\n  ES_ID: number;\n  flags: number;\n  OCR_ES_ID: number;\n  URL: string;\n\n  constructor(size?: number) {\n    super(ES_DescrTag, size);\n  }\n\n  parse(stream: MultiBufferStream) {\n    this.ES_ID = stream.readUint16();\n    this.flags = stream.readUint8();\n    this.size -= 3;\n    if (this.flags & 0x80) {\n      this.dependsOn_ES_ID = stream.readUint16();\n      this.size -= 2;\n    } else {\n      this.dependsOn_ES_ID = 0;\n    }\n    if (this.flags & 0x40) {\n      const l = stream.readUint8();\n      this.URL = stream.readString(l);\n      this.size -= l + 1;\n    } else {\n      this.URL = '';\n    }\n    if (this.flags & 0x20) {\n      this.OCR_ES_ID = stream.readUint16();\n      this.size -= 2;\n    } else {\n      this.OCR_ES_ID = 0;\n    }\n    this.parseRemainingDescriptors(stream);\n  }\n\n  getOTI() {\n    const dcd = this.findDescriptor(DecoderConfigDescrTag);\n    if (dcd) {\n      return dcd.oti;\n    } else {\n      return 0;\n    }\n  }\n\n  getAudioConfig() {\n    const dcd = this.findDescriptor(DecoderConfigDescrTag);\n    if (!dcd) return;\n    const dsi = dcd.findDescriptor(DecSpecificInfoTag);\n    if (dsi && dsi.data) {\n      let audioObjectType = (dsi.data[0] & 0xf8) >> 3;\n      if (audioObjectType === 31 && dsi.data.length >= 2) {\n        audioObjectType = 32 + ((dsi.data[0] & 0x7) << 3) + ((dsi.data[1] & 0xe0) >> 5);\n      }\n      return audioObjectType;\n    }\n  }\n}\n\nclass DecoderConfigDescriptor extends Descriptor {\n  avgBitrate: number;\n  bufferSize: number;\n  maxBitrate: number;\n  oti: number;\n  streamType: number;\n  upStream: boolean;\n\n  constructor(size: number) {\n    super(DecoderConfigDescrTag, size);\n  }\n  parse(stream: MultiBufferStream) {\n    this.oti = stream.readUint8();\n    this.streamType = stream.readUint8();\n    this.upStream = ((this.streamType >> 1) & 1) !== 0;\n    this.streamType = this.streamType >>> 2;\n    this.bufferSize = stream.readUint24();\n    this.maxBitrate = stream.readUint32();\n    this.avgBitrate = stream.readUint32();\n    this.size -= 13;\n    this.parseRemainingDescriptors(stream);\n  }\n}\n\nclass DecoderSpecificInfo extends Descriptor {\n  constructor(size: number) {\n    super(DecSpecificInfoTag, size);\n  }\n}\n\nclass SLConfigDescriptor extends Descriptor {\n  constructor(size: number) {\n    super(SLConfigDescrTag, size);\n  }\n}\n\nconst DESCRIPTOR_CLASSES = {\n  Descriptor,\n  ES_Descriptor,\n  DecoderConfigDescriptor,\n  DecoderSpecificInfo,\n  SLConfigDescriptor,\n};\ntype DescriptorKinds =\n  | Descriptor\n  | ES_Descriptor\n  | DecoderConfigDescriptor\n  | DecoderSpecificInfo\n  | SLConfigDescriptor;\n\nconst descTagToName = {\n  [ES_DescrTag]: 'ES_Descriptor',\n  [DecoderConfigDescrTag]: 'DecoderConfigDescriptor',\n  [DecSpecificInfoTag]: 'DecoderSpecificInfo',\n  [SLConfigDescrTag]: 'SLConfigDescriptor',\n};\n\nexport class MPEG4DescriptorParser {\n  getDescriptorName(tag: number) {\n    return descTagToName[tag];\n  }\n\n  parseOneDescriptor = Descriptor.prototype.parseOneDescriptor;\n}\n","import { Box } from '#/box';\nimport { OK } from '#/constants';\nimport type { Sample, TypedArray } from '@types';\nimport { parseOneBox } from '#/parser';\nimport { DataStream } from '#/DataStream';\nimport { MultiBufferStream } from '#/buffer';\nimport { MP4BoxBuffer } from '#/mp4boxbuffer';\n\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nexport class VTTin4Parser {\n  parseSample(data: TypedArray) {\n    const cues: Array<Box> = [];\n    const stream = new MultiBufferStream(MP4BoxBuffer.fromArrayBuffer(data.buffer, 0));\n\n    while (!stream.isEof()) {\n      const cue = parseOneBox(stream, false);\n      if (cue.code === OK && cue.box?.type === 'vttc') {\n        cues.push(cue.box);\n      }\n    }\n    return cues;\n  }\n\n  getText(startTime: number, endTime: number, data: TypedArray) {\n    function pad(value: number, width: number) {\n      const string = value.toString();\n      if (string.length >= width) {\n        return string;\n      }\n      return new Array(width - string.length + 1).join('0') + string;\n    }\n    function secToTimestamp(insec: number) {\n      const h = Math.floor(insec / 3600);\n      const m = Math.floor((insec - h * 3600) / 60);\n      const s = Math.floor(insec - h * 3600 - m * 60);\n      const ms = Math.floor((insec - h * 3600 - m * 60 - s) * 1000);\n      return '' + pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + '.' + pad(ms, 3);\n    }\n    const cues = this.parseSample(data);\n    let string = '';\n    for (let i = 0; i < cues.length; i++) {\n      const cueIn4 = cues[i];\n      string += secToTimestamp(startTime) + ' --> ' + secToTimestamp(endTime) + '\\r\\n';\n      // @ts-expect-error FIXME: which box should get a payl-property?\n      string += cueIn4.payl.text;\n    }\n    return string;\n  }\n}\n\nexport class XMLSubtitlein4Parser {\n  parseSample(sample: Sample) {\n    const res = {\n      resources: [] as Array<Uint8Array>,\n      documentString: '',\n      document: undefined as undefined | Document,\n    };\n    const stream = new DataStream(sample.data.buffer);\n    if (!sample.subsamples || sample.subsamples.length === 0) {\n      res.documentString = stream.readString(sample.data.length);\n    } else {\n      res.documentString = stream.readString(sample.subsamples[0].size);\n      if (sample.subsamples.length > 1) {\n        for (let i = 1; i < sample.subsamples.length; i++) {\n          res.resources[i] = stream.readUint8Array(sample.subsamples[i].size);\n        }\n      }\n    }\n    if (typeof DOMParser !== 'undefined') {\n      res.document = new DOMParser().parseFromString(res.documentString, 'application/xml');\n    }\n    return res;\n  }\n}\n\nexport class Textin4Parser {\n  parseSample(sample: Sample) {\n    const stream = new DataStream(sample.data.buffer);\n    const textString = stream.readString(sample.data.length);\n    return textString;\n  }\n\n  parseConfig(data: TypedArray) {\n    const stream = new DataStream(data.buffer);\n    stream.readUint32(); // version & flags\n    const textString = stream.readCString();\n    return textString;\n  }\n}\n\nexport class TX3GParser {\n  parseSample(sample: Sample) {\n    const stream = new DataStream(sample.data.buffer);\n    const size = stream.readUint16();\n    if (size === 0) {\n      // If size is 0, it indicates an empty text sample\n      return;\n    }\n\n    return stream.readString(size);\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class a1lxBox extends Box {\n  static override readonly fourcc = 'a1lx' as const;\n  box_name = 'AV1LayeredImageIndexingProperty' as const;\n\n  layer_size: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    const large_size = stream.readUint8() & 1;\n    const FieldLength = ((large_size & 1) + 1) * 16;\n    this.layer_size = [];\n    for (let i = 0; i < 3; i++) {\n      if (FieldLength === 16) {\n        this.layer_size[i] = stream.readUint16();\n      } else {\n        this.layer_size[i] = stream.readUint32();\n      }\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class a1opBox extends Box {\n  static override readonly fourcc = 'a1op' as const;\n  box_name = 'OperatingPointSelectorProperty' as const;\n\n  op_index: number;\n\n  parse(stream: MultiBufferStream) {\n    this.op_index = stream.readUint8();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class auxCBox extends FullBox {\n  static override readonly fourcc = 'auxC' as const;\n  box_name = 'AuxiliaryTypeProperty' as const;\n\n  aux_type: string;\n  aux_subtype: Uint8Array;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.aux_type = stream.readCString();\n    const aux_subtype_length = this.size - this.hdr_size - (this.aux_type.length + 1);\n    this.aux_subtype = stream.readUint8Array(aux_subtype_length);\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class btrtBox extends Box {\n  static override readonly fourcc = 'btrt' as const;\n  box_name = 'BitRateBox' as const;\n\n  bufferSizeDB: number;\n  maxBitrate: number;\n  avgBitrate: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bufferSizeDB = stream.readUint32();\n    this.maxBitrate = stream.readUint32();\n    this.avgBitrate = stream.readUint32();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class ccstBox extends FullBox {\n  static override readonly fourcc = 'ccst' as const;\n  box_name = 'CodingConstraintsBox' as const;\n\n  all_ref_pics_intra: boolean;\n  intra_pred_used: boolean;\n  max_ref_per_pic: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const flags = stream.readUint8();\n    this.all_ref_pics_intra = (flags & 0x80) === 0x80;\n    this.intra_pred_used = (flags & 0x40) === 0x40;\n    this.max_ref_per_pic = (flags & 0x3f) >> 2;\n    stream.readUint24();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class cdefBox extends Box {\n  static override readonly fourcc = 'cdef' as const;\n  box_name = 'ComponentDefinitionBox' as const;\n\n  channel_count: number;\n  channel_indexes: Array<number>;\n  channel_types: Array<number>;\n  channel_associations: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.channel_count = stream.readUint16();\n    this.channel_indexes = [];\n    this.channel_types = [];\n    this.channel_associations = [];\n    for (let i = 0; i < this.channel_count; i++) {\n      this.channel_indexes.push(stream.readUint16());\n      this.channel_types.push(stream.readUint16());\n      this.channel_associations.push(stream.readUint16());\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class clapBox extends Box {\n  static override readonly fourcc = 'clap' as const;\n  box_name = 'CleanApertureBox' as const;\n\n  cleanApertureWidthN: number;\n  cleanApertureWidthD: number;\n  cleanApertureHeightN: number;\n  cleanApertureHeightD: number;\n  horizOffN: number;\n  horizOffD: number;\n  vertOffN: number;\n  vertOffD: number;\n\n  parse(stream: MultiBufferStream) {\n    this.cleanApertureWidthN = stream.readUint32();\n    this.cleanApertureWidthD = stream.readUint32();\n    this.cleanApertureHeightN = stream.readUint32();\n    this.cleanApertureHeightD = stream.readUint32();\n    this.horizOffN = stream.readUint32();\n    this.horizOffD = stream.readUint32();\n    this.vertOffN = stream.readUint32();\n    this.vertOffD = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class clliBox extends Box {\n  static override readonly fourcc = 'clli' as const;\n  box_name = 'ContentLightLevelBox' as const;\n\n  max_content_light_level: number;\n  max_pic_average_light_level: number;\n\n  parse(stream: MultiBufferStream) {\n    this.max_content_light_level = stream.readUint16();\n    this.max_pic_average_light_level = stream.readUint16();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class cmexBox extends Box {\n  static override readonly fourcc = 'cmex' as const;\n  box_name = 'CameraExtrinsicMatrixProperty' as const;\n\n  flags: number;\n  pos_x: number;\n  pos_y: number;\n  pos_z: number;\n  version: number;\n  quat_x: number;\n  quat_y: number;\n  quat_z: number;\n  id: number;\n\n  parse(stream: MultiBufferStream) {\n    if (this.flags & 0x1) {\n      this.pos_x = stream.readInt32();\n    }\n    if (this.flags & 0x2) {\n      this.pos_y = stream.readInt32();\n    }\n    if (this.flags & 0x4) {\n      this.pos_z = stream.readInt32();\n    }\n    if (this.flags & 0x8) {\n      if (this.version === 0) {\n        if (this.flags & 0x10) {\n          this.quat_x = stream.readInt32();\n          this.quat_y = stream.readInt32();\n          this.quat_z = stream.readInt32();\n        } else {\n          this.quat_x = stream.readInt16();\n          this.quat_y = stream.readInt16();\n          this.quat_z = stream.readInt16();\n        }\n      } else if (this.version === 1) {\n        //ViewpointGlobalCoordinateSysRotationStruct rot;\n      }\n    }\n    if (this.flags & 0x20) {\n      this.id = stream.readUint32();\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class cminBox extends Box {\n  static override readonly fourcc = 'cmin' as const;\n  box_name = 'CameraIntrinsicMatrixProperty' as const;\n\n  focal_length_x: number;\n  principal_point_x: number;\n  principal_point_y: number;\n  flags: number;\n  focal_length_y: number;\n  skew_factor: number;\n\n  parse(stream: MultiBufferStream) {\n    this.focal_length_x = stream.readInt32();\n    this.principal_point_x = stream.readInt32();\n    this.principal_point_y = stream.readInt32();\n    if (this.flags & 0x1) {\n      this.focal_length_y = stream.readInt32();\n      this.skew_factor = stream.readInt32();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class cmpCBox extends FullBox {\n  static override readonly fourcc = 'cmpC' as const;\n  box_name = 'CompressionConfigurationBox' as const;\n\n  compression_type: string;\n  compressed_unit_type: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.compression_type = stream.readString(4);\n    this.compressed_unit_type = stream.readUint8();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class cmpdBox extends Box {\n  static override readonly fourcc = 'cmpd' as const;\n  box_name = 'ComponentDefinitionBox' as const;\n\n  component_count: number;\n  component_types: Array<number>;\n  component_type_urls: Array<string>;\n\n  parse(stream: MultiBufferStream) {\n    this.component_count = stream.readUint32();\n    this.component_types = [];\n    this.component_type_urls = [];\n    for (let i = 0; i < this.component_count; i++) {\n      const component_type = stream.readUint16();\n      this.component_types.push(component_type);\n      if (component_type >= 0x8000) {\n        this.component_type_urls.push(stream.readCString());\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class co64Box extends FullBox {\n  static override readonly fourcc = 'co64' as const;\n  box_name = 'ChunkLargeOffsetBox' as const;\n\n  chunk_offsets: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const entry_count = stream.readUint32();\n    this.chunk_offsets = [];\n    if (this.version === 0) {\n      for (let i = 0; i < entry_count; i++) {\n        this.chunk_offsets.push(stream.readUint64());\n      }\n    }\n  }\n\n  /** @bundle writing/co64.js */\n  write(stream: MultiBufferStream) {\n    this.version = 0;\n    this.flags = 0;\n    this.size = 4 + 8 * this.chunk_offsets.length;\n    this.writeHeader(stream);\n    stream.writeUint32(this.chunk_offsets.length);\n    for (let i = 0; i < this.chunk_offsets.length; i++) {\n      stream.writeUint64(this.chunk_offsets[i]);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class CoLLBox extends FullBox {\n  static override readonly fourcc = 'CoLL' as const;\n  box_name = 'ContentLightLevelBox' as const;\n\n  maxCLL: number;\n  maxFALL: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.maxCLL = stream.readUint16();\n    this.maxFALL = stream.readUint16();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nclass SphereRegion {\n  centre_azimuth: number;\n  centre_elevation: number;\n  centre_tilt: number;\n  range_included_flag: boolean;\n  azimuth_range: number;\n  elevation_range: number;\n  interpolate_included_flag: boolean;\n  interpolate: boolean;\n\n  toString() {\n    let s = 'centre_azimuth: ';\n    s += this.centre_azimuth;\n    s += ' (';\n    s += this.centre_azimuth * 2 ** -16;\n    s += '°), centre_elevation: ';\n    s += this.centre_elevation;\n    s += ' (';\n    s += this.centre_elevation * 2 ** -16;\n    s += '°), centre_tilt: ';\n    s += this.centre_tilt;\n    s += ' (';\n    s += this.centre_tilt * 2 ** -16;\n    s += '°)';\n    if (this.range_included_flag) {\n      s += ', azimuth_range: ';\n      s += this.azimuth_range;\n      s += ' (';\n      s += this.azimuth_range * 2 ** -16;\n      s += '°), elevation_range: ';\n      s += this.elevation_range;\n      s += ' (';\n      s += this.elevation_range * 2 ** -16;\n      s += '°)';\n    }\n    if (this.interpolate_included_flag) {\n      s += ', interpolate: ';\n      s += this.interpolate;\n    }\n    return s;\n  }\n}\n\nclass CoverageSphereRegion {\n  view_idc: number;\n  sphere_region: SphereRegion;\n\n  toString() {\n    let s = '';\n    if (this.view_idc) {\n      s += 'view_idc: ';\n      s += this.view_idc;\n      s += ', ';\n    }\n    s += 'sphere_region: {';\n    s += this.sphere_region;\n    s += '}';\n    return s;\n  }\n}\n\nexport class coviBox extends FullBox {\n  static override readonly fourcc = 'covi' as const;\n  box_name = 'CoverageInformationBox' as const;\n\n  coverage_shape_type: number;\n  default_view_idc: number;\n  coverage_regions: Array<CoverageSphereRegion>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.coverage_shape_type = stream.readUint8();\n    const num_regions = stream.readUint8();\n    const f = stream.readInt8();\n    const view_idc_presence_flag = f & 0x80;\n    if (view_idc_presence_flag) {\n      this.default_view_idc = (f & 0b01100000) >> 5;\n    }\n    this.coverage_regions = new Array<CoverageSphereRegion>();\n    for (let i = 0; i < num_regions; i++) {\n      const region = new CoverageSphereRegion();\n      if (view_idc_presence_flag) {\n        region.view_idc = stream.readUint8() >> 6;\n      }\n      region.sphere_region = this.parseSphereRegion(stream, true, true);\n      this.coverage_regions.push(region);\n    }\n  }\n\n  parseSphereRegion(\n    stream: MultiBufferStream,\n    range_included_flag: boolean,\n    interpolate_included_flag: boolean,\n  ) {\n    const sphere_region = new SphereRegion();\n    sphere_region.centre_azimuth = stream.readInt32();\n    sphere_region.centre_elevation = stream.readInt32();\n    sphere_region.centre_tilt = stream.readInt32();\n    sphere_region.range_included_flag = range_included_flag;\n    if (range_included_flag) {\n      sphere_region.azimuth_range = stream.readUint32();\n      sphere_region.elevation_range = stream.readUint32();\n    }\n    sphere_region.interpolate_included_flag = interpolate_included_flag;\n    if (interpolate_included_flag) {\n      sphere_region.interpolate = (stream.readUint8() & 0x80) === 0x80;\n    }\n    return sphere_region;\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class cprtBox extends FullBox {\n  static override readonly fourcc = 'cprt' as const;\n  box_name = 'CopyrightBox' as const;\n\n  notice: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.parseLanguage(stream);\n    this.notice = stream.readCString();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class cschBox extends FullBox {\n  static override readonly fourcc = 'csch' as const;\n  box_name = 'CompatibleSchemeTypeBox' as const;\n\n  scheme_type: string;\n  scheme_version: number;\n  scheme_uri: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.scheme_type = stream.readString(4);\n    this.scheme_version = stream.readUint32();\n    if (this.flags & 0x000001) {\n      this.scheme_uri = stream.readCString();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nconst INT32_MAX = 2_147_483_647;\n\nexport class cslgBox extends FullBox {\n  static override readonly fourcc = 'cslg' as const;\n  box_name = 'CompositionToDecodeBox' as const;\n\n  compositionToDTSShift: number;\n  leastDecodeToDisplayDelta: number;\n  greatestDecodeToDisplayDelta: number;\n  compositionStartTime: number;\n  compositionEndTime: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    if (this.version === 0) {\n      this.compositionToDTSShift = stream.readInt32(); /* signed */\n      this.leastDecodeToDisplayDelta = stream.readInt32(); /* signed */\n      this.greatestDecodeToDisplayDelta = stream.readInt32(); /* signed */\n      this.compositionStartTime = stream.readInt32(); /* signed */\n      this.compositionEndTime = stream.readInt32(); /* signed */\n    } else if (this.version === 1) {\n      this.compositionToDTSShift = stream.readInt64(); /* signed */\n      this.leastDecodeToDisplayDelta = stream.readInt64(); /* signed */\n      this.greatestDecodeToDisplayDelta = stream.readInt64(); /* signed */\n      this.compositionStartTime = stream.readInt64(); /* signed */\n      this.compositionEndTime = stream.readInt64(); /* signed */\n    }\n  }\n\n  /** @bundle writing/cslg.js */\n  write(stream: MultiBufferStream) {\n    this.version = 0;\n    if (\n      this.compositionToDTSShift > INT32_MAX ||\n      this.leastDecodeToDisplayDelta > INT32_MAX ||\n      this.greatestDecodeToDisplayDelta > INT32_MAX ||\n      this.compositionStartTime > INT32_MAX ||\n      this.compositionEndTime > INT32_MAX\n    ) {\n      this.version = 1;\n    }\n    this.flags = 0;\n    if (this.version === 0) {\n      this.size = 4 * 5;\n      this.writeHeader(stream);\n      stream.writeInt32(this.compositionToDTSShift);\n      stream.writeInt32(this.leastDecodeToDisplayDelta);\n      stream.writeInt32(this.greatestDecodeToDisplayDelta);\n      stream.writeInt32(this.compositionStartTime);\n      stream.writeInt32(this.compositionEndTime);\n    } else if (this.version === 1) {\n      this.size = 8 * 5;\n      this.writeHeader(stream);\n      stream.writeInt64(this.compositionToDTSShift);\n      stream.writeInt64(this.leastDecodeToDisplayDelta);\n      stream.writeInt64(this.greatestDecodeToDisplayDelta);\n      stream.writeInt64(this.compositionStartTime);\n      stream.writeInt64(this.compositionEndTime);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\nimport type { Sample } from '@types';\n\nexport class cttsBox extends FullBox {\n  static override readonly fourcc = 'ctts' as const;\n  box_name = 'CompositionOffsetBox' as const;\n\n  sample_counts: Array<number>;\n  sample_offsets: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const entry_count = stream.readUint32();\n    this.sample_counts = [];\n    this.sample_offsets = [];\n    if (this.version === 0) {\n      for (let i = 0; i < entry_count; i++) {\n        this.sample_counts.push(stream.readUint32());\n        /* some files are buggy and declare version=0 while using signed offsets.\n           The likelyhood of using the most significant bit in a 32-bits time offset is very low,\n           so using signed value here as well */\n        const value = stream.readInt32();\n        if (value < 0) {\n          Log.warn('BoxParser', 'ctts box uses negative values without using version 1');\n        }\n        this.sample_offsets.push(value);\n      }\n    } else if (this.version === 1) {\n      for (let i = 0; i < entry_count; i++) {\n        this.sample_counts.push(stream.readUint32());\n        this.sample_offsets.push(stream.readInt32()); /* signed */\n      }\n    }\n  }\n\n  /** @bundle writing/ctts.js */\n  write(stream: MultiBufferStream) {\n    this.version = this.sample_offsets.some(offset => offset < 0) ? 1 : 0;\n    this.flags = 0;\n    this.size = 4 + 8 * this.sample_counts.length;\n    this.writeHeader(stream);\n    stream.writeUint32(this.sample_counts.length);\n    for (let i = 0; i < this.sample_counts.length; i++) {\n      stream.writeUint32(this.sample_counts[i]);\n      if (this.version === 1) {\n        stream.writeInt32(this.sample_offsets[i]); /* signed */\n      } else {\n        stream.writeUint32(this.sample_offsets[i]); /* unsigned */\n      }\n    }\n  }\n\n  /** @bundle box-unpack.js */\n  unpack(samples: Array<Sample>) {\n    let k = 0;\n    for (let i = 0; i < this.sample_counts.length; i++) {\n      for (let j = 0; j < this.sample_counts[i]; j++) {\n        samples[k].pts = samples[k].dts + this.sample_offsets[i];\n        k++;\n      }\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class dac3Box extends Box {\n  static override readonly fourcc = 'dac3' as const;\n  box_name = 'AC3SpecificBox' as const;\n\n  fscod: number;\n  bsid: number;\n  bsmod: number;\n  acmod: number;\n  lfeon: number;\n  bit_rate_code: number;\n\n  parse(stream: MultiBufferStream) {\n    const tmp_byte1 = stream.readUint8();\n    const tmp_byte2 = stream.readUint8();\n    const tmp_byte3 = stream.readUint8();\n    this.fscod = tmp_byte1 >> 6;\n    this.bsid = (tmp_byte1 >> 1) & 0x1f;\n    this.bsmod = ((tmp_byte1 & 0x1) << 2) | ((tmp_byte2 >> 6) & 0x3);\n    this.acmod = (tmp_byte2 >> 3) & 0x7;\n    this.lfeon = (tmp_byte2 >> 2) & 0x1;\n    this.bit_rate_code = (tmp_byte2 & 0x3) | ((tmp_byte3 >> 5) & 0x7);\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\ninterface IndSub {\n  fscod: number;\n  bsid: number;\n  bsmod: number;\n  acmod: number;\n  lfeon: number;\n  num_dep_sub: number;\n  chan_loc?: number;\n}\n\nexport class dec3Box extends Box {\n  static override readonly fourcc = 'dec3' as const;\n  box_name = 'EC3SpecificBox' as const;\n\n  data_rate: number;\n  num_ind_sub: number;\n  ind_subs: Array<IndSub>;\n\n  parse(stream: MultiBufferStream) {\n    const tmp_16 = stream.readUint16();\n    this.data_rate = tmp_16 >> 3;\n    this.num_ind_sub = tmp_16 & 0x7;\n    this.ind_subs = [];\n    for (let i = 0; i < this.num_ind_sub + 1; i++) {\n      const tmp_byte1 = stream.readUint8();\n      const tmp_byte2 = stream.readUint8();\n      const tmp_byte3 = stream.readUint8();\n      const ind_sub: IndSub = {\n        fscod: tmp_byte1 >> 6,\n        bsid: (tmp_byte1 >> 1) & 0x1f,\n        bsmod: ((tmp_byte1 & 0x1) << 4) | ((tmp_byte2 >> 4) & 0xf),\n        acmod: (tmp_byte2 >> 1) & 0x7,\n        lfeon: tmp_byte2 & 0x1,\n        num_dep_sub: (tmp_byte3 >> 1) & 0xf,\n      };\n      this.ind_subs.push(ind_sub);\n      if (ind_sub.num_dep_sub > 0) {\n        ind_sub.chan_loc = ((tmp_byte3 & 0x1) << 8) | stream.readUint8();\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class dfLaBox extends FullBox {\n  static override readonly fourcc = 'dfLa' as const;\n  box_name = 'FLACSpecificBox' as const;\n\n  samplerate: number;\n  numMetadataBlocks: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const BLOCKTYPE_MASK = 0x7f;\n    const LASTMETADATABLOCKFLAG_MASK = 0x80;\n\n    const boxesFound = [];\n    const knownBlockTypes = [\n      'STREAMINFO',\n      'PADDING',\n      'APPLICATION',\n      'SEEKTABLE',\n      'VORBIS_COMMENT',\n      'CUESHEET',\n      'PICTURE',\n      'RESERVED',\n    ];\n\n    let flagAndType: number;\n    do {\n      flagAndType = stream.readUint8();\n      const type = Math.min(flagAndType & BLOCKTYPE_MASK, knownBlockTypes.length - 1);\n\n      // if this is a STREAMINFO block, read the true samplerate since this\n      // can be different to the AudioSampleEntry samplerate.\n      if (!type) {\n        // read past all the other stuff\n        stream.readUint8Array(13);\n\n        // extract samplerate\n        this.samplerate = stream.readUint32() >> 12;\n\n        // read to end of STREAMINFO\n        stream.readUint8Array(20);\n      } else {\n        // not interested in other block types so just discard length bytes\n        stream.readUint8Array(stream.readUint24());\n      }\n\n      boxesFound.push(knownBlockTypes[type]);\n    } while (flagAndType & LASTMETADATABLOCKFLAG_MASK);\n\n    this.numMetadataBlocks = boxesFound.length + ' (' + boxesFound.join(', ') + ')';\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class dimmBox extends Box {\n  static override readonly fourcc = 'dimm' as const;\n  box_name = 'hintimmediateBytesSent' as const;\n\n  bytessent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytessent = stream.readUint64();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class dmax extends Box {\n  static override readonly fourcc = 'dmax' as const;\n  box_name = 'hintlongestpacket' as const;\n\n  time: number;\n\n  parse(stream: MultiBufferStream) {\n    this.time = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class dmedBox extends Box {\n  static override readonly fourcc = 'dmed' as const;\n  box_name = 'hintmediaBytesSent' as const;\n\n  bytessent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytessent = stream.readUint64();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class dOpsBox extends Box {\n  static override readonly fourcc = 'dOps' as const;\n  box_name = 'OpusSpecificBox' as const;\n\n  Version: number;\n  OutputChannelCount: number;\n  PreSkip: number;\n  InputSampleRate: number;\n  OutputGain: number;\n  ChannelMappingFamily: number;\n  StreamCount: number;\n  CoupledCount: number;\n  ChannelMapping: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.Version = stream.readUint8();\n    this.OutputChannelCount = stream.readUint8();\n    this.PreSkip = stream.readUint16();\n    this.InputSampleRate = stream.readUint32();\n    this.OutputGain = stream.readInt16();\n    this.ChannelMappingFamily = stream.readUint8();\n    if (this.ChannelMappingFamily !== 0) {\n      this.StreamCount = stream.readUint8();\n      this.CoupledCount = stream.readUint8();\n      this.ChannelMapping = [];\n      for (let i = 0; i < this.OutputChannelCount; i++) {\n        this.ChannelMapping[i] = stream.readUint8();\n      }\n    }\n  }\n\n  write(stream: MultiBufferStream) {\n    this.size = 11; // Version(1) + OutputChannelCount(1) + PreSkip(2) + InputSampleRate(4) + OutputGain(2) + ChannelMappingFamily(1)\n    if (this.ChannelMappingFamily !== 0) {\n      // Add StreamCount(1) + CoupledCount(1) + ChannelMapping array\n      this.size += 2 + this.OutputChannelCount;\n    }\n\n    this.writeHeader(stream);\n    stream.writeUint8(this.Version);\n    stream.writeUint8(this.OutputChannelCount);\n    stream.writeUint16(this.PreSkip);\n    stream.writeUint32(this.InputSampleRate);\n    stream.writeInt16(this.OutputGain);\n    stream.writeUint8(this.ChannelMappingFamily);\n    if (this.ChannelMappingFamily !== 0) {\n      stream.writeUint8(this.StreamCount);\n      stream.writeUint8(this.CoupledCount);\n      for (let i = 0; i < this.OutputChannelCount; i++) {\n        stream.writeUint8(this.ChannelMapping[i]);\n      }\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class drepBox extends Box {\n  static override readonly fourcc = 'drep' as const;\n  box_name = 'hintrepeatedBytesSent' as const;\n\n  bytessent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytessent = stream.readUint64();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport type { Entry } from '@types';\nimport { MAX_UINT32 } from '#/constants';\n\nexport class elstBox extends FullBox {\n  static override readonly fourcc = 'elst' as const;\n  box_name = 'EditListBox' as const;\n\n  entries: Array<Entry>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.entries = [];\n    const entry_count = stream.readUint32();\n    for (let i = 0; i < entry_count; i++) {\n      const entry: Entry = {\n        segment_duration: this.version === 1 ? stream.readUint64() : stream.readUint32(),\n        media_time: this.version === 1 ? stream.readInt64() : stream.readInt32(),\n        media_rate_integer: stream.readInt16(),\n        media_rate_fraction: stream.readInt16(),\n      };\n      this.entries.push(entry);\n    }\n  }\n\n  /** @bundle writing/elst.js */\n  write(stream: MultiBufferStream) {\n    const useVersion1 =\n      this.entries.some(\n        entry => entry.segment_duration > MAX_UINT32 || entry.media_time > MAX_UINT32,\n      ) || this.version === 1;\n    this.version = useVersion1 ? 1 : 0;\n\n    this.size = 4 + 12 * this.entries.length;\n    this.size += useVersion1 ? 2 * 4 * this.entries.length : 0;\n\n    this.writeHeader(stream);\n    stream.writeUint32(this.entries.length);\n    for (let i = 0; i < this.entries.length; i++) {\n      const entry = this.entries[i];\n      if (useVersion1) {\n        stream.writeUint64(entry.segment_duration);\n        stream.writeInt64(entry.media_time);\n      } else {\n        stream.writeUint32(entry.segment_duration);\n        stream.writeInt32(entry.media_time);\n      }\n      stream.writeInt16(entry.media_rate_integer);\n      stream.writeInt16(entry.media_rate_fraction);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\n// ISO/IEC 14496-12:2022 Section 8.18.3 Entity to group box\nexport class EntityToGroup extends FullBox {\n  group_id: number;\n  num_entities_in_group: number;\n  entity_ids: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.group_id = stream.readUint32();\n    this.num_entities_in_group = stream.readUint32();\n    this.entity_ids = [];\n    for (let i = 0; i < this.num_entities_in_group; i++) {\n      const entity_id = stream.readUint32();\n      this.entity_ids.push(entity_id);\n    }\n  }\n}\n","import type { MultiBufferStream } from '#/buffer';\nimport { EntityToGroup } from './base';\n\n// Auto exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.2.1)\nexport class aebrBox extends EntityToGroup {\n  static override readonly fourcc = 'aebr' as const;\n  box_name = 'Auto exposure bracketing' as const;\n}\n\n// Flash exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.5.1)\nexport class afbrBox extends EntityToGroup {\n  static override readonly fourcc = 'afbr' as const;\n  box_name = 'Flash exposure information' as const;\n}\n\n// Album collection (ISO/IEC 23008-12:2022 Section 6.8.7.1)\nexport class albcBox extends EntityToGroup {\n  static override readonly fourcc = 'albc' as const;\n  box_name = 'Album collection' as const;\n}\n\n// Alternative entity (ISO/IEC 14496-12:2022 Section 8.18.3.1)\nexport class altrBox extends EntityToGroup {\n  static override readonly fourcc = 'altr' as const;\n  box_name = 'Alternative entity' as const;\n}\n\n// Burst image entity group (ISO/IEC 23008-12:2022 Section 6.8.2.2)\nexport class brstBox extends EntityToGroup {\n  static override readonly fourcc = 'brst' as const;\n  box_name = 'Burst image' as const;\n}\n\n// Depth of field bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.6.1)\nexport class dobrBox extends EntityToGroup {\n  static override readonly fourcc = 'dobr' as const;\n  box_name = 'Depth of field bracketing' as const;\n}\n\n// Equivalent entity (ISO/IEC 23008-12:2022 Section 6.8.1.1)\nexport class eqivBox extends EntityToGroup {\n  static override readonly fourcc = 'eqiv' as const;\n  box_name = 'Equivalent entity' as const;\n}\n\n// Favourites collection (ISO/IEC 23008-12:2022 Section 6.8.7.2)\nexport class favcBox extends EntityToGroup {\n  static override readonly fourcc = 'favc' as const;\n  box_name = 'Favorites collection' as const;\n}\n\n// Focus bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.4.1)\nexport class fobrBox extends EntityToGroup {\n  static override readonly fourcc = 'fobr' as const;\n  box_name = 'Focus bracketing' as const;\n}\n\n// Audio to image entity group (ISO/IEC 23008-12:2022 Section 6.8.4)\nexport class iaugBox extends EntityToGroup {\n  static override readonly fourcc = 'iaug' as const;\n  box_name = 'Image item with an audio track' as const;\n}\n\n// Panorama (ISO/IEC 23008-12:2022 Section 6.8.8.1)\nexport class panoBox extends EntityToGroup {\n  static override readonly fourcc = 'pano' as const;\n  box_name = 'Panorama' as const;\n}\n\n// Slideshow (ISO/IEC 23008-12:2022 Section 6.8.9.1)\nexport class slidBox extends EntityToGroup {\n  static override readonly fourcc = 'slid' as const;\n  box_name = 'Slideshow' as const;\n}\n\n// Stereo pair (ISO/IEC 23008-12:2022 Section 6.8.5)\nexport class sterBox extends EntityToGroup {\n  static override readonly fourcc = 'ster' as const;\n  box_name = 'Stereo' as const;\n}\n\n// Time-synchronised capture entity group (ISO/IEC 23008-12:2022 Section 6.8.3)\nexport class tsynBox extends EntityToGroup {\n  static override readonly fourcc = 'tsyn' as const;\n  box_name = 'Time-synchronized capture' as const;\n}\n\n// White balance bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.3.1)\nexport class wbbrBox extends EntityToGroup {\n  static override readonly fourcc = 'wbbr' as const;\n  box_name = 'White balance bracketing' as const;\n}\n\n// Alternative entity (ISO/IEC 23008-12:2022 AMD1 Section 6.8.10)\nexport class prgrBox extends EntityToGroup {\n  static override readonly fourcc = 'prgr' as const;\n  box_name = 'Progressive rendering' as const;\n}\n\n// Image Pyramid entity group (ISO/IEC 23008-12:20xx Section 6.8.11)\nexport class pymdBox extends EntityToGroup {\n  tile_size_x: number;\n  tile_size_y: number;\n  layer_binning: Array<number>;\n  tiles_in_layer_column_minus1: Array<number>;\n  tiles_in_layer_row_minus1: Array<number>;\n\n  static override readonly fourcc = 'pymd' as const;\n  box_name = 'Image pyramid' as const;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.group_id = stream.readUint32();\n    this.num_entities_in_group = stream.readUint32();\n    this.entity_ids = [];\n    for (let i = 0; i < this.num_entities_in_group; i++) {\n      const entity_id = stream.readUint32();\n      this.entity_ids.push(entity_id);\n    }\n\n    this.tile_size_x = stream.readUint16();\n    this.tile_size_y = stream.readUint16();\n    this.layer_binning = [];\n    this.tiles_in_layer_column_minus1 = [];\n    this.tiles_in_layer_row_minus1 = [];\n    for (let i = 0; i < this.num_entities_in_group; i++) {\n      this.layer_binning[i] = stream.readUint16();\n      this.tiles_in_layer_row_minus1[i] = stream.readUint16();\n      this.tiles_in_layer_column_minus1[i] = stream.readUint16();\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class fielBox extends Box {\n  static override readonly fourcc = 'fiel' as const;\n  box_name = 'FieldHandlingBox' as const;\n\n  fieldCount: number;\n  fieldOrdering: number;\n\n  parse(stream: MultiBufferStream) {\n    this.fieldCount = stream.readUint8();\n    this.fieldOrdering = stream.readUint8();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class frmaBox extends Box {\n  static override readonly fourcc = 'frma' as const;\n  box_name = 'OriginalFormatBox' as const;\n\n  data_format: string;\n\n  parse(stream: MultiBufferStream) {\n    this.data_format = stream.readString(4);\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class imirBox extends Box {\n  static override readonly fourcc = 'imir' as const;\n  box_name = 'ImageMirror' as const;\n\n  reserved: number;\n  axis: number;\n\n  parse(stream: MultiBufferStream) {\n    const tmp = stream.readUint8();\n    this.reserved = tmp >> 7;\n    this.axis = tmp & 1;\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport interface Assocation {\n  id: number;\n  props: Array<{ property_index: number; essential: boolean }>;\n}\n\nexport class ipmaBox extends FullBox {\n  static override readonly fourcc = 'ipma' as const;\n  box_name = 'ItemPropertyAssociationBox' as const;\n\n  associations: Array<Assocation>;\n  version: number;\n  flags: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const entry_count = stream.readUint32();\n    this.associations = [];\n    for (let i = 0; i < entry_count; i++) {\n      const id = this.version < 1 ? stream.readUint16() : stream.readUint32();\n\n      const props = [];\n      const association_count = stream.readUint8();\n\n      for (let j = 0; j < association_count; j++) {\n        const tmp = stream.readUint8();\n        props.push({\n          essential: (tmp & 0x80) >> 7 === 1,\n          property_index: this.flags & 0x1 ? ((tmp & 0x7f) << 8) | stream.readUint8() : tmp & 0x7f,\n        });\n      }\n\n      this.associations.push({\n        id,\n        props,\n      });\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class irotBox extends Box {\n  static override readonly fourcc = 'irot' as const;\n  box_name = 'ImageRotation' as const;\n\n  angle: number;\n\n  parse(stream: MultiBufferStream) {\n    this.angle = stream.readUint8() & 0x3;\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class ispeBox extends FullBox {\n  static override readonly fourcc = 'ispe' as const;\n  box_name = 'ImageSpatialExtentsProperty' as const;\n\n  image_width: number;\n  image_height: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.image_width = stream.readUint32();\n    this.image_height = stream.readUint32();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class itaiBox extends FullBox {\n  static override readonly fourcc = 'itai' as const;\n  box_name = 'TAITimestampBox' as const;\n\n  TAI_timestamp: number;\n  sychronization_state: number;\n  timestamp_generation_failure: number;\n  timestamp_is_modified: number;\n\n  parse(stream: MultiBufferStream) {\n    this.TAI_timestamp = stream.readUint64();\n    const status_bits = stream.readUint8();\n    this.sychronization_state = (status_bits >> 7) & 0x01;\n    this.timestamp_generation_failure = (status_bits >> 6) & 0x01;\n    this.timestamp_is_modified = (status_bits >> 5) & 0x01;\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class kindBox extends FullBox {\n  static override readonly fourcc = 'kind' as const;\n  box_name = 'KindBox' as const;\n\n  schemeURI: string;\n  value: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.schemeURI = stream.readCString();\n    if (!this.isEndOfBox(stream)) {\n      this.value = stream.readCString();\n    }\n  }\n\n  /** @bundle writing/kind.js */\n  write(stream: MultiBufferStream) {\n    this.version = 0;\n    this.flags = 0;\n    this.size = this.schemeURI.length + 1 + (this.value ? this.value.length + 1 : 0);\n    this.writeHeader(stream);\n    stream.writeCString(this.schemeURI);\n    if (this.value) stream.writeCString(this.value);\n  }\n}\n","import { Log } from '#//log';\nimport { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\ninterface Level {\n  padding_flag: number;\n  track_ID: number;\n  assignment_type: number;\n  grouping_type: string;\n  grouping_type_parameter: number;\n  sub_track_id: number;\n}\n\nexport class levaBox extends FullBox {\n  static override readonly fourcc = 'leva' as const;\n  box_name = 'LevelAssignmentBox' as const;\n\n  levels: Array<Level>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const count = stream.readUint8();\n    this.levels = [];\n    for (let i = 0; i < count; i++) {\n      const level = {} as Level;\n      this.levels[i] = level;\n      level.track_ID = stream.readUint32();\n      const tmp_byte = stream.readUint8();\n      level.padding_flag = tmp_byte >> 7;\n      level.assignment_type = tmp_byte & 0x7f;\n      switch (level.assignment_type) {\n        case 0:\n          level.grouping_type = stream.readString(4);\n          break;\n        case 1:\n          level.grouping_type = stream.readString(4);\n          level.grouping_type_parameter = stream.readUint32();\n          break;\n        case 2:\n          break;\n        case 3:\n          break;\n        case 4:\n          level.sub_track_id = stream.readUint32();\n          break;\n        default:\n          Log.warn('BoxParser', `Unknown level assignment type: ${level.assignment_type}`);\n      }\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport type { NaluArray } from '@types';\nimport type { NALUArrays } from './displays/naluArrays';\n\nexport class lhvCBox extends Box {\n  static override readonly fourcc = 'lhvC' as const;\n  box_name = 'LHEVCConfigurationBox' as const;\n\n  configurationVersion: number;\n  min_spatial_segmentation_idc: number;\n  parallelismType: number;\n  numTemporalLayers: number;\n  temporalIdNested: number;\n  lengthSizeMinusOne: number;\n  nalu_arrays: NALUArrays;\n\n  parse(stream: MultiBufferStream) {\n    this.configurationVersion = stream.readUint8();\n    this.min_spatial_segmentation_idc = stream.readUint16() & 0xfff;\n    this.parallelismType = stream.readUint8() & 0x3;\n    let tmp_byte = stream.readUint8();\n    this.numTemporalLayers = (tmp_byte & 0xd) >> 3;\n    this.temporalIdNested = (tmp_byte & 0x4) >> 2;\n    this.lengthSizeMinusOne = tmp_byte & 0x3;\n\n    this.nalu_arrays = [];\n    const numOfArrays = stream.readUint8();\n\n    for (let i = 0; i < numOfArrays; i++) {\n      const nalu_array = [] as NaluArray;\n      this.nalu_arrays.push(nalu_array);\n      tmp_byte = stream.readUint8();\n      nalu_array.completeness = (tmp_byte & 0x80) >> 7;\n      nalu_array.nalu_type = tmp_byte & 0x3f;\n      const numNalus = stream.readUint16();\n      for (let j = 0; j < numNalus; j++) {\n        const length = stream.readUint16();\n        nalu_array.push({ data: stream.readUint8Array(length) });\n      }\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class lselBox extends Box {\n  static override readonly fourcc = 'lsel' as const;\n  box_name = 'LayerSelectorProperty' as const;\n\n  layer_id: number;\n\n  parse(stream: MultiBufferStream) {\n    this.layer_id = stream.readUint16();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class maxrBox extends Box {\n  static override readonly fourcc = 'maxr' as const;\n  box_name = 'hintmaxrate' as const;\n\n  period: number;\n  bytes: number;\n\n  parse(stream: MultiBufferStream) {\n    this.period = stream.readUint32();\n    this.bytes = stream.readUint32();\n  }\n}\n","export class ColorPoint {\n  constructor(\n    public x: number,\n    public y: number,\n  ) {}\n  toString() {\n    return '(' + this.x + ',' + this.y + ')';\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { ColorPoint } from './displays/colorPoint';\n\nexport class mdcvBox extends Box {\n  static override readonly fourcc = 'mdcv' as const;\n  box_name = 'MasteringDisplayColourVolumeBox' as const;\n\n  display_primaries: Array<ColorPoint>;\n  white_point: ColorPoint;\n  max_display_mastering_luminance: number;\n  min_display_mastering_luminance: number;\n\n  parse(stream: MultiBufferStream) {\n    this.display_primaries = [];\n    this.display_primaries[0] = new ColorPoint(stream.readUint16(), stream.readUint16());\n    this.display_primaries[1] = new ColorPoint(stream.readUint16(), stream.readUint16());\n    this.display_primaries[2] = new ColorPoint(stream.readUint16(), stream.readUint16());\n    this.white_point = new ColorPoint(stream.readUint16(), stream.readUint16());\n    this.max_display_mastering_luminance = stream.readUint32();\n    this.min_display_mastering_luminance = stream.readUint32();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class mfroBox extends FullBox {\n  static override readonly fourcc = 'mfro' as const;\n  box_name = 'MovieFragmentRandomAccessOffsetBox' as const;\n\n  _size: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this._size = stream.readUint32();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class mskCBox extends FullBox {\n  static override readonly fourcc = 'mskC' as const;\n  box_name = 'MaskConfigurationProperty' as const;\n\n  bits_per_pixel: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.bits_per_pixel = stream.readUint8();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class npckBox extends Box {\n  static override readonly fourcc = 'npck' as const;\n  box_name = 'hintPacketsSent' as const;\n\n  packetssent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.packetssent = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class numpBox extends Box {\n  static override readonly fourcc = 'nump' as const;\n  box_name = 'hintPacketsSent' as const;\n\n  packetssent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.packetssent = stream.readUint64();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nclass PaddingBit {\n  constructor(\n    public pad1: number,\n    public pad2: number,\n  ) {}\n}\n\nexport class padbBox extends FullBox {\n  static override readonly fourcc = 'padb' as const;\n  box_name = 'PaddingBitsBox' as const;\n\n  padbits: Array<PaddingBit>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const sample_count = stream.readUint32();\n    this.padbits = [];\n    for (let i = 0; i < Math.floor((sample_count + 1) / 2); i++) {\n      const bits = stream.readUint8();\n      const pad1 = (bits & 0x70) >> 4; // 5,6,7 bits\n      const pad2 = bits & 0x07; // 0,1,2 bits\n      this.padbits.push(new PaddingBit(pad1, pad2));\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class paspBox extends Box {\n  static override readonly fourcc = 'pasp' as const;\n  box_name = 'PixelAspectRatioBox' as const;\n\n  hSpacing: number;\n  vSpacing: number;\n\n  parse(stream: MultiBufferStream) {\n    this.hSpacing = stream.readUint32();\n    this.vSpacing = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class paylBox extends Box {\n  static override readonly fourcc = 'payl' as const;\n  box_name = 'CuePayloadBox' as const;\n\n  text: string;\n\n  parse(stream: MultiBufferStream) {\n    this.text = stream.readString(this.size - this.hdr_size);\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class paytBox extends Box {\n  static override readonly fourcc = 'payt' as const;\n  box_name = 'hintpayloadID' as const;\n\n  payloadID: number;\n  rtpmap_string: string;\n\n  parse(stream: MultiBufferStream) {\n    this.payloadID = stream.readUint32();\n    const count = stream.readUint8();\n    this.rtpmap_string = stream.readString(count);\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class pdinBox extends FullBox {\n  static override readonly fourcc = 'pdin' as const;\n  box_name = 'ProgressiveDownloadInfoBox' as const;\n\n  rate: Array<number> = [];\n  initial_delay: Array<number> = [];\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const count = (this.size - this.hdr_size) / 8;\n    for (let i = 0; i < count; i++) {\n      this.rate[i] = stream.readUint32();\n      this.initial_delay[i] = stream.readUint32();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class pixiBox extends FullBox {\n  static override readonly fourcc = 'pixi' as const;\n  box_name = 'PixelInformationProperty' as const;\n\n  num_channels: number;\n  bits_per_channels: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.num_channels = stream.readUint8();\n    this.bits_per_channels = [];\n    for (let i = 0; i < this.num_channels; i++) {\n      this.bits_per_channels[i] = stream.readUint8();\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class pmaxBox extends Box {\n  static override readonly fourcc = 'pmax' as const;\n  box_name = 'hintlargestpacket' as const;\n\n  bytes: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytes = stream.readUint32();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class prdiBox extends FullBox {\n  static override readonly fourcc = 'prdi' as const;\n  box_name = 'ProgressiveDerivedImageItemInformationProperty' as const;\n\n  step_count: number;\n  item_count: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.step_count = stream.readUint16();\n    this.item_count = [];\n    if (this.flags & 0x2) {\n      for (let i = 0; i < this.step_count; i++) {\n        this.item_count[i] = stream.readUint16();\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class prfrBox extends FullBox {\n  static override readonly fourcc = 'prfr' as const;\n  box_name = 'ProjectionFormatBox' as const;\n\n  projection_type: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.projection_type = stream.readUint8() & 0b00011111;\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class prftBox extends FullBox {\n  static override readonly fourcc = 'prft' as const;\n  box_name = 'ProducerReferenceTimeBox' as const;\n\n  ref_track_id: number;\n  ntp_timestamp: number;\n  media_time: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.ref_track_id = stream.readUint32();\n    this.ntp_timestamp = stream.readUint64();\n    if (this.version === 0) {\n      this.media_time = stream.readUint32();\n    } else {\n      this.media_time = stream.readUint64();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport { parseHex16 } from '#/parser';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class psshBox extends FullBox {\n  static override readonly fourcc = 'pssh' as const;\n  box_name = 'ProtectionSystemSpecificHeaderBox' as const;\n\n  system_id: string;\n  kid: Array<string>;\n  protection_data?: Uint8Array;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.system_id = parseHex16(stream);\n\n    this.kid = [];\n    if (this.version > 0) {\n      const count = stream.readUint32();\n      for (let i = 0; i < count; i++) {\n        this.kid[i] = parseHex16(stream);\n      }\n    }\n\n    const datasize = stream.readUint32();\n    if (datasize > 0) {\n      this.protection_data = stream.readUint8Array(datasize);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class clefBox extends FullBox {\n  static override readonly fourcc = 'clef' as const;\n  box_name = 'TrackCleanApertureDimensionsBox' as const;\n\n  width: number;\n  height: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.width = stream.readUint32();\n    this.height = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport { Log } from '#/log';\nimport type { MultiBufferStream } from '#/buffer';\n\n/*\n * Parses the types above. Only implement the ones we actually\n * have real world test data for. Add a test case, as you implement them.\n */\nfunction parseItifData(type, data) {\n  if (type === dataBox.Types.UTF8) {\n    return new TextDecoder('utf-8').decode(data);\n  }\n\n  const view = new DataView(data.buffer);\n  if (type === dataBox.Types.BE_UNSIGNED_INT) {\n    if (data.length === 1) {\n      return view.getUint8(0);\n    } else if (data.length === 2) {\n      return view.getUint16(0, false);\n    } else if (data.length === 4) {\n      return view.getUint32(0, false);\n    } else if (data.length === 8) {\n      return view.getBigUint64(0, false);\n    } else {\n      throw new Error('Unsupported ITIF_TYPE_BE_UNSIGNED_INT length ' + data.length);\n    }\n  } else if (type === dataBox.Types.BE_SIGNED_INT) {\n    if (data.length === 1) {\n      return view.getInt8(0);\n    } else if (data.length === 2) {\n      return view.getInt16(0, false);\n    } else if (data.length === 4) {\n      return view.getInt32(0, false);\n    } else if (data.length === 8) {\n      return view.getBigInt64(0, false);\n    } else {\n      throw new Error('Unsupported ITIF_TYPE_BE_SIGNED_INT length ' + data.length);\n    }\n  } else if (type === dataBox.Types.BE_FLOAT32) {\n    return view.getFloat32(0, false);\n  }\n\n  Log.warn('DataBox', 'Unsupported or unimplemented itif data type: ' + type);\n  return undefined;\n}\n\n/*\n * The QTFF data Atom is typically in an ilst Box.\n * https://developer.apple.com/documentation/quicktime-file-format/data_atom\n */\n\nexport class dataBox extends Box {\n  static override readonly fourcc = 'data' as const;\n  box_name = 'DataBox' as const;\n\n  country: number;\n  countryString?: string;\n  language: number;\n  languageString?: string;\n  raw: Uint8Array;\n  value?: string | number | bigint | boolean | object;\n  valueType: number;\n\n  /*\n   * itif data types\n   * https://developer.apple.com/documentation/quicktime-file-format/well-known_types\n   */\n  static Types = {\n    RESERVED: 0,\n    UTF8: 1,\n    UTF16: 2,\n    SJIS: 3,\n    UTF8_SORT: 4,\n    UTF16_SORT: 5,\n    JPEG: 13,\n    PNG: 14,\n    BE_SIGNED_INT: 21,\n    BE_UNSIGNED_INT: 22,\n    BE_FLOAT32: 23,\n    BE_FLOAT64: 24,\n    BMP: 27,\n    QT_ATOM: 28,\n    BE_SIGNED_INT8: 65,\n    BE_SIGNED_INT16: 66,\n    BE_SIGNED_INT32: 67,\n    BE_FLOAT32_POINT: 70,\n    BE_FLOAT32_DIMENSIONS: 71,\n    BE_FLOAT32_RECT: 72,\n    BE_SIGNED_INT64: 74,\n    BE_UNSIGNED_INT8: 75,\n    BE_UNSIGNED_INT16: 76,\n    BE_UNSIGNED_INT32: 77,\n    BE_UNSIGNED_INT64: 78,\n    BE_FLOAT64_AFFINE_TRANSFORM: 79,\n  } as const;\n\n  parse(stream: MultiBufferStream) {\n    this.valueType = stream.readUint32();\n    this.country = stream.readUint16();\n    if (this.country > 255) {\n      stream.seek(stream.getPosition() - 2);\n      this.countryString = stream.readString(2);\n    }\n    this.language = stream.readUint16();\n    if (this.language > 255) {\n      stream.seek(stream.getPosition() - 2);\n      this.parseLanguage(stream);\n    }\n    this.raw = stream.readUint8Array(this.size - this.hdr_size - 8);\n    this.value = parseItifData(this.valueType, this.raw);\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class enofBox extends FullBox {\n  static override readonly fourcc = 'enof' as const;\n  box_name = 'TrackEncodedPixelsDimensionsBox' as const;\n\n  width: number;\n  height: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.width = stream.readUint32();\n    this.height = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport { OK } from '#/constants';\nimport { parseOneBox } from '#/parser';\nimport type { MultiBufferStream } from '#/buffer';\n\n/*\n * The QTFF ilst Box typically follows a keys Box within a meta Box.\n * https://developer.apple.com/documentation/quicktime-file-format/metadata_item_list_atom\n */\n\nexport class ilstBox extends Box {\n  static override readonly fourcc = 'ilst' as const;\n  box_name = 'IlstBox' as const;\n\n  /* Indexed by the index in keys */\n  list: Record<number, Box>;\n\n  parse(stream: MultiBufferStream) {\n    this.list = {};\n    let total = this.size - this.hdr_size;\n    while (total > 0) {\n      const size = stream.readUint32();\n\n      /* The index into the keys box */\n      const index = stream.readUint32();\n\n      const res = parseOneBox(stream, false, size - 8);\n      if (res.code === OK) this.list[index] = res.box;\n      total -= size;\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\n/*\n * The QTFF keys Atom is typically in a meta Box.\n * https://developer.apple.com/documentation/quicktime-file-format/metadata_item_keys_atom\n  static override readonly fourcc = 'ilst' as const;\n * key indexes are 1-based and so we store them in a Object, not an array.\n */\nexport class keysBox extends FullBox {\n  static override readonly fourcc = 'keys' as const;\n  box_name = 'KeysBox' as const;\n\n  count: number;\n  keys: Record<number, string>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.count = stream.readUint32();\n    this.keys = {};\n    for (let i = 0; i < this.count; i++) {\n      const len = stream.readUint32();\n      this.keys[i + 1] = stream.readString(len - 4);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class profBox extends FullBox {\n  static override readonly fourcc = 'prof' as const;\n  box_name = 'TrackProductionApertureDimensionsBox' as const;\n\n  width: number;\n  height: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.width = stream.readUint32();\n    this.height = stream.readUint32();\n  }\n}\n","import { ContainerBox } from '#/containerBox';\nimport { clefBox } from '#/boxes/qt/clef';\nimport { enofBox } from '#/boxes/qt/enof';\nimport { profBox } from '#/boxes/qt/prof';\n\nexport class taptBox extends ContainerBox {\n  static override readonly fourcc = 'tapt' as const;\n  box_name = 'TrackApertureModeDimensionsBox' as const;\n\n  clefs: Array<clefBox> = [];\n  profs: Array<profBox> = [];\n  enofs: Array<enofBox> = [];\n  subBoxNames = ['clef', 'prof', 'enof'] as const;\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class rtp_Box extends Box {\n  static override readonly fourcc = 'rtp ' as const;\n  box_name = 'rtpmoviehintinformation' as const;\n\n  descriptionformat: string;\n  sdptext: string;\n\n  parse(stream: MultiBufferStream) {\n    this.descriptionformat = stream.readString(4);\n    this.sdptext = stream.readString(this.size - this.hdr_size - 4);\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class saioBox extends FullBox {\n  static override readonly fourcc = 'saio' as const;\n  box_name = 'SampleAuxiliaryInformationOffsetsBox' as const;\n\n  aux_info_type: string;\n  aux_info_type_parameter: number;\n  entry_count: number;\n  offset: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    if (this.flags & 0x1) {\n      this.aux_info_type = stream.readString(4);\n      this.aux_info_type_parameter = stream.readUint32();\n    }\n    this.entry_count = stream.readUint32();\n    this.offset = [];\n    for (let i = 0; i < this.entry_count; i++) {\n      if (this.version === 0) {\n        this.offset[i] = stream.readUint32();\n      } else {\n        this.offset[i] = stream.readUint64();\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class saizBox extends FullBox {\n  static override readonly fourcc = 'saiz' as const;\n  box_name = 'SampleAuxiliaryInformationSizesBox' as const;\n\n  aux_info_type: string;\n  aux_info_type_parameter: number;\n  default_sample_info_size: number;\n  sample_count: number;\n  sample_info_size: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    if (this.flags & 0x1) {\n      this.aux_info_type = stream.readString(4);\n      this.aux_info_type_parameter = stream.readUint32();\n    }\n    this.default_sample_info_size = stream.readUint8();\n    this.sample_count = stream.readUint32();\n    this.sample_info_size = [];\n    if (this.default_sample_info_size === 0) {\n      for (let i = 0; i < this.sample_count; i++) {\n        this.sample_info_size[i] = stream.readUint8();\n      }\n    }\n  }\n}\n","export class Pixel {\n  constructor(\n    public bad_pixel_row: number,\n    public bad_pixel_column: number,\n  ) {}\n  toString() {\n    return '[row: ' + this.bad_pixel_row + ', column: ' + this.bad_pixel_column + ']';\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Pixel } from './displays/pixel';\n\nexport class sbpmBox extends FullBox {\n  static override readonly fourcc = 'sbpm' as const;\n  box_name = 'SensorBadPixelsMapBox' as const;\n\n  component_count: number;\n  component_index: Array<number>;\n  correction_applied: boolean;\n  num_bad_rows: number;\n  num_bad_cols: number;\n  num_bad_pixels: number;\n  bad_rows: Array<number>;\n  bad_columns: Array<number>;\n  bad_pixels: Array<Pixel>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.component_count = stream.readUint16();\n    this.component_index = [];\n    for (let i = 0; i < this.component_count; i++) {\n      this.component_index.push(stream.readUint16());\n    }\n    const flags = stream.readUint8();\n    this.correction_applied = 0x80 === (flags & 0x80);\n    this.num_bad_rows = stream.readUint32();\n    this.num_bad_cols = stream.readUint32();\n    this.num_bad_pixels = stream.readUint32();\n    this.bad_rows = [];\n    this.bad_columns = [];\n    this.bad_pixels = [];\n    for (let i = 0; i < this.num_bad_rows; i++) {\n      this.bad_rows.push(stream.readUint32());\n    }\n    for (let i = 0; i < this.num_bad_cols; i++) {\n      this.bad_columns.push(stream.readUint32());\n    }\n    for (let i = 0; i < this.num_bad_pixels; i++) {\n      const row = stream.readUint32();\n      const col = stream.readUint32();\n      this.bad_pixels.push(new Pixel(row, col));\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class schmBox extends FullBox {\n  static override readonly fourcc = 'schm' as const;\n  box_name = 'SchemeTypeBox' as const;\n\n  scheme_type: string;\n  scheme_version: number;\n  scheme_uri: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.scheme_type = stream.readString(4);\n    this.scheme_version = stream.readUint32();\n    if (this.flags & 0x000001) {\n      this.scheme_uri = stream.readString(this.size - this.hdr_size - 8);\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class sdp_Box extends Box {\n  static override readonly fourcc = 'sdp ' as const;\n  box_name = 'rtptracksdphintinformation' as const;\n\n  sdptext?: string;\n\n  parse(stream: MultiBufferStream) {\n    this.sdptext = stream.readString(this.size - this.hdr_size);\n  }\n}\n","import { FullBox } from '#/box';\n\nexport class sencBox extends FullBox {\n  static override readonly fourcc = 'senc' as const;\n  box_name = 'SampleEncryptionBox' as const;\n\n  // Cannot be fully parsed because Per_Sample_IV_Size needs to be known\n  /* parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    let sample_count = stream.readUint32();\n    this.samples = [];\n    for (let i = 0; i < sample_count; i++) {\n      let sample = {};\n      // tenc.default_Per_Sample_IV_Size or seig.Per_Sample_IV_Size\n      sample.InitializationVector = this.readUint8Array(Per_Sample_IV_Size*8);\n      if (this.flags & 0x2) {\n        sample.subsamples = [];\n        subsample_count = stream.readUint16();\n        for (let j = 0; j < subsample_count; j++) {\n          let subsample = {};\n          subsample.BytesOfClearData = stream.readUint16();\n          subsample.BytesOfProtectedData = stream.readUint32();\n          sample.subsamples.push(subsample);\n        }\n      }\n      // TODO\n      this.samples.push(sample);\n    } \n  } */\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class SmDmBox extends FullBox {\n  static override readonly fourcc = 'SmDm' as const;\n  box_name = 'SMPTE2086MasteringDisplayMetadataBox' as const;\n\n  primaryRChromaticity_x: number;\n  primaryRChromaticity_y: number;\n  primaryGChromaticity_x: number;\n  primaryGChromaticity_y: number;\n  primaryBChromaticity_x: number;\n  primaryBChromaticity_y: number;\n  whitePointChromaticity_x: number;\n  whitePointChromaticity_y: number;\n  luminanceMax: number;\n  luminanceMin: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.primaryRChromaticity_x = stream.readUint16();\n    this.primaryRChromaticity_y = stream.readUint16();\n    this.primaryGChromaticity_x = stream.readUint16();\n    this.primaryGChromaticity_y = stream.readUint16();\n    this.primaryBChromaticity_x = stream.readUint16();\n    this.primaryBChromaticity_y = stream.readUint16();\n    this.whitePointChromaticity_x = stream.readUint16();\n    this.whitePointChromaticity_y = stream.readUint16();\n    this.luminanceMax = stream.readUint32();\n    this.luminanceMin = stream.readUint32();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class sratBox extends FullBox {\n  static override readonly fourcc = 'srat' as const;\n  box_name = 'SamplingRateBox' as const;\n\n  sampling_rate: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.sampling_rate = stream.readUint32();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class stdpBox extends FullBox {\n  static override readonly fourcc = 'stdp' as const;\n  box_name = 'DegradationPriorityBox' as const;\n\n  priority: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const count = (this.size - this.hdr_size) / 2;\n    this.priority = [];\n    for (let i = 0; i < count; i++) {\n      this.priority[i] = stream.readUint16();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class striBox extends FullBox {\n  static override readonly fourcc = 'stri' as const;\n  box_name = 'SubTrackInformationBox' as const;\n\n  switch_group: number;\n  alternate_group: number;\n  sub_track_id: number;\n  attribute_list: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.switch_group = stream.readUint16();\n    this.alternate_group = stream.readUint16();\n    this.sub_track_id = stream.readUint32();\n    const count = (this.size - this.hdr_size - 8) / 4;\n    this.attribute_list = [];\n    for (let i = 0; i < count; i++) {\n      this.attribute_list[i] = stream.readUint32();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class stsgBox extends FullBox {\n  static override readonly fourcc = 'stsg' as const;\n  box_name = 'SubTrackSampleGroupBox' as const;\n\n  grouping_type: number;\n  group_description_index: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.grouping_type = stream.readUint32();\n    const count = stream.readUint16();\n    this.group_description_index = [];\n    for (let i = 0; i < count; i++) {\n      this.group_description_index[i] = stream.readUint32();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class stshBox extends FullBox {\n  static override readonly fourcc = 'stsh' as const;\n  box_name = 'ShadowSyncSampleBox' as const;\n\n  shadowed_sample_numbers: Array<number>;\n  sync_sample_numbers: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const entry_count = stream.readUint32();\n    this.shadowed_sample_numbers = [];\n    this.sync_sample_numbers = [];\n    if (this.version === 0) {\n      for (let i = 0; i < entry_count; i++) {\n        this.shadowed_sample_numbers.push(stream.readUint32());\n        this.sync_sample_numbers.push(stream.readUint32());\n      }\n    }\n  }\n\n  write(stream: MultiBufferStream) {\n    this.version = 0;\n    this.flags = 0;\n    this.size = 4 + 8 * this.shadowed_sample_numbers.length;\n    this.writeHeader(stream);\n    stream.writeUint32(this.shadowed_sample_numbers.length);\n    for (let i = 0; i < this.shadowed_sample_numbers.length; i++) {\n      stream.writeUint32(this.shadowed_sample_numbers[i]);\n      stream.writeUint32(this.sync_sample_numbers[i]);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class stssBox extends FullBox {\n  static override readonly fourcc = 'stss' as const;\n  box_name = 'SyncSampleBox' as const;\n\n  sample_numbers: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const entry_count = stream.readUint32();\n    if (this.version === 0) {\n      this.sample_numbers = [];\n      for (let i = 0; i < entry_count; i++) {\n        this.sample_numbers.push(stream.readUint32());\n      }\n    }\n  }\n\n  /** @bundle writing/stss.js */\n  write(stream: MultiBufferStream) {\n    this.version = 0;\n    this.flags = 0;\n    this.size = 4 + 4 * this.sample_numbers.length;\n    this.writeHeader(stream);\n    stream.writeUint32(this.sample_numbers.length);\n    stream.writeUint32Array(this.sample_numbers);\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { OK } from '#/constants';\nimport { parseOneBox } from '#/parser';\nimport type { BoxKind } from '@types';\n\nexport class stviBox extends FullBox {\n  static override readonly fourcc = 'stvi' as const;\n  box_name = 'StereoVideoBox' as const;\n\n  single_view_allowed: number;\n  stereo_scheme: number;\n  stereo_indication_type: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const tmp32 = stream.readUint32();\n    this.single_view_allowed = tmp32 & 0x3;\n    this.stereo_scheme = stream.readUint32();\n    const length = stream.readUint32();\n    this.stereo_indication_type = stream.readString(length);\n    this.boxes = [];\n    while (stream.getPosition() < this.start + this.size) {\n      const ret = parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n      if (ret.code === OK) {\n        const box = ret.box as BoxKind;\n        this.boxes.push(box);\n        this[box.type] = box;\n      } else {\n        return;\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\n\nexport class stz2Box extends FullBox {\n  static override readonly fourcc = 'stz2' as const;\n  box_name = 'CompactSampleSizeBox' as const;\n\n  sample_sizes: Array<number>;\n  reserved: number;\n  field_size: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.sample_sizes = [];\n    if (this.version === 0) {\n      this.reserved = stream.readUint24();\n      this.field_size = stream.readUint8();\n      const sample_count = stream.readUint32();\n      if (this.field_size === 4) {\n        for (let i = 0; i < sample_count; i += 2) {\n          const tmp = stream.readUint8();\n          this.sample_sizes[i] = (tmp >> 4) & 0xf;\n          this.sample_sizes[i + 1] = tmp & 0xf;\n        }\n      } else if (this.field_size === 8) {\n        for (let i = 0; i < sample_count; i++) {\n          this.sample_sizes[i] = stream.readUint8();\n        }\n      } else if (this.field_size === 16) {\n        for (let i = 0; i < sample_count; i++) {\n          this.sample_sizes[i] = stream.readUint16();\n        }\n      } else {\n        Log.error('BoxParser', 'Error in length field in stz2 box', stream.isofile);\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport type { SubSample } from '@types';\n\ninterface SampleInfo {\n  size: number;\n  sample_delta: number;\n  subsamples: Array<SubSample>;\n}\n\nexport class subsBox extends FullBox {\n  static override readonly fourcc = 'subs' as const;\n  box_name = 'SubSampleInformationBox' as const;\n\n  entries: Array<SampleInfo>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    const entry_count = stream.readUint32();\n    this.entries = [];\n    let subsample_count;\n    for (let i = 0; i < entry_count; i++) {\n      const sampleInfo = {} as SampleInfo;\n      this.entries[i] = sampleInfo;\n      sampleInfo.sample_delta = stream.readUint32();\n      sampleInfo.subsamples = [];\n      subsample_count = stream.readUint16();\n      if (subsample_count > 0) {\n        for (let j = 0; j < subsample_count; j++) {\n          const subsample = {} as SubSample;\n          sampleInfo.subsamples.push(subsample);\n          if (this.version === 1) {\n            subsample.size = stream.readUint32();\n          } else {\n            subsample.size = stream.readUint16();\n          }\n          subsample.priority = stream.readUint8();\n          subsample.discardable = stream.readUint8();\n          subsample.codec_specific_parameters = stream.readUint32();\n        }\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class taicBox extends FullBox {\n  static override readonly fourcc = 'taic' as const;\n  box_name = 'TAIClockInfoBox' as const;\n\n  time_uncertainty: number;\n  clock_resolution: number;\n  clock_drift_rate: number;\n  clock_type: number;\n\n  parse(stream: MultiBufferStream) {\n    this.time_uncertainty = stream.readUint64();\n    this.clock_resolution = stream.readUint32();\n    this.clock_drift_rate = stream.readInt32();\n    const reserved_byte = stream.readUint8();\n    this.clock_type = (reserved_byte & 0xc0) >> 6;\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { parseHex16 } from '#/parser';\n\nexport class tencBox extends FullBox {\n  static override readonly fourcc = 'tenc' as const;\n  box_name = 'TrackEncryptionBox' as const;\n\n  default_crypt_byte_block: number;\n  default_skip_byte_block: number;\n  default_isProtected: number;\n  default_Per_Sample_IV_Size: number;\n  default_KID: string;\n  default_constant_IV_size: number;\n  default_constant_IV: Uint8Array;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    stream.readUint8(); // reserved\n    if (this.version === 0) {\n      stream.readUint8();\n    } else {\n      const tmp = stream.readUint8();\n      this.default_crypt_byte_block = (tmp >> 4) & 0xf;\n      this.default_skip_byte_block = tmp & 0xf;\n    }\n    this.default_isProtected = stream.readUint8();\n    this.default_Per_Sample_IV_Size = stream.readUint8();\n    this.default_KID = parseHex16(stream);\n    if (this.default_isProtected === 1 && this.default_Per_Sample_IV_Size === 0) {\n      this.default_constant_IV_size = stream.readUint8();\n      this.default_constant_IV = stream.readUint8Array(this.default_constant_IV_size);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nclass TfraEntry {\n  time: number;\n  moof_offset: number;\n  traf_number: number;\n  trun_number: number;\n  sample_delta: number;\n}\n\nexport class tfraBox extends FullBox {\n  static override readonly fourcc = 'tfra' as const;\n  box_name = 'TrackFragmentRandomAccessBox' as const;\n\n  track_ID: number;\n  length_size_of_traf_num: number;\n  length_size_of_trun_num: number;\n  length_size_of_sample_num: number;\n  entries: Array<TfraEntry>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.track_ID = stream.readUint32();\n    stream.readUint24();\n    const tmp_byte = stream.readUint8();\n    this.length_size_of_traf_num = (tmp_byte >> 4) & 0x3;\n    this.length_size_of_trun_num = (tmp_byte >> 2) & 0x3;\n    this.length_size_of_sample_num = tmp_byte & 0x3;\n    this.entries = [];\n    const number_of_entries = stream.readUint32();\n    for (let i = 0; i < number_of_entries; i++) {\n      const entry = new TfraEntry();\n      if (this.version === 1) {\n        entry.time = stream.readUint64();\n        entry.moof_offset = stream.readUint64();\n      } else {\n        entry.time = stream.readUint32();\n        entry.moof_offset = stream.readUint32();\n      }\n      entry.traf_number = stream['readUint' + 8 * (this.length_size_of_traf_num + 1)]();\n      entry.trun_number = stream['readUint' + 8 * (this.length_size_of_trun_num + 1)]();\n      entry.sample_delta = stream['readUint' + 8 * (this.length_size_of_sample_num + 1)]();\n      this.entries.push(entry);\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tmaxBox extends Box {\n  static override readonly fourcc = 'tmax' as const;\n  box_name = 'hintmaxrelativetime' as const;\n\n  time: number;\n\n  parse(stream: MultiBufferStream) {\n    this.time = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tminBox extends Box {\n  static override readonly fourcc = 'tmin' as const;\n  box_name = 'hintminrelativetime' as const;\n\n  time: number;\n\n  parse(stream: MultiBufferStream) {\n    this.time = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class totlBox extends Box {\n  static override readonly fourcc = 'totl' as const;\n  box_name = 'hintBytesSent' as const;\n\n  bytessent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytessent = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tpayBox extends Box {\n  static override readonly fourcc = 'tpay' as const;\n  box_name = 'hintBytesSent' as const;\n\n  bytessent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytessent = stream.readUint32();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tpylBox extends Box {\n  static override readonly fourcc = 'tpyl' as const;\n  box_name = 'hintBytesSent' as const;\n\n  bytessent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytessent = stream.readUint64();\n  }\n}\n","import { TrackGroupTypeBox } from '#//box';\n\nexport class msrcTrackGroupTypeBox extends TrackGroupTypeBox {\n  static override readonly fourcc = 'msrc' as const;\n}\n","import { OK } from '#//constants';\nimport { Box, TrackReferenceTypeBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\nimport { parseOneBox } from '#/parser';\n\nexport class trefBox extends Box {\n  static override readonly fourcc = 'tref' as const;\n  box_name = 'TrackReferenceBox' as const;\n\n  static allowed_types = [\n    'hint',\n    'cdsc',\n    'font',\n    'hind',\n    'vdep',\n    'vplx',\n    'subt',\n    'thmb',\n    'auxl',\n    'cdtg',\n    'shsc',\n    'aest',\n  ] as const;\n\n  references: Array<TrackReferenceTypeBox> = [];\n\n  parse(stream: MultiBufferStream) {\n    while (stream.getPosition() < this.start + this.size) {\n      const ret = parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n      if (ret.code === OK) {\n        if (!trefBox.allowed_types.includes(ret.type as (typeof trefBox.allowed_types)[number])) {\n          Log.warn('BoxParser', `Unknown track reference type: '${ret.type}'`);\n        }\n\n        const box = new TrackReferenceTypeBox(ret.type, ret.size, ret.hdr_size, ret.start);\n        if (box.write === Box.prototype.write && box.type !== 'mdat') {\n          Log.info(\n            'BoxParser',\n            'TrackReference ' +\n              box.type +\n              ' box writing not yet implemented, keeping unparsed data in memory for later write',\n          );\n          box.parseDataAndRewind(stream);\n        }\n        box.parse(stream);\n        this.references.push(box);\n      } else {\n        return;\n      }\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { OK } from '#/constants';\nimport { parseOneBox } from '#/parser';\n\nexport class trepBox extends FullBox {\n  static override readonly fourcc = 'trep' as const;\n  box_name = 'TrackExtensionPropertiesBox' as const;\n\n  track_ID: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.track_ID = stream.readUint32();\n    this.boxes = [];\n    while (stream.getPosition() < this.start + this.size) {\n      const ret = parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n      if (ret.code === OK) {\n        const box = ret.box;\n        this.boxes.push(box);\n      } else {\n        return;\n      }\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class trpyBox extends Box {\n  static override readonly fourcc = 'trpy' as const;\n  box_name = 'hintBytesSent' as const;\n\n  bytessent: number;\n\n  parse(stream: MultiBufferStream) {\n    this.bytessent = stream.readUint64();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tselBox extends FullBox {\n  static override readonly fourcc = 'tsel' as const;\n  box_name = 'TrackSelectionBox' as const;\n\n  switch_group: number;\n  attribute_list: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.switch_group = stream.readUint32();\n    const count = (this.size - this.hdr_size - 4) / 4;\n    this.attribute_list = [];\n    for (let i = 0; i < count; i++) {\n      this.attribute_list[i] = stream.readUint32();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class txtcBox extends FullBox {\n  static override readonly fourcc = 'txtc' as const;\n  box_name = 'TextConfigBox' as const;\n\n  config: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.config = stream.readCString();\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tycoBox extends Box {\n  static override readonly fourcc = 'tyco' as const;\n  box_name = 'TypeCombinationBox' as const;\n\n  compatible_brands: Array<string>;\n\n  parse(stream: MultiBufferStream) {\n    const count = (this.size - this.hdr_size) / 4;\n    this.compatible_brands = [];\n    for (let i = 0; i < count; i++) {\n      this.compatible_brands[i] = stream.readString(4);\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class udesBox extends FullBox {\n  static override readonly fourcc = 'udes' as const;\n  box_name = 'UserDescriptionProperty' as const;\n\n  lang: string;\n  name: string;\n  description: string;\n  tags: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.lang = stream.readCString();\n    this.name = stream.readCString();\n    this.description = stream.readCString();\n    this.tags = stream.readCString();\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class uncCBox extends FullBox {\n  static override readonly fourcc = 'uncC' as const;\n  box_name = 'UncompressedFrameConfigBox' as const;\n\n  profile: string;\n  component_count: number;\n  component_index: Array<number>;\n  component_bit_depth_minus_one: Array<number>;\n  component_format: Array<number>;\n  component_align_size: Array<number>;\n  sampling_type: number;\n  interleave_type: number;\n  block_size: number;\n  component_little_endian: number;\n  block_pad_lsb: number;\n  block_little_endian: number;\n  block_reversed: number;\n  pad_unknown: number;\n  pixel_size: number;\n  row_align_size: number;\n  tile_align_size: number;\n  num_tile_cols_minus_one: number;\n  num_tile_rows_minus_one: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.profile = stream.readString(4);\n    if (this.version === 1) {\n      // Nothing - just the profile\n    } else if (this.version === 0) {\n      this.component_count = stream.readUint32();\n      this.component_index = [];\n      this.component_bit_depth_minus_one = [];\n      this.component_format = [];\n      this.component_align_size = [];\n      for (let i = 0; i < this.component_count; i++) {\n        this.component_index.push(stream.readUint16());\n        this.component_bit_depth_minus_one.push(stream.readUint8());\n        this.component_format.push(stream.readUint8());\n        this.component_align_size.push(stream.readUint8());\n      }\n      this.sampling_type = stream.readUint8();\n      this.interleave_type = stream.readUint8();\n      this.block_size = stream.readUint8();\n      const flags = stream.readUint8();\n      this.component_little_endian = (flags >> 7) & 0x1;\n      this.block_pad_lsb = (flags >> 6) & 0x1;\n      this.block_little_endian = (flags >> 5) & 0x1;\n      this.block_reversed = (flags >> 4) & 0x1;\n      this.pad_unknown = (flags >> 3) & 0x1;\n      this.pixel_size = stream.readUint32();\n      this.row_align_size = stream.readUint32();\n      this.tile_align_size = stream.readUint32();\n      this.num_tile_cols_minus_one = stream.readUint32();\n      this.num_tile_rows_minus_one = stream.readUint32();\n    }\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class urnBox extends FullBox {\n  static override readonly fourcc = 'urn ' as const;\n  box_name = 'DataEntryUrnBox' as const;\n\n  name: string;\n  location: string;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    this.name = stream.readCString();\n    if (this.size - this.hdr_size - this.name.length - 1 > 0) {\n      this.location = stream.readCString();\n    }\n  }\n\n  /** @bundle writing/urn.js */\n  write(stream: MultiBufferStream) {\n    this.version = 0;\n    this.flags = 0;\n    this.size = this.name.length + 1 + (this.location ? this.location.length + 1 : 0);\n    this.writeHeader(stream);\n    stream.writeCString(this.name);\n    if (this.location) {\n      stream.writeCString(this.location);\n    }\n  }\n}\n","import { Box } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class vttCBox extends Box {\n  static override readonly fourcc = 'vttC' as const;\n  box_name = 'WebVTTConfigurationBox' as const;\n\n  text: string;\n\n  parse(stream: MultiBufferStream) {\n    this.text = stream.readString(this.size - this.hdr_size);\n  }\n}\n","import { FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class vvnCBox extends FullBox {\n  static override readonly fourcc = 'vvnC' as const;\n  box_name = 'VvcNALUConfigBox' as const;\n\n  lengthSizeMinusOne: number;\n\n  parse(stream: MultiBufferStream) {\n    this.parseFullHeader(stream);\n    // VvcNALUConfigBox\n    const tmp = stream.readUint8();\n    this.lengthSizeMinusOne = tmp & 0x3;\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class alstSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'alst' as const;\n\n  first_output_sample: number;\n  sample_offset: Array<number>;\n  num_output_samples: Array<number>;\n  num_total_samples: Array<number>;\n\n  parse(stream: MultiBufferStream) {\n    const roll_count = stream.readUint16();\n    this.first_output_sample = stream.readUint16();\n    this.sample_offset = [];\n    for (let i = 0; i < roll_count; i++) {\n      this.sample_offset[i] = stream.readUint32();\n    }\n    const remaining = this.description_length - 4 - 4 * roll_count;\n    this.num_output_samples = [];\n    this.num_total_samples = [];\n    for (let i = 0; i < remaining / 4; i++) {\n      this.num_output_samples[i] = stream.readUint16();\n      this.num_total_samples[i] = stream.readUint16();\n    }\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class avllSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'avll' as const;\n\n  layerNumber: number;\n  accurateStatisticsFlag: number;\n  avgBitRate: number;\n  avgFrameRate: number;\n\n  parse(stream: MultiBufferStream) {\n    this.layerNumber = stream.readUint8();\n    this.accurateStatisticsFlag = stream.readUint8();\n    this.avgBitRate = stream.readUint16();\n    this.avgFrameRate = stream.readUint16();\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class avssSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'avss' as const;\n\n  subSequenceIdentifier: number;\n  layerNumber: number;\n  durationFlag: number;\n  avgRateFlag: number;\n  duration: number;\n  accurateStatisticsFlag: number;\n  avgBitRate: number;\n  avgFrameRate: number;\n  dependency: Array<{\n    subSeqDirectionFlag: number;\n    layerNumber: number;\n    subSequenceIdentifier: number;\n  }>;\n\n  parse(stream: MultiBufferStream) {\n    this.subSequenceIdentifier = stream.readUint16();\n    this.layerNumber = stream.readUint8();\n    const tmp_byte = stream.readUint8();\n    this.durationFlag = tmp_byte >> 7;\n    this.avgRateFlag = (tmp_byte >> 6) & 0x1;\n    if (this.durationFlag) {\n      this.duration = stream.readUint32();\n    }\n    if (this.avgRateFlag) {\n      this.accurateStatisticsFlag = stream.readUint8();\n      this.avgBitRate = stream.readUint16();\n      this.avgFrameRate = stream.readUint16();\n    }\n    this.dependency = [];\n    const numReferences = stream.readUint8();\n    for (let i = 0; i < numReferences; i++) {\n      this.dependency.push({\n        subSeqDirectionFlag: stream.readUint8(),\n        layerNumber: stream.readUint8(),\n        subSequenceIdentifier: stream.readUint16(),\n      });\n    }\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\n\nexport class dtrtSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'dtrt' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\n\nexport class mvifSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'mvif' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class prolSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'prol' as const;\n\n  roll_distance: number;\n\n  parse(stream: MultiBufferStream) {\n    this.roll_distance = stream.readInt16();\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class rapSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'rap ' as const;\n\n  num_leading_samples_known: number;\n  num_leading_samples: number;\n\n  parse(stream: MultiBufferStream) {\n    const tmp_byte = stream.readUint8();\n    this.num_leading_samples_known = tmp_byte >> 7;\n    this.num_leading_samples = tmp_byte & 0x7f;\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\n\nexport class rashSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'rash' as const;\n\n  operation_point_count: number;\n  target_rate_share: number | Array<number>;\n  available_bitrate: Array<number>;\n  maximum_bitrate: number;\n  minimum_bitrate: number;\n  discard_priority: number;\n\n  parse(stream: MultiBufferStream) {\n    this.operation_point_count = stream.readUint16();\n    if (\n      this.description_length !==\n      2 + (this.operation_point_count === 1 ? 2 : this.operation_point_count * 6) + 9\n    ) {\n      Log.warn('BoxParser', 'Mismatch in ' + this.grouping_type + ' sample group length');\n      this.data = stream.readUint8Array(this.description_length - 2);\n    } else {\n      if (this.operation_point_count === 1) {\n        this.target_rate_share = stream.readUint16();\n      } else {\n        this.target_rate_share = [];\n        this.available_bitrate = [];\n        for (let i = 0; i < this.operation_point_count; i++) {\n          this.available_bitrate[i] = stream.readUint32();\n          this.target_rate_share[i] = stream.readUint16();\n        }\n      }\n      this.maximum_bitrate = stream.readUint32();\n      this.minimum_bitrate = stream.readUint32();\n      this.discard_priority = stream.readUint8();\n    }\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class rollSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'roll' as const;\n\n  roll_distance: number;\n\n  parse(stream: MultiBufferStream) {\n    this.roll_distance = stream.readInt16();\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\n\nexport class scifSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'scif' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { Log } from '#/log';\n\nexport class scnmSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'scnm' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { SampleGroupEntry } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { parseHex16 } from '#/parser';\n\nexport class seigSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'seig' as const;\n\n  reserved: number;\n  crypt_byte_block: number;\n  skip_byte_block: number;\n  isProtected: number;\n  Per_Sample_IV_Size: number;\n  KID: string;\n  constant_IV_size: number;\n  constant_IV: number | Uint8Array;\n\n  parse(stream: MultiBufferStream) {\n    this.reserved = stream.readUint8();\n    const tmp = stream.readUint8();\n    this.crypt_byte_block = tmp >> 4;\n    this.skip_byte_block = tmp & 0xf;\n    this.isProtected = stream.readUint8();\n    this.Per_Sample_IV_Size = stream.readUint8();\n    this.KID = parseHex16(stream);\n    this.constant_IV_size = 0;\n    this.constant_IV = 0;\n    if (this.isProtected === 1 && this.Per_Sample_IV_Size === 0) {\n      this.constant_IV_size = stream.readUint8();\n      this.constant_IV = stream.readUint8Array(this.constant_IV_size);\n    }\n  }\n}\n","import { SampleGroupEntry } from '#//box';\nimport { Log } from '#//log';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class stsaSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'stsa' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { SampleGroupEntry } from '#//box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class syncSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'sync' as const;\n\n  NAL_unit_type: number;\n\n  parse(stream: MultiBufferStream) {\n    const tmp_byte = stream.readUint8();\n    this.NAL_unit_type = tmp_byte & 0x3f;\n  }\n}\n","import { SampleGroupEntry } from '#//box';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class teleSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'tele' as const;\n\n  level_independently_decodable: number;\n\n  parse(stream: MultiBufferStream) {\n    const tmp_byte = stream.readUint8();\n    this.level_independently_decodable = tmp_byte >> 7;\n  }\n}\n","import { SampleGroupEntry } from '#//box';\nimport { Log } from '#//log';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tsasSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'tsas' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { SampleGroupEntry } from '#//box';\nimport { Log } from '#//log';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class tsclSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'tscl' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { SampleGroupEntry } from '#//box';\nimport { Log } from '#//log';\nimport type { MultiBufferStream } from '#/buffer';\n\nexport class viprSampleGroupEntry extends SampleGroupEntry {\n  static grouping_type = 'vipr' as const;\n\n  parse(_stream: MultiBufferStream) {\n    Log.warn('BoxParser', 'Sample Group type: ' + this.grouping_type + ' not fully parsed');\n  }\n}\n","import { Box, FullBox } from '#/box';\nimport type { MultiBufferStream } from '#/buffer';\nimport { parseHex16 } from '#/parser';\n\nclass UUIDBox extends Box {\n  static override readonly fourcc = 'uuid' as const;\n  static uuid?: string;\n}\n\nclass UUIDFullBox extends FullBox {\n  static override readonly fourcc = 'uuid' as const;\n  static uuid?: string;\n}\n\n// piff\nexport class piffLsmBox extends UUIDFullBox {\n  static uuid = 'a5d40b30e81411ddba2f0800200c9a66' as const;\n  box_name = 'LiveServerManifestBox' as const;\n\n  LiveServerManifest: string;\n\n  parse(stream: MultiBufferStream): void {\n    this.parseFullHeader(stream);\n    this.LiveServerManifest = stream\n      .readString(this.size - this.hdr_size)\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#039;');\n  }\n}\n\nexport class piffPsshBox extends UUIDFullBox {\n  static uuid = 'd08a4f1810f34a82b6c832d8aba183d3' as const;\n  box_name = 'PiffProtectionSystemSpecificHeaderBox' as const;\n\n  system_id: string;\n\n  parse(stream: MultiBufferStream): void {\n    this.parseFullHeader(stream);\n    this.system_id = parseHex16(stream);\n    const datasize = stream.readUint32();\n    if (datasize > 0) {\n      this.data = stream.readUint8Array(datasize);\n    }\n  }\n}\n\nexport class piffSencBox extends UUIDFullBox {\n  static uuid = 'a2394f525a9b4f14a2446c427c648df4' as const;\n  box_name = 'PiffSampleEncryptionBox' as const;\n}\n\nexport class piffTencBox extends UUIDFullBox {\n  static uuid = '8974dbce7be74c5184f97148f9882554' as const;\n  box_name = 'PiffTrackEncryptionBox' as const;\n\n  default_AlgorithmID: number;\n  default_IV_size: number;\n  default_KID: string;\n\n  parse(stream: MultiBufferStream): void {\n    this.parseFullHeader(stream);\n    this.default_AlgorithmID = stream.readUint24();\n    this.default_IV_size = stream.readUint8();\n    this.default_KID = parseHex16(stream);\n  }\n}\n\nexport class piffTfrfBox extends UUIDFullBox {\n  static uuid = 'd4807ef2ca3946958e5426cb9e46a79f' as const;\n  box_name = 'TfrfBox' as const;\n\n  fragment_count: number;\n  entries: Array<{ absolute_time: number; absolute_duration: number }>;\n\n  parse(stream: MultiBufferStream): void {\n    this.parseFullHeader(stream);\n    this.fragment_count = stream.readUint8();\n    this.entries = [];\n\n    for (let i = 0; i < this.fragment_count; i++) {\n      let absolute_time = 0;\n      let absolute_duration = 0;\n\n      if (this.version === 1) {\n        absolute_time = stream.readUint64();\n        absolute_duration = stream.readUint64();\n      } else {\n        absolute_time = stream.readUint32();\n        absolute_duration = stream.readUint32();\n      }\n\n      this.entries.push({\n        absolute_time,\n        absolute_duration,\n      });\n    }\n  }\n}\n\nexport class piffTfxdBox extends UUIDFullBox {\n  static uuid = '6d1d9b0542d544e680e2141daff757b2' as const;\n  box_name = 'TfxdBox' as const;\n\n  absolute_time: number;\n  duration: number;\n\n  parse(stream: MultiBufferStream): void {\n    this.parseFullHeader(stream);\n    if (this.version === 1) {\n      this.absolute_time = stream.readUint64();\n      this.duration = stream.readUint64();\n    } else {\n      this.absolute_time = stream.readUint32();\n      this.duration = stream.readUint32();\n    }\n  }\n}\n\n// GIMI\nexport class ItemContentIDPropertyBox extends UUIDBox {\n  static uuid = '261ef3741d975bbaacbd9d2c8ea73522' as const;\n  box_name = 'ItemContentIDProperty' as const;\n\n  content_id: string;\n\n  parse(stream: MultiBufferStream): void {\n    this.content_id = stream.readCString();\n  }\n}\n\nexport class ItemComponentContentIDPropertyBox extends UUIDBox {\n  static uuid = '9db9dd6e373c5a4e811021fc83a911fd' as const;\n  box_name = 'ItemComponentContentIDProperty' as const;\n\n  content_ids: Array<string>;\n  number_of_components: number;\n\n  parse(stream: MultiBufferStream): void {\n    this.number_of_components = stream.readUint32();\n\n    this.content_ids = [];\n    for (let i = 0; i < this.number_of_components; i++) {\n      const content_id: string = stream.readCString();\n      this.content_ids.push(content_id);\n    }\n  }\n}\n","export * from '#/boxes/a1lx';\nexport * from '#/boxes/a1op';\nexport * from '#/boxes/auxC';\nexport * from '#/boxes/av1C';\nexport * from '#/boxes/avcC';\nexport * from '#/boxes/btrt';\nexport * from '#/boxes/ccst';\nexport * from '#/boxes/cdef';\nexport * from '#/boxes/clap';\nexport * from '#/boxes/clli';\nexport * from '#/boxes/cmex';\nexport * from '#/boxes/cmin';\nexport * from '#/boxes/cmpC';\nexport * from '#/boxes/cmpd';\nexport * from '#/boxes/co64';\nexport * from '#/boxes/CoLL';\nexport * from '#/boxes/colr';\nexport * from '#/boxes/covi';\nexport * from '#/boxes/cprt';\nexport * from '#/boxes/csch';\nexport * from '#/boxes/cslg';\nexport * from '#/boxes/ctts';\nexport * from '#/boxes/dac3';\nexport * from '#/boxes/dec3';\nexport * from '#/boxes/defaults';\nexport * from '#/boxes/dfLa';\nexport * from '#/boxes/dimm';\nexport * from '#/boxes/dmax';\nexport * from '#/boxes/dmed';\nexport * from '#/boxes/dOps';\nexport * from '#/boxes/dref';\nexport * from '#/boxes/drep';\nexport * from '#/boxes/elng';\nexport * from '#/boxes/elst';\nexport * from '#/boxes/emsg';\nexport * from '#/boxes/EntityToGroup';\nexport * from '#/boxes/esds';\nexport * from '#/boxes/fiel';\nexport * from '#/boxes/frma';\nexport * from '#/boxes/ftyp';\nexport * from '#/boxes/hdlr';\nexport * from '#/boxes/hvcC';\nexport * from '#/boxes/iinf';\nexport * from '#/boxes/iloc';\nexport * from '#/boxes/imir';\nexport * from '#/boxes/infe';\nexport * from '#/boxes/ipma';\nexport * from '#/boxes/iref';\nexport * from '#/boxes/irot';\nexport * from '#/boxes/ispe';\nexport * from '#/boxes/itai';\nexport * from '#/boxes/kind';\nexport * from '#/boxes/leva';\nexport * from '#/boxes/lhvC';\nexport * from '#/boxes/lsel';\nexport * from '#/boxes/lvcC';\nexport * from '#/boxes/maxr';\nexport * from '#/boxes/mdcv';\nexport * from '#/boxes/mdhd';\nexport * from '#/boxes/mehd';\nexport * from '#/boxes/meta';\nexport * from '#/boxes/mfhd';\nexport * from '#/boxes/mfro';\nexport * from '#/boxes/mskC';\nexport * from '#/boxes/mvhd';\nexport * from '#/boxes/npck';\nexport * from '#/boxes/nump';\nexport * from '#/boxes/padb';\nexport * from '#/boxes/pasp';\nexport * from '#/boxes/payl';\nexport * from '#/boxes/payt';\nexport * from '#/boxes/pdin';\nexport * from '#/boxes/pitm';\nexport * from '#/boxes/pixi';\nexport * from '#/boxes/pmax';\nexport * from '#/boxes/prdi';\nexport * from '#/boxes/prfr';\nexport * from '#/boxes/prft';\nexport * from '#/boxes/pssh';\nexport * from '#/boxes/qt/clef';\nexport * from '#/boxes/qt/data';\nexport * from '#/boxes/qt/enof';\nexport * from '#/boxes/qt/ilst';\nexport * from '#/boxes/qt/keys';\nexport * from '#/boxes/qt/prof';\nexport * from '#/boxes/qt/tapt';\nexport * from '#/boxes/qt/wave';\nexport * from '#/boxes/rtp';\nexport * from '#/boxes/saio';\nexport * from '#/boxes/saiz';\nexport * from '#/boxes/sampleentries';\nexport * from '#/boxes/sbgp';\nexport * from '#/boxes/sbpm';\nexport * from '#/boxes/schm';\nexport * from '#/boxes/sdp';\nexport * from '#/boxes/sdtp';\nexport * from '#/boxes/senc';\nexport * from '#/boxes/sgpd';\nexport * from '#/boxes/sidx';\nexport * from '#/boxes/SmDm';\nexport * from '#/boxes/smhd';\nexport * from '#/boxes/srat';\nexport * from '#/boxes/ssix';\nexport * from '#/boxes/stco';\nexport * from '#/boxes/stdp';\nexport * from '#/boxes/sthd';\nexport * from '#/boxes/stri';\nexport * from '#/boxes/stsc';\nexport * from '#/boxes/stsd';\nexport * from '#/boxes/stsg';\nexport * from '#/boxes/stsh';\nexport * from '#/boxes/stss';\nexport * from '#/boxes/stsz';\nexport * from '#/boxes/stts';\nexport * from '#/boxes/stvi';\nexport * from '#/boxes/styp';\nexport * from '#/boxes/stz2';\nexport * from '#/boxes/subs';\nexport * from '#/boxes/taic';\nexport * from '#/boxes/tenc';\nexport * from '#/boxes/tfdt';\nexport * from '#/boxes/tfhd';\nexport * from '#/boxes/tfra';\nexport * from '#/boxes/tkhd';\nexport * from '#/boxes/tmax';\nexport * from '#/boxes/tmin';\nexport * from '#/boxes/totl';\nexport * from '#/boxes/tpay';\nexport * from '#/boxes/tpyl';\nexport * from '#/boxes/trackgroups/msrc';\nexport * from '#/boxes/tref';\nexport * from '#/boxes/trep';\nexport * from '#/boxes/trex';\nexport * from '#/boxes/trpy';\nexport * from '#/boxes/trun';\nexport * from '#/boxes/tsel';\nexport * from '#/boxes/txtC';\nexport * from '#/boxes/tyco';\nexport * from '#/boxes/udes';\nexport * from '#/boxes/uncC';\nexport * from '#/boxes/url';\nexport * from '#/boxes/urn';\nexport * from '#/boxes/vmhd';\nexport * from '#/boxes/vpcC';\nexport * from '#/boxes/vttC';\nexport * from '#/boxes/vvcC';\nexport * from '#/boxes/vvnC';\n\nexport * from '#/boxes/samplegroups/alst';\nexport * from '#/boxes/samplegroups/avll';\nexport * from '#/boxes/samplegroups/avss';\nexport * from '#/boxes/samplegroups/dtrt';\nexport * from '#/boxes/samplegroups/mvif';\nexport * from '#/boxes/samplegroups/prol';\nexport * from '#/boxes/samplegroups/rap';\nexport * from '#/boxes/samplegroups/rash';\nexport * from '#/boxes/samplegroups/roll';\nexport * from '#/boxes/samplegroups/scif';\nexport * from '#/boxes/samplegroups/scnm';\nexport * from '#/boxes/samplegroups/seig';\nexport * from '#/boxes/samplegroups/stsa';\nexport * from '#/boxes/samplegroups/sync';\nexport * from '#/boxes/samplegroups/tele';\nexport * from '#/boxes/samplegroups/tsas';\nexport * from '#/boxes/samplegroups/tscl';\nexport * from '#/boxes/samplegroups/vipr';\n\nexport * from '#/boxes/uuid';\n","export * from '#/box';\nexport * from '#/box-diff';\nexport * from '#/boxes/sampleentries/base';\nexport * from '#/buffer';\nexport * from '#/create-file';\nexport * from '#/DataStream';\nexport * from '#/descriptor';\nexport * from '#/isofile';\nexport * from '#/log';\nexport * from '#/mp4boxbuffer';\nexport * from '#/text-mp4';\nexport * from './types';\nimport * as DESCRIPTORS from '#/descriptor';\nimport { registerBoxes, registerDescriptors } from '#/registry';\nimport * as BOXES from './all-boxes';\n\nexport const BoxParser = registerBoxes(BOXES);\n\nregisterDescriptors(DESCRIPTORS);\n"],"mappings":"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"}