@carbonenginejs/runtime-resource 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/formats/bnk/CjsBnkFormat.js +12 -2
  2. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  3. package/dist/formats/bnk/core/graph.js +3 -6
  4. package/dist/formats/bnk/core/graph.js.map +1 -1
  5. package/dist/formats/bnk/core/helpers.js +53 -11
  6. package/dist/formats/bnk/core/helpers.js.map +1 -1
  7. package/dist/formats/bnk/core/sfxNodes.js +532 -0
  8. package/dist/formats/bnk/core/sfxNodes.js.map +1 -0
  9. package/dist/formats/bnk/core/soundbanksInfo.js +59 -51
  10. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
  11. package/dist/formats/gr2/CjsGr2Format.js +256 -13
  12. package/dist/formats/gr2/CjsGr2Format.js.map +1 -1
  13. package/dist/formats/gr2/core/helpers.js +15 -15
  14. package/dist/formats/gr2/core/helpers.js.map +1 -1
  15. package/dist/formats/gr2/core/json.js +1 -1
  16. package/dist/formats/gr2/core/json.js.map +1 -1
  17. package/dist/formats/gr2/core/targets.js +1 -1
  18. package/dist/formats/gr2/core/targets.js.map +1 -1
  19. package/dist/formats/gr2/index.js +0 -1
  20. package/dist/formats/gr2/index.js.map +1 -1
  21. package/dist/formats/hlsl/core/analysis.js +1 -1
  22. package/dist/formats/hlsl/index.js +1 -0
  23. package/dist/formats/hlsl/index.js.map +1 -1
  24. package/dist/formats/index.js +3 -6
  25. package/dist/formats/index.js.map +1 -1
  26. package/dist/formats/webgl/core/cewg/binary.js +3 -3
  27. package/dist/formats/webgl/core/cewg/binary.js.map +1 -1
  28. package/dist/formats/webgl/core/effectPackage.js +4 -1
  29. package/dist/formats/webgl/core/effectPackage.js.map +1 -1
  30. package/dist/formats/webgl/core/errors.js +3 -3
  31. package/dist/formats/webgl/core/errors.js.map +1 -1
  32. package/docs/formats/dxbc/README.md +68 -0
  33. package/docs/formats/dxbc/architecture.md +80 -0
  34. package/docs/formats/dxbc/reference/api.md +77 -0
  35. package/docs/formats/dxbc/reference/classes/README.md +76 -0
  36. package/docs/formats/dxbc/reference/decoded-output.md +122 -0
  37. package/docs/formats/gr2.md +3 -4
  38. package/docs/formats/hlsl/README.md +54 -0
  39. package/docs/formats/hlsl/architecture.md +67 -0
  40. package/docs/formats/hlsl/guides/hydrating-json-output.md +62 -0
  41. package/docs/formats/hlsl/guides/reading-effects.md +64 -0
  42. package/docs/formats/hlsl/reference/advanced-analysis.md +66 -0
  43. package/docs/formats/hlsl/reference/api.md +97 -0
  44. package/docs/formats/hlsl/reference/classes/README.md +16 -0
  45. package/docs/formats/hlsl/reference/classes/carbon-compatibility.md +66 -0
  46. package/docs/formats/hlsl/reference/classes/public-api.md +26 -0
  47. package/docs/formats/hlsl/reference/classes/tr2-effect-model.md +150 -0
  48. package/docs/formats/hlsl/reference/json-graph.md +100 -0
  49. package/docs/formats/hlsl/reference/portable-reflection.md +141 -0
  50. package/docs/formats/provenance.md +9 -4
  51. package/docs/formats/webgl/README.md +57 -0
  52. package/docs/formats/webgl/architecture.md +70 -0
  53. package/docs/formats/webgl/carbon-constant-layouts.md +326 -0
  54. package/docs/formats/webgl/decl-io.md +1234 -0
  55. package/docs/formats/webgl/effect-reflection.md +127 -0
  56. package/docs/formats/webgl/memory-structured.md +871 -0
  57. package/docs/formats/webgl/reference/classes/README.md +96 -0
  58. package/docs/formats/webgl/texture-sample.md +964 -0
  59. package/docs/formats/webgpu/README.md +81 -0
  60. package/docs/formats/webgpu/architecture.md +93 -0
  61. package/docs/formats/webgpu/formats/cewgpu.md +479 -0
  62. package/docs/formats/webgpu/guides/effect-packaging.md +199 -0
  63. package/docs/formats/webgpu/reference/api.md +197 -0
  64. package/docs/formats/webgpu/reference/classes/README.md +66 -0
  65. package/docs/formats/webgpu/reference/wgsl-compatibility.md +1442 -0
  66. package/docs/formats/wwise.md +16 -1
  67. package/docs/reference/classes/formats.md +10 -10
  68. package/format-notices/bnk/NOTICE +5 -4
  69. package/format-notices/webgl/NOTICE +1 -1
  70. package/package.json +1 -1
  71. package/dist/formats/gr2/core/CjsFormatGr2.js +0 -273
  72. package/dist/formats/gr2/core/CjsFormatGr2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"targets.js","sources":["../../../../../src/formats/gr2/core/targets.js"],"sourcesContent":["export const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nconst CHANNELS = Object.freeze([\n { name: \"position\", usage: \"Position\", elementCount: 3 },\n { name: \"normal\", usage: \"Normal\", elementCount: 3 },\n { name: \"tangent\", usage: \"Tangent\", elementCount: 4, flexible: true },\n { name: \"binormal\", usage: \"Binormal\", elementCount: 4, flexible: true },\n { name: \"texcoord0\", usage: \"TexCoord\", elementCount: 2, usageIndex: 0 },\n { name: \"texcoord1\", usage: \"TexCoord\", elementCount: 2, usageIndex: 1 },\n { name: \"color0\", usage: \"Color\", elementCount: 4, usageIndex: 0 },\n { name: \"blendIndice\", usage: \"BoneIndices\", elementCount: 4, usageIndex: 0, type: \"UInt16\" },\n { name: \"blendWeight\", usage: \"BoneWeights\", elementCount: 4, usageIndex: 0 }\n]);\n\n/**\n * Builds a CMF document from normalized shared geometry for the GR2\n * shared-geometry adapter.\n */\nexport function buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: null,\n meshes: (root.meshes ?? []).map((mesh) => buildMesh(mesh)),\n skeletons: [],\n animations: []\n };\n}\n\nfunction buildMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n indices = mesh.indices ?? [],\n boneBindings = (mesh.boneBindings ?? []).map((binding) => buildBoneBinding(binding)),\n affectedByBones = boneBindings.length > 0,\n morphTargets = buildMorphTargets(mesh),\n affectedByMorphTargets = morphTargets.targets.length > 0,\n vertexCount = vertexCountOf(vertex),\n stride = estimateVertexStride(vertex, vertexCount);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * bytesPerIndex(indices), stride: bytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas: indices.map((group) => ({\n name: group.name ?? \"\",\n bounds: bounds(mesh),\n bones: [],\n affectedByBones,\n affectedByMorphTargets\n })),\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: bounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: null,\n vertex,\n indices\n };\n}\n\nfunction buildMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n baseVertex = mesh.vertex ?? {},\n vertexCount = vertexCountOf(baseVertex),\n specs = morphChannelSpecs(targets, baseVertex, vertexCount),\n decl = buildDeclFromSpecs(specs),\n stride = estimateStrideFromDecl(decl),\n vertices = targets.map((target) => canonicalMorphVertex(baseVertex, target, specs, vertexCount));\n\n return {\n decl,\n targets: targets.map((target, index) => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? maxDisplacement(vertices[index].position ?? [])\n })),\n lods: vertices.map((vertex) => ({\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex\n }))\n };\n}\n\nfunction morphChannelSpecs(targets, baseVertex, vertexCount)\n{\n return CHANNELS.flatMap((spec) =>\n {\n let elementCount = 0;\n for (const target of targets)\n {\n const\n vertex = target.vertex ?? {},\n values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n const count = targetSourceCount(target, vertexCount);\n elementCount = Math.max(elementCount, channelWidth(spec, vertex, count));\n }\n if (!elementCount) return [];\n if ((baseVertex[spec.name] ?? []).length)\n {\n elementCount = Math.max(elementCount, channelWidth(spec, baseVertex, vertexCount));\n }\n return [ { ...spec, elementCount } ];\n });\n}\n\nfunction canonicalMorphVertex(baseVertex, target, specs, vertexCount)\n{\n const\n sourceVertex = target.vertex ?? {},\n vertexIndices = Array.isArray(target.vertexIndices) ? target.vertexIndices : null,\n sourceCount = targetSourceCount(target, vertexCount),\n result = {};\n\n for (const spec of specs)\n {\n const\n source = sourceVertex[spec.name] ?? [],\n output = new Array(vertexCount * spec.elementCount).fill(0),\n sourceWidth = channelWidth(spec, sourceVertex, sourceCount),\n base = baseVertex[spec.name] ?? [],\n baseWidth = channelWidth(spec, baseVertex, vertexCount),\n rowCount = Math.min(sourceCount, sourceWidth ? Math.floor(source.length / sourceWidth) : 0);\n\n for (let row = 0; row < rowCount; row++)\n {\n const vertexIndex = vertexIndices ? vertexIndices[row] : row;\n if (!Number.isInteger(vertexIndex) || vertexIndex < 0 || vertexIndex >= vertexCount) continue;\n\n const count = Math.min(sourceWidth, spec.elementCount);\n for (let component = 0; component < count; component++)\n {\n const\n sourceValue = source[row * sourceWidth + component],\n baseValue = base[vertexIndex * baseWidth + component] ?? 0;\n output[vertexIndex * spec.elementCount + component] = target.dataIsDeltas === false\n ? sourceValue - baseValue\n : sourceValue;\n }\n }\n result[spec.name] = output;\n }\n\n return result;\n}\n\nfunction targetSourceCount(target, fallbackCount)\n{\n if (Array.isArray(target.vertexIndices)) return target.vertexIndices.length;\n return vertexCountOf(target.vertex ?? {}, fallbackCount);\n}\n\nfunction buildBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildDecl(vertex, vertexCount = vertexCountOf(vertex))\n{\n const specs = CHANNELS\n .filter((spec) => Array.isArray(vertex[spec.name]) && vertex[spec.name].length > 0)\n .map((spec) => ({ ...spec, elementCount: channelWidth(spec, vertex, vertexCount) }));\n return buildDeclFromSpecs(specs);\n}\n\nfunction buildDeclFromSpecs(specs)\n{\n const decl = [];\n let offset = 0;\n for (const spec of specs)\n {\n const { usage, usageIndex = 0, type = \"Float32\", elementCount } = spec;\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction channelWidth(spec, vertex, vertexCount)\n{\n const values = vertex[spec.name] ?? [];\n if (spec.flexible && vertexCount > 0 && values.length % vertexCount === 0)\n {\n const width = values.length / vertexCount;\n if (width === 3 || width === 4) return width;\n }\n return spec.elementCount;\n}\n\nfunction vertexCountOf(vertex, expectedCount = 0)\n{\n if (expectedCount > 0)\n {\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (values.length && values.length % expectedCount === 0) return expectedCount;\n }\n }\n\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n if (spec.flexible)\n {\n if (values.length % spec.elementCount === 0) return values.length / spec.elementCount;\n if (values.length % 3 === 0) return values.length / 3;\n }\n const count = values.length / spec.elementCount;\n if (Number.isInteger(count)) return count;\n }\n return 0;\n}\n\nfunction estimateVertexStride(vertex, vertexCount)\n{\n return estimateStrideFromDecl(buildDecl(vertex, vertexCount));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);\n}\n\nfunction elementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices)\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction bytesPerIndex(indices)\n{\n return indices.some((group) => group.bytesPerIndex === 4 || (group.faces ?? []).some((index) => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices, areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++) first += Math.floor((indices[i].faces ?? []).length / 3);\n return first;\n}\n\nfunction bounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\nfunction maxDisplacement(deltaPositions)\n{\n let max = 0;\n for (let i = 0; i + 2 < deltaPositions.length; i += 3)\n {\n max = Math.max(max, Math.hypot(\n deltaPositions[i],\n deltaPositions[i + 1],\n deltaPositions[i + 2]\n ));\n }\n return max;\n}\n\n/**\n * Hydrates a CMF document through the configured runtime-class resolver for the\n * GR2 shared-geometry adapter.\n */\nexport function hydrateCmf(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n ...root,\n metadata: root.metadata ? hydrate(\"Metadata\", root.metadata, hydrationClasses) : null,\n meshes: root.meshes.map((mesh) => hydrateMesh(mesh, hydrationClasses)),\n skeletons: root.skeletons.map((skeleton) => hydrate(\"Skeleton\", skeleton, hydrationClasses)),\n animations: root.animations.map((animation) => hydrate(\"Animation\", animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n ...mesh,\n decl: mesh.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n lods: mesh.lods.map((lod) => hydrate(\"MeshLod\", {\n ...lod,\n areas: lod.areas.map((area) => hydrate(\"LodMeshArea\", area, classes)),\n morphTargets: lod.morphTargets.map((target) => hydrate(\"LodMorphTarget\", target, classes))\n }, classes)),\n areas: mesh.areas.map((area) => hydrate(\"MeshArea\", area, classes)),\n boneBindings: mesh.boneBindings.map((binding) => hydrate(\"BoneBinding\", binding, classes)),\n morphTargets: hydrate(\"MorphTargets\", {\n decl: mesh.morphTargets.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n targets: mesh.morphTargets.targets.map((target) => hydrate(\"MorphTarget\", target, classes))\n }, classes),\n audioOcclusionMesh: hydrate(\"AudioOcclusionMesh\", mesh.audioOcclusionMesh, classes)\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return Class ? populate(new Class(), fields, options) : fields;\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsFormatGr2 CMF class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n"],"names":["CMF_CLASS_KEYS","Object","freeze","CHANNELS","name","usage","elementCount","flexible","usageIndex","type","buildCmfFromShared","root","version","metadata","meshes","map","mesh","buildMesh","skeletons","animations","vertex","indices","boneBindings","binding","buildBoneBinding","affectedByBones","length","morphTargets","buildMorphTargets","affectedByMorphTargets","targets","vertexCount","vertexCountOf","stride","estimateVertexStride","decl","buildDecl","lods","vb","index","offset","size","ib","totalIndexCount","bytesPerIndex","areas","group","firstElement","firstTriangle","Math","floor","faces","threshold","bounds","bones","uvDensities","audioOcclusionMesh","vertices","min","max","topology","skeleton","baseVertex","specs","morphChannelSpecs","buildDeclFromSpecs","estimateStrideFromDecl","target","canonicalMorphVertex","maxDisplacement","position","flatMap","spec","values","count","targetSourceCount","channelWidth","sourceVertex","vertexIndices","Array","isArray","sourceCount","result","source","output","fill","sourceWidth","base","baseWidth","rowCount","row","vertexIndex","Number","isInteger","component","sourceValue","baseValue","dataIsDeltas","fallbackCount","minBounds","maxBounds","filter","push","elementTypeSize","width","expectedCount","reduce","element","includes","total","some","areaIndex","first","i","deltaPositions","hypot","hydrateCmf","classes","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","hydrateMesh","animation","lod","area","fields","Class","options","keys","__hydrationOptions","populate","instance","SetValues","TypeError","skipUpdate","skipEvents","create","defineProperty","value","enumerable"],"mappings":"AAAO,MAAMA,cAAc,GAAGC,MAAM,CAACC,MAAM,CAAC,CACxC,MAAM,EACN,SAAS,EACT,UAAU,EACV,eAAe,EACf,MAAM,EACN,YAAY,EACZ,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,CACnB;AAED,MAAMC,QAAQ,GAAGF,MAAM,CAACC,MAAM,CAAC,CAC3B;AAAEE,EAAAA,IAAI,EAAE,UAAU;AAAEC,EAAAA,KAAK,EAAE,UAAU;AAAEC,EAAAA,YAAY,EAAE;AAAE,CAAC,EACxD;AAAEF,EAAAA,IAAI,EAAE,QAAQ;AAAEC,EAAAA,KAAK,EAAE,QAAQ;AAAEC,EAAAA,YAAY,EAAE;AAAE,CAAC,EACpD;AAAEF,EAAAA,IAAI,EAAE,SAAS;AAAEC,EAAAA,KAAK,EAAE,SAAS;AAAEC,EAAAA,YAAY,EAAE,CAAC;AAAEC,EAAAA,QAAQ,EAAE;AAAK,CAAC,EACtE;AAAEH,EAAAA,IAAI,EAAE,UAAU;AAAEC,EAAAA,KAAK,EAAE,UAAU;AAAEC,EAAAA,YAAY,EAAE,CAAC;AAAEC,EAAAA,QAAQ,EAAE;AAAK,CAAC,EACxE;AAAEH,EAAAA,IAAI,EAAE,WAAW;AAAEC,EAAAA,KAAK,EAAE,UAAU;AAAEC,EAAAA,YAAY,EAAE,CAAC;AAAEE,EAAAA,UAAU,EAAE;AAAE,CAAC,EACxE;AAAEJ,EAAAA,IAAI,EAAE,WAAW;AAAEC,EAAAA,KAAK,EAAE,UAAU;AAAEC,EAAAA,YAAY,EAAE,CAAC;AAAEE,EAAAA,UAAU,EAAE;AAAE,CAAC,EACxE;AAAEJ,EAAAA,IAAI,EAAE,QAAQ;AAAEC,EAAAA,KAAK,EAAE,OAAO;AAAEC,EAAAA,YAAY,EAAE,CAAC;AAAEE,EAAAA,UAAU,EAAE;AAAE,CAAC,EAClE;AAAEJ,EAAAA,IAAI,EAAE,aAAa;AAAEC,EAAAA,KAAK,EAAE,aAAa;AAAEC,EAAAA,YAAY,EAAE,CAAC;AAAEE,EAAAA,UAAU,EAAE,CAAC;AAAEC,EAAAA,IAAI,EAAE;AAAS,CAAC,EAC7F;AAAEL,EAAAA,IAAI,EAAE,aAAa;AAAEC,EAAAA,KAAK,EAAE,aAAa;AAAEC,EAAAA,YAAY,EAAE,CAAC;AAAEE,EAAAA,UAAU,EAAE;AAAE,CAAC,CAChF,CAAC;;AAEF;AACA;AACA;AACA;AACO,SAASE,kBAAkBA,CAACC,IAAI,EACvC;EACI,OAAO;AACHC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,QAAQ,EAAE,IAAI;AACdC,IAAAA,MAAM,EAAE,CAACH,IAAI,CAACG,MAAM,IAAI,EAAE,EAAEC,GAAG,CAAEC,IAAI,IAAKC,SAAS,CAACD,IAAI,CAAC,CAAC;AAC1DE,IAAAA,SAAS,EAAE,EAAE;AACbC,IAAAA,UAAU,EAAE;GACf;AACL;AAEA,SAASF,SAASA,CAACD,IAAI,EACvB;AACI,EAAA,MACII,MAAM,GAAGJ,IAAI,CAACI,MAAM,IAAI,EAAE;AAC1BC,IAAAA,OAAO,GAAGL,IAAI,CAACK,OAAO,IAAI,EAAE;AAC5BC,IAAAA,YAAY,GAAG,CAACN,IAAI,CAACM,YAAY,IAAI,EAAE,EAAEP,GAAG,CAAEQ,OAAO,IAAKC,gBAAgB,CAACD,OAAO,CAAC,CAAC;AACpFE,IAAAA,eAAe,GAAGH,YAAY,CAACI,MAAM,GAAG,CAAC;AACzCC,IAAAA,YAAY,GAAGC,iBAAiB,CAACZ,IAAI,CAAC;AACtCa,IAAAA,sBAAsB,GAAGF,YAAY,CAACG,OAAO,CAACJ,MAAM,GAAG,CAAC;AACxDK,IAAAA,WAAW,GAAGC,aAAa,CAACZ,MAAM,CAAC;AACnCa,IAAAA,MAAM,GAAGC,oBAAoB,CAACd,MAAM,EAAEW,WAAW,CAAC;EAEtD,OAAO;AACH3B,IAAAA,IAAI,EAAEY,IAAI,CAACZ,IAAI,IAAI,EAAE;AACrB+B,IAAAA,IAAI,EAAEC,SAAS,CAAChB,MAAM,CAAC;AACvBiB,IAAAA,IAAI,EAAE,CAAE;AACJC,MAAAA,EAAE,EAAE;AAAEC,QAAAA,KAAK,EAAE,CAAC;AAAEC,QAAAA,MAAM,EAAE,CAAC;QAAEC,IAAI,EAAEV,WAAW,GAAGE,MAAM;AAAEA,QAAAA;OAAQ;AAC/DS,MAAAA,EAAE,EAAE;AAAEH,QAAAA,KAAK,EAAE,CAAC;AAAEC,QAAAA,MAAM,EAAE,CAAC;QAAEC,IAAI,EAAEE,eAAe,CAACtB,OAAO,CAAC,GAAGuB,aAAa,CAACvB,OAAO,CAAC;QAAEY,MAAM,EAAEW,aAAa,CAACvB,OAAO;OAAG;MACpHwB,KAAK,EAAExB,OAAO,CAACN,GAAG,CAAC,CAAC+B,KAAK,EAAEP,KAAK,MAAM;AAClCQ,QAAAA,YAAY,EAAEC,aAAa,CAAC3B,OAAO,EAAEkB,KAAK,CAAC;AAC3CjC,QAAAA,YAAY,EAAE2C,IAAI,CAACC,KAAK,CAAC,CAACJ,KAAK,CAACK,KAAK,IAAI,EAAE,EAAEzB,MAAM,GAAG,CAAC;AAC3D,OAAC,CAAC,CAAC;MACHC,YAAY,EAAEA,YAAY,CAACU,IAAI;AAC/Be,MAAAA,SAAS,EAAE,UAAU;MACrBhC,MAAM;AACNC,MAAAA;AACJ,KAAC,CAAE;AACHwB,IAAAA,KAAK,EAAExB,OAAO,CAACN,GAAG,CAAE+B,KAAK,KAAM;AAC3B1C,MAAAA,IAAI,EAAE0C,KAAK,CAAC1C,IAAI,IAAI,EAAE;AACtBiD,MAAAA,MAAM,EAAEA,MAAM,CAACrC,IAAI,CAAC;AACpBsC,MAAAA,KAAK,EAAE,EAAE;MACT7B,eAAe;AACfI,MAAAA;AACJ,KAAC,CAAC,CAAC;IACHP,YAAY;AACZK,IAAAA,YAAY,EAAE;MACVQ,IAAI,EAAER,YAAY,CAACQ,IAAI;MACvBL,OAAO,EAAEH,YAAY,CAACG;KACzB;AACDyB,IAAAA,WAAW,EAAE,EAAE;AACfF,IAAAA,MAAM,EAAEA,MAAM,CAACrC,IAAI,CAAC;AACpBwC,IAAAA,kBAAkB,EAAE;AAChBC,MAAAA,QAAQ,EAAE,EAAE;AACZpC,MAAAA,OAAO,EAAE,EAAE;AACXgC,MAAAA,MAAM,EAAE;AAAEK,QAAAA,GAAG,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAAEC,QAAAA,GAAG,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAG;KAChD;AACDC,IAAAA,QAAQ,EAAE,cAAc;AACxBC,IAAAA,QAAQ,EAAE,IAAI;IACdzC,MAAM;AACNC,IAAAA;GACH;AACL;AAEA,SAASO,iBAAiBA,CAACZ,IAAI,EAC/B;AACI,EAAA,MAAMc,OAAO,GAAGd,IAAI,CAACW,YAAY,IAAI,EAAE;AACvC,EAAA,IAAI,CAACG,OAAO,CAACJ,MAAM,EACnB;IACI,OAAO;AAAES,MAAAA,IAAI,EAAE,EAAE;AAAEL,MAAAA,OAAO,EAAE,EAAE;AAAEO,MAAAA,IAAI,EAAE;KAAI;AAC9C,EAAA;AAEA,EAAA,MACIyB,UAAU,GAAG9C,IAAI,CAACI,MAAM,IAAI,EAAE;AAC9BW,IAAAA,WAAW,GAAGC,aAAa,CAAC8B,UAAU,CAAC;IACvCC,KAAK,GAAGC,iBAAiB,CAAClC,OAAO,EAAEgC,UAAU,EAAE/B,WAAW,CAAC;AAC3DI,IAAAA,IAAI,GAAG8B,kBAAkB,CAACF,KAAK,CAAC;AAChC9B,IAAAA,MAAM,GAAGiC,sBAAsB,CAAC/B,IAAI,CAAC;AACrCsB,IAAAA,QAAQ,GAAG3B,OAAO,CAACf,GAAG,CAAEoD,MAAM,IAAKC,oBAAoB,CAACN,UAAU,EAAEK,MAAM,EAAEJ,KAAK,EAAEhC,WAAW,CAAC,CAAC;EAEpG,OAAO;IACHI,IAAI;IACJL,OAAO,EAAEA,OAAO,CAACf,GAAG,CAAC,CAACoD,MAAM,EAAE5B,KAAK,MAAM;AACrCnC,MAAAA,IAAI,EAAE+D,MAAM,CAAC/D,IAAI,IAAI,EAAE;AACvBiE,MAAAA,eAAe,EAAEF,MAAM,CAACE,eAAe,IAAIA,eAAe,CAACZ,QAAQ,CAAClB,KAAK,CAAC,CAAC+B,QAAQ,IAAI,EAAE;AAC7F,KAAC,CAAC,CAAC;AACHjC,IAAAA,IAAI,EAAEoB,QAAQ,CAAC1C,GAAG,CAAEK,MAAM,KAAM;AAC5BkB,MAAAA,EAAE,EAAE;AAAEC,QAAAA,KAAK,EAAE,CAAC;AAAEC,QAAAA,MAAM,EAAE,CAAC;QAAEC,IAAI,EAAEV,WAAW,GAAGE,MAAM;AAAEA,QAAAA;OAAQ;AAC/Db,MAAAA;AACJ,KAAC,CAAC;GACL;AACL;AAEA,SAAS4C,iBAAiBA,CAAClC,OAAO,EAAEgC,UAAU,EAAE/B,WAAW,EAC3D;AACI,EAAA,OAAO5B,QAAQ,CAACoE,OAAO,CAAEC,IAAI,IAC7B;IACI,IAAIlE,YAAY,GAAG,CAAC;AACpB,IAAA,KAAK,MAAM6D,MAAM,IAAIrC,OAAO,EAC5B;AACI,MAAA,MACIV,MAAM,GAAG+C,MAAM,CAAC/C,MAAM,IAAI,EAAE;QAC5BqD,MAAM,GAAGrD,MAAM,CAACoD,IAAI,CAACpE,IAAI,CAAC,IAAI,EAAE;AACpC,MAAA,IAAI,CAACqE,MAAM,CAAC/C,MAAM,EAAE;AACpB,MAAA,MAAMgD,KAAK,GAAGC,iBAAiB,CAACR,MAAM,EAAEpC,WAAW,CAAC;AACpDzB,MAAAA,YAAY,GAAG2C,IAAI,CAACU,GAAG,CAACrD,YAAY,EAAEsE,YAAY,CAACJ,IAAI,EAAEpD,MAAM,EAAEsD,KAAK,CAAC,CAAC;AAC5E,IAAA;AACA,IAAA,IAAI,CAACpE,YAAY,EAAE,OAAO,EAAE;IAC5B,IAAI,CAACwD,UAAU,CAACU,IAAI,CAACpE,IAAI,CAAC,IAAI,EAAE,EAAEsB,MAAM,EACxC;AACIpB,MAAAA,YAAY,GAAG2C,IAAI,CAACU,GAAG,CAACrD,YAAY,EAAEsE,YAAY,CAACJ,IAAI,EAAEV,UAAU,EAAE/B,WAAW,CAAC,CAAC;AACtF,IAAA;AACA,IAAA,OAAO,CAAE;AAAE,MAAA,GAAGyC,IAAI;AAAElE,MAAAA;AAAa,KAAC,CAAE;AACxC,EAAA,CAAC,CAAC;AACN;AAEA,SAAS8D,oBAAoBA,CAACN,UAAU,EAAEK,MAAM,EAAEJ,KAAK,EAAEhC,WAAW,EACpE;AACI,EAAA,MACI8C,YAAY,GAAGV,MAAM,CAAC/C,MAAM,IAAI,EAAE;AAClC0D,IAAAA,aAAa,GAAGC,KAAK,CAACC,OAAO,CAACb,MAAM,CAACW,aAAa,CAAC,GAAGX,MAAM,CAACW,aAAa,GAAG,IAAI;AACjFG,IAAAA,WAAW,GAAGN,iBAAiB,CAACR,MAAM,EAAEpC,WAAW,CAAC;IACpDmD,MAAM,GAAG,EAAE;AAEf,EAAA,KAAK,MAAMV,IAAI,IAAIT,KAAK,EACxB;IACI,MACIoB,MAAM,GAAGN,YAAY,CAACL,IAAI,CAACpE,IAAI,CAAC,IAAI,EAAE;AACtCgF,MAAAA,MAAM,GAAG,IAAIL,KAAK,CAAChD,WAAW,GAAGyC,IAAI,CAAClE,YAAY,CAAC,CAAC+E,IAAI,CAAC,CAAC,CAAC;MAC3DC,WAAW,GAAGV,YAAY,CAACJ,IAAI,EAAEK,YAAY,EAAEI,WAAW,CAAC;MAC3DM,IAAI,GAAGzB,UAAU,CAACU,IAAI,CAACpE,IAAI,CAAC,IAAI,EAAE;MAClCoF,SAAS,GAAGZ,YAAY,CAACJ,IAAI,EAAEV,UAAU,EAAE/B,WAAW,CAAC;MACvD0D,QAAQ,GAAGxC,IAAI,CAACS,GAAG,CAACuB,WAAW,EAAEK,WAAW,GAAGrC,IAAI,CAACC,KAAK,CAACiC,MAAM,CAACzD,MAAM,GAAG4D,WAAW,CAAC,GAAG,CAAC,CAAC;IAE/F,KAAK,IAAII,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGD,QAAQ,EAAEC,GAAG,EAAE,EACvC;MACI,MAAMC,WAAW,GAAGb,aAAa,GAAGA,aAAa,CAACY,GAAG,CAAC,GAAGA,GAAG;AAC5D,MAAA,IAAI,CAACE,MAAM,CAACC,SAAS,CAACF,WAAW,CAAC,IAAIA,WAAW,GAAG,CAAC,IAAIA,WAAW,IAAI5D,WAAW,EAAE;MAErF,MAAM2C,KAAK,GAAGzB,IAAI,CAACS,GAAG,CAAC4B,WAAW,EAAEd,IAAI,CAAClE,YAAY,CAAC;MACtD,KAAK,IAAIwF,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGpB,KAAK,EAAEoB,SAAS,EAAE,EACtD;QACI,MACIC,WAAW,GAAGZ,MAAM,CAACO,GAAG,GAAGJ,WAAW,GAAGQ,SAAS,CAAC;UACnDE,SAAS,GAAGT,IAAI,CAACI,WAAW,GAAGH,SAAS,GAAGM,SAAS,CAAC,IAAI,CAAC;QAC9DV,MAAM,CAACO,WAAW,GAAGnB,IAAI,CAAClE,YAAY,GAAGwF,SAAS,CAAC,GAAG3B,MAAM,CAAC8B,YAAY,KAAK,KAAK,GAC7EF,WAAW,GAAGC,SAAS,GACvBD,WAAW;AACrB,MAAA;AACJ,IAAA;AACAb,IAAAA,MAAM,CAACV,IAAI,CAACpE,IAAI,CAAC,GAAGgF,MAAM;AAC9B,EAAA;AAEA,EAAA,OAAOF,MAAM;AACjB;AAEA,SAASP,iBAAiBA,CAACR,MAAM,EAAE+B,aAAa,EAChD;AACI,EAAA,IAAInB,KAAK,CAACC,OAAO,CAACb,MAAM,CAACW,aAAa,CAAC,EAAE,OAAOX,MAAM,CAACW,aAAa,CAACpD,MAAM;EAC3E,OAAOM,aAAa,CAACmC,MAAM,CAAC/C,MAAM,IAAI,EAAE,EAAE8E,aAAa,CAAC;AAC5D;AAEA,SAAS1E,gBAAgBA,CAACD,OAAO,EACjC;EACI,OAAO;AACHnB,IAAAA,IAAI,EAAEmB,OAAO,CAACnB,IAAI,IAAI,EAAE;AACxBiD,IAAAA,MAAM,EAAE;AACJK,MAAAA,GAAG,EAAEnC,OAAO,CAAC4E,SAAS,IAAI5E,OAAO,CAAC8B,MAAM,EAAEK,GAAG,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAC5DC,MAAAA,GAAG,EAAEpC,OAAO,CAAC6E,SAAS,IAAI7E,OAAO,CAAC8B,MAAM,EAAEM,GAAG,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9D;GACH;AACL;AAEA,SAASvB,SAASA,CAAChB,MAAM,EAAEW,WAAW,GAAGC,aAAa,CAACZ,MAAM,CAAC,EAC9D;AACI,EAAA,MAAM2C,KAAK,GAAG5D,QAAQ,CACjBkG,MAAM,CAAE7B,IAAI,IAAKO,KAAK,CAACC,OAAO,CAAC5D,MAAM,CAACoD,IAAI,CAACpE,IAAI,CAAC,CAAC,IAAIgB,MAAM,CAACoD,IAAI,CAACpE,IAAI,CAAC,CAACsB,MAAM,GAAG,CAAC,CAAC,CAClFX,GAAG,CAAEyD,IAAI,KAAM;AAAE,IAAA,GAAGA,IAAI;AAAElE,IAAAA,YAAY,EAAEsE,YAAY,CAACJ,IAAI,EAAEpD,MAAM,EAAEW,WAAW;AAAE,GAAC,CAAC,CAAC;EACxF,OAAOkC,kBAAkB,CAACF,KAAK,CAAC;AACpC;AAEA,SAASE,kBAAkBA,CAACF,KAAK,EACjC;EACI,MAAM5B,IAAI,GAAG,EAAE;EACf,IAAIK,MAAM,GAAG,CAAC;AACd,EAAA,KAAK,MAAMgC,IAAI,IAAIT,KAAK,EACxB;IACI,MAAM;MAAE1D,KAAK;AAAEG,MAAAA,UAAU,GAAG,CAAC;AAAEC,MAAAA,IAAI,GAAG,SAAS;AAAEH,MAAAA;AAAa,KAAC,GAAGkE,IAAI;IACtErC,IAAI,CAACmE,IAAI,CAAC;MAAEjG,KAAK;MAAEG,UAAU;MAAEC,IAAI;MAAEH,YAAY;AAAEkC,MAAAA;AAAO,KAAC,CAAC;AAC5DA,IAAAA,MAAM,IAAIlC,YAAY,GAAGiG,eAAe,CAAC9F,IAAI,CAAC;AAClD,EAAA;AACA,EAAA,OAAO0B,IAAI;AACf;AAEA,SAASyC,YAAYA,CAACJ,IAAI,EAAEpD,MAAM,EAAEW,WAAW,EAC/C;EACI,MAAM0C,MAAM,GAAGrD,MAAM,CAACoD,IAAI,CAACpE,IAAI,CAAC,IAAI,EAAE;AACtC,EAAA,IAAIoE,IAAI,CAACjE,QAAQ,IAAIwB,WAAW,GAAG,CAAC,IAAI0C,MAAM,CAAC/C,MAAM,GAAGK,WAAW,KAAK,CAAC,EACzE;AACI,IAAA,MAAMyE,KAAK,GAAG/B,MAAM,CAAC/C,MAAM,GAAGK,WAAW;IACzC,IAAIyE,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC,EAAE,OAAOA,KAAK;AAChD,EAAA;EACA,OAAOhC,IAAI,CAAClE,YAAY;AAC5B;AAEA,SAAS0B,aAAaA,CAACZ,MAAM,EAAEqF,aAAa,GAAG,CAAC,EAChD;EACI,IAAIA,aAAa,GAAG,CAAC,EACrB;AACI,IAAA,KAAK,MAAMjC,IAAI,IAAIrE,QAAQ,EAC3B;MACI,MAAMsE,MAAM,GAAGrD,MAAM,CAACoD,IAAI,CAACpE,IAAI,CAAC,IAAI,EAAE;AACtC,MAAA,IAAIqE,MAAM,CAAC/C,MAAM,IAAI+C,MAAM,CAAC/C,MAAM,GAAG+E,aAAa,KAAK,CAAC,EAAE,OAAOA,aAAa;AAClF,IAAA;AACJ,EAAA;AAEA,EAAA,KAAK,MAAMjC,IAAI,IAAIrE,QAAQ,EAC3B;IACI,MAAMsE,MAAM,GAAGrD,MAAM,CAACoD,IAAI,CAACpE,IAAI,CAAC,IAAI,EAAE;AACtC,IAAA,IAAI,CAACqE,MAAM,CAAC/C,MAAM,EAAE;IACpB,IAAI8C,IAAI,CAACjE,QAAQ,EACjB;AACI,MAAA,IAAIkE,MAAM,CAAC/C,MAAM,GAAG8C,IAAI,CAAClE,YAAY,KAAK,CAAC,EAAE,OAAOmE,MAAM,CAAC/C,MAAM,GAAG8C,IAAI,CAAClE,YAAY;AACrF,MAAA,IAAImE,MAAM,CAAC/C,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO+C,MAAM,CAAC/C,MAAM,GAAG,CAAC;AACzD,IAAA;IACA,MAAMgD,KAAK,GAAGD,MAAM,CAAC/C,MAAM,GAAG8C,IAAI,CAAClE,YAAY;IAC/C,IAAIsF,MAAM,CAACC,SAAS,CAACnB,KAAK,CAAC,EAAE,OAAOA,KAAK;AAC7C,EAAA;AACA,EAAA,OAAO,CAAC;AACZ;AAEA,SAASxC,oBAAoBA,CAACd,MAAM,EAAEW,WAAW,EACjD;EACI,OAAOmC,sBAAsB,CAAC9B,SAAS,CAAChB,MAAM,EAAEW,WAAW,CAAC,CAAC;AACjE;AAEA,SAASmC,sBAAsBA,CAAC/B,IAAI,EACpC;AACI,EAAA,OAAOA,IAAI,CAACuE,MAAM,CAAC,CAACzE,MAAM,EAAE0E,OAAO,KAAK1D,IAAI,CAACU,GAAG,CAAC1B,MAAM,EAAE0E,OAAO,CAACnE,MAAM,GAAGmE,OAAO,CAACrG,YAAY,GAAGiG,eAAe,CAACI,OAAO,CAAClG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACvI;AAEA,SAAS8F,eAAeA,CAAC9F,IAAI,EAC7B;AACI,EAAA,OAAOA,IAAI,KAAK,SAAS,GAAG,CAAC,GAAGA,IAAI,CAACmG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/D;AAEA,SAASjE,eAAeA,CAACtB,OAAO,EAChC;EACI,OAAOA,OAAO,CAACqF,MAAM,CAAC,CAACG,KAAK,EAAE/D,KAAK,KAAK+D,KAAK,IAAI/D,KAAK,CAACK,KAAK,EAAEzB,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF;AAEA,SAASkB,aAAaA,CAACvB,OAAO,EAC9B;AACI,EAAA,OAAOA,OAAO,CAACyF,IAAI,CAAEhE,KAAK,IAAKA,KAAK,CAACF,aAAa,KAAK,CAAC,IAAI,CAACE,KAAK,CAACK,KAAK,IAAI,EAAE,EAAE2D,IAAI,CAAEvE,KAAK,IAAKA,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5H;AAEA,SAASS,aAAaA,CAAC3B,OAAO,EAAE0F,SAAS,EACzC;EACI,IAAIC,KAAK,GAAG,CAAC;AACb,EAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,SAAS,EAAEE,CAAC,EAAE,EAAED,KAAK,IAAI/D,IAAI,CAACC,KAAK,CAAC,CAAC7B,OAAO,CAAC4F,CAAC,CAAC,CAAC9D,KAAK,IAAI,EAAE,EAAEzB,MAAM,GAAG,CAAC,CAAC;AAC5F,EAAA,OAAOsF,KAAK;AAChB;AAEA,SAAS3D,MAAMA,CAACrC,IAAI,EACpB;EACI,OAAO;IACH0C,GAAG,EAAE1C,IAAI,CAACmF,SAAS,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;IAClCxC,GAAG,EAAE3C,IAAI,CAACoF,SAAS,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;GACnC;AACL;AAEA,SAAS/B,eAAeA,CAAC6C,cAAc,EACvC;EACI,IAAIvD,GAAG,GAAG,CAAC;AACX,EAAA,KAAK,IAAIsD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,GAAGC,cAAc,CAACxF,MAAM,EAAEuF,CAAC,IAAI,CAAC,EACrD;AACItD,IAAAA,GAAG,GAAGV,IAAI,CAACU,GAAG,CAACA,GAAG,EAAEV,IAAI,CAACkE,KAAK,CAC1BD,cAAc,CAACD,CAAC,CAAC,EACjBC,cAAc,CAACD,CAAC,GAAG,CAAC,CAAC,EACrBC,cAAc,CAACD,CAAC,GAAG,CAAC,CACxB,CAAC,CAAC;AACN,EAAA;AACA,EAAA,OAAOtD,GAAG;AACd;;AAEA;AACA;AACA;AACA;AACO,SAASyD,UAAUA,CAACzG,IAAI,EAAE0G,OAAO,EAAEC,gBAAgB,GAAG,EAAE,EAC/D;AACI,EAAA,MAAMC,gBAAgB,GAAGC,sBAAsB,CAACH,OAAO,EAAEC,gBAAgB,CAAC;EAC1E,OAAOG,OAAO,CAAC,MAAM,EAAE;AACnB,IAAA,GAAG9G,IAAI;AACPE,IAAAA,QAAQ,EAAEF,IAAI,CAACE,QAAQ,GAAG4G,OAAO,CAAC,UAAU,EAAE9G,IAAI,CAACE,QAAQ,EAAE0G,gBAAgB,CAAC,GAAG,IAAI;AACrFzG,IAAAA,MAAM,EAAEH,IAAI,CAACG,MAAM,CAACC,GAAG,CAAEC,IAAI,IAAK0G,WAAW,CAAC1G,IAAI,EAAEuG,gBAAgB,CAAC,CAAC;AACtErG,IAAAA,SAAS,EAAEP,IAAI,CAACO,SAAS,CAACH,GAAG,CAAE8C,QAAQ,IAAK4D,OAAO,CAAC,UAAU,EAAE5D,QAAQ,EAAE0D,gBAAgB,CAAC,CAAC;AAC5FpG,IAAAA,UAAU,EAAER,IAAI,CAACQ,UAAU,CAACJ,GAAG,CAAE4G,SAAS,IAAKF,OAAO,CAAC,WAAW,EAAEE,SAAS,EAAEJ,gBAAgB,CAAC;AACpG,GAAC,EAAEA,gBAAgB,EAAED,gBAAgB,CAAC;AAC1C;AAEA,SAASI,WAAWA,CAAC1G,IAAI,EAAEqG,OAAO,EAClC;EACI,OAAOI,OAAO,CAAC,MAAM,EAAE;AACnB,IAAA,GAAGzG,IAAI;AACPmB,IAAAA,IAAI,EAAEnB,IAAI,CAACmB,IAAI,CAACpB,GAAG,CAAE4F,OAAO,IAAKc,OAAO,CAAC,eAAe,EAAEd,OAAO,EAAEU,OAAO,CAAC,CAAC;AAC5EhF,IAAAA,IAAI,EAAErB,IAAI,CAACqB,IAAI,CAACtB,GAAG,CAAE6G,GAAG,IAAKH,OAAO,CAAC,SAAS,EAAE;AAC5C,MAAA,GAAGG,GAAG;AACN/E,MAAAA,KAAK,EAAE+E,GAAG,CAAC/E,KAAK,CAAC9B,GAAG,CAAE8G,IAAI,IAAKJ,OAAO,CAAC,aAAa,EAAEI,IAAI,EAAER,OAAO,CAAC,CAAC;AACrE1F,MAAAA,YAAY,EAAEiG,GAAG,CAACjG,YAAY,CAACZ,GAAG,CAAEoD,MAAM,IAAKsD,OAAO,CAAC,gBAAgB,EAAEtD,MAAM,EAAEkD,OAAO,CAAC;KAC5F,EAAEA,OAAO,CAAC,CAAC;AACZxE,IAAAA,KAAK,EAAE7B,IAAI,CAAC6B,KAAK,CAAC9B,GAAG,CAAE8G,IAAI,IAAKJ,OAAO,CAAC,UAAU,EAAEI,IAAI,EAAER,OAAO,CAAC,CAAC;AACnE/F,IAAAA,YAAY,EAAEN,IAAI,CAACM,YAAY,CAACP,GAAG,CAAEQ,OAAO,IAAKkG,OAAO,CAAC,aAAa,EAAElG,OAAO,EAAE8F,OAAO,CAAC,CAAC;AAC1F1F,IAAAA,YAAY,EAAE8F,OAAO,CAAC,cAAc,EAAE;AAClCtF,MAAAA,IAAI,EAAEnB,IAAI,CAACW,YAAY,CAACQ,IAAI,CAACpB,GAAG,CAAE4F,OAAO,IAAKc,OAAO,CAAC,eAAe,EAAEd,OAAO,EAAEU,OAAO,CAAC,CAAC;AACzFvF,MAAAA,OAAO,EAAEd,IAAI,CAACW,YAAY,CAACG,OAAO,CAACf,GAAG,CAAEoD,MAAM,IAAKsD,OAAO,CAAC,aAAa,EAAEtD,MAAM,EAAEkD,OAAO,CAAC;KAC7F,EAAEA,OAAO,CAAC;IACX7D,kBAAkB,EAAEiE,OAAO,CAAC,oBAAoB,EAAEzG,IAAI,CAACwC,kBAAkB,EAAE6D,OAAO;GACrF,EAAEA,OAAO,CAAC;AACf;AAEA,SAASI,OAAOA,CAAChH,IAAI,EAAEqH,MAAM,EAAET,OAAO,EAAEC,gBAAgB,GAAG,EAAE,EAC7D;AACI,EAAA,MAAMS,KAAK,GAAGV,OAAO,GAAG5G,IAAI,CAAC;EAC7B,MAAMuH,OAAO,GAAG/H,MAAM,CAACgI,IAAI,CAACX,gBAAgB,CAAC,CAAC5F,MAAM,GAAG,CAAC,GAAG4F,gBAAgB,GAAGD,OAAO,EAAEa,kBAAkB,IAAI,EAAE;AAC/G,EAAA,OAAOH,KAAK,GAAGI,QAAQ,CAAC,IAAIJ,KAAK,EAAE,EAAED,MAAM,EAAEE,OAAO,CAAC,GAAGF,MAAM;AAClE;AAEA,SAASK,QAAQA,CAACC,QAAQ,EAAEN,MAAM,EAAER,gBAAgB,GAAG,EAAE,EACzD;EACI,IAAI,CAACc,QAAQ,IAAI,OAAOA,QAAQ,CAACC,SAAS,KAAK,UAAU,EACzD;AACI,IAAA,MAAM,IAAIC,SAAS,CAAC,mFAAmF,CAAC;AAC5G,EAAA;AACAF,EAAAA,QAAQ,CAACC,SAAS,CAACP,MAAM,EAAE;AAAE,IAAA,GAAGR,gBAAgB;AAAEiB,IAAAA,UAAU,EAAE,IAAI;AAAEC,IAAAA,UAAU,EAAE;AAAK,GAAC,CAAC;AACvF,EAAA,OAAOJ,QAAQ;AACnB;AAEA,SAASZ,sBAAsBA,CAACH,OAAO,EAAEC,gBAAgB,EACzD;EACI,MAAMvG,GAAG,GAAGd,MAAM,CAACwI,MAAM,CAACpB,OAAO,IAAI,IAAI,CAAC;AAC1CpH,EAAAA,MAAM,CAACyI,cAAc,CAAC3H,GAAG,EAAE,oBAAoB,EAAE;AAAE4H,IAAAA,KAAK,EAAErB,gBAAgB;AAAEsB,IAAAA,UAAU,EAAE;AAAM,GAAC,CAAC;AAChG,EAAA,OAAO7H,GAAG;AACd;;;;"}
1
+ {"version":3,"file":"targets.js","sources":["../../../../../src/formats/gr2/core/targets.js"],"sourcesContent":["export const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nconst CHANNELS = Object.freeze([\n { name: \"position\", usage: \"Position\", elementCount: 3 },\n { name: \"normal\", usage: \"Normal\", elementCount: 3 },\n { name: \"tangent\", usage: \"Tangent\", elementCount: 4, flexible: true },\n { name: \"binormal\", usage: \"Binormal\", elementCount: 4, flexible: true },\n { name: \"texcoord0\", usage: \"TexCoord\", elementCount: 2, usageIndex: 0 },\n { name: \"texcoord1\", usage: \"TexCoord\", elementCount: 2, usageIndex: 1 },\n { name: \"color0\", usage: \"Color\", elementCount: 4, usageIndex: 0 },\n { name: \"blendIndice\", usage: \"BoneIndices\", elementCount: 4, usageIndex: 0, type: \"UInt16\" },\n { name: \"blendWeight\", usage: \"BoneWeights\", elementCount: 4, usageIndex: 0 }\n]);\n\n/**\n * Builds a CMF document from normalized shared geometry for the GR2\n * shared-geometry adapter.\n */\nexport function buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: null,\n meshes: (root.meshes ?? []).map((mesh) => buildMesh(mesh)),\n skeletons: [],\n animations: []\n };\n}\n\nfunction buildMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n indices = mesh.indices ?? [],\n boneBindings = (mesh.boneBindings ?? []).map((binding) => buildBoneBinding(binding)),\n affectedByBones = boneBindings.length > 0,\n morphTargets = buildMorphTargets(mesh),\n affectedByMorphTargets = morphTargets.targets.length > 0,\n vertexCount = vertexCountOf(vertex),\n stride = estimateVertexStride(vertex, vertexCount);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * bytesPerIndex(indices), stride: bytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas: indices.map((group) => ({\n name: group.name ?? \"\",\n bounds: bounds(mesh),\n bones: [],\n affectedByBones,\n affectedByMorphTargets\n })),\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: bounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: null,\n vertex,\n indices\n };\n}\n\nfunction buildMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n baseVertex = mesh.vertex ?? {},\n vertexCount = vertexCountOf(baseVertex),\n specs = morphChannelSpecs(targets, baseVertex, vertexCount),\n decl = buildDeclFromSpecs(specs),\n stride = estimateStrideFromDecl(decl),\n vertices = targets.map((target) => canonicalMorphVertex(baseVertex, target, specs, vertexCount));\n\n return {\n decl,\n targets: targets.map((target, index) => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? maxDisplacement(vertices[index].position ?? [])\n })),\n lods: vertices.map((vertex) => ({\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex\n }))\n };\n}\n\nfunction morphChannelSpecs(targets, baseVertex, vertexCount)\n{\n return CHANNELS.flatMap((spec) =>\n {\n let elementCount = 0;\n for (const target of targets)\n {\n const\n vertex = target.vertex ?? {},\n values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n const count = targetSourceCount(target, vertexCount);\n elementCount = Math.max(elementCount, channelWidth(spec, vertex, count));\n }\n if (!elementCount) return [];\n if ((baseVertex[spec.name] ?? []).length)\n {\n elementCount = Math.max(elementCount, channelWidth(spec, baseVertex, vertexCount));\n }\n return [ { ...spec, elementCount } ];\n });\n}\n\nfunction canonicalMorphVertex(baseVertex, target, specs, vertexCount)\n{\n const\n sourceVertex = target.vertex ?? {},\n vertexIndices = Array.isArray(target.vertexIndices) ? target.vertexIndices : null,\n sourceCount = targetSourceCount(target, vertexCount),\n result = {};\n\n for (const spec of specs)\n {\n const\n source = sourceVertex[spec.name] ?? [],\n output = new Array(vertexCount * spec.elementCount).fill(0),\n sourceWidth = channelWidth(spec, sourceVertex, sourceCount),\n base = baseVertex[spec.name] ?? [],\n baseWidth = channelWidth(spec, baseVertex, vertexCount),\n rowCount = Math.min(sourceCount, sourceWidth ? Math.floor(source.length / sourceWidth) : 0);\n\n for (let row = 0; row < rowCount; row++)\n {\n const vertexIndex = vertexIndices ? vertexIndices[row] : row;\n if (!Number.isInteger(vertexIndex) || vertexIndex < 0 || vertexIndex >= vertexCount) continue;\n\n const count = Math.min(sourceWidth, spec.elementCount);\n for (let component = 0; component < count; component++)\n {\n const\n sourceValue = source[row * sourceWidth + component],\n baseValue = base[vertexIndex * baseWidth + component] ?? 0;\n output[vertexIndex * spec.elementCount + component] = target.dataIsDeltas === false\n ? sourceValue - baseValue\n : sourceValue;\n }\n }\n result[spec.name] = output;\n }\n\n return result;\n}\n\nfunction targetSourceCount(target, fallbackCount)\n{\n if (Array.isArray(target.vertexIndices)) return target.vertexIndices.length;\n return vertexCountOf(target.vertex ?? {}, fallbackCount);\n}\n\nfunction buildBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildDecl(vertex, vertexCount = vertexCountOf(vertex))\n{\n const specs = CHANNELS\n .filter((spec) => Array.isArray(vertex[spec.name]) && vertex[spec.name].length > 0)\n .map((spec) => ({ ...spec, elementCount: channelWidth(spec, vertex, vertexCount) }));\n return buildDeclFromSpecs(specs);\n}\n\nfunction buildDeclFromSpecs(specs)\n{\n const decl = [];\n let offset = 0;\n for (const spec of specs)\n {\n const { usage, usageIndex = 0, type = \"Float32\", elementCount } = spec;\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction channelWidth(spec, vertex, vertexCount)\n{\n const values = vertex[spec.name] ?? [];\n if (spec.flexible && vertexCount > 0 && values.length % vertexCount === 0)\n {\n const width = values.length / vertexCount;\n if (width === 3 || width === 4) return width;\n }\n return spec.elementCount;\n}\n\nfunction vertexCountOf(vertex, expectedCount = 0)\n{\n if (expectedCount > 0)\n {\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (values.length && values.length % expectedCount === 0) return expectedCount;\n }\n }\n\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n if (spec.flexible)\n {\n if (values.length % spec.elementCount === 0) return values.length / spec.elementCount;\n if (values.length % 3 === 0) return values.length / 3;\n }\n const count = values.length / spec.elementCount;\n if (Number.isInteger(count)) return count;\n }\n return 0;\n}\n\nfunction estimateVertexStride(vertex, vertexCount)\n{\n return estimateStrideFromDecl(buildDecl(vertex, vertexCount));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);\n}\n\nfunction elementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices)\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction bytesPerIndex(indices)\n{\n return indices.some((group) => group.bytesPerIndex === 4 || (group.faces ?? []).some((index) => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices, areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++) first += Math.floor((indices[i].faces ?? []).length / 3);\n return first;\n}\n\nfunction bounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\nfunction maxDisplacement(deltaPositions)\n{\n let max = 0;\n for (let i = 0; i + 2 < deltaPositions.length; i += 3)\n {\n max = Math.max(max, Math.hypot(\n deltaPositions[i],\n deltaPositions[i + 1],\n deltaPositions[i + 2]\n ));\n }\n return max;\n}\n\n/**\n * Hydrates a CMF document through the configured runtime-class resolver for the\n * GR2 shared-geometry adapter.\n */\nexport function hydrateCmf(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n ...root,\n metadata: root.metadata ? hydrate(\"Metadata\", root.metadata, hydrationClasses) : null,\n meshes: root.meshes.map((mesh) => hydrateMesh(mesh, hydrationClasses)),\n skeletons: root.skeletons.map((skeleton) => hydrate(\"Skeleton\", skeleton, hydrationClasses)),\n animations: root.animations.map((animation) => hydrate(\"Animation\", animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n ...mesh,\n decl: mesh.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n lods: mesh.lods.map((lod) => hydrate(\"MeshLod\", {\n ...lod,\n areas: lod.areas.map((area) => hydrate(\"LodMeshArea\", area, classes)),\n morphTargets: lod.morphTargets.map((target) => hydrate(\"LodMorphTarget\", target, classes))\n }, classes)),\n areas: mesh.areas.map((area) => hydrate(\"MeshArea\", area, classes)),\n boneBindings: mesh.boneBindings.map((binding) => hydrate(\"BoneBinding\", binding, classes)),\n morphTargets: hydrate(\"MorphTargets\", {\n decl: mesh.morphTargets.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n targets: mesh.morphTargets.targets.map((target) => hydrate(\"MorphTarget\", target, classes))\n }, classes),\n audioOcclusionMesh: hydrate(\"AudioOcclusionMesh\", mesh.audioOcclusionMesh, classes)\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return Class ? populate(new Class(), fields, options) : fields;\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsGr2Format CMF class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n"],"names":["CMF_CLASS_KEYS","Object","freeze","CHANNELS","name","usage","elementCount","flexible","usageIndex","type","buildCmfFromShared","root","version","metadata","meshes","map","mesh","buildMesh","skeletons","animations","vertex","indices","boneBindings","binding","buildBoneBinding","affectedByBones","length","morphTargets","buildMorphTargets","affectedByMorphTargets","targets","vertexCount","vertexCountOf","stride","estimateVertexStride","decl","buildDecl","lods","vb","index","offset","size","ib","totalIndexCount","bytesPerIndex","areas","group","firstElement","firstTriangle","Math","floor","faces","threshold","bounds","bones","uvDensities","audioOcclusionMesh","vertices","min","max","topology","skeleton","baseVertex","specs","morphChannelSpecs","buildDeclFromSpecs","estimateStrideFromDecl","target","canonicalMorphVertex","maxDisplacement","position","flatMap","spec","values","count","targetSourceCount","channelWidth","sourceVertex","vertexIndices","Array","isArray","sourceCount","result","source","output","fill","sourceWidth","base","baseWidth","rowCount","row","vertexIndex","Number","isInteger","component","sourceValue","baseValue","dataIsDeltas","fallbackCount","minBounds","maxBounds","filter","push","elementTypeSize","width","expectedCount","reduce","element","includes","total","some","areaIndex","first","i","deltaPositions","hypot","hydrateCmf","classes","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","hydrateMesh","animation","lod","area","fields","Class","options","keys","__hydrationOptions","populate","instance","SetValues","TypeError","skipUpdate","skipEvents","create","defineProperty","value","enumerable"],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  export { CjsGr2Format, CjsGr2Format as default } from './CjsGr2Format.js';
2
- export { CjsFormatGr2 } from './core/CjsFormatGr2.js';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import { normalizeValues, DEFAULT_VALUES, readRaw } from './helpers.js';
1
+ import { normalizeValues, readRaw, DEFAULT_VALUES } from './helpers.js';
2
2
  import { resolveSelectedOptions } from './metadata.js';
3
3
  import { HlslEffectBindingManifest } from './tr2/shader/HlslEffectBindingManifest.js';
4
4
 
@@ -1,2 +1,3 @@
1
1
  export { CjsHlslFormat, CjsHlslFormat as default } from './CjsHlslFormat.js';
2
+ export { readEffectAnalysis } from './core/analysis.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -4,6 +4,9 @@ export { CjsCmfFormat } from './cmf/CjsCmfFormat.js';
4
4
  export { CjsDdsFormat } from './dds/CjsDdsFormat.js';
5
5
  export { CjsDxbcFormat } from './dxbc/CjsDxbcFormat.js';
6
6
  export { CjsHlslFormat } from './hlsl/CjsHlslFormat.js';
7
+ import './hlsl/core/HlslReader.js';
8
+ import '@carbonenginejs/runtime-utils/bytes';
9
+ import './hlsl/core/tr2/shader/HlslEffectResource.js';
7
10
  export { CjsWebglFormat } from './webgl/CjsWebglFormat.js';
8
11
  export { CjsWebgpuFormat } from './webgpu/CjsWebgpuFormat.js';
9
12
  export { CjsFbxFormat } from './fbx/CjsFbxFormat.js';
@@ -11,12 +14,6 @@ export { CjsFlacFormat } from './flac/CjsFlacFormat.js';
11
14
  export { CjsGifFormat } from './gif/CjsGifFormat.js';
12
15
  export { CjsGltfFormat } from './gltf/CjsGltfFormat.js';
13
16
  export { CjsGr2Format } from './gr2/CjsGr2Format.js';
14
- import './gr2/core/curves.js';
15
- import '@carbonenginejs/runtime-utils/mesh';
16
- import '@carbonenginejs/runtime-utils/num';
17
- import '@carbonenginejs/runtime-utils/tangent';
18
- import '@carbonenginejs/runtime-utils/vec3';
19
- import './gr2/core/helpers.js';
20
17
  export { CjsJpegFormat } from './jpeg/CjsJpegFormat.js';
21
18
  export { CjsMp3Format } from './mp3/CjsMp3Format.js';
22
19
  export { CjsMp4Format } from './mp4/CjsMp4Format.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -22,9 +22,9 @@ function asUint8Array(value) {
22
22
  /**
23
23
  * Minimal little-endian binary reader for the flat CEWG chunk container.
24
24
  *
25
- * Trimmed from Carbon's compiled-effect `WebglReader` (see
26
- * `@carbonenginejs/format-dxbc`'s and `@carbonenginejs/format-hlsl`'s vendored
27
- * copies): the CEWG format has no string table, so only raw-byte and uint32
25
+ * Trimmed from Carbon's compiled-effect `WebglReader` (see the sibling
26
+ * `formats/dxbc` and `formats/hlsl` vendored copies): the CEWG format has no
27
+ * string table, so only raw-byte and uint32
28
28
  * reads plus offset/remaining tracking are implemented here.
29
29
  */
30
30
  class WebglReader {
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sources":["../../../../../../src/formats/webgl/core/cewg/binary.js"],"sourcesContent":["import { WebglReadError } from \"../errors.js\";\n\n/**\n * Returns a byte view for supported binary inputs without copying when possible.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} value Binary payload to normalize.\n * @returns {Uint8Array} Byte view over the supplied payload.\n */\nexport function asUint8Array(value)\n{\n if (value instanceof Uint8Array)\n {\n return value;\n }\n if (value instanceof ArrayBuffer)\n {\n return new Uint8Array(value);\n }\n if (ArrayBuffer.isView(value))\n {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n throw new TypeError(\"Expected an ArrayBuffer or Uint8Array\");\n}\n\n/**\n * Minimal little-endian binary reader for the flat CEWG chunk container.\n *\n * Trimmed from Carbon's compiled-effect `WebglReader` (see\n * `@carbonenginejs/format-dxbc`'s and `@carbonenginejs/format-hlsl`'s vendored\n * copies): the CEWG format has no string table, so only raw-byte and uint32\n * reads plus offset/remaining tracking are implemented here.\n */\nexport class WebglReader\n{\n /**\n * Creates a reader over a byte payload.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes Source payload.\n * @param {object} [options] Reader bounds and metadata.\n * @param {number} [options.offset] Initial byte offset.\n * @param {number} [options.end] Exclusive end offset.\n * @param {string} [options.source] Source name used in error details.\n */\n constructor(bytes, options = {})\n {\n this.bytes = asUint8Array(bytes);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n this.offset = Number(options.offset) || 0;\n this.end = Number.isInteger(options.end) ? options.end : this.bytes.length;\n this.source = options.source || \"memory\";\n }\n\n /**\n * Returns the unread byte count inside the configured reader bounds.\n *\n * @returns {number} Remaining bytes.\n */\n get remaining()\n {\n return this.end - this.offset;\n }\n\n /**\n * Reads a byte range from the payload.\n *\n * @param {number} size Byte count to read.\n * @returns {Uint8Array} View over the read bytes.\n */\n readRaw(size)\n {\n this._require(size);\n const start = this.offset;\n this.offset += size;\n return this.bytes.subarray(start, start + size);\n }\n\n /**\n * Reads a little-endian unsigned 32-bit integer.\n *\n * @returns {number} Integer value.\n */\n readUint32()\n {\n this._require(4);\n const value = this.view.getUint32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n /**\n * Ensures the requested read fits inside the configured payload bounds.\n *\n * @param {number} size Requested byte count.\n * @private\n */\n _require(size)\n {\n if (!Number.isInteger(size) || size < 0 || this.offset + size > this.end)\n {\n throw new WebglReadError(\"Unexpected end of CEWG package data\", {\n source: this.source,\n offset: this.offset,\n requested: size,\n end: this.end\n });\n }\n }\n}\n"],"names":["asUint8Array","value","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","TypeError","WebglReader","constructor","bytes","options","view","DataView","offset","Number","end","isInteger","length","source","remaining","readRaw","size","_require","start","subarray","readUint32","getUint32","WebglReadError","requested"],"mappings":"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"}
1
+ {"version":3,"file":"binary.js","sources":["../../../../../../src/formats/webgl/core/cewg/binary.js"],"sourcesContent":["import { WebglReadError } from \"../errors.js\";\n\n/**\n * Returns a byte view for supported binary inputs without copying when possible.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} value Binary payload to normalize.\n * @returns {Uint8Array} Byte view over the supplied payload.\n */\nexport function asUint8Array(value)\n{\n if (value instanceof Uint8Array)\n {\n return value;\n }\n if (value instanceof ArrayBuffer)\n {\n return new Uint8Array(value);\n }\n if (ArrayBuffer.isView(value))\n {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n throw new TypeError(\"Expected an ArrayBuffer or Uint8Array\");\n}\n\n/**\n * Minimal little-endian binary reader for the flat CEWG chunk container.\n *\n * Trimmed from Carbon's compiled-effect `WebglReader` (see the sibling\n * `formats/dxbc` and `formats/hlsl` vendored copies): the CEWG format has no\n * string table, so only raw-byte and uint32\n * reads plus offset/remaining tracking are implemented here.\n */\nexport class WebglReader\n{\n /**\n * Creates a reader over a byte payload.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes Source payload.\n * @param {object} [options] Reader bounds and metadata.\n * @param {number} [options.offset] Initial byte offset.\n * @param {number} [options.end] Exclusive end offset.\n * @param {string} [options.source] Source name used in error details.\n */\n constructor(bytes, options = {})\n {\n this.bytes = asUint8Array(bytes);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n this.offset = Number(options.offset) || 0;\n this.end = Number.isInteger(options.end) ? options.end : this.bytes.length;\n this.source = options.source || \"memory\";\n }\n\n /**\n * Returns the unread byte count inside the configured reader bounds.\n *\n * @returns {number} Remaining bytes.\n */\n get remaining()\n {\n return this.end - this.offset;\n }\n\n /**\n * Reads a byte range from the payload.\n *\n * @param {number} size Byte count to read.\n * @returns {Uint8Array} View over the read bytes.\n */\n readRaw(size)\n {\n this._require(size);\n const start = this.offset;\n this.offset += size;\n return this.bytes.subarray(start, start + size);\n }\n\n /**\n * Reads a little-endian unsigned 32-bit integer.\n *\n * @returns {number} Integer value.\n */\n readUint32()\n {\n this._require(4);\n const value = this.view.getUint32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n /**\n * Ensures the requested read fits inside the configured payload bounds.\n *\n * @param {number} size Requested byte count.\n * @private\n */\n _require(size)\n {\n if (!Number.isInteger(size) || size < 0 || this.offset + size > this.end)\n {\n throw new WebglReadError(\"Unexpected end of CEWG package data\", {\n source: this.source,\n offset: this.offset,\n requested: size,\n end: this.end\n });\n }\n }\n}\n"],"names":["asUint8Array","value","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","TypeError","WebglReader","constructor","bytes","options","view","DataView","offset","Number","end","isInteger","length","source","remaining","readRaw","size","_require","start","subarray","readUint32","getUint32","WebglReadError","requested"],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { EFFECT_INFO_VERSION } from './effectPackageValidation.js';
2
2
  import { CjsHlslFormat } from '../../hlsl/CjsHlslFormat.js';
3
- import { HlslEffectBindingManifest } from '../../hlsl/core/tr2/shader/HlslEffectBindingManifest.js';
4
3
  import { HlslRenderContextEnum, hlslShaderStageName } from '../../hlsl/core/tr2/HlslRenderContextEnum.js';
4
+ import '../../hlsl/core/HlslReader.js';
5
+ import '@carbonenginejs/runtime-utils/bytes';
6
+ import '../../hlsl/core/tr2/shader/HlslEffectResource.js';
7
+ import { HlslEffectBindingManifest } from '../../hlsl/core/tr2/shader/HlslEffectBindingManifest.js';
5
8
  import { buildEffectPermutationGraph, EFFECT_PERMUTATION_GRAPH_VERSION, EFFECT_PERMUTATION_GRAPH_FORMAT, EFFECT_PERMUTATION_GRAPH_CHUNK } from '../../../format/effect/effectPermutationGraph.js';
6
9
  import { buildCompleteEffectReflection, EFFECT_REFLECTION_CHUNK, EFFECT_REFLECTION_BLOB_CHUNK } from '../../../format/effect/effectReflectionPackage.js';
7
10
  import { buildPackage, inspectWithValues, emitGlslWithOptions } from './helpers.js';