@canvasengine/presets 2.0.0-beta.3 → 2.0.0-beta.30

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 (41) hide show
  1. package/dist/Bar.d.ts +14 -0
  2. package/dist/Bar.d.ts.map +1 -0
  3. package/dist/Button.d.ts +1 -0
  4. package/dist/Button.d.ts.map +1 -0
  5. package/dist/Joystick.d.ts +34 -0
  6. package/dist/Joystick.d.ts.map +1 -0
  7. package/dist/NightAmbiant.d.ts +3 -0
  8. package/dist/NightAmbiant.d.ts.map +1 -0
  9. package/dist/Particle.d.ts +2 -0
  10. package/dist/Particle.d.ts.map +1 -0
  11. package/dist/Tilemap/Tile.d.ts +23 -0
  12. package/dist/Tilemap/Tile.d.ts.map +1 -0
  13. package/dist/Tilemap/TileGroup.d.ts +62 -0
  14. package/dist/Tilemap/TileGroup.d.ts.map +1 -0
  15. package/dist/Tilemap/TileLayer.d.ts +88 -0
  16. package/dist/Tilemap/TileLayer.d.ts.map +1 -0
  17. package/dist/Tilemap/TileSet.d.ts +11 -0
  18. package/dist/Tilemap/TileSet.d.ts.map +1 -0
  19. package/dist/Tilemap/index.d.ts +2 -0
  20. package/dist/Tilemap/index.d.ts.map +1 -0
  21. package/dist/Weathers/index.d.ts +57 -0
  22. package/dist/Weathers/index.d.ts.map +1 -0
  23. package/dist/index.d.ts +7 -54
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.global.js +222 -0
  26. package/dist/index.global.js.map +1 -0
  27. package/dist/index.js +5890 -685
  28. package/dist/index.js.map +1 -1
  29. package/package.json +36 -11
  30. package/src/Bar.ts +0 -87
  31. package/src/Button.ts +0 -0
  32. package/src/DrawMap/index.ts +0 -60
  33. package/src/Joystick.ts +0 -284
  34. package/src/NightAmbiant.ts +0 -116
  35. package/src/Particle.ts +0 -50
  36. package/src/Tilemap/Tile.ts +0 -79
  37. package/src/Tilemap/TileGroup.ts +0 -207
  38. package/src/Tilemap/TileLayer.ts +0 -162
  39. package/src/Tilemap/TileSet.ts +0 -41
  40. package/src/Tilemap/index.ts +0 -75
  41. package/src/index.ts +0 -6
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Bar.ts","../src/Particle.ts","../src/NightAmbiant.ts","../src/Joystick.ts","../src/Tilemap/index.ts","../src/Tilemap/TileLayer.ts","../src/Tilemap/Tile.ts","../src/Tilemap/TileSet.ts","../src/DrawMap/index.ts"],"sourcesContent":["import { Graphics, h, useProps } from \"canvasengine\";\nimport * as PIXI from \"pixi.js\";\n\ninterface BarProps {\n backgroundColor?: string;\n foregroundColor?: string;\n value: number;\n maxValue: number;\n width: number;\n height: number;\n}\n\nfunction componentToHex(c) {\n var hex = c.toString(16);\n return hex.length == 1 ? \"0\" + hex : hex;\n}\n\nfunction rgbToHex(r, g, b) {\n return \"#\" + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n\nexport function Bar(opts: BarProps) {\n const {\n width,\n height,\n value,\n maxValue,\n backgroundColor,\n foregroundColor,\n border,\n innerMargin,\n borderRadius,\n } = useProps(opts, {\n backgroundColor: \"#000000\",\n foregroundColor: \"#FFFFFF\",\n innerMargin: 0,\n borderRadius: 0,\n });\n\n return h(\n Graphics,\n {\n ...opts,\n width,\n height,\n draw(g: PIXI.Graphics) {\n if (borderRadius()) {\n g.roundRect(0, 0, width(), height(), borderRadius());\n } else {\n g.rect(0, 0, width(), height());\n }\n if (border) {\n g.stroke(border);\n }\n g.fill(backgroundColor());\n },\n },\n h(Graphics, {\n width,\n height,\n draw(g: PIXI.Graphics) {\n const margin = innerMargin();\n const _borderRadius = borderRadius();\n const w = Math.max(\n 0,\n Math.min(\n width() - 2 * margin,\n (value() / maxValue()) * (width() - 2 * margin)\n )\n );\n const h = height() - 2 * margin;\n if (borderRadius) {\n g.roundRect(margin, margin, w, h, _borderRadius);\n } else {\n g.rect(margin, margin, w, h);\n }\n const color = foregroundColor();\n if (color.startsWith(\"rgba\")) {\n const [r, g, b, a] = color.match(/\\d+(\\.\\d+)?/g).map(Number);\n g.fill({ color: rgbToHex(r, g, b), alpha: a });\n } else {\n g.fill(color);\n }\n },\n })\n );\n}\n","import * as PIXI from \"pixi.js\";\nimport { FX } from \"revolt-fx\";\nimport { h, mount, tick, Container, on, useProps } from \"canvasengine\";\n\nexport function Particle(options) {\n const { emit, settings = {} } = options;\n const { name } = useProps(options);\n const fx = new FX();\n let element;\n\n PIXI.Assets.add({ alias: \"fx_settings\", src: \"/default-bundle.json\" });\n PIXI.Assets.add({\n alias: \"fx_spritesheet\",\n src: \"/revoltfx-spritesheet.json\",\n });\n\n tick(({deltaRatio}) => {\n fx.update(deltaRatio);\n });\n\n mount(async (_element) => {\n element = _element;\n\n const data = await PIXI.Assets.load([\"fx_settings\", \"fx_spritesheet\"]);\n let fxSettings = {...data.fx_settings};\n\n if (settings.emitters) {\n const lastId = 10000;\n const emittersWithIds = settings.emitters.map((emitter, index) => ({\n ...emitter,\n id: lastId + index\n }));\n\n fxSettings.emitters = [\n ...fxSettings.emitters,\n ...emittersWithIds,\n ];\n\n }\n\n fx.initBundle(fxSettings, true);\n });\n\n on(emit, () => {\n const emitter = fx.getParticleEmitter(name());\n emitter.init(element.componentInstance);\n });\n\n return h(Container);\n}\n","import { Container, Graphics, h, mount, useProps, animatedSignal, RadialGradient, effect, isSignal, signal, isObservable } from \"canvasengine\";\n\nexport function LightSpot(opts) {\n const { radius } = useProps(opts);\n const scale = animatedSignal(1);\n\n const minScale = 1;\n const maxScale = 2; // Reduced max scale for subtler effect\n const scintillationSpeed = 0.001; // Significantly reduced for slower scintillation\n\n const animate = () => {\n // Use time-based animation for smoother, slower scintillation\n const time = Date.now() * scintillationSpeed;\n\n // Combine multiple sine waves for a more natural, less predictable effect\n const scintillationFactor =\n (Math.sin(time) + Math.sin(time * 1.3) + Math.sin(time * 0.7)) / 3;\n\n // Map the scintillation factor to the scale range\n const newScale =\n minScale + (maxScale - minScale) * (scintillationFactor * 0.5 + 0.5);\n\n scale.update(() => newScale);\n\n requestAnimationFrame(animate);\n };\n\n animate();\n\n const draw = (g) => {\n const size = radius() * 2;\n const gradient = new RadialGradient(size, size, 0, size, size, 0);\n gradient.addColorStop(0, \"rgba(255, 255, 0, 1)\");\n gradient.addColorStop(0.5, \"rgba(255, 255, 0, 0.3)\");\n gradient.addColorStop(0.8, \"rgba(255, 255, 0, 0)\");\n\n const translate = size / 2;\n\n g.rect(-translate, -translate, size, size).fill(\n gradient.render({ translate: { x: translate, y: translate } })\n );\n };\n\n return h(Graphics, {\n draw,\n ...opts,\n scale,\n });\n}\n\nexport function NightAmbiant(props) {\n const { children } = props;\n let el\n const width = signal(0);\n const height = signal(0);\n let subscription\n const draw = (rectAndHole) => {\n const margin = 80\n rectAndHole.rect(-margin, -margin, width() + margin*2, height() + margin*2);\n rectAndHole.fill(0x000000);\n const applyChildren = (child) => {\n const x = isSignal(child.propObservables.x)\n ? child.propObservables.x()\n : child.props.x;\n const y = isSignal(child.propObservables.y)\n ? child.propObservables.y()\n : child.props.y;\n const radius = isSignal(child.propObservables.radius)\n ? child.propObservables.radius()\n : child.props.radius;\n rectAndHole.circle(x, y, radius);\n rectAndHole.cut();\n }\n for (let child of children) {\n if (isObservable(child)) {\n if (subscription) {\n subscription.unsubscribe()\n }\n subscription = child.subscribe((event: any) => {\n for (let child of event.fullElements) {\n applyChildren(child)\n }\n })\n return\n }\n applyChildren(child)\n }\n };\n\n mount((el) => {\n effect(() => {\n const { displayWidth, displayHeight } = el.componentInstance as any\n const w = +displayWidth()\n const h = +displayHeight()\n setTimeout(() => {\n width.update(() => w)\n height.update(() => h)\n }, 0) // hack\n });\n });\n\n return h(\n Container,\n {\n width: \"100%\",\n height: \"100%\",\n ...props,\n },\n h(Graphics, {\n draw,\n alpha: 0.8,\n blur: 80,\n }),\n ...children\n );\n}\n","/*\n * Joystick\n *\n * Inspired by https://github.com/endel/pixi-virtual-joystick\n */\n\nimport * as PIXI from \"pixi.js\";\nimport { Container, Graphics, Sprite, h, signal } from \"canvasengine\";\n\nexport interface JoystickChangeEvent {\n angle: number;\n direction: Direction;\n power: number;\n}\n\nexport enum Direction {\n LEFT = \"left\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n RIGHT = \"right\",\n TOP_LEFT = \"top_left\",\n TOP_RIGHT = \"top_right\",\n BOTTOM_LEFT = \"bottom_left\",\n BOTTOM_RIGHT = \"bottom_right\",\n}\n\nexport interface JoystickSettings {\n outer?: string;\n inner?: string;\n outerScale?: { x: number; y: number };\n innerScale?: { x: number; y: number };\n onChange?: (data: JoystickChangeEvent) => void;\n onStart?: () => void;\n onEnd?: () => void;\n}\n\nexport function Joystick(opts: JoystickSettings = {}) {\n const settings = Object.assign(\n {\n outerScale: { x: 1, y: 1 },\n innerScale: { x: 1, y: 1 },\n },\n opts\n );\n\n let outerRadius = 70;\n let innerRadius = 10;\n const innerAlphaStandby = 0.5;\n\n let dragging = false;\n let startPosition: PIXI.PointData | null = null;\n let power = 0;\n\n const innerPositionX = signal(0);\n const innerPositionY = signal(0);\n const innerAlpha = signal(innerAlphaStandby);\n\n function getPower(centerPoint: PIXI.Point) {\n const a = centerPoint.x - 0;\n const b = centerPoint.y - 0;\n return Math.min(1, Math.sqrt(a * a + b * b) / outerRadius);\n }\n\n function getDirection(center: PIXI.Point) {\n let rad = Math.atan2(center.y, center.x); // [-PI, PI]\n if ((rad >= -Math.PI / 8 && rad < 0) || (rad >= 0 && rad < Math.PI / 8)) {\n return Direction.RIGHT;\n } else if (rad >= Math.PI / 8 && rad < (3 * Math.PI) / 8) {\n return Direction.BOTTOM_RIGHT;\n } else if (rad >= (3 * Math.PI) / 8 && rad < (5 * Math.PI) / 8) {\n return Direction.BOTTOM;\n } else if (rad >= (5 * Math.PI) / 8 && rad < (7 * Math.PI) / 8) {\n return Direction.BOTTOM_LEFT;\n } else if (\n (rad >= (7 * Math.PI) / 8 && rad < Math.PI) ||\n (rad >= -Math.PI && rad < (-7 * Math.PI) / 8)\n ) {\n return Direction.LEFT;\n } else if (rad >= (-7 * Math.PI) / 8 && rad < (-5 * Math.PI) / 8) {\n return Direction.TOP_LEFT;\n } else if (rad >= (-5 * Math.PI) / 8 && rad < (-3 * Math.PI) / 8) {\n return Direction.TOP;\n } else {\n return Direction.TOP_RIGHT;\n }\n }\n\n function handleDragStart(event: PIXI.FederatedPointerEvent) {\n startPosition = event.getLocalPosition(this);\n dragging = true;\n innerAlpha.set(1);\n settings.onStart?.();\n }\n\n function handleDragEnd() {\n if (!dragging) return;\n innerPositionX.set(0);\n innerPositionY.set(0);\n dragging = false;\n innerAlpha.set(innerAlphaStandby);\n settings.onEnd?.();\n }\n\n function handleDragMove(event: PIXI.FederatedPointerEvent) {\n if (dragging == false) {\n return;\n }\n\n let newPosition = event.getLocalPosition(this);\n\n let sideX = newPosition.x - (startPosition?.x ?? 0);\n let sideY = newPosition.y - (startPosition?.y ?? 0);\n\n let centerPoint = new PIXI.Point(0, 0);\n let angle = 0;\n\n if (sideX == 0 && sideY == 0) {\n return;\n }\n\n let calRadius = 0;\n\n if (sideX * sideX + sideY * sideY >= outerRadius * outerRadius) {\n calRadius = outerRadius;\n } else {\n calRadius = outerRadius - innerRadius;\n }\n\n /**\n * x: -1 <-> 1\n * y: -1 <-> 1\n * Y\n * ^\n * |\n * 180 | 90\n * ------------> X\n * 270 | 360\n * |\n * |\n */\n\n let direction = Direction.LEFT;\n\n if (sideX == 0) {\n if (sideY > 0) {\n centerPoint.set(0, sideY > outerRadius ? outerRadius : sideY);\n angle = 270;\n direction = Direction.BOTTOM;\n } else {\n centerPoint.set(\n 0,\n -(Math.abs(sideY) > outerRadius ? outerRadius : Math.abs(sideY))\n );\n angle = 90;\n direction = Direction.TOP;\n }\n innerPositionX.set(centerPoint.x);\n innerPositionY.set(centerPoint.y);\n power = getPower(centerPoint);\n settings.onChange?.({ angle, direction, power });\n return;\n }\n\n if (sideY == 0) {\n if (sideX > 0) {\n centerPoint.set(\n Math.abs(sideX) > outerRadius ? outerRadius : Math.abs(sideX),\n 0\n );\n angle = 0;\n direction = Direction.LEFT;\n } else {\n centerPoint.set(\n -(Math.abs(sideX) > outerRadius ? outerRadius : Math.abs(sideX)),\n 0\n );\n angle = 180;\n direction = Direction.RIGHT;\n }\n\n innerPositionX.set(centerPoint.x);\n innerPositionY.set(centerPoint.y);\n power = getPower(centerPoint);\n settings.onChange?.({ angle, direction, power });\n return;\n }\n\n let tanVal = Math.abs(sideY / sideX);\n let radian = Math.atan(tanVal);\n angle = (radian * 180) / Math.PI;\n\n let centerX = 0;\n let centerY = 0;\n\n if (sideX * sideX + sideY * sideY >= outerRadius * outerRadius) {\n centerX = outerRadius * Math.cos(radian);\n centerY = outerRadius * Math.sin(radian);\n } else {\n centerX = Math.abs(sideX) > outerRadius ? outerRadius : Math.abs(sideX);\n centerY = Math.abs(sideY) > outerRadius ? outerRadius : Math.abs(sideY);\n }\n\n if (sideY < 0) {\n centerY = -Math.abs(centerY);\n }\n if (sideX < 0) {\n centerX = -Math.abs(centerX);\n }\n\n if (sideX > 0 && sideY < 0) {\n // < 90\n } else if (sideX < 0 && sideY < 0) {\n // 90 ~ 180\n angle = 180 - angle;\n } else if (sideX < 0 && sideY > 0) {\n // 180 ~ 270\n angle = angle + 180;\n } else if (sideX > 0 && sideY > 0) {\n // 270 ~ 369\n angle = 360 - angle;\n }\n centerPoint.set(centerX, centerY);\n power = getPower(centerPoint);\n\n direction = getDirection(centerPoint);\n innerPositionX.set(centerPoint.x);\n innerPositionY.set(centerPoint.y);\n\n settings.onChange?.({ angle, direction, power });\n }\n\n let innerElement;\n let outerElement;\n\n if (!settings.outer) {\n outerElement = h(Graphics, {\n draw: (g) => {\n g.circle(0, 0, outerRadius).fill(0x000000);\n },\n alpha: 0.5,\n });\n } else {\n outerElement = h(Sprite, {\n image: settings.outer,\n anchor: { x: 0.5, y: 0.5 },\n scale: settings.outerScale,\n });\n }\n\n const innerOptions: any = {\n scale: settings.innerScale,\n x: innerPositionX,\n y: innerPositionY,\n alpha: innerAlpha,\n };\n\n if (!settings.inner) {\n innerElement = h(Graphics, {\n draw: (g) => {\n g.circle(0, 0, innerRadius * 2.5).fill(0x000000);\n },\n ...innerOptions,\n });\n } else {\n innerElement = h(Sprite, {\n image: settings.inner,\n anchor: { x: 0.5, y: 0.5 },\n ...innerOptions,\n });\n }\n\n return h(\n Container,\n {\n ...opts,\n pointerdown: handleDragStart,\n pointerup: handleDragEnd,\n pointerupoutside: handleDragEnd,\n pointermove: handleDragMove,\n },\n outerElement,\n innerElement\n );\n}\n","import { TiledLayer, TiledLayerType, TiledMap, TiledParserFile, TiledTileset } from \"@rpgjs/tiled\"\nimport { loop, h, Container, TilingSprite, useProps, effect, signal } from \"canvasengine\"\nimport { CompositeTileLayer } from \"./TileLayer\"\nimport { TileSet } from \"./TileSet\"\n\nexport function TiledMap(props) {\n const { map } = useProps(props)\n const layers = signal<TiledLayer[]>([])\n const objectLayer = props.objectLayer\n let tilesets: TiledTileset[] = []\n let mapData: TiledMap = {} as TiledMap\n\n const parseTmx = async (file: string, relativePath: string = '') => {\n if (typeof file !== 'string') {\n return file\n }\n // @ts-ignore\n const parser = new TiledParserFile(\n file,\n {\n basePath: '',\n staticDir: '',\n relativePath\n }\n )\n const data = await parser.parseFilePromise({\n getOnlyBasename: false\n })\n\n return data\n }\n\n effect(async () => {\n mapData = await parseTmx(map())\n for (let tileSet of mapData.tilesets) {\n tilesets.push(await new TileSet(tileSet).load(tileSet.image.source))\n }\n layers.set(mapData.layers)\n })\n\n const createLayer = (layers, props = {}) => {\n return h(Container, props, loop(layers, (layer) => {\n switch (layer.type) {\n case TiledLayerType.Tile:\n return h(CompositeTileLayer, {\n tilewidth: mapData.tilewidth,\n tileheight: mapData.tileheight,\n // @ts-ignore\n width: mapData.width,\n // @ts-ignore\n height: mapData.height,\n ...layer,\n tilesets\n })\n case TiledLayerType.Image:\n const { width, height, source } = layer.image\n return h(TilingSprite, {\n image: source,\n ...layer,\n width: layer.repeatx ? layer.width * layer.tilewidth : width,\n height: layer.repeaty ? layer.height * layer.tileheight : height\n })\n case TiledLayerType.Group:\n return createLayer(signal(layer.layers), layer)\n case TiledLayerType.ObjectGroup:\n const child = objectLayer?.(layer)\n return h(Container, layer, child)\n default:\n return h(Container)\n }\n }))\n }\n\n return createLayer(layers)\n}","import { CompositeTilemap, POINT_STRUCT_SIZE, Tilemap, settings } from '@pixi/tilemap';\nimport { Layer, Tile as TileClass } from '@rpgjs/tiled';\nimport { createComponent, registerComponent, DisplayObject } from 'canvasengine';\nimport { Tile } from './Tile';\nimport { TileSet } from './TileSet';\n\nsettings.use32bitIndex = true\n\nexport class CanvasTileLayer extends DisplayObject(CompositeTilemap) {\n private _tiles: any = {}\n tiles: (TileClass | null)[]\n private _layer: any // TODO: fix this, remove any. replace with Layer\n\n static findTileSet(gid: number, tileSets: TileSet[]) {\n let tileset: TileSet | undefined\n for (let i = tileSets.length - 1; i >= 0; i--) {\n tileset = tileSets[i]\n if (tileset.firstgid && tileset.firstgid <= gid) {\n break;\n }\n }\n return tileset;\n }\n\n /** @internal */\n createTile(x: number, y: number, options: any = {}): Tile | undefined {\n const { real, filter } = options\n const { tilewidth, tileheight, width } = this._layer\n if (real) {\n x = Math.floor(x / tilewidth)\n y = Math.floor(y / tileheight)\n }\n const i = x + y * width;\n const tiledTile = this._layer.getTileByIndex(i)\n\n if (!tiledTile || (tiledTile && tiledTile.gid == 0)) return\n\n const tileset = CanvasTileLayer.findTileSet(\n tiledTile.gid,\n this.tileSets\n )\n\n if (!tileset) return\n\n const tile = new Tile(\n tiledTile,\n tileset\n )\n\n tile.x = x * tilewidth;\n tile.y =\n y * tileheight +\n (tileheight -\n tile.texture.height);\n\n tile._x = x;\n tile._y = y;\n\n if (tileset.tileoffset) {\n tile.x += tileset.tileoffset.x ?? 0;\n tile.y += tileset.tileoffset.y ?? 0;\n }\n\n if (filter) {\n const ret = filter(tile)\n if (!ret) return\n }\n\n return tile\n }\n\n /** @internal */\n changeTile(x: number, y: number) {\n const { tilewidth, tileheight } = this._layer\n x = Math.floor(x / tilewidth)\n y = Math.floor(y / tileheight)\n const oldTile: Tile = this._tiles[x + ';' + y]\n const newTile = this.createTile(x, y)\n if (!oldTile && newTile) {\n this._addFrame(newTile, x, y)\n }\n else {\n if (newTile) {\n const bufComposite: CompositeTilemap = new CompositeTilemap()\n const frame = bufComposite.tile(newTile.texture, newTile.x, newTile.y)\n newTile.setAnimation(frame)\n this._tiles[x + ';' + y] = newTile\n // @ts-ignore\n const pointsBufComposite = (bufComposite.children[0] as Tilemap).pointsBuf\n // Change Texture (=0, 1 and 7, rotate (=4), animX (=5), animY (=6))\n ;[0, 1, 4, 6, 7, 8].forEach((i) => {\n if (this.pointsBuf) this.pointsBuf[oldTile.pointsBufIndex + i] = pointsBufComposite[i]\n })\n // @ts-ignore\n this.children[0].modificationMarker = 0\n this._addFrame(newTile, x, y)\n this['modificationMarker'] = 0\n }\n else {\n delete this._tiles[x + ';' + y]\n if (this.pointsBuf) this.pointsBuf.splice(oldTile.pointsBufIndex, POINT_STRUCT_SIZE)\n }\n }\n }\n\n /** @internal */\n get pointsBuf(): number[] | null {\n const child = this.children[0] as Tilemap\n if (!child) return null\n return child['pointsBuf']\n }\n\n private _addFrame(tile: Tile, x: number, y: number) {\n const frame = this.tile(tile.texture, tile.x, tile.y, {\n rotate: tile.texture.rotate\n })\n const pb = this.pointsBuf\n if (!pb) return null\n tile.pointsBufIndex = pb.length - POINT_STRUCT_SIZE\n tile.setAnimation(frame)\n this._tiles[x + ';' + y] = tile\n }\n\n onMount(args) {\n const { props } = args\n this.tileSets = props.tilesets\n this._layer = new Layer({\n ...props\n }, this.tileSets)\n super.onMount(args)\n }\n\n onUpdate(props) {\n super.onUpdate(props)\n if (!this.isMounted) return\n if (props.tileheight) this._layer.tileheight = props.tileheight\n if (props.tilewidth) this._layer.tilewidth = props.tilewidth\n if (props.width) this._layer.width = props.width\n if (props.height) this._layer.height = props.height\n if (props.parallaxX) this._layer.parallaxX = props.parallaxx\n if (props.parallaxY) this._layer.parallaxY = props.parallaxy\n\n this.removeChildren()\n\n for (let y = 0; y < this._layer.height; y++) {\n for (let x = 0; x < this._layer.width; x++) {\n const tile = this.createTile(x, y)\n if (tile) {\n this._addFrame(tile, x, y)\n }\n }\n }\n }\n}\n\nexport interface CanvasTileLayer extends CompositeTilemap { }\n\nregisterComponent('CompositeTileLayer', CanvasTileLayer)\n\nexport function CompositeTileLayer(props) {\n return createComponent('CompositeTileLayer', props)\n}","import { CompositeTilemap } from \"@pixi/tilemap\";\nimport { Tile as TiledTileClass } from '@rpgjs/tiled';\nimport { AnimatedSprite, Texture, groupD8 } from \"pixi.js\";\nimport { TileSet } from \"./TileSet\";\n\nexport class Tile extends AnimatedSprite {\n static getTextures(tile: TiledTileClass, tileSet: TileSet) {\n const textures: Texture[] = [];\n\n if (tile.animations && tile.animations.length) {\n tile.animations.forEach(frame => {\n textures.push(tileSet.textures[frame.tileid])\n });\n } else {\n textures.push(tileSet.textures[tile.gid - tileSet.firstgid])\n }\n\n return textures;\n }\n\n animations: { tileid: number, duration: number }[] = []\n _x: number = 0\n _y: number = 0\n pointsBufIndex: number\n properties: any = {}\n\n constructor(\n private tile: TiledTileClass,\n private tileSet: TileSet\n ) {\n super(Tile.getTextures(tile, tileSet));\n this.animations = tile.animations || []\n this.properties = tile.properties\n this.textures = Tile.getTextures(tile, tileSet)\n this.texture = this.textures[0] as Texture\n this.flip()\n }\n\n get gid() {\n return this.tile.gid\n }\n\n setAnimation(frame: CompositeTilemap) {\n const size = this.animations.length\n if (size > 1) {\n const offset = (this.animations[1].tileid - this.animations[0].tileid) * this.width\n frame.tileAnimX(offset, size)\n }\n }\n\n flip() {\n let symmetry\n let i = 0\n const add = (symmetrySecond) => {\n i++\n if (symmetry) symmetry = groupD8.add(symmetry, symmetrySecond)\n else symmetry = symmetrySecond\n }\n\n if (this.tile.horizontalFlip) {\n add(groupD8.MIRROR_HORIZONTAL)\n }\n\n if (this.tile.verticalFlip) {\n add(groupD8.MIRROR_VERTICAL)\n }\n\n if (this.tile.diagonalFlip) {\n if (i % 2 == 0) {\n add(groupD8.MAIN_DIAGONAL)\n }\n else {\n add(groupD8.REVERSE_DIAGONAL)\n }\n }\n\n //if (symmetry) this.texture.rotate = symmetry\n }\n}","import { TiledTileset, Tileset as TiledTilesetClass } from \"@rpgjs/tiled\";\nimport { Assets, Rectangle, Texture } from \"pixi.js\";\n\nexport class TileSet extends TiledTilesetClass {\n public textures: Texture[] = [];\n private tileGroups = {};\n\n constructor(tileSet: TiledTileset) {\n super(tileSet);\n }\n\n loadGroup() {\n // for (let tile of this.tileset.tiles) {\n // }\n }\n\n /** @internal */\n async load(image: string) {\n const texture = await Assets.load(image);\n for (\n let y = this.margin;\n y < this.image.height;\n y += this.tileheight + this.spacing\n ) {\n for (\n let x = this.margin;\n x < this.image.width;\n x += this.tilewidth + this.spacing\n ) {\n this.textures.push(\n new Texture({\n source: texture.source,\n frame: new Rectangle(+x, +y, +this.tilewidth, +this.tileheight),\n })\n );\n }\n }\n this.loadGroup();\n return this;\n }\n}\n","import { effect, signal, loop, h, Container, Sprite, useProps } from \"canvasengine\";\n\ninterface TileData {\n id: number;\n rect: [number, number, number, number];\n drawIn: [number, number];\n layerIndex: number;\n}\n\nexport function ImageMap(props) {\n const { imageSource, tileData } = useProps(props);\n const tiles = signal<TileData[]>([]);\n\n effect(async () => {\n const data = await fetch(tileData()).then((response) => response.json());\n const objects = data;\n if (props.objects) {\n objects.push(...props.objects(data));\n }\n tiles.set(objects);\n });\n\n const createLayeredTiles = () => {\n const layers = [createTileLayer(0), createTileLayer(1, true), createTileLayer(2)];\n\n return h(Container, props, ...layers);\n };\n\n const createTileLayer = (layerIndex: number, sortableChildren = false) => {\n return h(\n Container,\n {\n sortableChildren,\n },\n loop(tiles, (object) => {\n\n if (object.tag && layerIndex == 1) {\n return object\n }\n\n object.layerIndex ||= 1;\n if (object.layerIndex !== layerIndex) return null;\n\n const [x, y, width, height] = object.rect;\n const [drawX, drawY] = object.drawIn;\n\n return h(Sprite, {\n image: imageSource(),\n x: drawX,\n y: drawY,\n rectangle: { x, y, width, height },\n zIndex: drawY + height - 70,\n // zIndex: 0\n });\n })\n );\n };\n\n return createLayeredTiles();\n}\n"],"mappings":"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","names":["h","g","h","useProps","settings","Container","Graphics","h","mount","useProps","child","el","PIXI","Container","Graphics","h","signal","Direction","settings","h","Container","useProps","effect","signal","Assets","Texture","useProps","signal","effect","layers","props","h","Container","effect","signal","loop","h","Container","Sprite","useProps"]}
1
+ {"version":3,"file":"index.js","sources":["../src/Bar.ts","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/util/LinkedList.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/BaseEffect.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/ComponentType.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/core/BaseEmitterCore.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/util/Rnd.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/core/EmitterType.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/core/BoxEmitterCore.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/core/CircleEmitterCore.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/core/RingEmitterCore.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/EffectSequenceComponentType.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/MovieClip.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/util/Color.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/util/Easing.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/util/FXSignal.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/Particle.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/Sanitizer.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/Sprite.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/util/DeepClone.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/FX.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/ParticleEmitter.js","../../../node_modules/.pnpm/revolt-fx@1.3.5_pixi.js@8.9.2/node_modules/revolt-fx/lib/EffectSequence.js","../src/Particle.ts","../src/NightAmbiant.ts","../src/Joystick.ts","../../tiled/dist/index.js","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/settings.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/TilemapGeometry.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/TilemapPipe.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/TileTextureArray.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/gl_tilemap.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/gpu_tilemap.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/Tilemap.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/CompositeTilemap.mjs","../../../node_modules/.pnpm/@canvasengine+tilemap@5.0.1_pixi.js@8.9.2/node_modules/@canvasengine/tilemap/lib/index.mjs","../src/Tilemap/Tile.ts","../src/Tilemap/TileLayer.ts","../src/Tilemap/TileSet.ts","../src/Tilemap/index.ts","../src/Weathers/index.ts"],"sourcesContent":["import { Graphics, h, useProps } from \"canvasengine\";\nimport * as PIXI from \"pixi.js\";\n\ninterface BarProps {\n backgroundColor?: string;\n foregroundColor?: string;\n value: number;\n maxValue: number;\n width: number;\n height: number;\n border?: any;\n innerMargin?: number;\n borderRadius?: number;\n}\n\nfunction componentToHex(c) {\n var hex = c.toString(16);\n return hex.length == 1 ? \"0\" + hex : hex;\n}\n\nfunction rgbToHex(r, g, b) {\n return \"#\" + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n\nexport function Bar(opts: BarProps) {\n const {\n width,\n height,\n value,\n maxValue,\n backgroundColor,\n foregroundColor,\n border,\n innerMargin,\n borderRadius,\n } = useProps(opts, {\n backgroundColor: \"#000000\",\n foregroundColor: \"#FFFFFF\",\n innerMargin: 0,\n borderRadius: 0,\n });\n\n return h(\n Graphics,\n {\n ...opts,\n width,\n height,\n draw(graphics: any) {\n if (borderRadius()) {\n graphics.roundRect(0, 0, width(), height(), borderRadius());\n } else {\n graphics.rect(0, 0, width(), height());\n }\n if (border) {\n graphics.stroke(border);\n }\n graphics.fill(backgroundColor());\n },\n },\n h(Graphics, {\n width,\n height,\n draw(graphics: any) {\n const margin = innerMargin();\n const _borderRadius = borderRadius();\n const w = Math.max(\n 0,\n Math.min(\n width() - 2 * margin,\n (value() / maxValue()) * (width() - 2 * margin)\n )\n );\n const h = height() - 2 * margin;\n if (borderRadius) {\n graphics.roundRect(margin, margin, w, h, _borderRadius);\n } else {\n graphics.rect(margin, margin, w, h);\n }\n const color = foregroundColor();\n if (color.startsWith(\"rgba\")) {\n const [r, g, b, a] = color.match(/\\d+(\\.\\d+)?/g).map(Number);\n graphics.fill({ color: rgbToHex(r, g, b), alpha: a });\n } else {\n graphics.fill(color);\n }\n },\n })\n );\n}\n","export class LinkedList {\n constructor() {\n this.__length = 0;\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n get length() {\n return this.__length;\n }\n add(node) {\n if (this.first == null) {\n this.first = this.last = node;\n }\n else {\n node.prev = this.last;\n this.last.next = node;\n this.last = node;\n }\n node.list = this;\n this.__length++;\n return this;\n }\n remove(node) {\n if (node.list == null) {\n return;\n }\n if (this.first === this.last) {\n this.first = this.last = null;\n }\n else if (this.__length > 0) {\n if (node === this.last) {\n node.prev.next = null;\n this.last = node.prev;\n }\n else if (node === this.first) {\n node.next.prev = null;\n this.first = node.next;\n }\n else {\n node.next.prev = node.prev;\n node.prev.next = node.next;\n }\n }\n node.next = node.prev = node.list = null;\n this.__length--;\n return this;\n }\n clear() {\n if (!this.first)\n return;\n let node = this.first;\n while (node) {\n let next = node.next;\n node.next = node.prev = node.list = null;\n node = next;\n }\n this.first = this.last = null;\n }\n toArray() {\n const ret = [];\n if (!this.first)\n return ret;\n let node = this.first;\n while (node) {\n ret.push(node);\n node = node.next;\n }\n return ret;\n }\n}\nexport class Node {\n constructor(data) {\n this.data = data;\n }\n update(dt) {\n }\n dispose() {\n }\n}\n//# sourceMappingURL=LinkedList.js.map","/// <reference types=\"pixi.js\" />\nimport * as PIXI from \"pixi.js\";\nimport { Node } from \"./util/LinkedList\";\nexport class BaseEffect extends Node {\n constructor(componentId) {\n super();\n this.componentId = componentId;\n this.exhausted = false;\n this.completed = false;\n this.name = \"\";\n this.endTime = 0;\n this._x = 0;\n this._y = 0;\n this._rotation = 0;\n this._alpha = 0;\n this._scale = new PIXI.Point();\n this._time = 0;\n this._active = false;\n this.__recycled = true;\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n update(dt) {\n }\n recycle() {\n }\n get active() {\n return this._active;\n }\n get scale() {\n return this._scale;\n }\n set scale(value) {\n this._scale = value;\n }\n get alpha() {\n return this._alpha;\n }\n set alpha(value) {\n this._alpha = value;\n }\n set rotation(value) {\n this._rotation = value;\n }\n get rotation() {\n return this._rotation;\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n }\n // *********************************************************************************************\n // * internal\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n __applySettings(value) {\n }\n}\n//# sourceMappingURL=BaseEffect.js.map","export var ComponentType;\n(function (ComponentType) {\n ComponentType[ComponentType[\"Sprite\"] = 0] = \"Sprite\";\n ComponentType[ComponentType[\"MovieClip\"] = 1] = \"MovieClip\";\n})(ComponentType || (ComponentType = {}));\n//# sourceMappingURL=ComponentType.js.map","export class BaseEmitterCore {\n constructor(type) {\n this.type = type;\n this._dx = 0;\n this._dy = 0;\n this._rotation = 0;\n }\n // *********************************************************************************************\n // * Public\t\t\t \t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n init(emitter) {\n this.emitter = emitter;\n this._settings = emitter.settings.core.params;\n this.x = this.__x = emitter.x;\n this.y = this.__y = emitter.y;\n this.rotation = emitter.rotation;\n }\n emit(particle) {\n }\n prepare(spawnCount) {\n this._posInterpolationStep = 1 / spawnCount;\n this._t = this._posInterpolationStep * 0.5;\n }\n step() {\n this.__x = this.x;\n this.__y = this.y;\n }\n recycle() {\n this.emitter = null;\n this._settings = null;\n }\n dispose() {\n this.recycle();\n this.emitter = null;\n this._settings = null;\n }\n get rotation() {\n return this._rotation;\n }\n set rotation(value) {\n this._rotation = value;\n this._dx = Math.cos(value);\n this._dy = Math.sin(value);\n }\n}\n//# sourceMappingURL=BaseEmitterCore.js.map","export class Rnd {\n static float(min, max) {\n return Math.random() * (max - min) + min;\n }\n static bool(chance = 0.5) {\n return Math.random() < chance;\n }\n static sign(chance = 0.5) {\n return Math.random() < chance ? 1 : -1;\n }\n static bit(chance = 0.5) {\n return Math.random() < chance ? 1 : 0;\n }\n static integer(min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n }\n}\n//# sourceMappingURL=Rnd.js.map","export var EmitterType;\n(function (EmitterType) {\n EmitterType[\"Circle\"] = \"circle\";\n EmitterType[\"Box\"] = \"box\";\n EmitterType[\"Ring\"] = \"ring\";\n})(EmitterType || (EmitterType = {}));\n//# sourceMappingURL=EmitterType.js.map","/// <reference types=\"pixi.js\" />\nimport { Rnd } from \"../util/Rnd\";\nimport { BaseEmitterCore } from \"./BaseEmitterCore\";\nimport { EmitterType } from \"./EmitterType\";\nexport class BoxEmitterCore extends BaseEmitterCore {\n constructor() {\n super(EmitterType.Box);\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n emit(particle) {\n const settings = this._settings;\n const emitter = this.emitter;\n const w2 = settings.width * 0.5 * this.__scaleMod;\n const h2 = settings.height * 0.5 * this.__scaleMod;\n let angle = emitter.rotation;\n const x = Rnd.float(-w2, w2);\n const y = Rnd.float(-h2, h2);\n if (angle != 0) {\n particle.component.x = (this.__x + this._t * (this.x - this.__x)) + x * Math.cos(angle) - y * Math.sin(angle);\n particle.component.y = (this.__y + this._t * (this.y - this.__y)) + x * Math.sin(angle) + y * Math.cos(angle);\n }\n else {\n particle.component.x = this.__x + this._t * (this.x - this.__x) + x;\n particle.component.y = this.__y + this._t * (this.y - this.__y) + y;\n }\n if (settings.radial) {\n angle += Math.atan2(y, x);\n particle.dx = Math.cos(angle);\n particle.dy = Math.sin(angle);\n }\n else {\n particle.dx = this._dx;\n particle.dy = this._dy;\n }\n particle.component.rotation = angle;\n this._t += this._posInterpolationStep;\n }\n}\n//# sourceMappingURL=BoxEmitterCore.js.map","/// <reference types=\"pixi.js\" />\nimport { Rnd } from \"../util/Rnd\";\nimport { BaseEmitterCore } from \"./BaseEmitterCore\";\nimport { EmitterType } from \"./EmitterType\";\nexport class CircleEmitterCore extends BaseEmitterCore {\n constructor() {\n super(EmitterType.Circle);\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n emit(particle) {\n const settings = this._settings;\n const emitter = this.emitter;\n let angle;\n if (!settings.angle) {\n angle = Rnd.float(0, 6.28319) + emitter.rotation;\n }\n else {\n angle = Rnd.float(-settings.angle * 0.5, settings.angle * 0.5) + emitter.rotation;\n }\n if (settings.radius > 0) {\n let r = Rnd.float(0, settings.radius) * this.__scaleMod;\n particle.component.x = (this.__x + this._t * (this.x - this.__x)) + Math.cos(angle) * r;\n particle.component.y = (this.__y + this._t * (this.y - this.__y)) + Math.sin(angle) * r;\n }\n else {\n particle.component.x = this.__x + this._t * (this.x - this.__x);\n particle.component.y = this.__y + this._t * (this.y - this.__y);\n }\n if (settings.radial) {\n particle.dx = Math.cos(angle);\n particle.dy = Math.sin(angle);\n particle.component.rotation = angle;\n }\n else {\n particle.dx = this._dx;\n particle.dy = this._dy;\n particle.component.rotation = emitter.rotation;\n }\n this._t += this._posInterpolationStep;\n }\n}\n//# sourceMappingURL=CircleEmitterCore.js.map","/// <reference types=\"pixi.js\" />\nimport { Rnd } from \"../util/Rnd\";\nimport { BaseEmitterCore } from \"./BaseEmitterCore\";\nimport { EmitterType } from \"./EmitterType\";\nexport class RingEmitterCore extends BaseEmitterCore {\n constructor() {\n super(EmitterType.Ring);\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n prepare(spawnCount) {\n super.prepare(spawnCount);\n const angle = this._settings.angle;\n if (2 * Math.PI - angle < 0.1) {\n this._uniformStep = angle / (spawnCount);\n this._angle = angle;\n }\n else {\n this._uniformStep = angle / (spawnCount - 1);\n this._angle = -angle * 0.5;\n }\n }\n emit(particle) {\n const settings = this._settings;\n const emitter = this.emitter;\n let angle;\n if (settings.uniform) {\n angle = this._angle + emitter.rotation;\n this._angle += this._uniformStep;\n }\n else {\n angle = Rnd.float(-settings.angle * 0.5, settings.angle * 0.5) + emitter.rotation;\n }\n const r = settings.radius * this.__scaleMod;\n particle.component.x = (this.__x + this._t * (this.x - this.__x)) + Math.cos(angle) * r;\n particle.component.y = (this.__y + this._t * (this.y - this.__y)) + Math.sin(angle) * r;\n if (settings.radial) {\n particle.dx = Math.cos(angle);\n particle.dy = Math.sin(angle);\n particle.component.rotation = angle;\n }\n else {\n particle.dx = this._dx;\n particle.dy = this._dy;\n particle.component.rotation = emitter.rotation;\n }\n this._t += this._posInterpolationStep;\n }\n}\n//# sourceMappingURL=RingEmitterCore.js.map","export var EffectSequenceComponentType;\n(function (EffectSequenceComponentType) {\n EffectSequenceComponentType[EffectSequenceComponentType[\"Sprite\"] = 0] = \"Sprite\";\n EffectSequenceComponentType[EffectSequenceComponentType[\"MovieClip\"] = 1] = \"MovieClip\";\n EffectSequenceComponentType[EffectSequenceComponentType[\"Emitter\"] = 2] = \"Emitter\";\n EffectSequenceComponentType[EffectSequenceComponentType[\"Trigger\"] = 3] = \"Trigger\";\n})(EffectSequenceComponentType || (EffectSequenceComponentType = {}));\n//# sourceMappingURL=EffectSequenceComponentType.js.map","/// <reference types=\"pixi.js\" />\nimport * as PIXI from 'pixi.js';\nexport class MovieClip extends PIXI.AnimatedSprite {\n constructor(componentId, textures, anchorX, anchorY) {\n let t = [];\n let l = textures.length;\n for (let i = 0; i < l; i++) {\n t.push(PIXI.Texture.from(textures[i]));\n }\n super(t);\n this.componentId = componentId;\n this.anchor.set(0.5, 0.5);\n this.loop = false;\n this.__sequenceEndTime = 0;\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t *\n // *********************************************************************************************\n recycle() {\n this.alpha = 1;\n this.tint = 0xffffff;\n this.rotation = 0;\n this.scale.set(1);\n if (this.parent)\n this.parent.removeChild(this);\n this.gotoAndStop(0);\n this.__fx.__recycleMovieClip(this.componentId, this);\n }\n dispose() {\n if (this.parent)\n this.parent.removeChild(this);\n this.gotoAndStop(0);\n this.destroy();\n }\n}\n//# sourceMappingURL=MovieClip.js.map","export class Color {\n constructor() {\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n setRgb(startRgb, targetRgb) {\n this.startRgb = this.rgb = startRgb;\n this.r = this.sR = (startRgb >> 16) & 0xff;\n this.g = this.sG = (startRgb >> 8) & 0xff;\n this.b = this.sB = startRgb & 0xff;\n this.targetRgb = targetRgb;\n this.dR = ((targetRgb >> 16) & 0xff) - this.r;\n this.dG = ((targetRgb >> 8) & 0xff) - this.g;\n this.dB = (targetRgb & 0xff) - this.b;\n }\n tween(ease, time, duration) {\n if (ease) {\n this.r = ease(time, this.sR, this.dR, duration);\n this.g = ease(time, this.sG, this.dG, duration);\n this.b = ease(time, this.sB, this.dB, duration);\n }\n else {\n time /= duration;\n this.r = this.dR * time + this.sR;\n this.g = this.dG * time + this.sG;\n this.b = this.dB * time + this.sB;\n }\n this.rgb = (this.r << 16) | (this.g << 8) | this.b;\n return this.rgb;\n }\n}\n//# sourceMappingURL=Color.js.map","export var EasingType;\n(function (EasingType) {\n EasingType[\"Linear\"] = \"linear\";\n EasingType[\"EaseInQuad\"] = \"easeInQuad\";\n EasingType[\"EaseOutQuad\"] = \"easeOutQuad\";\n EasingType[\"EaseInOutQuad\"] = \"easeInOutQuad\";\n EasingType[\"EaseInCubic\"] = \"easeInCubic\";\n EasingType[\"EaseOutCubic\"] = \"easeOutCubic\";\n EasingType[\"EaseInOutCubic\"] = \"easeInOutCubic\";\n EasingType[\"EaseInQuart\"] = \"easeInQuart\";\n EasingType[\"EaseOutQuart\"] = \"easeOutQuart\";\n EasingType[\"EaseInOutQuart\"] = \"easeInOutQuart\";\n EasingType[\"EaseInQuint\"] = \"easeInQuint\";\n EasingType[\"EaseOutQuint\"] = \"easeOutQuint\";\n EasingType[\"EaseInOutQuint\"] = \"easeInOutQuint\";\n EasingType[\"EaseInSine\"] = \"easeInSine\";\n EasingType[\"EaseOutSine\"] = \"easeOutSine\";\n EasingType[\"EaseInOutSine\"] = \"easeInOutSine\";\n EasingType[\"EaseInExpo\"] = \"easeInExpo\";\n EasingType[\"EaseOutExpo\"] = \"easeOutExpo\";\n EasingType[\"EaseInOutExpo\"] = \"easeInOutExpo\";\n EasingType[\"EaseInCirc\"] = \"easeInCirc\";\n EasingType[\"EaseOutCirc\"] = \"easeOutCirc\";\n EasingType[\"EaseInOutCirc\"] = \"easeInOutCirc\";\n EasingType[\"EaseInElastic\"] = \"easeInElastic\";\n EasingType[\"EaseOutElastic\"] = \"easeOutElastic\";\n EasingType[\"EaseInOutElastic\"] = \"easeInOutElastic\";\n EasingType[\"EaseInBack\"] = \"easeInBack\";\n EasingType[\"EaseOutBack\"] = \"easeOutBack\";\n EasingType[\"EaseInOutBack\"] = \"easeInOutBack\";\n EasingType[\"EaseInBounce\"] = \"easeInBounce\";\n EasingType[\"EaseOutBounce\"] = \"easeOutBounce\";\n EasingType[\"EaseInOutBounce\"] = \"easeInOutBounce\";\n})(EasingType || (EasingType = {}));\nexport class Easing {\n static linear(t, b, c, d) {\n return c * t / d + b;\n }\n static easeInQuad(t, b, c, d) {\n return c * (t /= d) * t + b;\n }\n static easeOutQuad(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n }\n static easeInOutQuad(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t + b;\n }\n else {\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n }\n }\n static easeInCubic(t, b, c, d) {\n return c * (t /= d) * t * t + b;\n }\n static easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n }\n static easeInOutCubic(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t + b;\n }\n else {\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n }\n static easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n }\n static easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n }\n static easeInOutQuart(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t + b;\n }\n else {\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n }\n static easeInQuint(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n }\n static easeOutQuint(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n }\n static easeInOutQuint(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t * t + b;\n }\n else {\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n }\n static easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n static easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n }\n static easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n }\n static easeInExpo(t, b, c, d) {\n if (t === 0) {\n return b;\n }\n else {\n return c * Math.pow(2, 10 * (t / d - 1)) + b;\n }\n }\n static easeOutExpo(t, b, c, d) {\n if (t === d) {\n return b + c;\n }\n else {\n return c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n }\n static easeInOutExpo(t, b, c, d) {\n if (t === 0) {\n b;\n }\n if (t === d) {\n b + c;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n }\n else {\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n }\n static easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n }\n static easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n }\n static easeInOutCirc(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n }\n else {\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n }\n static easeInElastic(t, b, c, d) {\n let a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n b;\n }\n else if ((t /= d) === 1) {\n b + c;\n }\n if (!p) {\n p = d * .3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n }\n static easeOutElastic(t, b, c, d) {\n let a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n b;\n }\n else if ((t /= d) === 1) {\n b + c;\n }\n if (!p) {\n p = d * .3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;\n }\n static easeInOutElastic(t, b, c, d) {\n let a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n b;\n }\n else if ((t /= d / 2) === 2) {\n b + c;\n }\n if (!p) {\n p = d * (.3 * 1.5);\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n if (t < 1) {\n return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n }\n else {\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;\n }\n }\n static easeInBack(t, b, c, d, s) {\n if (s === void 0) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n }\n static easeOutBack(t, b, c, d, s) {\n if (s === void 0) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n static easeInOutBack(t, b, c, d, s) {\n if (s === void 0) {\n s = 1.70158;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n else {\n return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n }\n }\n static easeInBounce(t, b, c, d) {\n let v;\n v = Easing.easeOutBounce(d - t, 0, c, d);\n return c - v + b;\n }\n static easeOutBounce(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + b;\n }\n }\n static easeInOutBounce(t, b, c, d) {\n let v;\n if (t < d / 2) {\n v = Easing.easeInBounce(t * 2, 0, c, d);\n return v * .5 + b;\n }\n else {\n v = Easing.easeOutBounce(t * 2 - d, 0, c, d);\n return v * .5 + c * .5 + b;\n }\n }\n}\n//# sourceMappingURL=Easing.js.map","import { LinkedList, Node } from \"./LinkedList\";\nexport class FXSignal {\n constructor() {\n this.__hasCallback = false;\n this._list = new LinkedList();\n }\n add(callback, scope, callRate) {\n this._list.add(new Node(new FXSignalListener(callback, scope, false, callRate)));\n this.__hasCallback = true;\n }\n addOnce(callback, scope) {\n this._list.add(new Node(new FXSignalListener(callback, scope, true)));\n this.__hasCallback = true;\n }\n dispatch(...params) {\n const list = this._list;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n let call = true;\n const data = node.data;\n if (data.callRate) {\n if (data.calls % data.callRate != 0) {\n call = false;\n }\n }\n if (call) {\n data.callback.apply(data.scope, params);\n if (data.once) {\n list.remove(node);\n }\n }\n node = next;\n }\n this.__hasCallback = list.__length > 0;\n }\n remove(callback) {\n const list = this._list;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n if (node.data.callback === callback) {\n list.remove(node);\n return;\n }\n node = next;\n }\n this.__hasCallback = list.__length > 0;\n }\n removeAll() {\n this._list.clear();\n this.__hasCallback = false;\n }\n}\nexport class FXSignalListener {\n constructor(callback, scope, once, callRate) {\n this.callback = callback;\n this.scope = scope;\n this.once = once;\n this.callRate = callRate;\n this.calls = 0;\n }\n}\n//# sourceMappingURL=FXSignal.js.map","/// <reference types=\"pixi.js\" />\nimport { Color } from \"./util/Color\";\nimport { Easing } from \"./util/Easing\";\nimport { FXSignal } from \"./util/FXSignal\";\nimport { Node } from \"./util/LinkedList\";\nimport { Rnd } from \"./util/Rnd\";\nexport class Particle extends Node {\n constructor() {\n super();\n this.dx = 0;\n this.dy = 0;\n this._childEmitters = [];\n this._hasChildEmitters = false;\n this._spawnOnHalfway = false;\n this.__recycled = true;\n this.__on = {\n died: new FXSignal(),\n bounced: new FXSignal(),\n updated: new FXSignal()\n };\n this._color = new Color();\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t *\n // *********************************************************************************************\n init(emitter, settings, scaleMod) {\n const component = this.component;\n const fx = this.__fx;\n this.emitter = emitter;\n this.settings = settings;\n const duration = this.duration = Rnd.float(settings.durationMin, settings.durationMax) * scaleMod;\n this._dt = 1 / this.duration;\n this.time = 0;\n this.__recycled = false;\n settings.addOnTop ? emitter.container.addChild(component) : emitter.container.addChildAt(component, 0);\n component.blendMode = fx.__getBlendMode(settings.blendMode);\n this.startX = component.x;\n this.startY = component.y;\n this.useGravity = emitter.settings.useGravity;\n this.useScale = settings.useScale;\n this.useRotation = settings.useRotation;\n this.useAlpha = settings.useAlpha;\n this.useTint = settings.useTint;\n this.useSpawns = settings.useSpawns;\n this.useChilds = settings.useChilds;\n this.useMotion = settings.useMotion;\n if (this.useGravity) {\n this.gravity = emitter.settings.gravity;\n this.useFloor = emitter.settings.useFloor;\n this.floorY = emitter.settings.floorY;\n this.bounceFac = Rnd.float(settings.bounceFacMin, settings.bounceFacMax) * scaleMod;\n this.friction = 1 - Rnd.float(settings.frictionMin, settings.frictionMax) * scaleMod;\n this._spawnOnBounce = settings.spawn.onBounce.length > 0;\n this.useAlign = settings.align;\n if (settings.useMotion) {\n const speed = Rnd.float(settings.moveSpeedMin, settings.moveSpeedMax);\n this.moveSpeedX = speed * this.dx * scaleMod;\n this.moveSpeedY = speed * this.dy * scaleMod;\n }\n else {\n this.moveSpeedX = this.moveSpeedY = 0;\n }\n }\n else {\n if (settings.useMotion) {\n const d = this.distance = Rnd.integer(settings.distanceMin, settings.distanceMax) * 0.8 * scaleMod;\n this.deltaX = ((component.x + d * this.dx) - this.startX) * 0.8;\n this.deltaY = ((component.y + d * this.dy) - this.startY) * 0.8;\n this.distanceEase = Easing[settings.distanceEase];\n this.useAlign = false;\n }\n else {\n component.x = this.startX;\n component.y = this.startY;\n }\n }\n if (settings.useRotation && settings.randomStartRotation && !this.useAlign) {\n component.rotation = Rnd.float(0, 6.28319);\n }\n if (settings.useAlpha) {\n this.alphaStart = component.alpha = Rnd.float(settings.alphaStartMin, settings.alphaStartMax);\n this.alphaDelta = Rnd.float(settings.alphaEndMin, settings.alphaEndMax) - this.alphaStart;\n this.alphaEase = Easing[settings.alphaEase] || null;\n this.useFadeIn = settings.fadeIn;\n if (settings.fadeIn) {\n this.alphaDuration = duration * (1 - settings.fadeInDurationFac);\n this.fadeInDuration = duration * settings.fadeInDurationFac;\n this.fadeInEase = Easing[settings.fadeInEase || 'easeInSine'];\n }\n }\n if (settings.useScale) {\n this.uniformScale = settings.uniformScale;\n this.useScaleIn = settings.scaleIn;\n if (settings.useScale) {\n this.uniformScale = settings.uniformScale;\n this.scaleEase = Easing[settings.scaleEase];\n if (settings.uniformScale) {\n this.scaleStart = component.scale.x = component.scale.y = Rnd.float(settings.scaleStartMin, settings.scaleStartMax) * scaleMod;\n this.scaleDelta = (Rnd.float(settings.scaleEndMin, settings.scaleEndMax) - this.scaleStart) * scaleMod;\n }\n else {\n this.scaleXStart = component.scale.x = Rnd.float(settings.scaleXStartMin, settings.scaleXStartMax) * scaleMod;\n this.scaleXDelta = (Rnd.float(settings.scaleXEndMin, settings.scaleXEndMax) - this.scaleXStart) * scaleMod;\n this.scaleXEase = Easing[settings.scaleXEase];\n this.scaleYStart = component.scale.y = Rnd.float(settings.scaleYStartMin, settings.scaleYStartMax) * scaleMod;\n this.scaleYDelta = (Rnd.float(settings.scaleYEndMin, settings.scaleYEndMax) - this.scaleYStart) * scaleMod;\n this.scaleYEase = Easing[settings.scaleYEase];\n }\n if (settings.scaleIn) {\n this.scaleDuration = duration * (1 - settings.scaleInDurationFac);\n this.scaleInDuration = duration * settings.scaleInDurationFac;\n this.scaleInEase = Easing[settings.scaleInEase || 'easeInSine'];\n }\n }\n else {\n if (settings.uniformScale) {\n component.scale.x = settings.scaleStartMin;\n component.scale.y = settings.scaleStartMin;\n }\n else {\n component.scale.x = settings.scaleXStartMin;\n component.scale.y = settings.scaleYStartMin;\n }\n }\n }\n if (settings.useRotation) {\n this.rotationSpeed = Rnd.float(settings.rotationSpeedMin, settings.rotationSpeedMax) * scaleMod;\n if (settings.randomRotationDirection)\n this.rotationSpeed *= Rnd.sign();\n }\n if (settings.useTint) {\n this.tintEase = Easing[settings.tintEase];\n this._color.setRgb(settings.tintStart, settings.tintEnd);\n }\n if (settings.useChilds) {\n this._childEmitters.length = 0;\n let l = settings.childs.length;\n this._hasChildEmitters = l > 0;\n if (this._childEmitters) {\n while (--l > -1) {\n const def = settings.childs[l];\n const em = fx.getParticleEmitterById(def.id);\n em.init(emitter.container, true, (def.scale || 1) * (scaleMod || 1));\n if (def.adoptRotation) {\n em.rotation = component.rotation;\n em.__adoptRotation = true;\n }\n em.__parent = this;\n this._childEmitters.push(em);\n }\n }\n }\n if (settings.useSpawns) {\n if (settings.spawn.onStart.length > 0) {\n emitter.__subSpawn(this, settings.spawn.onStart);\n }\n this._spawnOnHalfway = settings.spawn.onHalfway.length > 0;\n }\n if (emitter.__on.particleSpawned.__hasCallback) {\n emitter.__on.particleSpawned.dispatch(this);\n }\n return this;\n }\n update(dt) {\n const t = this.time += dt;\n const duration = this.duration;\n if (t >= duration) {\n this.emitter.__removeParticle(this);\n return;\n }\n const component = this.component;\n const mod = t * dt;\n //Motion\n if (this.useGravity) {\n const dt2 = dt / 0.0166666;\n component.x += this.moveSpeedX * dt2;\n component.y += this.moveSpeedY * dt2;\n this.moveSpeedY += this.gravity * dt2;\n if (this.useAlign) {\n component.rotation = Math.atan2(this.moveSpeedY, this.moveSpeedX);\n }\n if (this.useFloor && this.floorY > 0) {\n if (component.y > this.floorY) {\n component.y = this.floorY;\n this.moveSpeedY *= -this.bounceFac;\n this.moveSpeedX *= this.friction;\n if (this.useSpawns && this._spawnOnBounce) {\n this.emitter.__subSpawn(this, this.settings.spawn.onBounce);\n }\n const emitter = this.emitter;\n if (emitter.__on.particleBounced.__hasCallback) {\n emitter.__on.particleBounced.dispatch(this);\n }\n if (this.__on.bounced.__hasCallback) {\n this.__on.bounced.dispatch(this);\n }\n if (this.settings.stopOnBounce) {\n emitter.__removeParticle(this);\n }\n return;\n }\n }\n }\n else if (this.useMotion) {\n if (this.distanceEase) {\n component.x = this.distanceEase(t, this.startX, this.deltaX, duration);\n component.y = this.distanceEase(t, this.startY, this.deltaY, duration);\n }\n else {\n component.x = this.deltaX * mod + this.startX;\n component.y = this.deltaY * mod + this.startY;\n }\n }\n //Alpha\n if (this.useAlpha) {\n if (this.useFadeIn) {\n if (t < this.fadeInDuration) {\n component.alpha = this.fadeInEase(t, 0, this.alphaStart, this.fadeInDuration);\n }\n else {\n component.alpha = this.alphaEase(t - this.fadeInDuration, this.alphaStart, this.alphaDelta, this.alphaDuration);\n }\n }\n else {\n if (this.alphaEase) {\n component.alpha = this.alphaEase(t, this.alphaStart, this.alphaDelta, duration);\n }\n else {\n component.alpha = (this.alphaDelta) * mod + this.alphaStart;\n }\n }\n }\n //Rotation\n if (this.useRotation) {\n component.rotation += this.rotationSpeed;\n }\n //Scale\n if (this.useScale) {\n if (this.uniformScale) {\n if (this.useScaleIn) {\n if (t < this.scaleInDuration) {\n component.scale.x = component.scale.y = this.scaleInEase(t, 0, this.scaleStart, this.scaleInDuration);\n }\n else {\n component.scale.x = component.scale.y = this.scaleEase(t - this.scaleInDuration, this.scaleStart, this.scaleDelta, this.scaleDuration);\n }\n }\n else {\n if (this.scaleEase) {\n component.scale.x = this.scaleEase(t, this.scaleStart, this.scaleDelta, duration);\n component.scale.y = this.scaleEase(t, this.scaleStart, this.scaleDelta, duration);\n }\n else {\n component.scale.x = component.scale.y = this.scaleDelta * mod + this.scaleStart;\n }\n }\n }\n else {\n if (this.useScaleIn) {\n if (t < this.scaleInDuration) {\n component.scale.x = this.scaleInEase(t, 0, this.scaleXStart, this.scaleInDuration);\n component.scale.y = this.scaleInEase(t, 0, this.scaleYStart, this.scaleInDuration);\n }\n else {\n component.scale.x = this.scaleEase(t - this.scaleInDuration, this.scaleXStart, this.scaleXDelta, this.scaleDuration);\n component.scale.y = this.scaleEase(t - this.scaleInDuration, this.scaleYStart, this.scaleYDelta, this.scaleDuration);\n }\n }\n else {\n if (this.scaleXEase) {\n component.scale.x = this.scaleXEase(t, this.scaleXStart, this.scaleXDelta, duration);\n }\n else {\n component.scale.x = this.scaleXDelta * mod + this.scaleXStart;\n }\n if (this.scaleYEase) {\n component.scale.y = this.scaleYEase(t, this.scaleYStart, this.scaleYDelta, duration);\n }\n else {\n component.scale.y = this.scaleYDelta * mod + this.scaleYStart;\n }\n }\n }\n }\n //Tint\n if (this.useTint) {\n component.tint = this._color.tween(this.tintEase, t, duration);\n }\n //Spawn t = 0.5\n if (this._spawnOnHalfway) {\n if (t >= 0.5) {\n this._spawnOnHalfway = false;\n this.emitter.__subSpawn(this, this.settings.spawn.onHalfway);\n }\n }\n if (this.useChilds && this._hasChildEmitters) {\n const childs = this._childEmitters;\n let l = childs.length;\n while (--l > -1) {\n const child = childs[l];\n if (child.__recycled)\n continue;\n child.x = component.position.x;\n child.y = component.position.y;\n if (child.__adoptRotation) {\n child.rotation = component.rotation;\n }\n }\n }\n if (this.emitter.__on.particleUpdated.__hasCallback) {\n this.emitter.__on.particleUpdated.dispatch(this);\n }\n if (this.__on.updated.__hasCallback) {\n this.__on.updated.dispatch(this);\n }\n }\n stop() {\n this.time = this.duration;\n }\n recycle() {\n if (this.emitter.__on.particleDied.__hasCallback) {\n this.emitter.__on.particleDied.dispatch(this);\n }\n const on = this.__on;\n if (on.died.__hasCallback) {\n on.died.dispatch(this);\n on.died.removeAll();\n }\n if (on.updated.__hasCallback) {\n on.updated.removeAll();\n }\n if (on.bounced.__hasCallback) {\n on.bounced.removeAll();\n }\n if (this._hasChildEmitters) {\n const childs = this._childEmitters;\n let l = childs.length;\n while (--l > -1) {\n childs[l].stop(true);\n }\n this._childEmitters.length = 0;\n this._hasChildEmitters = false;\n }\n this.component.recycle();\n this.__fx.__recycleParticle(this);\n this.dx = this.dy = this.deltaX = this.deltaY = 0;\n this.component = null;\n this.emitter = null;\n this.settings = null;\n this.__recycled = true;\n }\n dispose() {\n this.recycle();\n this.__fx = null;\n }\n get x() {\n return this.component.x;\n }\n get y() {\n return this.component.y;\n }\n get on() {\n return this.__on;\n }\n // *********************************************************************************************\n // * Internal\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t *\n // *********************************************************************************************\n __removeChildEmitter(emitter) {\n const index = this._childEmitters.indexOf(emitter);\n if (index > -1) {\n this._childEmitters.splice(index, 1);\n if (this._childEmitters.length == 0)\n this._hasChildEmitters = false;\n }\n }\n}\n//# sourceMappingURL=Particle.js.map","export class Sanitizer {\n static sanitizeBundle(bundle) {\n for (let emitter of bundle.emitters) {\n const structure = Sanitizer._presetStructure.emitter;\n Sanitizer.parse(emitter, structure, Sanitizer._presetStructure.emitterSpawn);\n }\n for (let sequence of bundle.sequences) {\n const structure = Sanitizer._presetStructure.sequence;\n Sanitizer.parse(sequence, structure, Sanitizer._presetStructure.sequenceEffect);\n }\n }\n static parse(bundleObject, structureObject, spawnStructureObject) {\n for (let propName in structureObject) {\n if (bundleObject[propName] == null) {\n bundleObject[propName] = structureObject[propName];\n }\n else {\n const bundleProp = bundleObject[propName];\n if (typeof bundleProp !== 'object')\n continue;\n const structureProp = structureObject[propName];\n if (!bundleProp.hasOwnProperty('length')) {\n Sanitizer.parse(bundleProp, structureProp, spawnStructureObject);\n }\n else {\n for (let spawn of bundleProp) {\n for (let spawnPropName in spawnStructureObject) {\n if (spawn[spawnPropName] == null) {\n spawn[spawnPropName] = spawnStructureObject[spawnPropName];\n }\n }\n }\n }\n }\n }\n }\n}\nSanitizer._presetStructure = {\n sequence: {\n id: 0,\n name: '',\n type: 1,\n delay: 0,\n scaleMin: 1,\n scaleMax: 1,\n effects: []\n },\n sequenceEffect: {\n id: 0,\n componentId: null,\n componentType: 0,\n delay: 0,\n componentParams: {\n animationSpeedMin: 1,\n animationSpeedMax: 1,\n anchorX: 0.5,\n anchorY: 0.5,\n loop: false\n },\n scaleMin: 1,\n scaleMax: 1,\n alphaMin: 1,\n alphaMax: 1,\n rotationMin: 0,\n rotationMax: 0,\n blendMode: 0,\n duration: 0.1,\n tint: 0xffffff,\n containerId: '',\n triggerValue: ''\n },\n emitter: {\n id: 0,\n name: '',\n type: 0,\n core: {\n type: 'circle',\n params: {\n radius: 100,\n radial: true,\n angle: 6.28318530718,\n uniform: false,\n width: 100,\n height: 100\n }\n },\n spawnFrequencyMin: 0.1,\n spawnFrequencyMax: 0.1,\n maxParticles: 1000,\n spawnCountMin: 1,\n spawnCountMax: 1,\n duration: 0,\n infinite: true,\n useGravity: false,\n gravity: 0,\n useFloor: false,\n floorY: 700,\n rotation: 0,\n autoRotation: 0,\n particleSettings: {\n componentType: 0,\n componentId: '',\n componentParams: {\n animationSpeedMin: 1,\n animationSpeedMax: 1,\n anchorX: 0.5,\n anchorY: 0.5,\n loop: false\n },\n durationMin: 1,\n durationMax: 2,\n distanceMin: 0,\n distanceMax: 0,\n distanceEase: 'linear',\n moveSpeedMin: 0,\n moveSpeedMax: 0,\n bounceFacMin: 0,\n bounceFacMax: 0,\n frictionMin: 0,\n frictionMax: 0,\n useMotion: false,\n useRotation: false,\n useAlpha: false,\n useScale: false,\n useTint: false,\n useChilds: false,\n useSpawns: false,\n stopOnBounce: false,\n align: false,\n blendMode: 1,\n addOnTop: true,\n rotationSpeedMin: 0,\n rotationSpeedMax: 0,\n randomRotationDirection: false,\n randomStartRotation: false,\n fadeIn: true,\n fadeInDurationFac: 0.1,\n fadeInEase: 'linear',\n alphaStartMin: 0.7,\n alphaStartMax: 0.9,\n alphaEndMin: 0.7,\n alphaEndMax: 0.8,\n alphaEase: 'linear',\n tintStart: 0xffffff,\n tintEnd: 0xffffff,\n tintEase: 'linear',\n scaleIn: false,\n scaleInDurationFac: 0.2,\n scaleInEase: 'linear',\n uniformScale: true,\n scaleXStartMin: 1,\n scaleXStartMax: 1,\n scaleXEndMin: 1,\n scaleXEndMax: 1,\n scaleXEase: 'linear',\n scaleYStartMin: 1,\n scaleYStartMax: 1,\n scaleYEndMin: 1,\n scaleYEndMax: 1,\n scaleYEase: 'linear',\n scaleStartMin: 1,\n scaleStartMax: 1,\n scaleEndMin: 1,\n scaleEndMax: 1,\n scaleEase: 'linear',\n childs: [],\n spawn: {\n onComplete: [],\n onBounce: [],\n onHalfway: [],\n onStart: []\n }\n },\n childs: []\n },\n emitterSpawn: {\n type: 0,\n id: 0,\n scale: 1,\n adoptRotation: true,\n containerId: ''\n }\n};\n//# sourceMappingURL=Sanitizer.js.map","/// <reference types=\"pixi.js\" />\nimport * as PIXI from 'pixi.js';\nexport class Sprite extends PIXI.Sprite {\n constructor(componentId, texture, anchorX, anchorY) {\n super(PIXI.Texture.from(texture));\n this.componentId = componentId;\n this.anchor.set(anchorX || 0.5, anchorY || 0.5);\n this.__sequenceEndTime = null;\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n recycle() {\n this.tint = 0xffffff;\n this.alpha = 1;\n this.rotation = 0;\n this.scale.set(1);\n if (this.parent)\n this.parent.removeChild(this);\n this.__fx.__recycleSprite(this.componentId, this);\n }\n dispose() {\n this.__fx = null;\n this.recycle();\n // @ts-ignore\n this.destroy(false);\n }\n}\n//# sourceMappingURL=Sprite.js.map","export default function deepClone(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n const clonedObj = Array.isArray(obj) ? [] : {};\n for (const key in obj) {\n const value = obj[key];\n clonedObj[key] = deepClone(value);\n }\n return clonedObj;\n}\n//# sourceMappingURL=DeepClone.js.map","/// <reference types=\"pixi.js\" />\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as PIXI from \"pixi.js\";\nimport { ComponentType } from \"./ComponentType\";\nimport { EffectSequence } from \"./EffectSequence\";\nimport { EffectSequenceComponentType } from \"./EffectSequenceComponentType\";\nimport { MovieClip } from \"./MovieClip\";\nimport { Particle } from \"./Particle\";\nimport { ParticleEmitter } from \"./ParticleEmitter\";\nimport { Sanitizer } from \"./Sanitizer\";\nimport { Sprite } from \"./Sprite\";\nimport { BoxEmitterCore } from \"./core/BoxEmitterCore\";\nimport { CircleEmitterCore } from \"./core/CircleEmitterCore\";\nimport { RingEmitterCore } from \"./core/RingEmitterCore\";\nimport deepClone from \"./util/DeepClone\";\nimport { LinkedList } from \"./util/LinkedList\";\nexport class FX {\n constructor() {\n this.useBlendModes = true;\n this.particleCount = 0;\n this.emitterCount = 0;\n this.effectSequenceCount = 0;\n this.maxParticles = 5000;\n this.particleFac = 1;\n this._active = false;\n this._effects = new LinkedList();\n this.__containers = {};\n this.clearCache();\n this.start();\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t \t *\n // *********************************************************************************************\n /**\n * Starts the process.\n *\n * @param {} - No parameters.\n * @return {} - No return value.\n */\n start() {\n this._active = true;\n this._timeElapsed = Date.now();\n }\n /**\n * Pauses the execution of the function.\n *\n * @param {}\n * @return {}\n */\n pause() {\n this._active = false;\n }\n /**\n * Updates the state of the object based on the elapsed time.\n *\n * @param {number} delta - The time delta to update by. Default is 1.\n */\n update(delta = 1) {\n if (!this.active)\n return;\n const t = Date.now();\n let dt = (t - this._timeElapsed) * 0.001;\n dt *= delta;\n const list = this._effects;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n node.update(dt);\n node = next;\n }\n this._timeElapsed = t;\n }\n /**\n * Clears the cache by resetting all cache objects to empty values.\n *\n * @param {}\n * @return {}\n */\n clearCache() {\n this._cache = {\n particles: [],\n mcs: [],\n sprites: [],\n effectSequences: [],\n emitters: [],\n cores: {}\n };\n this._settingsCache = {\n mcs: {},\n sprites: {},\n emitters: {},\n effectSequences: {}\n };\n this._nameMaps = {\n emitters: {},\n effectSequences: {}\n };\n }\n /**\n * Sets the value of the floorY property for all emitters in the settings cache.\n *\n * @param {number} value - The new value for the floorY property.\n */\n setFloorY(value) {\n const s = this._settingsCache.emitters;\n for (let n in s) {\n s[n].floorY = value;\n }\n }\n /**\n * Disposes of all the effects in the list and clears the cache.\n */\n dispose() {\n let list = this._effects;\n let node = list.first;\n while (node) {\n node.dispose();\n node = node.next;\n }\n list.clear();\n this.clearCache();\n }\n /**\n * Loads the bundle files and returns a promise that resolves to the parsed sprite sheet result.\n *\n * @param {string} bundleSettingsUrl - The URL of the bundle settings.\n * @param {string} spritesheetUrl - The URL of the sprite sheet.\n * @param {string} spritesheetFilter - The filter for the sprite sheet. Default is an empty string.\n * @param {string[]} additionalAssets - An array of additional asset URLs. Default is an empty array.\n * @return {Promise<IParseSpriteSheetResult>} A promise that resolves to the parsed sprite sheet result.\n */\n loadBundleFiles(bundleSettingsUrl, spritesheetUrl, spritesheetFilter = '', additionalAssets = []) {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const data = {\n 'rfx_spritesheet': spritesheetUrl,\n 'rfx_bundleSettings': bundleSettingsUrl,\n };\n for (var i in additionalAssets) {\n data[i] = additionalAssets[i];\n }\n PIXI.Assets.addBundle('rfx_assets', data);\n const assets = yield PIXI.Assets.loadBundle('rfx_assets');\n resolve(this.initBundle(assets.rfx_bundleSettings));\n }));\n }\n /**\n * Initializes the bundle with the given settings and optionally clears the cache.\n *\n * @param {any} bundleSettings - The settings for the bundle.\n * @param {boolean} clearCache - Whether to clear the cache or not. Optional, default is false.\n * @returns {IParseSpriteSheetResult} The result of parsing the sprite sheet.\n */\n initBundle(bundleSettings, clearCache) {\n if (bundleSettings.__h !== FX._bundleHash) {\n throw new Error('Invalid settings file.');\n }\n if (bundleSettings.__v != FX.settingsVersion) {\n throw new Error('Settings version mismatch.');\n }\n Sanitizer.sanitizeBundle(bundleSettings);\n if (clearCache) {\n this.clearCache();\n }\n for (let n in bundleSettings.emitters) {\n const preset = bundleSettings.emitters[n];\n this.addParticleEmitter(preset.id, preset);\n }\n for (let n in bundleSettings.sequences) {\n const preset = bundleSettings.sequences[n];\n this.addEffectSequence(preset.id, preset);\n }\n this.useBlendModes = bundleSettings.useBlendModes;\n this.maxParticles = bundleSettings.maxParticles;\n return this.parseTextureCache(bundleSettings.spritesheetFilter);\n }\n /**\n * Adds a particle emitter to the FX object.\n *\n * @param {string} componentId - The unique identifier for the emitter component.\n * @param {IEmitterSettings} settings - The settings for the emitter.\n * @throws {Error} Throws an error if the componentId already exists.\n * @return {FX} Returns the FX object for chaining.\n */\n addParticleEmitter(componentId, settings) {\n if (this._settingsCache.emitters[componentId])\n throw new Error(`ComponentId '${componentId}' already exists.`);\n this._settingsCache.emitters[componentId] = settings;\n this._nameMaps.emitters[settings.name] = settings;\n return this;\n }\n /**\n * Adds an effect sequence to the component with the specified ID.\n *\n * @param {string} componentId - The ID of the component.\n * @param {IEffectSequenceSettings} settings - The settings for the effect sequence.\n * @throws {Error} If a component with the same ID already exists.\n * @return {FX} The current instance of the FX class.\n */\n addEffectSequence(componentId, settings) {\n if (this._settingsCache.effectSequences[componentId])\n throw new Error(`ComponentId '${componentId}' already exists.`);\n this._settingsCache.effectSequences[componentId] = settings;\n this._nameMaps.effectSequences[settings.name] = settings;\n return this;\n }\n /**\n * Initializes a sprite with the specified component ID and settings.\n *\n * @param {string} componentId - The ID of the component.\n * @param {ISpriteSettings} settings - The settings for the sprite.\n * @throws {Error} Throws an error if the component ID already exists.\n * @returns {FX} Returns the current instance of the FX class.\n */\n initSprite(componentId, settings) {\n if (this._settingsCache.sprites[componentId])\n throw new Error(`ComponentId '${componentId}' already exists.`);\n this._settingsCache.sprites[componentId] = settings;\n return this;\n }\n /**\n * Initializes a movie clip with the specified component ID and settings.\n *\n * @param {string} componentId - The unique identifier for the movie clip component.\n * @param {IMovieClipSettings} settings - The settings for the movie clip.\n * @return {FX} The instance of the FX class.\n */\n initMovieClip(componentId, settings) {\n if (this._settingsCache.mcs[componentId])\n throw new Error(`ComponentId '${componentId}' already exists.`);\n this._settingsCache.mcs[componentId] = settings;\n return this;\n }\n /**\n * Retrieves the movie clips from the settings cache.\n *\n * @return {Object} An object containing movie clip settings.\n */\n getMovieClips() {\n return this._settingsCache.mcs;\n }\n /**\n * Retrieves the sprites from the settings cache.\n *\n * @return {Object} An object containing sprite settings.\n */\n getSprites() {\n return this._settingsCache.sprites;\n }\n /**\n * Adds a container to the __containers object with the specified key.\n *\n * @param {string} key - The key used to identify the container in the __containers object.\n * @param {PIXI.Container} container - The container to be added.\n */\n addContainer(key, container) {\n this.__containers[key] = container;\n }\n /**\n * Retrieves the EffectSequence object with the specified name.\n *\n * @param {string} name - The name of the EffectSequence to retrieve.\n * @return {EffectSequence} - The EffectSequence object with the specified name.\n */\n getEffectSequence(name, cloneSettings = false) {\n const settings = this._nameMaps.effectSequences[name];\n if (!settings)\n throw new Error(`Settings not defined for '${name}'`);\n return this.getEffectSequenceById(settings.id, cloneSettings);\n }\n /**\n * Retrieves an EffectSequence object by its component ID.\n *\n * @param {string} componentId - The ID of the component.\n * @return {EffectSequence} The retrieved EffectSequence object.\n */\n getEffectSequenceById(componentId, cloneSettings = false) {\n const pool = this._cache.effectSequences;\n let effectSequence;\n let settings = this._settingsCache.effectSequences[componentId];\n if (!settings)\n throw new Error(`Settings not defined for '${componentId}'`);\n if (pool.length == 0) {\n effectSequence = new EffectSequence(componentId);\n effectSequence.__fx = this;\n }\n else {\n effectSequence = pool.pop();\n }\n if (cloneSettings) {\n settings = deepClone(settings);\n settings.__isClone = true;\n }\n effectSequence.__applySettings(settings);\n return effectSequence;\n }\n /**\n * Retrieves a particle emitter by its name.\n *\n * @param {string} name - The name of the particle emitter.\n * @param {boolean} autoRecycleOnComplete - (Optional) Specifies whether the emitter should auto recycle when complete. Default is true.\n * @param {boolean} cloneSettings - (Optional) Specifies whether the emitter settings should be cloned. Default is false.\n * @return {ParticleEmitter} The particle emitter with the specified name.\n */\n getParticleEmitter(name, autoRecycleOnComplete = true, cloneSettings = false) {\n const settings = this._nameMaps.emitters[name];\n if (!settings)\n throw new Error(`Settings not defined for '${name}'`);\n return this.getParticleEmitterById(settings.id, autoRecycleOnComplete, cloneSettings);\n }\n /**\n * Retrieves a particle emitter by its component ID.\n *\n * @param {string} componentId - The ID of the component.\n * @param {boolean} autoRecycleOnComplete - Whether the emitter should automatically recycle itself when it completes.\n * @param {boolean} cloneSettings - Whether to clone the settings object before applying them to the emitter.\n * @return {ParticleEmitter} The retrieved particle emitter.\n */\n getParticleEmitterById(componentId, autoRecycleOnComplete = true, cloneSettings = false) {\n const pool = this._cache.emitters;\n let emitter;\n let settings = this._settingsCache.emitters[componentId];\n if (!settings)\n throw new Error(`Settings not defined for '${componentId}'`);\n if (pool.length == 0) {\n emitter = new ParticleEmitter(componentId);\n emitter.__fx = this;\n }\n else {\n emitter = pool.pop();\n }\n if (cloneSettings) {\n settings = deepClone(settings);\n settings.__isClone = true;\n }\n emitter.autoRecycleOnComplete = autoRecycleOnComplete;\n emitter.__applySettings(settings);\n return emitter;\n }\n /**\n * Creates a particle emitter from the specified settings.\n *\n * @param {IEmitterSettings} settings - The settings of the emitter to create.\n * @param {boolean} autoRecycleOnComplete - Whether the emitter should automatically recycle itself when it completes.\n * @return {ParticleEmitter} The created particle emitter.\n */\n createParticleEmitterFrom(settings, autoRecycleOnComplete = true) {\n const pool = this._cache.emitters;\n let emitter;\n if (pool.length == 0) {\n emitter = new ParticleEmitter(settings.id);\n emitter.__fx = this;\n }\n else {\n emitter = pool.pop();\n }\n emitter.autoRecycleOnComplete = autoRecycleOnComplete;\n emitter.__applySettings(settings);\n return emitter;\n }\n createEffectSequenceEmitterFrom(settings) {\n const pool = this._cache.effectSequences;\n let effectSequence;\n if (pool.length == 0) {\n effectSequence = new EffectSequence(settings.id);\n effectSequence.__fx = this;\n }\n else {\n effectSequence = pool.pop();\n }\n effectSequence.__applySettings(settings);\n return effectSequence;\n }\n /**\n * Stops the specified particle emitter.\n *\n * @param {ParticleEmitter} emitter - The particle emitter to stop.\n * @param {boolean} [dispose=false] - Whether to dispose the emitter or recycle it.\n */\n stopEmitter(emitter, dispose = false) {\n if (emitter.list === this._effects) {\n this._effects.remove(emitter);\n }\n if (dispose) {\n emitter.dispose();\n }\n else {\n this.__recycleEmitter(emitter);\n }\n }\n /**\n * Stops all effects.\n *\n * @param {none} none - This function does not take any parameters.\n * @return {void} This function does not return a value.\n */\n stopAllEffects() {\n const list = this._effects.toArray();\n for (let node of list) {\n node.recycle();\n }\n }\n /**\n * Parses a sprite sheet.\n *\n * @param {PIXI.Spritesheet} spriteSheet - The sprite sheet to parse.\n * @param {string} filter - Optional filter to apply to the sprite sheet.\n * @return {IParseSpriteSheetResult} The result of parsing the sprite sheet.\n */\n parseSpriteSheet(spriteSheet, filter) {\n return this.parseObject(spriteSheet.data.frames, filter);\n }\n /**\n * Parses the texture cache and returns the result as an IParseSpriteSheetResult object.\n *\n * @param {string} [filter] - An optional parameter to filter the results.\n * @returns {IParseSpriteSheetResult} - The parsed sprite sheet result.\n */\n parseTextureCache(filter) {\n return this.parseObject(PIXI['Cache']['_cache'], filter);\n }\n /**\n * Returns if the FX instance is active.\n *\n * @return {boolean} The value of the 'active' property.\n */\n get active() {\n return this._active;\n }\n // *********************************************************************************************\n // * Internal\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t *\n // *********************************************************************************************\n __addActiveEffect(effect) {\n this._effects.add(effect);\n }\n __removeActiveEffect(effect) {\n this._effects.remove(effect);\n }\n __getSprite(componentId) {\n const cache = this._cache.sprites;\n let pool = cache[componentId];\n if (cache[componentId] == null) {\n pool = cache[componentId] = [];\n }\n if (pool.length == 0) {\n const settings = this._settingsCache.sprites[componentId];\n if (settings == null)\n throw new Error(`Settings not defined for '${componentId}'`);\n const sprite = new Sprite(componentId, settings.texture, settings.anchorX, settings.anchorY);\n sprite.__fx = this;\n return sprite;\n }\n return pool.pop();\n }\n __getMovieClip(componentId) {\n const cache = this._cache.mcs;\n let pool = cache[componentId];\n if (cache[componentId] == null) {\n pool = cache[componentId] = [];\n }\n if (pool.length == 0) {\n let settings = this._settingsCache.mcs[componentId];\n if (settings == null)\n throw new Error(`Settings not defined for '${componentId}'`);\n const mc = new MovieClip(componentId, settings.textures, settings.anchorX, settings.anchorY);\n mc.__fx = this;\n return mc;\n }\n return pool.pop();\n }\n __getParticle() {\n let cache = this._cache, pool = cache.particles;\n if (pool.length == 0) {\n const particle = new Particle();\n particle.__fx = this;\n return particle;\n }\n return pool.pop();\n }\n __getEmitterCore(type, emitter) {\n let cache = this._cache.cores;\n let pool = cache[type];\n if (pool == null) {\n pool = cache[type] = [];\n }\n if (pool.length == 0) {\n return new FX.__emitterCores[type](type);\n }\n return pool.pop();\n }\n __recycleParticle(particle) {\n this._cache.particles.push(particle);\n }\n __recycleSprite(componentId, object) {\n this._cache.sprites[componentId].push(object);\n }\n __recycleMovieClip(componentId, object) {\n this._cache.mcs[componentId].push(object);\n }\n __recycleEmitter(emitter) {\n this._effects.remove(emitter);\n this.__recycleEmitterCore(emitter.core);\n this._cache.emitters.push(emitter);\n }\n __recycleEffectSequence(effectSequence) {\n this._effects.remove(effectSequence);\n this._cache.effectSequences.push(effectSequence);\n }\n __recycleEmitterCore(core) {\n this._cache.cores[core.type].push(core);\n }\n __getBlendMode(value) {\n if (PIXI['BLEND_MODES'] === undefined && typeof value == 'number') {\n return this.useBlendModes ? FX._blendModes[value] : 'normal';\n }\n return value;\n }\n __getSequenceSettings(componentId) {\n let settings = this._settingsCache.effectSequences[componentId];\n if (!settings)\n throw new Error(`Settings not defined for '${componentId}'`);\n return settings;\n }\n __getEmitterSettings(componentId) {\n let settings = this._settingsCache.emitters[componentId];\n if (!settings)\n throw new Error(`Settings not defined for '${componentId}'`);\n return settings;\n }\n // *********************************************************************************************\n // * Private\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n parseObject(object, filter) {\n let frames;\n if (object instanceof Map) {\n frames = new Map();\n const mapObject = object;\n const values = mapObject.values();\n for (const [key, value] of mapObject) {\n if (value instanceof PIXI.Texture) {\n frames[key] = value;\n }\n }\n }\n else {\n frames = object;\n }\n const mcs = {};\n const result = { sprites: [], movieClips: [] };\n for (let i in frames) {\n if (filter && i.indexOf(filter) == -1) {\n continue;\n }\n this.initSprite(i, { texture: i, anchorX: 0.5, anchorY: 0.5 });\n result.sprites.push(i);\n if (i.substr(0, 3) == 'mc_') {\n const parts = i.split('_');\n const group = parts[1];\n if (mcs[group] == null)\n mcs[group] = [];\n mcs[group].push(i);\n }\n }\n for (let i in mcs) {\n let textures = mcs[i];\n result.movieClips.push(i);\n this.initMovieClip(i, { textures: textures, anchorX: 0.5, anchorY: 0.5 });\n }\n return result;\n }\n}\nFX.settingsVersion = 0;\nFX.version = '1.3.4';\nFX._bundleHash = '80c6df7fb0d3d898f34ce0031c037fef';\nFX.ComponentType = ComponentType;\nFX.EffectSequenceComponentType = EffectSequenceComponentType;\nFX._blendModes = ['normal', 'add', 'multiply', 'screen'];\nFX.__emitterCores = {\n circle: CircleEmitterCore,\n box: BoxEmitterCore,\n ring: RingEmitterCore\n};\nexport var SpawnType;\n(function (SpawnType) {\n SpawnType[SpawnType[\"ParticleEmitter\"] = 0] = \"ParticleEmitter\";\n SpawnType[SpawnType[\"EffectSequence\"] = 1] = \"EffectSequence\";\n})(SpawnType || (SpawnType = {}));\n//# sourceMappingURL=FX.js.map","/// <reference types=\"pixi.js\" />\nimport { BaseEffect } from \"./BaseEffect\";\nimport { SpawnType } from \"./FX\";\nimport deepClone from \"./util/DeepClone\";\nimport { FXSignal } from \"./util/FXSignal\";\nimport { LinkedList } from \"./util/LinkedList\";\nimport { Rnd } from \"./util/Rnd\";\nexport class ParticleEmitter extends BaseEffect {\n constructor(componentId) {\n super(componentId);\n this.targetOffset = 0;\n this.autoRecycleOnComplete = true;\n this._particles = new LinkedList();\n this._particleCount = 0;\n this._childEmitters = [];\n this._hasChildEmitters = false;\n this._paused = false;\n this.__adoptRotation = false;\n this.__on = {\n started: new FXSignal(),\n completed: new FXSignal(),\n exhausted: new FXSignal(),\n particleUpdated: new FXSignal(),\n particleSpawned: new FXSignal(),\n particleBounced: new FXSignal(),\n particleDied: new FXSignal()\n };\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t *\n // *********************************************************************************************\n init(container, autoStart = true, scaleMod = 1) {\n this.container = container;\n this.core.__scaleMod = this._scaleMod = scaleMod;\n if (autoStart)\n this.start();\n return this;\n }\n start() {\n if (this._active)\n return this;\n const t = Date.now();\n const s = this.settings;\n const RX = this.__fx;\n RX.emitterCount++;\n this.infinite = s.infinite;\n this._time = Number.MAX_VALUE;\n if (s.duration > 0) {\n this.endTime = t + s.duration * 1000;\n }\n else {\n this.endTime = s.duration;\n }\n this._nextSpawnTime = 0;\n this._particleCount = 0;\n this._active = true;\n this.exhausted = this.completed = false;\n RX.__addActiveEffect(this);\n let l = s.childs.length;\n this._hasChildEmitters = l > 0;\n if (this._hasChildEmitters) {\n while (--l > -1) {\n const def = s.childs[l];\n const em = !this.settings.__isClone ? RX.getParticleEmitterById(def.id) : RX.createParticleEmitterFrom(def.settings);\n const container = RX.__containers[em.settings.containerId] || this.container;\n em.init(container, true, (def.scale || 1) * (this._scaleMod || 1));\n if (def.adoptRotation) {\n em.rotation = this._rotation;\n em.__adoptRotation = true;\n }\n em.__parent = this;\n this._childEmitters.push(em);\n }\n }\n this.rotation = this._rotation;\n if (this.__on.started.__hasCallback) {\n this.__on.started.dispatch(this);\n }\n return this;\n }\n stop(waitForParticles = true) {\n if (waitForParticles) {\n this.exhausted = true;\n if (this._hasChildEmitters) {\n this.stopChildEmitters(true);\n }\n }\n else {\n if (this.__on.completed.__hasCallback) {\n this.__on.completed.dispatch(this);\n }\n if (this.autoRecycleOnComplete) {\n this.recycle();\n }\n else {\n this.recycleParticles();\n this.completed = true;\n this._active = false;\n this.__fx.__removeActiveEffect(this);\n }\n }\n }\n update(dt) {\n if (!this._active)\n return this;\n const t = Date.now();\n const s = this.settings;\n if (!this.exhausted) {\n if (this.settings.autoRotation !== 0) {\n this.rotation += s.autoRotation * (dt / 0.016666);\n }\n if (this.target) {\n this.rotation = this.target.rotation;\n if (this.targetOffset == 0) {\n this.x = this.target.x;\n this.y = this.target.y;\n }\n else {\n this.x = this.target.x + Math.cos(this._rotation) * this.targetOffset;\n this.y = this.target.y + Math.sin(this._rotation) * this.targetOffset;\n }\n }\n if (this.endTime == 0 && !this.infinite) {\n this.spawn();\n this.exhausted = true;\n }\n else if (this.infinite || t < this.endTime) {\n this._time += dt;\n if (this._time >= this._nextSpawnTime) {\n this._time = 0;\n this.spawn();\n this._nextSpawnTime = this._time + Rnd.float(s.spawnFrequencyMin, s.spawnFrequencyMax);\n }\n }\n else {\n this.exhausted = true;\n if (this.__on.exhausted.__hasCallback) {\n this.__on.exhausted.dispatch(this);\n }\n }\n }\n else {\n if (this._particleCount == 0) {\n this._active = false;\n this.completed = true;\n if (this.__on.completed.__hasCallback) {\n this.__on.completed.dispatch(this);\n }\n this.__fx.__removeActiveEffect(this);\n if (this.autoRecycleOnComplete)\n this.recycle();\n }\n }\n const list = this._particles;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n node.update(dt);\n node = next;\n }\n return this;\n }\n spawn() {\n if (this._paused)\n return this;\n const s = this.settings;\n const fx = this.__fx;\n let n = Rnd.integer(s.spawnCountMin, s.spawnCountMax) * fx.particleFac;\n this.core.prepare(n);\n while (--n > -1) {\n if (this._particleCount >= s.maxParticles || fx.particleCount >= fx.maxParticles)\n return this;\n const ps = s.particleSettings;\n const p = fx.__getParticle();\n let component;\n switch (ps.componentType) {\n case 0:\n p.componentId = ps.componentId;\n component = fx.__getSprite(p.componentId);\n break;\n case 1:\n p.componentId = ps.componentId;\n component = fx.__getMovieClip(p.componentId);\n if (ps.componentParams) {\n component.loop = ps.componentParams.loop == null || !ps.componentParams.loop ? false : true;\n component.animationSpeed = Rnd.float(ps.componentParams.animationSpeedMin || 1, ps.componentParams.animationSpeedMax || 1);\n }\n component.gotoAndPlay(0);\n break;\n }\n component.anchor.set(ps.componentParams.anchorX, ps.componentParams.anchorY);\n p.component = component;\n this.core.emit(p);\n p.init(this, ps, this._scaleMod);\n this._particles.add(p);\n this._particleCount++;\n fx.particleCount++;\n }\n this.core.step();\n this._nextSpawnTime = Rnd.float(s.spawnFrequencyMin, s.spawnFrequencyMax);\n return this;\n }\n recycle() {\n if (this.__recycled)\n return;\n if (this.__parent) {\n this.__parent.__removeChildEmitter(this);\n this.__parent = undefined;\n }\n this.recycleParticles();\n this.settings = undefined;\n this._active = false;\n this._paused = false;\n this.completed = true;\n this._x = this._y = this._rotation = 0;\n if (this._hasChildEmitters) {\n this.stopChildEmitters(true);\n this._childEmitters.length = 0;\n this._hasChildEmitters = false;\n }\n this.__fx.emitterCount--;\n this.__fx.__recycleEmitter(this);\n this.__recycled = true;\n this.__adoptRotation = false;\n this.core = null;\n this.target = null;\n this.name = null;\n const on = this.__on;\n if (on.completed.__hasCallback)\n on.completed.removeAll();\n if (on.started.__hasCallback)\n on.started.removeAll();\n if (on.exhausted.__hasCallback)\n on.exhausted.removeAll();\n if (on.particleBounced.__hasCallback)\n on.particleBounced.removeAll();\n if (on.particleDied.__hasCallback)\n on.particleDied.removeAll();\n if (on.particleSpawned.__hasCallback)\n on.particleSpawned.removeAll();\n if (on.particleUpdated.__hasCallback)\n on.particleUpdated.removeAll();\n }\n dispose() {\n const list = this._particles;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n node.recycle();\n node = next;\n }\n list.clear();\n this.__recycled = true;\n if (this._hasChildEmitters) {\n this.stopChildEmitters(false);\n }\n this.__fx.particleCount -= this._particleCount;\n this._particles = null;\n this.componentId = null;\n this.settings = null;\n this._active = false;\n this.completed = true;\n this._childEmitters = null;\n if (this.core) {\n this.core.dispose();\n }\n this.core = null;\n this.target = null;\n this.name = null;\n const on = this.__on;\n on.completed.removeAll();\n on.started.removeAll();\n on.exhausted.removeAll();\n on.particleBounced.removeAll();\n on.particleDied.removeAll();\n on.particleSpawned.removeAll();\n on.particleUpdated.removeAll();\n this.__parent = null;\n this.__fx.__removeActiveEffect(this);\n this.__fx = null;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = this.core.x = value;\n if (!this._xPosIntialized) {\n this.core.__x = value;\n this._xPosIntialized = true;\n }\n if (this._hasChildEmitters) {\n const childs = this._childEmitters;\n let l = childs.length;\n while (--l > -1) {\n childs[l].x = value;\n }\n }\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = this.core.y = value;\n if (!this._yPosIntialized) {\n this.core.__y = value;\n this._yPosIntialized = true;\n }\n if (this._hasChildEmitters) {\n const childs = this._childEmitters;\n let l = childs.length;\n while (--l > -1) {\n childs[l].y = value;\n }\n }\n }\n set rotation(value) {\n this._rotation = this.core.rotation = value;\n if (this._hasChildEmitters) {\n const childs = this._childEmitters;\n let l = childs.length;\n while (--l > -1) {\n const child = childs[l];\n if (child.__adoptRotation) {\n child.rotation = child.settings.rotation + value;\n }\n }\n }\n }\n get rotation() {\n return this._rotation;\n }\n get paused() {\n return this._paused;\n }\n set paused(value) {\n this._paused = value;\n if (this._hasChildEmitters) {\n const childs = this._childEmitters;\n let l = childs.length;\n while (--l > -1) {\n childs[l].paused = value;\n }\n }\n }\n get on() {\n return this.__on;\n }\n // *********************************************************************************************\n // * Private\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n recycleParticles() {\n let node = this._particles.first;\n let next;\n while (node) {\n next = node.next;\n node.recycle();\n node = next;\n }\n this._particles.clear();\n this.__fx.particleCount -= this._particleCount;\n }\n stopChildEmitters(waitForParticles) {\n const childs = this._childEmitters;\n let l = childs.length;\n while (--l > -1) {\n childs[l].stop(waitForParticles);\n }\n }\n // *********************************************************************************************\n // * Internal\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t *\n // *********************************************************************************************\n __removeParticle(particle) {\n if (particle.useSpawns && this._spawnOnComplete) {\n this.__subSpawn(particle, this.settings.particleSettings.spawn.onComplete);\n }\n this._particles.remove(particle);\n this._particleCount--;\n this.__fx.particleCount--;\n particle.recycle();\n }\n __removeChildEmitter(emitter) {\n const index = this._childEmitters.indexOf(emitter);\n if (index > -1) {\n this._childEmitters.splice(index, 1);\n if (this._childEmitters.length == 0)\n this._hasChildEmitters = false;\n }\n }\n __subSpawn(particle, list) {\n const fx = this.__fx;\n if (list) {\n let l = list.length;\n while (--l > -1) {\n const def = list[l];\n let component;\n let container;\n switch (def.type) {\n case 0:\n component = !this.settings.__isClone ? fx.getParticleEmitterById(def.id) : fx.createParticleEmitterFrom(def.settings);\n container = fx.__containers[component.settings.containerId] || this.container;\n component.init(container, true, (def.scale || 1) * this._scaleMod);\n if (def.adoptRotation) {\n component.rotation = particle.component.rotation + component.settings.rotation;\n component.__adoptRotation = true;\n }\n else {\n component.rotation = component.settings.rotation;\n }\n break;\n case 1:\n component = !this.settings.__isClone ? fx.getEffectSequenceById(def.id) : fx.createEffectSequenceEmitterFrom(def.settings);\n container = fx.__containers[component.settings.containerId] || this.container;\n component.init(container, 0, true, (def.scale || 1) * this._scaleMod);\n if (def.adoptRotation) {\n component.rotation = particle.component.rotation;\n }\n break;\n }\n component.x = particle.component.x;\n component.y = particle.component.y;\n }\n }\n }\n __applySettings(value) {\n const fx = this.__fx;\n this.__recycled = this._xPosIntialized = this._yPosIntialized = false;\n this.settings = value;\n this.core = fx.__getEmitterCore(value.core.type, this);\n this.core.init(this);\n this.rotation = value.rotation;\n this.name = value.name;\n this._spawnOnComplete = value.particleSettings.spawn.onComplete.length > 0;\n this._childEmitters.length = 0;\n if (value.__isClone) {\n //Clone spawns\n const spawns = value.particleSettings.spawn;\n for (const key in spawns) {\n const list = spawns[key];\n for (const spawn of list) {\n switch (spawn.type) {\n case SpawnType.ParticleEmitter:\n spawn.settings = deepClone(fx.__getEmitterSettings(spawn.id));\n break;\n case SpawnType.EffectSequence:\n spawn.settings = deepClone(fx.__getSequenceSettings(spawn.id));\n break;\n }\n spawn.settings.__isClone = true;\n }\n }\n //Clone childs\n const childs = value.childs;\n for (const spawn of childs) {\n switch (spawn.type) {\n case SpawnType.ParticleEmitter:\n spawn.settings = deepClone(fx.__getEmitterSettings(spawn.id));\n break;\n case SpawnType.EffectSequence:\n spawn.settings = deepClone(fx.__getSequenceSettings(spawn.id));\n break;\n }\n spawn.settings.__isClone = true;\n }\n }\n }\n __setCore(type) {\n this.core = this.__fx.__getEmitterCore(type, this);\n this.core.init(this);\n this.core.__scaleMod = this._scaleMod;\n this._xPosIntialized = this._yPosIntialized = false;\n }\n}\n//# sourceMappingURL=ParticleEmitter.js.map","/// <reference types=\"pixi.js\" />\nimport { BaseEffect } from \"./BaseEffect\";\nimport { EffectSequenceComponentType } from \"./EffectSequenceComponentType\";\nimport { ParticleEmitter } from \"./ParticleEmitter\";\nimport { FXSignal } from \"./util/FXSignal\";\nimport { LinkedList, Node } from \"./util/LinkedList\";\nimport { Rnd } from \"./util/Rnd\";\nexport class EffectSequence extends BaseEffect {\n constructor(componentId) {\n super(componentId);\n this._list = [];\n this._elements = new LinkedList();\n this.__on = {\n started: new FXSignal(),\n completed: new FXSignal(),\n exhausted: new FXSignal(),\n effectSpawned: new FXSignal(),\n triggerActivated: new FXSignal()\n };\n }\n // *********************************************************************************************\n // * Public\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t *\n // *********************************************************************************************\n init(container, delay = 0, autoStart = true, scaleMod = 1) {\n this.container = container;\n this._scaleMod = scaleMod;\n this._delay = delay * 1000;\n if (autoStart)\n this.start();\n return this;\n }\n start() {\n if (this._active)\n return;\n this._startTime = Date.now() + (this.settings.delay ? this.settings.delay * 1000 : 0) + this._delay;\n this._index = 0;\n if (this._list.length == 0) {\n this._active = false;\n if (this.__on.exhausted.__hasCallback) {\n this.__on.exhausted.dispatch(this);\n }\n if (this.__on.completed.__hasCallback) {\n this.__on.completed.dispatch(this);\n }\n this.recycle();\n return this;\n }\n this.exhausted = this.completed = false;\n this.setNextEffect();\n this.__fx.effectSequenceCount++;\n this.__fx.__addActiveEffect(this);\n if (this.__on.started.__hasCallback) {\n this.__on.started.dispatch(this);\n }\n return this;\n }\n update(dt) {\n const t = Date.now();\n if (t < this._startTime)\n return;\n this._time += dt;\n if (!this.exhausted && t >= this._effectStartTime) {\n const fx = this.__fx;\n const def = this._nextEffectSettings;\n let effect;\n let node;\n let container;\n switch (def.componentType) {\n case EffectSequenceComponentType.Sprite:\n effect = fx.__getSprite(def.componentId);\n container = fx.__containers[def.containerId] || this.container;\n container.addChild(effect);\n effect.blendMode = fx.__getBlendMode(def.blendMode);\n effect.tint = def.tint;\n effect.scale.set(Rnd.float(def.scaleMin, def.scaleMax) * Rnd.float(this.settings.scaleMin, this.settings.scaleMax) * this._scaleMod);\n effect.alpha = Rnd.float(def.alphaMin, def.alphaMax);\n effect.anchor.set(def.componentParams.anchorX, def.componentParams.anchorY);\n node = new Node({ component: effect, endTime: t + (def.duration) * 1000 });\n this._elements.add(node);\n effect.x = this._x;\n effect.y = this._y;\n effect.rotation = this._rotation + Rnd.float(def.rotationMin, def.rotationMax);\n if (this.__on.effectSpawned.__hasCallback) {\n this.__on.effectSpawned.dispatch(EffectSequenceComponentType.Sprite, effect);\n }\n break;\n case EffectSequenceComponentType.MovieClip:\n effect = fx.__getMovieClip(def.componentId);\n if (def.componentParams.loop) {\n effect.animationSpeed = Rnd.float(def.componentParams.animationSpeedMin || 1, def.componentParams.animationSpeedMax || 1);\n effect.loop = def.componentParams.loop || false;\n }\n else {\n const speed = def.duration;\n }\n effect.anchor.set(def.componentParams.anchorX, def.componentParams.anchorY);\n effect.gotoAndPlay(0);\n container = fx.__containers[def.containerId] || this.container;\n container.addChild(effect);\n effect.blendMode = fx.__getBlendMode(def.blendMode);\n effect.tint = def.tint;\n effect.scale.set(Rnd.float(def.scaleMin, def.scaleMax) * Rnd.float(this.settings.scaleMin, this.settings.scaleMax) * this._scaleMod);\n effect.alpha = Rnd.float(def.alphaMin, def.alphaMax);\n node = new Node({ component: effect, endTime: t + (def.duration) * 1000 });\n this._elements.add(node);\n effect.x = this._x;\n effect.y = this._y;\n effect.rotation = this._rotation + Rnd.float(def.rotationMin, def.rotationMax);\n if (this.__on.effectSpawned.__hasCallback) {\n this.__on.effectSpawned.dispatch(EffectSequenceComponentType.MovieClip, effect);\n }\n break;\n case EffectSequenceComponentType.Emitter:\n effect = fx.getParticleEmitterById(def.componentId);\n container = fx.__containers[def.containerId] || this.container;\n effect.init(container, true, Rnd.float(def.scaleMin, def.scaleMax) * Rnd.float(this.settings.scaleMin, this.settings.scaleMax) * this._scaleMod);\n node = new Node({ component: effect, endTime: effect.endTime });\n this._elements.add(node);\n effect.x = this._x;\n effect.y = this._y;\n effect.rotation = this._rotation + effect.settings.rotation;\n if (this.__on.effectSpawned.__hasCallback) {\n this.__on.effectSpawned.dispatch(EffectSequenceComponentType.Emitter, effect);\n }\n break;\n case EffectSequenceComponentType.Trigger:\n if (this.__on.triggerActivated.__hasCallback) {\n this.__on.triggerActivated.dispatch(def.triggerValue);\n }\n break;\n }\n if (this._index == this._list.length) {\n this.exhausted = true;\n if (this.__on.exhausted.__hasCallback) {\n this.__on.exhausted.dispatch(this);\n }\n }\n else {\n this.setNextEffect();\n }\n }\n const list = this._elements;\n let node = list.first;\n while (node) {\n node.update(dt);\n if (t > node.data.endTime) {\n const component = node.data.component;\n if (component instanceof ParticleEmitter) {\n if (component.completed) {\n list.remove(node);\n }\n }\n else {\n list.remove(node);\n component.recycle();\n }\n }\n node = node.next;\n }\n if (this.exhausted && list.length == 0) {\n this._active = false;\n this.completed = true;\n if (this.__on.completed.__hasCallback) {\n this.__on.completed.dispatch(this);\n }\n this.recycle();\n }\n }\n stop() {\n this.recycle();\n }\n recycle() {\n if (this.__recycled)\n return;\n const list = this._elements;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n node.data.component.recycle();\n node = next;\n }\n const on = this.__on;\n if (on.completed.__hasCallback)\n on.completed.removeAll();\n if (on.started.__hasCallback)\n on.started.removeAll();\n if (on.exhausted.__hasCallback)\n on.exhausted.removeAll();\n if (on.effectSpawned.__hasCallback)\n on.effectSpawned.removeAll();\n if (on.triggerActivated.__hasCallback)\n on.triggerActivated.removeAll();\n list.clear();\n this.__recycled = true;\n this._x = this._y = this._rotation = 0;\n this.__fx.effectSequenceCount--;\n this.__fx.__recycleEffectSequence(this);\n }\n dispose() {\n this._elements.clear();\n this.__fx = undefined;\n const on = this.__on;\n on.completed = on.started = on.exhausted = on.effectSpawned = on.triggerActivated = undefined;\n }\n set rotation(value) {\n this._rotation = value;\n const list = this._elements;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n node.data.rotation = value;\n node = next;\n }\n }\n get x() {\n return this._x;\n }\n set x(value) {\n this._x = value;\n const list = this._elements;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n node.data.x = value;\n node = next;\n }\n }\n get y() {\n return this._y;\n }\n set y(value) {\n this._y = value;\n const list = this._elements;\n let node = list.first;\n let next;\n while (node) {\n next = node.next;\n node.data.y = value;\n node = next;\n }\n }\n get rotation() {\n return this._rotation;\n }\n get on() {\n return this.__on;\n }\n // *********************************************************************************************\n // * Private\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t * \t\t \n // *********************************************************************************************\n setNextEffect() {\n if (this.exhausted)\n return;\n const def = this._nextEffectSettings = this._list[this._index++];\n this._effectStartTime = this._startTime + def.delay * 1000;\n }\n // *********************************************************************************************\n // * Internal\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t * \t\t \n // *********************************************************************************************\n __applySettings(value) {\n this.settings = value;\n this.name = value.name;\n this._list = value.effects.slice();\n this.__recycled = false;\n }\n}\n//# sourceMappingURL=EffectSequence.js.map","import * as PIXI from \"pixi.js\";\nimport { FX } from \"revolt-fx\";\nimport { h, mount, tick, Container, on, useProps } from \"canvasengine\";\n\nexport function Particle(options) {\n const { emit, settings = {} } = options;\n const { name } = useProps(options);\n const fx = new FX();\n let element;\n\n PIXI.Assets.add({ alias: \"fx_settings\", src: \"/default-bundle.json\" });\n PIXI.Assets.add({\n alias: \"fx_spritesheet\",\n src: \"/revoltfx-spritesheet.json\",\n });\n\n tick(({deltaRatio}) => {\n fx.update(deltaRatio);\n });\n\n mount(async (_element) => {\n element = _element;\n\n const data = await PIXI.Assets.load([\"fx_settings\", \"fx_spritesheet\"]);\n let fxSettings = {...data.fx_settings};\n\n if (settings.emitters) {\n const lastId = 10000;\n const emittersWithIds = settings.emitters.map((emitter, index) => ({\n ...emitter,\n id: lastId + index\n }));\n\n fxSettings.emitters = [\n ...fxSettings.emitters,\n ...emittersWithIds,\n ];\n\n }\n\n fx.initBundle(fxSettings, true);\n });\n\n on(emit, () => {\n const emitter = fx.getParticleEmitter(name());\n emitter.init(element.componentInstance);\n });\n\n return h(Container);\n}\n","import { Container, Graphics, h, mount, useProps, animatedSignal, RadialGradient, effect, isSignal, signal, isObservable } from \"canvasengine\";\n\nexport function LightSpot(opts) {\n const { radius } = useProps(opts);\n const scale = animatedSignal(1);\n\n const minScale = 1;\n const maxScale = 2; // Reduced max scale for subtler effect\n const scintillationSpeed = 0.001; // Significantly reduced for slower scintillation\n\n const animate = () => {\n // Use time-based animation for smoother, slower scintillation\n const time = Date.now() * scintillationSpeed;\n\n // Combine multiple sine waves for a more natural, less predictable effect\n const scintillationFactor =\n (Math.sin(time) + Math.sin(time * 1.3) + Math.sin(time * 0.7)) / 3;\n\n // Map the scintillation factor to the scale range\n const newScale =\n minScale + (maxScale - minScale) * (scintillationFactor * 0.5 + 0.5);\n\n scale.update(() => newScale);\n\n requestAnimationFrame(animate);\n };\n\n animate();\n\n const draw = (g) => {\n const size = radius() * 2;\n const gradient = new RadialGradient(size, size, 0, size, size, 0);\n gradient.addColorStop(0, \"rgba(255, 255, 0, 1)\");\n gradient.addColorStop(0.5, \"rgba(255, 255, 0, 0.3)\");\n gradient.addColorStop(0.8, \"rgba(255, 255, 0, 0)\");\n\n const translate = size / 2;\n\n g.rect(-translate, -translate, size, size).fill(\n gradient.render({ translate: { x: translate, y: translate } })\n );\n };\n\n return h(Graphics, {\n draw,\n ...opts,\n scale,\n });\n}\n\nexport function NightAmbiant(props) {\n const { children } = props;\n let el\n const width = signal(0);\n const height = signal(0);\n let subscription\n const draw = (rectAndHole) => {\n const margin = 80\n rectAndHole.rect(-margin, -margin, width() + margin*2, height() + margin*2);\n rectAndHole.fill(0x000000);\n const applyChildren = (child) => {\n const x = isSignal(child.propObservables.x)\n ? child.propObservables.x()\n : child.props.x;\n const y = isSignal(child.propObservables.y)\n ? child.propObservables.y()\n : child.props.y;\n const radius = isSignal(child.propObservables.radius)\n ? child.propObservables.radius()\n : child.props.radius;\n rectAndHole.circle(x, y, radius);\n rectAndHole.cut();\n }\n for (let child of children) {\n if (isObservable(child)) {\n if (subscription) {\n subscription.unsubscribe()\n }\n subscription = child.subscribe((event: any) => {\n for (let child of event.fullElements) {\n applyChildren(child)\n }\n })\n return\n }\n applyChildren(child)\n }\n };\n\n mount((el) => {\n effect(() => {\n const { displayWidth, displayHeight } = el.componentInstance as any\n const w = +displayWidth()\n const h = +displayHeight()\n setTimeout(() => {\n width.update(() => w)\n height.update(() => h)\n }, 0) // hack\n });\n });\n\n return h(\n Container,\n {\n width: \"100%\",\n height: \"100%\",\n ...props,\n },\n h(Graphics, {\n draw,\n alpha: 0.8,\n blur: 80,\n }),\n ...children\n );\n}\n","/*\n * Joystick\n *\n * Inspired by https://github.com/endel/pixi-virtual-joystick\n */\n\nimport * as PIXI from \"pixi.js\";\nimport { Circle, Container, Graphics, Rect, Sprite, h, signal } from \"canvasengine\";\n\nexport interface JoystickChangeEvent {\n angle: number;\n direction: Direction;\n power: number;\n}\n\nexport enum Direction {\n LEFT = \"left\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n RIGHT = \"right\",\n TOP_LEFT = \"top_left\",\n TOP_RIGHT = \"top_right\",\n BOTTOM_LEFT = \"bottom_left\",\n BOTTOM_RIGHT = \"bottom_right\",\n}\n\nexport interface JoystickSettings {\n outer?: string;\n inner?: string;\n outerScale?: { x: number; y: number };\n innerScale?: { x: number; y: number };\n innerColor?: string;\n outerColor?: string;\n onChange?: (data: JoystickChangeEvent) => void;\n onStart?: () => void;\n onEnd?: () => void;\n}\n\nexport function Joystick(opts: JoystickSettings = {}) {\n const settings = Object.assign(\n {\n outerScale: { x: 1, y: 1 },\n innerScale: { x: 1, y: 1 },\n innerColor: \"black\",\n outerColor: \"black\",\n },\n opts\n );\n\n let outerRadius = 70;\n let innerRadius = 10;\n const innerAlphaStandby = 0.5;\n\n let dragging = false;\n let startPosition: PIXI.PointData | null = null;\n let power = 0;\n\n const innerPositionX = signal(0);\n const innerPositionY = signal(0);\n const innerAlpha = signal(innerAlphaStandby);\n\n function getPower(centerPoint: PIXI.Point) {\n const a = centerPoint.x - 0;\n const b = centerPoint.y - 0;\n return Math.min(1, Math.sqrt(a * a + b * b) / outerRadius);\n }\n\n function getDirection(center: PIXI.Point) {\n let rad = Math.atan2(center.y, center.x); // [-PI, PI]\n if ((rad >= -Math.PI / 8 && rad < 0) || (rad >= 0 && rad < Math.PI / 8)) {\n return Direction.RIGHT;\n } else if (rad >= Math.PI / 8 && rad < (3 * Math.PI) / 8) {\n return Direction.BOTTOM_RIGHT;\n } else if (rad >= (3 * Math.PI) / 8 && rad < (5 * Math.PI) / 8) {\n return Direction.BOTTOM;\n } else if (rad >= (5 * Math.PI) / 8 && rad < (7 * Math.PI) / 8) {\n return Direction.BOTTOM_LEFT;\n } else if (\n (rad >= (7 * Math.PI) / 8 && rad < Math.PI) ||\n (rad >= -Math.PI && rad < (-7 * Math.PI) / 8)\n ) {\n return Direction.LEFT;\n } else if (rad >= (-7 * Math.PI) / 8 && rad < (-5 * Math.PI) / 8) {\n return Direction.TOP_LEFT;\n } else if (rad >= (-5 * Math.PI) / 8 && rad < (-3 * Math.PI) / 8) {\n return Direction.TOP;\n } else {\n return Direction.TOP_RIGHT;\n }\n }\n\n function handleDragStart(event: any) {\n startPosition = event.getLocalPosition(this);\n dragging = true;\n innerAlpha.set(1);\n settings.onStart?.();\n }\n\n function handleDragEnd() {\n if (!dragging) return;\n innerPositionX.set(0);\n innerPositionY.set(0);\n dragging = false;\n innerAlpha.set(innerAlphaStandby);\n settings.onEnd?.();\n }\n\n function handleDragMove(event: any) {\n if (dragging == false) {\n return;\n }\n\n let newPosition = event.getLocalPosition(this);\n\n let sideX = newPosition.x - (startPosition?.x ?? 0);\n let sideY = newPosition.y - (startPosition?.y ?? 0);\n\n let centerPoint = new PIXI.Point(0, 0);\n let angle = 0;\n\n if (sideX == 0 && sideY == 0) {\n return;\n }\n\n let calRadius = 0;\n\n if (sideX * sideX + sideY * sideY >= outerRadius * outerRadius) {\n calRadius = outerRadius;\n } else {\n calRadius = outerRadius - innerRadius;\n }\n\n /**\n * x: -1 <-> 1\n * y: -1 <-> 1\n * Y\n * ^\n * |\n * 180 | 90\n * ------------> X\n * 270 | 360\n * |\n * |\n */\n\n let direction = Direction.LEFT;\n \n if (sideX == 0) {\n if (sideY > 0) {\n centerPoint.set(0, sideY > outerRadius ? outerRadius : sideY);\n angle = 270;\n direction = Direction.BOTTOM;\n } else {\n centerPoint.set(\n 0,\n -(Math.abs(sideY) > outerRadius ? outerRadius : Math.abs(sideY))\n );\n angle = 90;\n direction = Direction.TOP;\n }\n innerPositionX.set(centerPoint.x);\n innerPositionY.set(centerPoint.y);\n power = getPower(centerPoint);\n settings.onChange?.({ angle, direction, power });\n return;\n }\n\n if (sideY == 0) {\n if (sideX > 0) {\n centerPoint.set(\n Math.abs(sideX) > outerRadius ? outerRadius : Math.abs(sideX),\n 0\n );\n angle = 0;\n direction = Direction.LEFT;\n } else {\n centerPoint.set(\n -(Math.abs(sideX) > outerRadius ? outerRadius : Math.abs(sideX)),\n 0\n );\n angle = 180;\n direction = Direction.RIGHT;\n }\n\n innerPositionX.set(centerPoint.x);\n innerPositionY.set(centerPoint.y);\n power = getPower(centerPoint);\n settings.onChange?.({ angle, direction, power });\n return;\n }\n\n let tanVal = Math.abs(sideY / sideX);\n let radian = Math.atan(tanVal);\n angle = (radian * 180) / Math.PI;\n\n let centerX = 0;\n let centerY = 0;\n\n if (sideX * sideX + sideY * sideY >= outerRadius * outerRadius) {\n centerX = outerRadius * Math.cos(radian);\n centerY = outerRadius * Math.sin(radian);\n } else {\n centerX = Math.abs(sideX) > outerRadius ? outerRadius : Math.abs(sideX);\n centerY = Math.abs(sideY) > outerRadius ? outerRadius : Math.abs(sideY);\n }\n\n if (sideY < 0) {\n centerY = -Math.abs(centerY);\n }\n if (sideX < 0) {\n centerX = -Math.abs(centerX);\n }\n\n if (sideX > 0 && sideY < 0) {\n // < 90\n } else if (sideX < 0 && sideY < 0) {\n // 90 ~ 180\n angle = 180 - angle;\n } else if (sideX < 0 && sideY > 0) {\n // 180 ~ 270\n angle = angle + 180;\n } else if (sideX > 0 && sideY > 0) {\n // 270 ~ 369\n angle = 360 - angle;\n }\n centerPoint.set(centerX, centerY);\n power = getPower(centerPoint);\n\n direction = getDirection(centerPoint);\n innerPositionX.set(centerPoint.x);\n innerPositionY.set(centerPoint.y);\n settings.onChange?.({ angle, direction, power });\n }\n\n let innerElement;\n let outerElement;\n\n if (!settings.outer) {\n outerElement = h(Graphics, {\n draw: (g) => {\n g.circle(0, 0, outerRadius).fill(settings.outerColor);\n },\n alpha: 0.5,\n });\n } else {\n outerElement = h(Sprite, {\n image: settings.outer,\n anchor: { x: 0.5, y: 0.5 },\n scale: settings.outerScale,\n });\n }\n\n const innerOptions: any = {\n scale: settings.innerScale,\n x: innerPositionX,\n y: innerPositionY,\n alpha: innerAlpha,\n };\n\n if (!settings.inner) {\n innerElement = h(Graphics, {\n draw: (g) => {\n g.circle(0, 0, innerRadius * 2.5).fill(settings.innerColor);\n },\n ...innerOptions,\n });\n } else {\n innerElement = settings.inner\n }\n\n return h(\n Container,\n {\n ...opts,\n pointerdown: handleDragStart,\n pointerup: handleDragEnd,\n pointerupoutside: handleDragEnd,\n pointermove: handleDragMove,\n },\n outerElement,\n innerElement,\n );\n}\n","var TiledLayerType = /* @__PURE__ */ ((TiledLayerType2) => {\n TiledLayerType2[\"Tile\"] = \"tilelayer\";\n TiledLayerType2[\"ObjectGroup\"] = \"objectgroup\";\n TiledLayerType2[\"Image\"] = \"imagelayer\";\n TiledLayerType2[\"Group\"] = \"group\";\n return TiledLayerType2;\n})(TiledLayerType || {});\n\nfunction isTiledFormat(val) {\n return typeof val == \"object\" && val.version && val.orientation;\n}\nfunction joinPath(...segments) {\n return segments.filter((segment) => segment && segment.length > 0).join(\"/\").replace(/\\/+/g, \"/\");\n}\n\nfunction getAugmentedNamespace(n) {\n if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n;\n var f = n.default;\n\tif (typeof f == \"function\") {\n\t\tvar a = function a () {\n\t\t\tif (this instanceof a) {\n return Reflect.construct(f, arguments, this.constructor);\n\t\t\t}\n\t\t\treturn f.apply(this, arguments);\n\t\t};\n\t\ta.prototype = f.prototype;\n } else a = {};\n Object.defineProperty(a, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nvar sax = {};\n\nconst __viteBrowserExternal = {};\n\nconst __viteBrowserExternal$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: 'Module' }));\n\nconst require$$0 = /*@__PURE__*/getAugmentedNamespace(__viteBrowserExternal$1);\n\nvar string_decoder = {};\n\nvar safeBuffer = {exports: {}};\n\nvar buffer = {};\n\nvar base64Js = {};\n\nvar hasRequiredBase64Js;\n\nfunction requireBase64Js () {\n\tif (hasRequiredBase64Js) return base64Js;\n\thasRequiredBase64Js = 1;\n\n\tbase64Js.byteLength = byteLength;\n\tbase64Js.toByteArray = toByteArray;\n\tbase64Js.fromByteArray = fromByteArray;\n\n\tvar lookup = [];\n\tvar revLookup = [];\n\tvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\n\tvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\tfor (var i = 0, len = code.length; i < len; ++i) {\n\t lookup[i] = code[i];\n\t revLookup[code.charCodeAt(i)] = i;\n\t}\n\n\t// Support decoding URL-safe base64 strings, as Node.js does.\n\t// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\trevLookup['-'.charCodeAt(0)] = 62;\n\trevLookup['_'.charCodeAt(0)] = 63;\n\n\tfunction getLens (b64) {\n\t var len = b64.length;\n\n\t if (len % 4 > 0) {\n\t throw new Error('Invalid string. Length must be a multiple of 4')\n\t }\n\n\t // Trim off extra bytes after placeholder bytes are found\n\t // See: https://github.com/beatgammit/base64-js/issues/42\n\t var validLen = b64.indexOf('=');\n\t if (validLen === -1) validLen = len;\n\n\t var placeHoldersLen = validLen === len\n\t ? 0\n\t : 4 - (validLen % 4);\n\n\t return [validLen, placeHoldersLen]\n\t}\n\n\t// base64 is 4/3 + up to two characters of the original data\n\tfunction byteLength (b64) {\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction _byteLength (b64, validLen, placeHoldersLen) {\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction toByteArray (b64) {\n\t var tmp;\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\n\t var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n\t var curByte = 0;\n\n\t // if there are placeholders, only get up to the last complete 4 chars\n\t var len = placeHoldersLen > 0\n\t ? validLen - 4\n\t : validLen;\n\n\t var i;\n\t for (i = 0; i < len; i += 4) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 18) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 12) |\n\t (revLookup[b64.charCodeAt(i + 2)] << 6) |\n\t revLookup[b64.charCodeAt(i + 3)];\n\t arr[curByte++] = (tmp >> 16) & 0xFF;\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 2) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 2) |\n\t (revLookup[b64.charCodeAt(i + 1)] >> 4);\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 1) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 10) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 4) |\n\t (revLookup[b64.charCodeAt(i + 2)] >> 2);\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t return arr\n\t}\n\n\tfunction tripletToBase64 (num) {\n\t return lookup[num >> 18 & 0x3F] +\n\t lookup[num >> 12 & 0x3F] +\n\t lookup[num >> 6 & 0x3F] +\n\t lookup[num & 0x3F]\n\t}\n\n\tfunction encodeChunk (uint8, start, end) {\n\t var tmp;\n\t var output = [];\n\t for (var i = start; i < end; i += 3) {\n\t tmp =\n\t ((uint8[i] << 16) & 0xFF0000) +\n\t ((uint8[i + 1] << 8) & 0xFF00) +\n\t (uint8[i + 2] & 0xFF);\n\t output.push(tripletToBase64(tmp));\n\t }\n\t return output.join('')\n\t}\n\n\tfunction fromByteArray (uint8) {\n\t var tmp;\n\t var len = uint8.length;\n\t var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\t var parts = [];\n\t var maxChunkLength = 16383; // must be multiple of 3\n\n\t // go through the array every three bytes, we'll deal with trailing stuff later\n\t for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n\t parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n\t }\n\n\t // pad the end with zeros, but make sure to not forget the extra bytes\n\t if (extraBytes === 1) {\n\t tmp = uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 2] +\n\t lookup[(tmp << 4) & 0x3F] +\n\t '=='\n\t );\n\t } else if (extraBytes === 2) {\n\t tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 10] +\n\t lookup[(tmp >> 4) & 0x3F] +\n\t lookup[(tmp << 2) & 0x3F] +\n\t '='\n\t );\n\t }\n\n\t return parts.join('')\n\t}\n\treturn base64Js;\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nvar hasRequiredIeee754;\n\nfunction requireIeee754 () {\n\tif (hasRequiredIeee754) return ieee754;\n\thasRequiredIeee754 = 1;\n\tieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var nBits = -7;\n\t var i = isLE ? (nBytes - 1) : 0;\n\t var d = isLE ? -1 : 1;\n\t var s = buffer[offset + i];\n\n\t i += d;\n\n\t e = s & ((1 << (-nBits)) - 1);\n\t s >>= (-nBits);\n\t nBits += eLen;\n\t for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t m = e & ((1 << (-nBits)) - 1);\n\t e >>= (-nBits);\n\t nBits += mLen;\n\t for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t if (e === 0) {\n\t e = 1 - eBias;\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen);\n\t e = e - eBias;\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t};\n\n\tieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n\t var i = isLE ? 0 : (nBytes - 1);\n\t var d = isLE ? 1 : -1;\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n\t value = Math.abs(value);\n\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0;\n\t e = eMax;\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2);\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--;\n\t c *= 2;\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c;\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias);\n\t }\n\t if (value * c >= 2) {\n\t e++;\n\t c /= 2;\n\t }\n\n\t if (e + eBias >= eMax) {\n\t m = 0;\n\t e = eMax;\n\t } else if (e + eBias >= 1) {\n\t m = ((value * c) - 1) * Math.pow(2, mLen);\n\t e = e + eBias;\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n\t e = 0;\n\t }\n\t }\n\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n\t e = (e << mLen) | m;\n\t eLen += mLen;\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n\t buffer[offset + i - d] |= s * 128;\n\t};\n\treturn ieee754;\n}\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nvar hasRequiredBuffer;\n\nfunction requireBuffer () {\n\tif (hasRequiredBuffer) return buffer;\n\thasRequiredBuffer = 1;\n\t(function (exports) {\n\n\t\tconst base64 = requireBase64Js();\n\t\tconst ieee754 = requireIeee754();\n\t\tconst customInspectSymbol =\n\t\t (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t\t ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t\t : null;\n\n\t\texports.Buffer = Buffer;\n\t\texports.SlowBuffer = SlowBuffer;\n\t\texports.INSPECT_MAX_BYTES = 50;\n\n\t\tconst K_MAX_LENGTH = 0x7fffffff;\n\t\texports.kMaxLength = K_MAX_LENGTH;\n\n\t\t/**\n\t\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t\t * === true Use Uint8Array implementation (fastest)\n\t\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t\t * implementation (most compatible, even IE6)\n\t\t *\n\t\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t\t * Opera 11.6+, iOS 4.2+.\n\t\t *\n\t\t * We report that the browser does not support typed arrays if the are not subclassable\n\t\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t\t * for __proto__ and has a buggy typed array implementation.\n\t\t */\n\t\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\t\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t\t typeof console.error === 'function') {\n\t\t console.error(\n\t\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t\t );\n\t\t}\n\n\t\tfunction typedArraySupport () {\n\t\t // Can typed array instances can be augmented?\n\t\t try {\n\t\t const arr = new Uint8Array(1);\n\t\t const proto = { foo: function () { return 42 } };\n\t\t Object.setPrototypeOf(proto, Uint8Array.prototype);\n\t\t Object.setPrototypeOf(arr, proto);\n\t\t return arr.foo() === 42\n\t\t } catch (e) {\n\t\t return false\n\t\t }\n\t\t}\n\n\t\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t\t enumerable: true,\n\t\t get: function () {\n\t\t if (!Buffer.isBuffer(this)) return undefined\n\t\t return this.buffer\n\t\t }\n\t\t});\n\n\t\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t\t enumerable: true,\n\t\t get: function () {\n\t\t if (!Buffer.isBuffer(this)) return undefined\n\t\t return this.byteOffset\n\t\t }\n\t\t});\n\n\t\tfunction createBuffer (length) {\n\t\t if (length > K_MAX_LENGTH) {\n\t\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t\t }\n\t\t // Return an augmented `Uint8Array` instance\n\t\t const buf = new Uint8Array(length);\n\t\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t\t return buf\n\t\t}\n\n\t\t/**\n\t\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t\t * returns a single octet.\n\t\t *\n\t\t * The `Uint8Array` prototype remains unmodified.\n\t\t */\n\n\t\tfunction Buffer (arg, encodingOrOffset, length) {\n\t\t // Common case.\n\t\t if (typeof arg === 'number') {\n\t\t if (typeof encodingOrOffset === 'string') {\n\t\t throw new TypeError(\n\t\t 'The \"string\" argument must be of type string. Received type number'\n\t\t )\n\t\t }\n\t\t return allocUnsafe(arg)\n\t\t }\n\t\t return from(arg, encodingOrOffset, length)\n\t\t}\n\n\t\tBuffer.poolSize = 8192; // not used by this implementation\n\n\t\tfunction from (value, encodingOrOffset, length) {\n\t\t if (typeof value === 'string') {\n\t\t return fromString(value, encodingOrOffset)\n\t\t }\n\n\t\t if (ArrayBuffer.isView(value)) {\n\t\t return fromArrayView(value)\n\t\t }\n\n\t\t if (value == null) {\n\t\t throw new TypeError(\n\t\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t\t 'or Array-like Object. Received type ' + (typeof value)\n\t\t )\n\t\t }\n\n\t\t if (isInstance(value, ArrayBuffer) ||\n\t\t (value && isInstance(value.buffer, ArrayBuffer))) {\n\t\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t\t }\n\n\t\t if (typeof SharedArrayBuffer !== 'undefined' &&\n\t\t (isInstance(value, SharedArrayBuffer) ||\n\t\t (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n\t\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t\t }\n\n\t\t if (typeof value === 'number') {\n\t\t throw new TypeError(\n\t\t 'The \"value\" argument must not be of type number. Received type number'\n\t\t )\n\t\t }\n\n\t\t const valueOf = value.valueOf && value.valueOf();\n\t\t if (valueOf != null && valueOf !== value) {\n\t\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t\t }\n\n\t\t const b = fromObject(value);\n\t\t if (b) return b\n\n\t\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t\t typeof value[Symbol.toPrimitive] === 'function') {\n\t\t return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t\t }\n\n\t\t throw new TypeError(\n\t\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t\t 'or Array-like Object. Received type ' + (typeof value)\n\t\t )\n\t\t}\n\n\t\t/**\n\t\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t\t * if value is a number.\n\t\t * Buffer.from(str[, encoding])\n\t\t * Buffer.from(array)\n\t\t * Buffer.from(buffer)\n\t\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t\t **/\n\t\tBuffer.from = function (value, encodingOrOffset, length) {\n\t\t return from(value, encodingOrOffset, length)\n\t\t};\n\n\t\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t\t// https://github.com/feross/buffer/pull/148\n\t\tObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n\t\tObject.setPrototypeOf(Buffer, Uint8Array);\n\n\t\tfunction assertSize (size) {\n\t\t if (typeof size !== 'number') {\n\t\t throw new TypeError('\"size\" argument must be of type number')\n\t\t } else if (size < 0) {\n\t\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t\t }\n\t\t}\n\n\t\tfunction alloc (size, fill, encoding) {\n\t\t assertSize(size);\n\t\t if (size <= 0) {\n\t\t return createBuffer(size)\n\t\t }\n\t\t if (fill !== undefined) {\n\t\t // Only pay attention to encoding if it's a string. This\n\t\t // prevents accidentally sending in a number that would\n\t\t // be interpreted as a start offset.\n\t\t return typeof encoding === 'string'\n\t\t ? createBuffer(size).fill(fill, encoding)\n\t\t : createBuffer(size).fill(fill)\n\t\t }\n\t\t return createBuffer(size)\n\t\t}\n\n\t\t/**\n\t\t * Creates a new filled Buffer instance.\n\t\t * alloc(size[, fill[, encoding]])\n\t\t **/\n\t\tBuffer.alloc = function (size, fill, encoding) {\n\t\t return alloc(size, fill, encoding)\n\t\t};\n\n\t\tfunction allocUnsafe (size) {\n\t\t assertSize(size);\n\t\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t\t}\n\n\t\t/**\n\t\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t\t * */\n\t\tBuffer.allocUnsafe = function (size) {\n\t\t return allocUnsafe(size)\n\t\t};\n\t\t/**\n\t\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t\t */\n\t\tBuffer.allocUnsafeSlow = function (size) {\n\t\t return allocUnsafe(size)\n\t\t};\n\n\t\tfunction fromString (string, encoding) {\n\t\t if (typeof encoding !== 'string' || encoding === '') {\n\t\t encoding = 'utf8';\n\t\t }\n\n\t\t if (!Buffer.isEncoding(encoding)) {\n\t\t throw new TypeError('Unknown encoding: ' + encoding)\n\t\t }\n\n\t\t const length = byteLength(string, encoding) | 0;\n\t\t let buf = createBuffer(length);\n\n\t\t const actual = buf.write(string, encoding);\n\n\t\t if (actual !== length) {\n\t\t // Writing a hex string, for example, that contains invalid characters will\n\t\t // cause everything after the first invalid character to be ignored. (e.g.\n\t\t // 'abxxcd' will be treated as 'ab')\n\t\t buf = buf.slice(0, actual);\n\t\t }\n\n\t\t return buf\n\t\t}\n\n\t\tfunction fromArrayLike (array) {\n\t\t const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t\t const buf = createBuffer(length);\n\t\t for (let i = 0; i < length; i += 1) {\n\t\t buf[i] = array[i] & 255;\n\t\t }\n\t\t return buf\n\t\t}\n\n\t\tfunction fromArrayView (arrayView) {\n\t\t if (isInstance(arrayView, Uint8Array)) {\n\t\t const copy = new Uint8Array(arrayView);\n\t\t return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t\t }\n\t\t return fromArrayLike(arrayView)\n\t\t}\n\n\t\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t\t }\n\n\t\t if (array.byteLength < byteOffset + (length || 0)) {\n\t\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t\t }\n\n\t\t let buf;\n\t\t if (byteOffset === undefined && length === undefined) {\n\t\t buf = new Uint8Array(array);\n\t\t } else if (length === undefined) {\n\t\t buf = new Uint8Array(array, byteOffset);\n\t\t } else {\n\t\t buf = new Uint8Array(array, byteOffset, length);\n\t\t }\n\n\t\t // Return an augmented `Uint8Array` instance\n\t\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t\t return buf\n\t\t}\n\n\t\tfunction fromObject (obj) {\n\t\t if (Buffer.isBuffer(obj)) {\n\t\t const len = checked(obj.length) | 0;\n\t\t const buf = createBuffer(len);\n\n\t\t if (buf.length === 0) {\n\t\t return buf\n\t\t }\n\n\t\t obj.copy(buf, 0, 0, len);\n\t\t return buf\n\t\t }\n\n\t\t if (obj.length !== undefined) {\n\t\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t\t return createBuffer(0)\n\t\t }\n\t\t return fromArrayLike(obj)\n\t\t }\n\n\t\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t\t return fromArrayLike(obj.data)\n\t\t }\n\t\t}\n\n\t\tfunction checked (length) {\n\t\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t\t // length is NaN (which is otherwise coerced to zero.)\n\t\t if (length >= K_MAX_LENGTH) {\n\t\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t\t }\n\t\t return length | 0\n\t\t}\n\n\t\tfunction SlowBuffer (length) {\n\t\t if (+length != length) { // eslint-disable-line eqeqeq\n\t\t length = 0;\n\t\t }\n\t\t return Buffer.alloc(+length)\n\t\t}\n\n\t\tBuffer.isBuffer = function isBuffer (b) {\n\t\t return b != null && b._isBuffer === true &&\n\t\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t\t};\n\n\t\tBuffer.compare = function compare (a, b) {\n\t\t if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t\t if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t\t throw new TypeError(\n\t\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t\t )\n\t\t }\n\n\t\t if (a === b) return 0\n\n\t\t let x = a.length;\n\t\t let y = b.length;\n\n\t\t for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t\t if (a[i] !== b[i]) {\n\t\t x = a[i];\n\t\t y = b[i];\n\t\t break\n\t\t }\n\t\t }\n\n\t\t if (x < y) return -1\n\t\t if (y < x) return 1\n\t\t return 0\n\t\t};\n\n\t\tBuffer.isEncoding = function isEncoding (encoding) {\n\t\t switch (String(encoding).toLowerCase()) {\n\t\t case 'hex':\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t case 'ascii':\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t case 'base64':\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return true\n\t\t default:\n\t\t return false\n\t\t }\n\t\t};\n\n\t\tBuffer.concat = function concat (list, length) {\n\t\t if (!Array.isArray(list)) {\n\t\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t\t }\n\n\t\t if (list.length === 0) {\n\t\t return Buffer.alloc(0)\n\t\t }\n\n\t\t let i;\n\t\t if (length === undefined) {\n\t\t length = 0;\n\t\t for (i = 0; i < list.length; ++i) {\n\t\t length += list[i].length;\n\t\t }\n\t\t }\n\n\t\t const buffer = Buffer.allocUnsafe(length);\n\t\t let pos = 0;\n\t\t for (i = 0; i < list.length; ++i) {\n\t\t let buf = list[i];\n\t\t if (isInstance(buf, Uint8Array)) {\n\t\t if (pos + buf.length > buffer.length) {\n\t\t if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t\t buf.copy(buffer, pos);\n\t\t } else {\n\t\t Uint8Array.prototype.set.call(\n\t\t buffer,\n\t\t buf,\n\t\t pos\n\t\t );\n\t\t }\n\t\t } else if (!Buffer.isBuffer(buf)) {\n\t\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t\t } else {\n\t\t buf.copy(buffer, pos);\n\t\t }\n\t\t pos += buf.length;\n\t\t }\n\t\t return buffer\n\t\t};\n\n\t\tfunction byteLength (string, encoding) {\n\t\t if (Buffer.isBuffer(string)) {\n\t\t return string.length\n\t\t }\n\t\t if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n\t\t return string.byteLength\n\t\t }\n\t\t if (typeof string !== 'string') {\n\t\t throw new TypeError(\n\t\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t\t 'Received type ' + typeof string\n\t\t )\n\t\t }\n\n\t\t const len = string.length;\n\t\t const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t\t if (!mustMatch && len === 0) return 0\n\n\t\t // Use a for loop to avoid recursion\n\t\t let loweredCase = false;\n\t\t for (;;) {\n\t\t switch (encoding) {\n\t\t case 'ascii':\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t return len\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t return utf8ToBytes(string).length\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return len * 2\n\t\t case 'hex':\n\t\t return len >>> 1\n\t\t case 'base64':\n\t\t return base64ToBytes(string).length\n\t\t default:\n\t\t if (loweredCase) {\n\t\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t\t }\n\t\t encoding = ('' + encoding).toLowerCase();\n\t\t loweredCase = true;\n\t\t }\n\t\t }\n\t\t}\n\t\tBuffer.byteLength = byteLength;\n\n\t\tfunction slowToString (encoding, start, end) {\n\t\t let loweredCase = false;\n\n\t\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t\t // property of a typed array.\n\n\t\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t\t // to their upper/lower bounds if the value passed is out of range.\n\t\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t\t if (start === undefined || start < 0) {\n\t\t start = 0;\n\t\t }\n\t\t // Return early if start > this.length. Done here to prevent potential uint32\n\t\t // coercion fail below.\n\t\t if (start > this.length) {\n\t\t return ''\n\t\t }\n\n\t\t if (end === undefined || end > this.length) {\n\t\t end = this.length;\n\t\t }\n\n\t\t if (end <= 0) {\n\t\t return ''\n\t\t }\n\n\t\t // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t\t end >>>= 0;\n\t\t start >>>= 0;\n\n\t\t if (end <= start) {\n\t\t return ''\n\t\t }\n\n\t\t if (!encoding) encoding = 'utf8';\n\n\t\t while (true) {\n\t\t switch (encoding) {\n\t\t case 'hex':\n\t\t return hexSlice(this, start, end)\n\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t return utf8Slice(this, start, end)\n\n\t\t case 'ascii':\n\t\t return asciiSlice(this, start, end)\n\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t return latin1Slice(this, start, end)\n\n\t\t case 'base64':\n\t\t return base64Slice(this, start, end)\n\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return utf16leSlice(this, start, end)\n\n\t\t default:\n\t\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t\t encoding = (encoding + '').toLowerCase();\n\t\t loweredCase = true;\n\t\t }\n\t\t }\n\t\t}\n\n\t\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t\t// reliably in a browserify context because there could be multiple different\n\t\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t\t// instances that were created from another copy of the `buffer` package.\n\t\t// See: https://github.com/feross/buffer/issues/154\n\t\tBuffer.prototype._isBuffer = true;\n\n\t\tfunction swap (b, n, m) {\n\t\t const i = b[n];\n\t\t b[n] = b[m];\n\t\t b[m] = i;\n\t\t}\n\n\t\tBuffer.prototype.swap16 = function swap16 () {\n\t\t const len = this.length;\n\t\t if (len % 2 !== 0) {\n\t\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t\t }\n\t\t for (let i = 0; i < len; i += 2) {\n\t\t swap(this, i, i + 1);\n\t\t }\n\t\t return this\n\t\t};\n\n\t\tBuffer.prototype.swap32 = function swap32 () {\n\t\t const len = this.length;\n\t\t if (len % 4 !== 0) {\n\t\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t\t }\n\t\t for (let i = 0; i < len; i += 4) {\n\t\t swap(this, i, i + 3);\n\t\t swap(this, i + 1, i + 2);\n\t\t }\n\t\t return this\n\t\t};\n\n\t\tBuffer.prototype.swap64 = function swap64 () {\n\t\t const len = this.length;\n\t\t if (len % 8 !== 0) {\n\t\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t\t }\n\t\t for (let i = 0; i < len; i += 8) {\n\t\t swap(this, i, i + 7);\n\t\t swap(this, i + 1, i + 6);\n\t\t swap(this, i + 2, i + 5);\n\t\t swap(this, i + 3, i + 4);\n\t\t }\n\t\t return this\n\t\t};\n\n\t\tBuffer.prototype.toString = function toString () {\n\t\t const length = this.length;\n\t\t if (length === 0) return ''\n\t\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t\t return slowToString.apply(this, arguments)\n\t\t};\n\n\t\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\t\tBuffer.prototype.equals = function equals (b) {\n\t\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t\t if (this === b) return true\n\t\t return Buffer.compare(this, b) === 0\n\t\t};\n\n\t\tBuffer.prototype.inspect = function inspect () {\n\t\t let str = '';\n\t\t const max = exports.INSPECT_MAX_BYTES;\n\t\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t\t if (this.length > max) str += ' ... ';\n\t\t return '<Buffer ' + str + '>'\n\t\t};\n\t\tif (customInspectSymbol) {\n\t\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t\t}\n\n\t\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t\t if (isInstance(target, Uint8Array)) {\n\t\t target = Buffer.from(target, target.offset, target.byteLength);\n\t\t }\n\t\t if (!Buffer.isBuffer(target)) {\n\t\t throw new TypeError(\n\t\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t\t 'Received type ' + (typeof target)\n\t\t )\n\t\t }\n\n\t\t if (start === undefined) {\n\t\t start = 0;\n\t\t }\n\t\t if (end === undefined) {\n\t\t end = target ? target.length : 0;\n\t\t }\n\t\t if (thisStart === undefined) {\n\t\t thisStart = 0;\n\t\t }\n\t\t if (thisEnd === undefined) {\n\t\t thisEnd = this.length;\n\t\t }\n\n\t\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t\t throw new RangeError('out of range index')\n\t\t }\n\n\t\t if (thisStart >= thisEnd && start >= end) {\n\t\t return 0\n\t\t }\n\t\t if (thisStart >= thisEnd) {\n\t\t return -1\n\t\t }\n\t\t if (start >= end) {\n\t\t return 1\n\t\t }\n\n\t\t start >>>= 0;\n\t\t end >>>= 0;\n\t\t thisStart >>>= 0;\n\t\t thisEnd >>>= 0;\n\n\t\t if (this === target) return 0\n\n\t\t let x = thisEnd - thisStart;\n\t\t let y = end - start;\n\t\t const len = Math.min(x, y);\n\n\t\t const thisCopy = this.slice(thisStart, thisEnd);\n\t\t const targetCopy = target.slice(start, end);\n\n\t\t for (let i = 0; i < len; ++i) {\n\t\t if (thisCopy[i] !== targetCopy[i]) {\n\t\t x = thisCopy[i];\n\t\t y = targetCopy[i];\n\t\t break\n\t\t }\n\t\t }\n\n\t\t if (x < y) return -1\n\t\t if (y < x) return 1\n\t\t return 0\n\t\t};\n\n\t\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t\t//\n\t\t// Arguments:\n\t\t// - buffer - a Buffer to search\n\t\t// - val - a string, Buffer, or number\n\t\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t\t// - encoding - an optional encoding, relevant is val is a string\n\t\t// - dir - true for indexOf, false for lastIndexOf\n\t\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t\t // Empty buffer means no match\n\t\t if (buffer.length === 0) return -1\n\n\t\t // Normalize byteOffset\n\t\t if (typeof byteOffset === 'string') {\n\t\t encoding = byteOffset;\n\t\t byteOffset = 0;\n\t\t } else if (byteOffset > 0x7fffffff) {\n\t\t byteOffset = 0x7fffffff;\n\t\t } else if (byteOffset < -2147483648) {\n\t\t byteOffset = -2147483648;\n\t\t }\n\t\t byteOffset = +byteOffset; // Coerce to Number.\n\t\t if (numberIsNaN(byteOffset)) {\n\t\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t\t }\n\n\t\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t\t if (byteOffset >= buffer.length) {\n\t\t if (dir) return -1\n\t\t else byteOffset = buffer.length - 1;\n\t\t } else if (byteOffset < 0) {\n\t\t if (dir) byteOffset = 0;\n\t\t else return -1\n\t\t }\n\n\t\t // Normalize val\n\t\t if (typeof val === 'string') {\n\t\t val = Buffer.from(val, encoding);\n\t\t }\n\n\t\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t\t if (Buffer.isBuffer(val)) {\n\t\t // Special case: looking for empty string/buffer always fails\n\t\t if (val.length === 0) {\n\t\t return -1\n\t\t }\n\t\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t\t } else if (typeof val === 'number') {\n\t\t val = val & 0xFF; // Search for a byte value [0-255]\n\t\t if (typeof Uint8Array.prototype.indexOf === 'function') {\n\t\t if (dir) {\n\t\t return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t\t } else {\n\t\t return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t\t }\n\t\t }\n\t\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t\t }\n\n\t\t throw new TypeError('val must be string, number or Buffer')\n\t\t}\n\n\t\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t\t let indexSize = 1;\n\t\t let arrLength = arr.length;\n\t\t let valLength = val.length;\n\n\t\t if (encoding !== undefined) {\n\t\t encoding = String(encoding).toLowerCase();\n\t\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t\t if (arr.length < 2 || val.length < 2) {\n\t\t return -1\n\t\t }\n\t\t indexSize = 2;\n\t\t arrLength /= 2;\n\t\t valLength /= 2;\n\t\t byteOffset /= 2;\n\t\t }\n\t\t }\n\n\t\t function read (buf, i) {\n\t\t if (indexSize === 1) {\n\t\t return buf[i]\n\t\t } else {\n\t\t return buf.readUInt16BE(i * indexSize)\n\t\t }\n\t\t }\n\n\t\t let i;\n\t\t if (dir) {\n\t\t let foundIndex = -1;\n\t\t for (i = byteOffset; i < arrLength; i++) {\n\t\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t\t if (foundIndex === -1) foundIndex = i;\n\t\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t\t } else {\n\t\t if (foundIndex !== -1) i -= i - foundIndex;\n\t\t foundIndex = -1;\n\t\t }\n\t\t }\n\t\t } else {\n\t\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t\t for (i = byteOffset; i >= 0; i--) {\n\t\t let found = true;\n\t\t for (let j = 0; j < valLength; j++) {\n\t\t if (read(arr, i + j) !== read(val, j)) {\n\t\t found = false;\n\t\t break\n\t\t }\n\t\t }\n\t\t if (found) return i\n\t\t }\n\t\t }\n\n\t\t return -1\n\t\t}\n\n\t\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t\t};\n\n\t\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t\t};\n\n\t\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t\t};\n\n\t\tfunction hexWrite (buf, string, offset, length) {\n\t\t offset = Number(offset) || 0;\n\t\t const remaining = buf.length - offset;\n\t\t if (!length) {\n\t\t length = remaining;\n\t\t } else {\n\t\t length = Number(length);\n\t\t if (length > remaining) {\n\t\t length = remaining;\n\t\t }\n\t\t }\n\n\t\t const strLen = string.length;\n\n\t\t if (length > strLen / 2) {\n\t\t length = strLen / 2;\n\t\t }\n\t\t let i;\n\t\t for (i = 0; i < length; ++i) {\n\t\t const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t\t if (numberIsNaN(parsed)) return i\n\t\t buf[offset + i] = parsed;\n\t\t }\n\t\t return i\n\t\t}\n\n\t\tfunction utf8Write (buf, string, offset, length) {\n\t\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t\t}\n\n\t\tfunction asciiWrite (buf, string, offset, length) {\n\t\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t\t}\n\n\t\tfunction base64Write (buf, string, offset, length) {\n\t\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t\t}\n\n\t\tfunction ucs2Write (buf, string, offset, length) {\n\t\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t\t}\n\n\t\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t\t // Buffer#write(string)\n\t\t if (offset === undefined) {\n\t\t encoding = 'utf8';\n\t\t length = this.length;\n\t\t offset = 0;\n\t\t // Buffer#write(string, encoding)\n\t\t } else if (length === undefined && typeof offset === 'string') {\n\t\t encoding = offset;\n\t\t length = this.length;\n\t\t offset = 0;\n\t\t // Buffer#write(string, offset[, length][, encoding])\n\t\t } else if (isFinite(offset)) {\n\t\t offset = offset >>> 0;\n\t\t if (isFinite(length)) {\n\t\t length = length >>> 0;\n\t\t if (encoding === undefined) encoding = 'utf8';\n\t\t } else {\n\t\t encoding = length;\n\t\t length = undefined;\n\t\t }\n\t\t } else {\n\t\t throw new Error(\n\t\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t\t )\n\t\t }\n\n\t\t const remaining = this.length - offset;\n\t\t if (length === undefined || length > remaining) length = remaining;\n\n\t\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t\t throw new RangeError('Attempt to write outside buffer bounds')\n\t\t }\n\n\t\t if (!encoding) encoding = 'utf8';\n\n\t\t let loweredCase = false;\n\t\t for (;;) {\n\t\t switch (encoding) {\n\t\t case 'hex':\n\t\t return hexWrite(this, string, offset, length)\n\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t return utf8Write(this, string, offset, length)\n\n\t\t case 'ascii':\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t return asciiWrite(this, string, offset, length)\n\n\t\t case 'base64':\n\t\t // Warning: maxLength not taken into account in base64Write\n\t\t return base64Write(this, string, offset, length)\n\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return ucs2Write(this, string, offset, length)\n\n\t\t default:\n\t\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t\t encoding = ('' + encoding).toLowerCase();\n\t\t loweredCase = true;\n\t\t }\n\t\t }\n\t\t};\n\n\t\tBuffer.prototype.toJSON = function toJSON () {\n\t\t return {\n\t\t type: 'Buffer',\n\t\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t\t }\n\t\t};\n\n\t\tfunction base64Slice (buf, start, end) {\n\t\t if (start === 0 && end === buf.length) {\n\t\t return base64.fromByteArray(buf)\n\t\t } else {\n\t\t return base64.fromByteArray(buf.slice(start, end))\n\t\t }\n\t\t}\n\n\t\tfunction utf8Slice (buf, start, end) {\n\t\t end = Math.min(buf.length, end);\n\t\t const res = [];\n\n\t\t let i = start;\n\t\t while (i < end) {\n\t\t const firstByte = buf[i];\n\t\t let codePoint = null;\n\t\t let bytesPerSequence = (firstByte > 0xEF)\n\t\t ? 4\n\t\t : (firstByte > 0xDF)\n\t\t ? 3\n\t\t : (firstByte > 0xBF)\n\t\t ? 2\n\t\t : 1;\n\n\t\t if (i + bytesPerSequence <= end) {\n\t\t let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t\t switch (bytesPerSequence) {\n\t\t case 1:\n\t\t if (firstByte < 0x80) {\n\t\t codePoint = firstByte;\n\t\t }\n\t\t break\n\t\t case 2:\n\t\t secondByte = buf[i + 1];\n\t\t if ((secondByte & 0xC0) === 0x80) {\n\t\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t\t if (tempCodePoint > 0x7F) {\n\t\t codePoint = tempCodePoint;\n\t\t }\n\t\t }\n\t\t break\n\t\t case 3:\n\t\t secondByte = buf[i + 1];\n\t\t thirdByte = buf[i + 2];\n\t\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t\t codePoint = tempCodePoint;\n\t\t }\n\t\t }\n\t\t break\n\t\t case 4:\n\t\t secondByte = buf[i + 1];\n\t\t thirdByte = buf[i + 2];\n\t\t fourthByte = buf[i + 3];\n\t\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t\t codePoint = tempCodePoint;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t if (codePoint === null) {\n\t\t // we did not generate a valid codePoint so insert a\n\t\t // replacement char (U+FFFD) and advance only 1 byte\n\t\t codePoint = 0xFFFD;\n\t\t bytesPerSequence = 1;\n\t\t } else if (codePoint > 0xFFFF) {\n\t\t // encode to utf16 (surrogate pair dance)\n\t\t codePoint -= 0x10000;\n\t\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t }\n\n\t\t res.push(codePoint);\n\t\t i += bytesPerSequence;\n\t\t }\n\n\t\t return decodeCodePointsArray(res)\n\t\t}\n\n\t\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t\t// the lowest limit is Chrome, with 0x10000 args.\n\t\t// We go 1 magnitude less, for safety\n\t\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\t\tfunction decodeCodePointsArray (codePoints) {\n\t\t const len = codePoints.length;\n\t\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t\t }\n\n\t\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t\t let res = '';\n\t\t let i = 0;\n\t\t while (i < len) {\n\t\t res += String.fromCharCode.apply(\n\t\t String,\n\t\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t\t );\n\t\t }\n\t\t return res\n\t\t}\n\n\t\tfunction asciiSlice (buf, start, end) {\n\t\t let ret = '';\n\t\t end = Math.min(buf.length, end);\n\n\t\t for (let i = start; i < end; ++i) {\n\t\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t\t }\n\t\t return ret\n\t\t}\n\n\t\tfunction latin1Slice (buf, start, end) {\n\t\t let ret = '';\n\t\t end = Math.min(buf.length, end);\n\n\t\t for (let i = start; i < end; ++i) {\n\t\t ret += String.fromCharCode(buf[i]);\n\t\t }\n\t\t return ret\n\t\t}\n\n\t\tfunction hexSlice (buf, start, end) {\n\t\t const len = buf.length;\n\n\t\t if (!start || start < 0) start = 0;\n\t\t if (!end || end < 0 || end > len) end = len;\n\n\t\t let out = '';\n\t\t for (let i = start; i < end; ++i) {\n\t\t out += hexSliceLookupTable[buf[i]];\n\t\t }\n\t\t return out\n\t\t}\n\n\t\tfunction utf16leSlice (buf, start, end) {\n\t\t const bytes = buf.slice(start, end);\n\t\t let res = '';\n\t\t // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t\t for (let i = 0; i < bytes.length - 1; i += 2) {\n\t\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t\t }\n\t\t return res\n\t\t}\n\n\t\tBuffer.prototype.slice = function slice (start, end) {\n\t\t const len = this.length;\n\t\t start = ~~start;\n\t\t end = end === undefined ? len : ~~end;\n\n\t\t if (start < 0) {\n\t\t start += len;\n\t\t if (start < 0) start = 0;\n\t\t } else if (start > len) {\n\t\t start = len;\n\t\t }\n\n\t\t if (end < 0) {\n\t\t end += len;\n\t\t if (end < 0) end = 0;\n\t\t } else if (end > len) {\n\t\t end = len;\n\t\t }\n\n\t\t if (end < start) end = start;\n\n\t\t const newBuf = this.subarray(start, end);\n\t\t // Return an augmented `Uint8Array` instance\n\t\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t\t return newBuf\n\t\t};\n\n\t\t/*\n\t\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t\t */\n\t\tfunction checkOffset (offset, ext, length) {\n\t\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t\t}\n\n\t\tBuffer.prototype.readUintLE =\n\t\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t\t let val = this[offset];\n\t\t let mul = 1;\n\t\t let i = 0;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t val += this[offset + i] * mul;\n\t\t }\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readUintBE =\n\t\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) {\n\t\t checkOffset(offset, byteLength, this.length);\n\t\t }\n\n\t\t let val = this[offset + --byteLength];\n\t\t let mul = 1;\n\t\t while (byteLength > 0 && (mul *= 0x100)) {\n\t\t val += this[offset + --byteLength] * mul;\n\t\t }\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readUint8 =\n\t\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t\t return this[offset]\n\t\t};\n\n\t\tBuffer.prototype.readUint16LE =\n\t\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t return this[offset] | (this[offset + 1] << 8)\n\t\t};\n\n\t\tBuffer.prototype.readUint16BE =\n\t\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t return (this[offset] << 8) | this[offset + 1]\n\t\t};\n\n\t\tBuffer.prototype.readUint32LE =\n\t\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return ((this[offset]) |\n\t\t (this[offset + 1] << 8) |\n\t\t (this[offset + 2] << 16)) +\n\t\t (this[offset + 3] * 0x1000000)\n\t\t};\n\n\t\tBuffer.prototype.readUint32BE =\n\t\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return (this[offset] * 0x1000000) +\n\t\t ((this[offset + 1] << 16) |\n\t\t (this[offset + 2] << 8) |\n\t\t this[offset + 3])\n\t\t};\n\n\t\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const lo = first +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 24;\n\n\t\t const hi = this[++offset] +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t last * 2 ** 24;\n\n\t\t return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t\t});\n\n\t\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const hi = first * 2 ** 24 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset];\n\n\t\t const lo = this[++offset] * 2 ** 24 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t last;\n\n\t\t return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t\t});\n\n\t\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t\t let val = this[offset];\n\t\t let mul = 1;\n\t\t let i = 0;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t val += this[offset + i] * mul;\n\t\t }\n\t\t mul *= 0x80;\n\n\t\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t\t let i = byteLength;\n\t\t let mul = 1;\n\t\t let val = this[offset + --i];\n\t\t while (i > 0 && (mul *= 0x100)) {\n\t\t val += this[offset + --i] * mul;\n\t\t }\n\t\t mul *= 0x80;\n\n\t\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t\t if (!(this[offset] & 0x80)) return (this[offset])\n\t\t return ((0xff - this[offset] + 1) * -1)\n\t\t};\n\n\t\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t const val = this[offset] | (this[offset + 1] << 8);\n\t\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t\t};\n\n\t\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t const val = this[offset + 1] | (this[offset] << 8);\n\t\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t\t};\n\n\t\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return (this[offset]) |\n\t\t (this[offset + 1] << 8) |\n\t\t (this[offset + 2] << 16) |\n\t\t (this[offset + 3] << 24)\n\t\t};\n\n\t\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return (this[offset] << 24) |\n\t\t (this[offset + 1] << 16) |\n\t\t (this[offset + 2] << 8) |\n\t\t (this[offset + 3])\n\t\t};\n\n\t\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const val = this[offset + 4] +\n\t\t this[offset + 5] * 2 ** 8 +\n\t\t this[offset + 6] * 2 ** 16 +\n\t\t (last << 24); // Overflow\n\n\t\t return (BigInt(val) << BigInt(32)) +\n\t\t BigInt(first +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 24)\n\t\t});\n\n\t\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const val = (first << 24) + // Overflow\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset];\n\n\t\t return (BigInt(val) << BigInt(32)) +\n\t\t BigInt(this[++offset] * 2 ** 24 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t last)\n\t\t});\n\n\t\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t\t return ieee754.read(this, offset, true, 23, 4)\n\t\t};\n\n\t\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t\t return ieee754.read(this, offset, false, 23, 4)\n\t\t};\n\n\t\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t\t return ieee754.read(this, offset, true, 52, 8)\n\t\t};\n\n\t\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t\t return ieee754.read(this, offset, false, 52, 8)\n\t\t};\n\n\t\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t\t}\n\n\t\tBuffer.prototype.writeUintLE =\n\t\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) {\n\t\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t\t }\n\n\t\t let mul = 1;\n\t\t let i = 0;\n\t\t this[offset] = value & 0xFF;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t this[offset + i] = (value / mul) & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeUintBE =\n\t\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) {\n\t\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t\t }\n\n\t\t let i = byteLength - 1;\n\t\t let mul = 1;\n\t\t this[offset + i] = value & 0xFF;\n\t\t while (--i >= 0 && (mul *= 0x100)) {\n\t\t this[offset + i] = (value / mul) & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeUint8 =\n\t\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t\t this[offset] = (value & 0xff);\n\t\t return offset + 1\n\t\t};\n\n\t\tBuffer.prototype.writeUint16LE =\n\t\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t\t this[offset] = (value & 0xff);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeUint16BE =\n\t\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t\t this[offset] = (value >>> 8);\n\t\t this[offset + 1] = (value & 0xff);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeUint32LE =\n\t\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t\t this[offset + 3] = (value >>> 24);\n\t\t this[offset + 2] = (value >>> 16);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t this[offset] = (value & 0xff);\n\t\t return offset + 4\n\t\t};\n\n\t\tBuffer.prototype.writeUint32BE =\n\t\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t\t this[offset] = (value >>> 24);\n\t\t this[offset + 1] = (value >>> 16);\n\t\t this[offset + 2] = (value >>> 8);\n\t\t this[offset + 3] = (value & 0xff);\n\t\t return offset + 4\n\t\t};\n\n\t\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t\t let lo = Number(value & BigInt(0xffffffff));\n\t\t buf[offset++] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset++] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset++] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset++] = lo;\n\t\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t\t buf[offset++] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset++] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset++] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset++] = hi;\n\t\t return offset\n\t\t}\n\n\t\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t\t let lo = Number(value & BigInt(0xffffffff));\n\t\t buf[offset + 7] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset + 6] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset + 5] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset + 4] = lo;\n\t\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t\t buf[offset + 3] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset + 2] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset + 1] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset] = hi;\n\t\t return offset + 8\n\t\t}\n\n\t\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t\t return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t\t});\n\n\t\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t\t return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t\t});\n\n\t\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t\t }\n\n\t\t let i = 0;\n\t\t let mul = 1;\n\t\t let sub = 0;\n\t\t this[offset] = value & 0xFF;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t\t sub = 1;\n\t\t }\n\t\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t\t }\n\n\t\t let i = byteLength - 1;\n\t\t let mul = 1;\n\t\t let sub = 0;\n\t\t this[offset + i] = value & 0xFF;\n\t\t while (--i >= 0 && (mul *= 0x100)) {\n\t\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t\t sub = 1;\n\t\t }\n\t\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128);\n\t\t if (value < 0) value = 0xff + value + 1;\n\t\t this[offset] = (value & 0xff);\n\t\t return offset + 1\n\t\t};\n\n\t\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);\n\t\t this[offset] = (value & 0xff);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);\n\t\t this[offset] = (value >>> 8);\n\t\t this[offset + 1] = (value & 0xff);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);\n\t\t this[offset] = (value & 0xff);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t this[offset + 2] = (value >>> 16);\n\t\t this[offset + 3] = (value >>> 24);\n\t\t return offset + 4\n\t\t};\n\n\t\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);\n\t\t if (value < 0) value = 0xffffffff + value + 1;\n\t\t this[offset] = (value >>> 24);\n\t\t this[offset + 1] = (value >>> 16);\n\t\t this[offset + 2] = (value >>> 8);\n\t\t this[offset + 3] = (value & 0xff);\n\t\t return offset + 4\n\t\t};\n\n\t\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t\t return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t\t});\n\n\t\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t\t return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t\t});\n\n\t\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t\t if (offset < 0) throw new RangeError('Index out of range')\n\t\t}\n\n\t\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t checkIEEE754(buf, value, offset, 4);\n\t\t }\n\t\t ieee754.write(buf, value, offset, littleEndian, 23, 4);\n\t\t return offset + 4\n\t\t}\n\n\t\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t\t return writeFloat(this, value, offset, true, noAssert)\n\t\t};\n\n\t\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t\t return writeFloat(this, value, offset, false, noAssert)\n\t\t};\n\n\t\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t checkIEEE754(buf, value, offset, 8);\n\t\t }\n\t\t ieee754.write(buf, value, offset, littleEndian, 52, 8);\n\t\t return offset + 8\n\t\t}\n\n\t\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t\t return writeDouble(this, value, offset, true, noAssert)\n\t\t};\n\n\t\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t\t return writeDouble(this, value, offset, false, noAssert)\n\t\t};\n\n\t\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\t\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t\t if (!start) start = 0;\n\t\t if (!end && end !== 0) end = this.length;\n\t\t if (targetStart >= target.length) targetStart = target.length;\n\t\t if (!targetStart) targetStart = 0;\n\t\t if (end > 0 && end < start) end = start;\n\n\t\t // Copy 0 bytes; we're done\n\t\t if (end === start) return 0\n\t\t if (target.length === 0 || this.length === 0) return 0\n\n\t\t // Fatal error conditions\n\t\t if (targetStart < 0) {\n\t\t throw new RangeError('targetStart out of bounds')\n\t\t }\n\t\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t\t // Are we oob?\n\t\t if (end > this.length) end = this.length;\n\t\t if (target.length - targetStart < end - start) {\n\t\t end = target.length - targetStart + start;\n\t\t }\n\n\t\t const len = end - start;\n\n\t\t if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n\t\t // Use built-in when available, missing from IE11\n\t\t this.copyWithin(targetStart, start, end);\n\t\t } else {\n\t\t Uint8Array.prototype.set.call(\n\t\t target,\n\t\t this.subarray(start, end),\n\t\t targetStart\n\t\t );\n\t\t }\n\n\t\t return len\n\t\t};\n\n\t\t// Usage:\n\t\t// buffer.fill(number[, offset[, end]])\n\t\t// buffer.fill(buffer[, offset[, end]])\n\t\t// buffer.fill(string[, offset[, end]][, encoding])\n\t\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t\t // Handle string cases:\n\t\t if (typeof val === 'string') {\n\t\t if (typeof start === 'string') {\n\t\t encoding = start;\n\t\t start = 0;\n\t\t end = this.length;\n\t\t } else if (typeof end === 'string') {\n\t\t encoding = end;\n\t\t end = this.length;\n\t\t }\n\t\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t\t throw new TypeError('encoding must be a string')\n\t\t }\n\t\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t\t throw new TypeError('Unknown encoding: ' + encoding)\n\t\t }\n\t\t if (val.length === 1) {\n\t\t const code = val.charCodeAt(0);\n\t\t if ((encoding === 'utf8' && code < 128) ||\n\t\t encoding === 'latin1') {\n\t\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t\t val = code;\n\t\t }\n\t\t }\n\t\t } else if (typeof val === 'number') {\n\t\t val = val & 255;\n\t\t } else if (typeof val === 'boolean') {\n\t\t val = Number(val);\n\t\t }\n\n\t\t // Invalid ranges are not set to a default, so can range check early.\n\t\t if (start < 0 || this.length < start || this.length < end) {\n\t\t throw new RangeError('Out of range index')\n\t\t }\n\n\t\t if (end <= start) {\n\t\t return this\n\t\t }\n\n\t\t start = start >>> 0;\n\t\t end = end === undefined ? this.length : end >>> 0;\n\n\t\t if (!val) val = 0;\n\n\t\t let i;\n\t\t if (typeof val === 'number') {\n\t\t for (i = start; i < end; ++i) {\n\t\t this[i] = val;\n\t\t }\n\t\t } else {\n\t\t const bytes = Buffer.isBuffer(val)\n\t\t ? val\n\t\t : Buffer.from(val, encoding);\n\t\t const len = bytes.length;\n\t\t if (len === 0) {\n\t\t throw new TypeError('The value \"' + val +\n\t\t '\" is invalid for argument \"value\"')\n\t\t }\n\t\t for (i = 0; i < end - start; ++i) {\n\t\t this[i + start] = bytes[i % len];\n\t\t }\n\t\t }\n\n\t\t return this\n\t\t};\n\n\t\t// CUSTOM ERRORS\n\t\t// =============\n\n\t\t// Simplified versions from Node, changed for Buffer-only usage\n\t\tconst errors = {};\n\t\tfunction E (sym, getMessage, Base) {\n\t\t errors[sym] = class NodeError extends Base {\n\t\t constructor () {\n\t\t super();\n\n\t\t Object.defineProperty(this, 'message', {\n\t\t value: getMessage.apply(this, arguments),\n\t\t writable: true,\n\t\t configurable: true\n\t\t });\n\n\t\t // Add the error code to the name to include it in the stack trace.\n\t\t this.name = `${this.name} [${sym}]`;\n\t\t // Access the stack to generate the error message including the error code\n\t\t // from the name.\n\t\t this.stack; // eslint-disable-line no-unused-expressions\n\t\t // Reset the name to the actual name.\n\t\t delete this.name;\n\t\t }\n\n\t\t get code () {\n\t\t return sym\n\t\t }\n\n\t\t set code (value) {\n\t\t Object.defineProperty(this, 'code', {\n\t\t configurable: true,\n\t\t enumerable: true,\n\t\t value,\n\t\t writable: true\n\t\t });\n\t\t }\n\n\t\t toString () {\n\t\t return `${this.name} [${sym}]: ${this.message}`\n\t\t }\n\t\t };\n\t\t}\n\n\t\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t\t function (name) {\n\t\t if (name) {\n\t\t return `${name} is outside of buffer bounds`\n\t\t }\n\n\t\t return 'Attempt to access memory outside buffer bounds'\n\t\t }, RangeError);\n\t\tE('ERR_INVALID_ARG_TYPE',\n\t\t function (name, actual) {\n\t\t return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t\t }, TypeError);\n\t\tE('ERR_OUT_OF_RANGE',\n\t\t function (str, range, input) {\n\t\t let msg = `The value of \"${str}\" is out of range.`;\n\t\t let received = input;\n\t\t if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t\t received = addNumericalSeparator(String(input));\n\t\t } else if (typeof input === 'bigint') {\n\t\t received = String(input);\n\t\t if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t\t received = addNumericalSeparator(received);\n\t\t }\n\t\t received += 'n';\n\t\t }\n\t\t msg += ` It must be ${range}. Received ${received}`;\n\t\t return msg\n\t\t }, RangeError);\n\n\t\tfunction addNumericalSeparator (val) {\n\t\t let res = '';\n\t\t let i = val.length;\n\t\t const start = val[0] === '-' ? 1 : 0;\n\t\t for (; i >= start + 4; i -= 3) {\n\t\t res = `_${val.slice(i - 3, i)}${res}`;\n\t\t }\n\t\t return `${val.slice(0, i)}${res}`\n\t\t}\n\n\t\t// CHECK FUNCTIONS\n\t\t// ===============\n\n\t\tfunction checkBounds (buf, offset, byteLength) {\n\t\t validateNumber(offset, 'offset');\n\t\t if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t\t boundsError(offset, buf.length - (byteLength + 1));\n\t\t }\n\t\t}\n\n\t\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t\t if (value > max || value < min) {\n\t\t const n = typeof min === 'bigint' ? 'n' : '';\n\t\t let range;\n\t\t {\n\t\t if (min === 0 || min === BigInt(0)) {\n\t\t range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t\t } else {\n\t\t range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t\t `${(byteLength + 1) * 8 - 1}${n}`;\n\t\t }\n\t\t }\n\t\t throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t\t }\n\t\t checkBounds(buf, offset, byteLength);\n\t\t}\n\n\t\tfunction validateNumber (value, name) {\n\t\t if (typeof value !== 'number') {\n\t\t throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t\t }\n\t\t}\n\n\t\tfunction boundsError (value, length, type) {\n\t\t if (Math.floor(value) !== value) {\n\t\t validateNumber(value, type);\n\t\t throw new errors.ERR_OUT_OF_RANGE('offset', 'an integer', value)\n\t\t }\n\n\t\t if (length < 0) {\n\t\t throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t\t }\n\n\t\t throw new errors.ERR_OUT_OF_RANGE('offset',\n\t\t `>= ${0} and <= ${length}`,\n\t\t value)\n\t\t}\n\n\t\t// HELPER FUNCTIONS\n\t\t// ================\n\n\t\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\t\tfunction base64clean (str) {\n\t\t // Node takes equal signs as end of the Base64 encoding\n\t\t str = str.split('=')[0];\n\t\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t\t // Node converts strings with length < 2 to ''\n\t\t if (str.length < 2) return ''\n\t\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t\t while (str.length % 4 !== 0) {\n\t\t str = str + '=';\n\t\t }\n\t\t return str\n\t\t}\n\n\t\tfunction utf8ToBytes (string, units) {\n\t\t units = units || Infinity;\n\t\t let codePoint;\n\t\t const length = string.length;\n\t\t let leadSurrogate = null;\n\t\t const bytes = [];\n\n\t\t for (let i = 0; i < length; ++i) {\n\t\t codePoint = string.charCodeAt(i);\n\n\t\t // is surrogate component\n\t\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t\t // last char was a lead\n\t\t if (!leadSurrogate) {\n\t\t // no lead yet\n\t\t if (codePoint > 0xDBFF) {\n\t\t // unexpected trail\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t continue\n\t\t } else if (i + 1 === length) {\n\t\t // unpaired lead\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t continue\n\t\t }\n\n\t\t // valid lead\n\t\t leadSurrogate = codePoint;\n\n\t\t continue\n\t\t }\n\n\t\t // 2 leads in a row\n\t\t if (codePoint < 0xDC00) {\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t leadSurrogate = codePoint;\n\t\t continue\n\t\t }\n\n\t\t // valid surrogate pair\n\t\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t\t } else if (leadSurrogate) {\n\t\t // valid bmp char, but last char was a lead\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t }\n\n\t\t leadSurrogate = null;\n\n\t\t // encode utf8\n\t\t if (codePoint < 0x80) {\n\t\t if ((units -= 1) < 0) break\n\t\t bytes.push(codePoint);\n\t\t } else if (codePoint < 0x800) {\n\t\t if ((units -= 2) < 0) break\n\t\t bytes.push(\n\t\t codePoint >> 0x6 | 0xC0,\n\t\t codePoint & 0x3F | 0x80\n\t\t );\n\t\t } else if (codePoint < 0x10000) {\n\t\t if ((units -= 3) < 0) break\n\t\t bytes.push(\n\t\t codePoint >> 0xC | 0xE0,\n\t\t codePoint >> 0x6 & 0x3F | 0x80,\n\t\t codePoint & 0x3F | 0x80\n\t\t );\n\t\t } else if (codePoint < 0x110000) {\n\t\t if ((units -= 4) < 0) break\n\t\t bytes.push(\n\t\t codePoint >> 0x12 | 0xF0,\n\t\t codePoint >> 0xC & 0x3F | 0x80,\n\t\t codePoint >> 0x6 & 0x3F | 0x80,\n\t\t codePoint & 0x3F | 0x80\n\t\t );\n\t\t } else {\n\t\t throw new Error('Invalid code point')\n\t\t }\n\t\t }\n\n\t\t return bytes\n\t\t}\n\n\t\tfunction asciiToBytes (str) {\n\t\t const byteArray = [];\n\t\t for (let i = 0; i < str.length; ++i) {\n\t\t // Node's code seems to be doing this and not & 0x7F..\n\t\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t\t }\n\t\t return byteArray\n\t\t}\n\n\t\tfunction utf16leToBytes (str, units) {\n\t\t let c, hi, lo;\n\t\t const byteArray = [];\n\t\t for (let i = 0; i < str.length; ++i) {\n\t\t if ((units -= 2) < 0) break\n\n\t\t c = str.charCodeAt(i);\n\t\t hi = c >> 8;\n\t\t lo = c % 256;\n\t\t byteArray.push(lo);\n\t\t byteArray.push(hi);\n\t\t }\n\n\t\t return byteArray\n\t\t}\n\n\t\tfunction base64ToBytes (str) {\n\t\t return base64.toByteArray(base64clean(str))\n\t\t}\n\n\t\tfunction blitBuffer (src, dst, offset, length) {\n\t\t let i;\n\t\t for (i = 0; i < length; ++i) {\n\t\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t\t dst[i + offset] = src[i];\n\t\t }\n\t\t return i\n\t\t}\n\n\t\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t\t// the `instanceof` check but they should be treated as of that type.\n\t\t// See: https://github.com/feross/buffer/issues/166\n\t\tfunction isInstance (obj, type) {\n\t\t return obj instanceof type ||\n\t\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t\t obj.constructor.name === type.name)\n\t\t}\n\t\tfunction numberIsNaN (obj) {\n\t\t // For IE11 support\n\t\t return obj !== obj // eslint-disable-line no-self-compare\n\t\t}\n\n\t\t// Create lookup table for `toString('hex')`\n\t\t// See: https://github.com/feross/buffer/issues/219\n\t\tconst hexSliceLookupTable = (function () {\n\t\t const alphabet = '0123456789abcdef';\n\t\t const table = new Array(256);\n\t\t for (let i = 0; i < 16; ++i) {\n\t\t const i16 = i * 16;\n\t\t for (let j = 0; j < 16; ++j) {\n\t\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t\t }\n\t\t }\n\t\t return table\n\t\t})();\n\n\t\t// Return not function with Error if BigInt not supported\n\t\tfunction defineBigIntMethod (fn) {\n\t\t return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t\t}\n\n\t\tfunction BufferBigIntNotDefined () {\n\t\t throw new Error('BigInt not supported')\n\t\t} \n\t} (buffer));\n\treturn buffer;\n}\n\n/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nvar hasRequiredSafeBuffer;\n\nfunction requireSafeBuffer () {\n\tif (hasRequiredSafeBuffer) return safeBuffer.exports;\n\thasRequiredSafeBuffer = 1;\n\t(function (module, exports) {\n\t\t/* eslint-disable node/no-deprecated-api */\n\t\tvar buffer = requireBuffer();\n\t\tvar Buffer = buffer.Buffer;\n\n\t\t// alternative to using Object.keys for old browsers\n\t\tfunction copyProps (src, dst) {\n\t\t for (var key in src) {\n\t\t dst[key] = src[key];\n\t\t }\n\t\t}\n\t\tif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n\t\t module.exports = buffer;\n\t\t} else {\n\t\t // Copy properties from require('buffer')\n\t\t copyProps(buffer, exports);\n\t\t exports.Buffer = SafeBuffer;\n\t\t}\n\n\t\tfunction SafeBuffer (arg, encodingOrOffset, length) {\n\t\t return Buffer(arg, encodingOrOffset, length)\n\t\t}\n\n\t\tSafeBuffer.prototype = Object.create(Buffer.prototype);\n\n\t\t// Copy static methods from Buffer\n\t\tcopyProps(Buffer, SafeBuffer);\n\n\t\tSafeBuffer.from = function (arg, encodingOrOffset, length) {\n\t\t if (typeof arg === 'number') {\n\t\t throw new TypeError('Argument must not be a number')\n\t\t }\n\t\t return Buffer(arg, encodingOrOffset, length)\n\t\t};\n\n\t\tSafeBuffer.alloc = function (size, fill, encoding) {\n\t\t if (typeof size !== 'number') {\n\t\t throw new TypeError('Argument must be a number')\n\t\t }\n\t\t var buf = Buffer(size);\n\t\t if (fill !== undefined) {\n\t\t if (typeof encoding === 'string') {\n\t\t buf.fill(fill, encoding);\n\t\t } else {\n\t\t buf.fill(fill);\n\t\t }\n\t\t } else {\n\t\t buf.fill(0);\n\t\t }\n\t\t return buf\n\t\t};\n\n\t\tSafeBuffer.allocUnsafe = function (size) {\n\t\t if (typeof size !== 'number') {\n\t\t throw new TypeError('Argument must be a number')\n\t\t }\n\t\t return Buffer(size)\n\t\t};\n\n\t\tSafeBuffer.allocUnsafeSlow = function (size) {\n\t\t if (typeof size !== 'number') {\n\t\t throw new TypeError('Argument must be a number')\n\t\t }\n\t\t return buffer.SlowBuffer(size)\n\t\t}; \n\t} (safeBuffer, safeBuffer.exports));\n\treturn safeBuffer.exports;\n}\n\nvar hasRequiredString_decoder;\n\nfunction requireString_decoder () {\n\tif (hasRequiredString_decoder) return string_decoder;\n\thasRequiredString_decoder = 1;\n\n\t/*<replacement>*/\n\n\tvar Buffer = requireSafeBuffer().Buffer;\n\t/*</replacement>*/\n\n\tvar isEncoding = Buffer.isEncoding || function (encoding) {\n\t encoding = '' + encoding;\n\t switch (encoding && encoding.toLowerCase()) {\n\t case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t};\n\n\tfunction _normalizeEncoding(enc) {\n\t if (!enc) return 'utf8';\n\t var retried;\n\t while (true) {\n\t switch (enc) {\n\t case 'utf8':\n\t case 'utf-8':\n\t return 'utf8';\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return 'utf16le';\n\t case 'latin1':\n\t case 'binary':\n\t return 'latin1';\n\t case 'base64':\n\t case 'ascii':\n\t case 'hex':\n\t return enc;\n\t default:\n\t if (retried) return; // undefined\n\t enc = ('' + enc).toLowerCase();\n\t retried = true;\n\t }\n\t }\n\t}\n\t// Do not cache `Buffer.isEncoding` when checking encoding names as some\n\t// modules monkey-patch it to support additional encodings\n\tfunction normalizeEncoding(enc) {\n\t var nenc = _normalizeEncoding(enc);\n\t if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n\t return nenc || enc;\n\t}\n\n\t// StringDecoder provides an interface for efficiently splitting a series of\n\t// buffers into a series of JS strings without breaking apart multi-byte\n\t// characters.\n\tstring_decoder.StringDecoder = StringDecoder;\n\tfunction StringDecoder(encoding) {\n\t this.encoding = normalizeEncoding(encoding);\n\t var nb;\n\t switch (this.encoding) {\n\t case 'utf16le':\n\t this.text = utf16Text;\n\t this.end = utf16End;\n\t nb = 4;\n\t break;\n\t case 'utf8':\n\t this.fillLast = utf8FillLast;\n\t nb = 4;\n\t break;\n\t case 'base64':\n\t this.text = base64Text;\n\t this.end = base64End;\n\t nb = 3;\n\t break;\n\t default:\n\t this.write = simpleWrite;\n\t this.end = simpleEnd;\n\t return;\n\t }\n\t this.lastNeed = 0;\n\t this.lastTotal = 0;\n\t this.lastChar = Buffer.allocUnsafe(nb);\n\t}\n\n\tStringDecoder.prototype.write = function (buf) {\n\t if (buf.length === 0) return '';\n\t var r;\n\t var i;\n\t if (this.lastNeed) {\n\t r = this.fillLast(buf);\n\t if (r === undefined) return '';\n\t i = this.lastNeed;\n\t this.lastNeed = 0;\n\t } else {\n\t i = 0;\n\t }\n\t if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n\t return r || '';\n\t};\n\n\tStringDecoder.prototype.end = utf8End;\n\n\t// Returns only complete characters in a Buffer\n\tStringDecoder.prototype.text = utf8Text;\n\n\t// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n\tStringDecoder.prototype.fillLast = function (buf) {\n\t if (this.lastNeed <= buf.length) {\n\t buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n\t return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n\t }\n\t buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n\t this.lastNeed -= buf.length;\n\t};\n\n\t// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n\t// continuation byte. If an invalid byte is detected, -2 is returned.\n\tfunction utf8CheckByte(byte) {\n\t if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n\t return byte >> 6 === 0x02 ? -1 : -2;\n\t}\n\n\t// Checks at most 3 bytes at the end of a Buffer in order to detect an\n\t// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n\t// needed to complete the UTF-8 character (if applicable) are returned.\n\tfunction utf8CheckIncomplete(self, buf, i) {\n\t var j = buf.length - 1;\n\t if (j < i) return 0;\n\t var nb = utf8CheckByte(buf[j]);\n\t if (nb >= 0) {\n\t if (nb > 0) self.lastNeed = nb - 1;\n\t return nb;\n\t }\n\t if (--j < i || nb === -2) return 0;\n\t nb = utf8CheckByte(buf[j]);\n\t if (nb >= 0) {\n\t if (nb > 0) self.lastNeed = nb - 2;\n\t return nb;\n\t }\n\t if (--j < i || nb === -2) return 0;\n\t nb = utf8CheckByte(buf[j]);\n\t if (nb >= 0) {\n\t if (nb > 0) {\n\t if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n\t }\n\t return nb;\n\t }\n\t return 0;\n\t}\n\n\t// Validates as many continuation bytes for a multi-byte UTF-8 character as\n\t// needed or are available. If we see a non-continuation byte where we expect\n\t// one, we \"replace\" the validated continuation bytes we've seen so far with\n\t// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n\t// behavior. The continuation byte check is included three times in the case\n\t// where all of the continuation bytes for a character exist in the same buffer.\n\t// It is also done this way as a slight performance increase instead of using a\n\t// loop.\n\tfunction utf8CheckExtraBytes(self, buf, p) {\n\t if ((buf[0] & 0xC0) !== 0x80) {\n\t self.lastNeed = 0;\n\t return '\\ufffd';\n\t }\n\t if (self.lastNeed > 1 && buf.length > 1) {\n\t if ((buf[1] & 0xC0) !== 0x80) {\n\t self.lastNeed = 1;\n\t return '\\ufffd';\n\t }\n\t if (self.lastNeed > 2 && buf.length > 2) {\n\t if ((buf[2] & 0xC0) !== 0x80) {\n\t self.lastNeed = 2;\n\t return '\\ufffd';\n\t }\n\t }\n\t }\n\t}\n\n\t// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\n\tfunction utf8FillLast(buf) {\n\t var p = this.lastTotal - this.lastNeed;\n\t var r = utf8CheckExtraBytes(this, buf);\n\t if (r !== undefined) return r;\n\t if (this.lastNeed <= buf.length) {\n\t buf.copy(this.lastChar, p, 0, this.lastNeed);\n\t return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n\t }\n\t buf.copy(this.lastChar, p, 0, buf.length);\n\t this.lastNeed -= buf.length;\n\t}\n\n\t// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n\t// partial character, the character's bytes are buffered until the required\n\t// number of bytes are available.\n\tfunction utf8Text(buf, i) {\n\t var total = utf8CheckIncomplete(this, buf, i);\n\t if (!this.lastNeed) return buf.toString('utf8', i);\n\t this.lastTotal = total;\n\t var end = buf.length - (total - this.lastNeed);\n\t buf.copy(this.lastChar, 0, end);\n\t return buf.toString('utf8', i, end);\n\t}\n\n\t// For UTF-8, a replacement character is added when ending on a partial\n\t// character.\n\tfunction utf8End(buf) {\n\t var r = buf && buf.length ? this.write(buf) : '';\n\t if (this.lastNeed) return r + '\\ufffd';\n\t return r;\n\t}\n\n\t// UTF-16LE typically needs two bytes per character, but even if we have an even\n\t// number of bytes available, we need to check if we end on a leading/high\n\t// surrogate. In that case, we need to wait for the next two bytes in order to\n\t// decode the last character properly.\n\tfunction utf16Text(buf, i) {\n\t if ((buf.length - i) % 2 === 0) {\n\t var r = buf.toString('utf16le', i);\n\t if (r) {\n\t var c = r.charCodeAt(r.length - 1);\n\t if (c >= 0xD800 && c <= 0xDBFF) {\n\t this.lastNeed = 2;\n\t this.lastTotal = 4;\n\t this.lastChar[0] = buf[buf.length - 2];\n\t this.lastChar[1] = buf[buf.length - 1];\n\t return r.slice(0, -1);\n\t }\n\t }\n\t return r;\n\t }\n\t this.lastNeed = 1;\n\t this.lastTotal = 2;\n\t this.lastChar[0] = buf[buf.length - 1];\n\t return buf.toString('utf16le', i, buf.length - 1);\n\t}\n\n\t// For UTF-16LE we do not explicitly append special replacement characters if we\n\t// end on a partial character, we simply let v8 handle that.\n\tfunction utf16End(buf) {\n\t var r = buf && buf.length ? this.write(buf) : '';\n\t if (this.lastNeed) {\n\t var end = this.lastTotal - this.lastNeed;\n\t return r + this.lastChar.toString('utf16le', 0, end);\n\t }\n\t return r;\n\t}\n\n\tfunction base64Text(buf, i) {\n\t var n = (buf.length - i) % 3;\n\t if (n === 0) return buf.toString('base64', i);\n\t this.lastNeed = 3 - n;\n\t this.lastTotal = 3;\n\t if (n === 1) {\n\t this.lastChar[0] = buf[buf.length - 1];\n\t } else {\n\t this.lastChar[0] = buf[buf.length - 2];\n\t this.lastChar[1] = buf[buf.length - 1];\n\t }\n\t return buf.toString('base64', i, buf.length - n);\n\t}\n\n\tfunction base64End(buf) {\n\t var r = buf && buf.length ? this.write(buf) : '';\n\t if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n\t return r;\n\t}\n\n\t// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\n\tfunction simpleWrite(buf) {\n\t return buf.toString(this.encoding);\n\t}\n\n\tfunction simpleEnd(buf) {\n\t return buf && buf.length ? this.write(buf) : '';\n\t}\n\treturn string_decoder;\n}\n\nvar hasRequiredSax;\n\nfunction requireSax () {\n\tif (hasRequiredSax) return sax;\n\thasRequiredSax = 1;\n\t(function (exports) {\n(function (sax) { // wrapper for non-node envs\n\t\t sax.parser = function (strict, opt) { return new SAXParser(strict, opt) };\n\t\t sax.SAXParser = SAXParser;\n\t\t sax.SAXStream = SAXStream;\n\t\t sax.createStream = createStream;\n\n\t\t // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n\t\t // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n\t\t // since that's the earliest that a buffer overrun could occur. This way, checks are\n\t\t // as rare as required, but as often as necessary to ensure never crossing this bound.\n\t\t // Furthermore, buffers are only tested at most once per write(), so passing a very\n\t\t // large string into write() might have undesirable effects, but this is manageable by\n\t\t // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n\t\t // edge case, result in creating at most one complete copy of the string passed in.\n\t\t // Set to Infinity to have unlimited buffers.\n\t\t sax.MAX_BUFFER_LENGTH = 64 * 1024;\n\n\t\t var buffers = [\n\t\t 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n\t\t 'procInstName', 'procInstBody', 'entity', 'attribName',\n\t\t 'attribValue', 'cdata', 'script'\n\t\t ];\n\n\t\t sax.EVENTS = [\n\t\t 'text',\n\t\t 'processinginstruction',\n\t\t 'sgmldeclaration',\n\t\t 'doctype',\n\t\t 'comment',\n\t\t 'opentagstart',\n\t\t 'attribute',\n\t\t 'opentag',\n\t\t 'closetag',\n\t\t 'opencdata',\n\t\t 'cdata',\n\t\t 'closecdata',\n\t\t 'error',\n\t\t 'end',\n\t\t 'ready',\n\t\t 'script',\n\t\t 'opennamespace',\n\t\t 'closenamespace'\n\t\t ];\n\n\t\t function SAXParser (strict, opt) {\n\t\t if (!(this instanceof SAXParser)) {\n\t\t return new SAXParser(strict, opt)\n\t\t }\n\n\t\t var parser = this;\n\t\t clearBuffers(parser);\n\t\t parser.q = parser.c = '';\n\t\t parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH;\n\t\t parser.opt = opt || {};\n\t\t parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n\t\t parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase';\n\t\t parser.tags = [];\n\t\t parser.closed = parser.closedRoot = parser.sawRoot = false;\n\t\t parser.tag = parser.error = null;\n\t\t parser.strict = !!strict;\n\t\t parser.noscript = !!(strict || parser.opt.noscript);\n\t\t parser.state = S.BEGIN;\n\t\t parser.strictEntities = parser.opt.strictEntities;\n\t\t parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES);\n\t\t parser.attribList = [];\n\n\t\t // namespaces form a prototype chain.\n\t\t // it always points at the current tag,\n\t\t // which protos to its parent tag.\n\t\t if (parser.opt.xmlns) {\n\t\t parser.ns = Object.create(rootNS);\n\t\t }\n\n\t\t // disallow unquoted attribute values if not otherwise configured\n\t\t // and strict mode is true\n\t\t if (parser.opt.unquotedAttributeValues === undefined) {\n\t\t parser.opt.unquotedAttributeValues = !strict;\n\t\t }\n\n\t\t // mostly just for error reporting\n\t\t parser.trackPosition = parser.opt.position !== false;\n\t\t if (parser.trackPosition) {\n\t\t parser.position = parser.line = parser.column = 0;\n\t\t }\n\t\t emit(parser, 'onready');\n\t\t }\n\n\t\t if (!Object.create) {\n\t\t Object.create = function (o) {\n\t\t function F () {}\n\t\t F.prototype = o;\n\t\t var newf = new F();\n\t\t return newf\n\t\t };\n\t\t }\n\n\t\t if (!Object.keys) {\n\t\t Object.keys = function (o) {\n\t\t var a = [];\n\t\t for (var i in o) if (o.hasOwnProperty(i)) a.push(i);\n\t\t return a\n\t\t };\n\t\t }\n\n\t\t function checkBufferLength (parser) {\n\t\t var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10);\n\t\t var maxActual = 0;\n\t\t for (var i = 0, l = buffers.length; i < l; i++) {\n\t\t var len = parser[buffers[i]].length;\n\t\t if (len > maxAllowed) {\n\t\t // Text/cdata nodes can get big, and since they're buffered,\n\t\t // we can get here under normal conditions.\n\t\t // Avoid issues by emitting the text node now,\n\t\t // so at least it won't get any bigger.\n\t\t switch (buffers[i]) {\n\t\t case 'textNode':\n\t\t closeText(parser);\n\t\t break\n\n\t\t case 'cdata':\n\t\t emitNode(parser, 'oncdata', parser.cdata);\n\t\t parser.cdata = '';\n\t\t break\n\n\t\t case 'script':\n\t\t emitNode(parser, 'onscript', parser.script);\n\t\t parser.script = '';\n\t\t break\n\n\t\t default:\n\t\t error(parser, 'Max buffer length exceeded: ' + buffers[i]);\n\t\t }\n\t\t }\n\t\t maxActual = Math.max(maxActual, len);\n\t\t }\n\t\t // schedule the next check for the earliest possible buffer overrun.\n\t\t var m = sax.MAX_BUFFER_LENGTH - maxActual;\n\t\t parser.bufferCheckPosition = m + parser.position;\n\t\t }\n\n\t\t function clearBuffers (parser) {\n\t\t for (var i = 0, l = buffers.length; i < l; i++) {\n\t\t parser[buffers[i]] = '';\n\t\t }\n\t\t }\n\n\t\t function flushBuffers (parser) {\n\t\t closeText(parser);\n\t\t if (parser.cdata !== '') {\n\t\t emitNode(parser, 'oncdata', parser.cdata);\n\t\t parser.cdata = '';\n\t\t }\n\t\t if (parser.script !== '') {\n\t\t emitNode(parser, 'onscript', parser.script);\n\t\t parser.script = '';\n\t\t }\n\t\t }\n\n\t\t SAXParser.prototype = {\n\t\t end: function () { end(this); },\n\t\t write: write,\n\t\t resume: function () { this.error = null; return this },\n\t\t close: function () { return this.write(null) },\n\t\t flush: function () { flushBuffers(this); }\n\t\t };\n\n\t\t var Stream;\n\t\t try {\n\t\t Stream = require$$0.Stream;\n\t\t } catch (ex) {\n\t\t Stream = function () {};\n\t\t }\n\t\t if (!Stream) Stream = function () {};\n\n\t\t var streamWraps = sax.EVENTS.filter(function (ev) {\n\t\t return ev !== 'error' && ev !== 'end'\n\t\t });\n\n\t\t function createStream (strict, opt) {\n\t\t return new SAXStream(strict, opt)\n\t\t }\n\n\t\t function SAXStream (strict, opt) {\n\t\t if (!(this instanceof SAXStream)) {\n\t\t return new SAXStream(strict, opt)\n\t\t }\n\n\t\t Stream.apply(this);\n\n\t\t this._parser = new SAXParser(strict, opt);\n\t\t this.writable = true;\n\t\t this.readable = true;\n\n\t\t var me = this;\n\n\t\t this._parser.onend = function () {\n\t\t me.emit('end');\n\t\t };\n\n\t\t this._parser.onerror = function (er) {\n\t\t me.emit('error', er);\n\n\t\t // if didn't throw, then means error was handled.\n\t\t // go ahead and clear error, so we can write again.\n\t\t me._parser.error = null;\n\t\t };\n\n\t\t this._decoder = null;\n\n\t\t streamWraps.forEach(function (ev) {\n\t\t Object.defineProperty(me, 'on' + ev, {\n\t\t get: function () {\n\t\t return me._parser['on' + ev]\n\t\t },\n\t\t set: function (h) {\n\t\t if (!h) {\n\t\t me.removeAllListeners(ev);\n\t\t me._parser['on' + ev] = h;\n\t\t return h\n\t\t }\n\t\t me.on(ev, h);\n\t\t },\n\t\t enumerable: true,\n\t\t configurable: false\n\t\t });\n\t\t });\n\t\t }\n\n\t\t SAXStream.prototype = Object.create(Stream.prototype, {\n\t\t constructor: {\n\t\t value: SAXStream\n\t\t }\n\t\t });\n\n\t\t SAXStream.prototype.write = function (data) {\n\t\t if (typeof Buffer === 'function' &&\n\t\t typeof Buffer.isBuffer === 'function' &&\n\t\t Buffer.isBuffer(data)) {\n\t\t if (!this._decoder) {\n\t\t var SD = requireString_decoder().StringDecoder;\n\t\t this._decoder = new SD('utf8');\n\t\t }\n\t\t data = this._decoder.write(data);\n\t\t }\n\n\t\t this._parser.write(data.toString());\n\t\t this.emit('data', data);\n\t\t return true\n\t\t };\n\n\t\t SAXStream.prototype.end = function (chunk) {\n\t\t if (chunk && chunk.length) {\n\t\t this.write(chunk);\n\t\t }\n\t\t this._parser.end();\n\t\t return true\n\t\t };\n\n\t\t SAXStream.prototype.on = function (ev, handler) {\n\t\t var me = this;\n\t\t if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n\t\t me._parser['on' + ev] = function () {\n\t\t var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n\t\t args.splice(0, 0, ev);\n\t\t me.emit.apply(me, args);\n\t\t };\n\t\t }\n\n\t\t return Stream.prototype.on.call(me, ev, handler)\n\t\t };\n\n\t\t // this really needs to be replaced with character classes.\n\t\t // XML allows all manner of ridiculous numbers and digits.\n\t\t var CDATA = '[CDATA[';\n\t\t var DOCTYPE = 'DOCTYPE';\n\t\t var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\n\t\t var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/';\n\t\t var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n\n\t\t // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n\t\t // This implementation works on strings, a single character at a time\n\t\t // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n\t\t // without a significant breaking change to either this parser, or the\n\t\t // JavaScript language. Implementation of an emoji-capable xml parser\n\t\t // is left as an exercise for the reader.\n\t\t var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n\n\t\t var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n\n\t\t var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n\t\t var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n\n\t\t function isWhitespace (c) {\n\t\t return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n\t\t }\n\n\t\t function isQuote (c) {\n\t\t return c === '\"' || c === '\\''\n\t\t }\n\n\t\t function isAttribEnd (c) {\n\t\t return c === '>' || isWhitespace(c)\n\t\t }\n\n\t\t function isMatch (regex, c) {\n\t\t return regex.test(c)\n\t\t }\n\n\t\t function notMatch (regex, c) {\n\t\t return !isMatch(regex, c)\n\t\t }\n\n\t\t var S = 0;\n\t\t sax.STATE = {\n\t\t BEGIN: S++, // leading byte order mark or whitespace\n\t\t BEGIN_WHITESPACE: S++, // leading whitespace\n\t\t TEXT: S++, // general stuff\n\t\t TEXT_ENTITY: S++, // &amp and such.\n\t\t OPEN_WAKA: S++, // <\n\t\t SGML_DECL: S++, // <!BLARG\n\t\t SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n\t\t DOCTYPE: S++, // <!DOCTYPE\n\t\t DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n\t\t DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n\t\t DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n\t\t COMMENT_STARTING: S++, // <!-\n\t\t COMMENT: S++, // <!--\n\t\t COMMENT_ENDING: S++, // <!-- blah -\n\t\t COMMENT_ENDED: S++, // <!-- blah --\n\t\t CDATA: S++, // <![CDATA[ something\n\t\t CDATA_ENDING: S++, // ]\n\t\t CDATA_ENDING_2: S++, // ]]\n\t\t PROC_INST: S++, // <?hi\n\t\t PROC_INST_BODY: S++, // <?hi there\n\t\t PROC_INST_ENDING: S++, // <?hi \"there\" ?\n\t\t OPEN_TAG: S++, // <strong\n\t\t OPEN_TAG_SLASH: S++, // <strong /\n\t\t ATTRIB: S++, // <a\n\t\t ATTRIB_NAME: S++, // <a foo\n\t\t ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n\t\t ATTRIB_VALUE: S++, // <a foo=\n\t\t ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n\t\t ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n\t\t ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n\t\t ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\"&quot;\"\n\t\t ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\n\t\t CLOSE_TAG: S++, // </a\n\t\t CLOSE_TAG_SAW_WHITE: S++, // </a >\n\t\t SCRIPT: S++, // <script> ...\n\t\t SCRIPT_ENDING: S++ // <script> ... <\n\t\t };\n\n\t\t sax.XML_ENTITIES = {\n\t\t 'amp': '&',\n\t\t 'gt': '>',\n\t\t 'lt': '<',\n\t\t 'quot': '\"',\n\t\t 'apos': \"'\"\n\t\t };\n\n\t\t sax.ENTITIES = {\n\t\t 'amp': '&',\n\t\t 'gt': '>',\n\t\t 'lt': '<',\n\t\t 'quot': '\"',\n\t\t 'apos': \"'\",\n\t\t 'AElig': 198,\n\t\t 'Aacute': 193,\n\t\t 'Acirc': 194,\n\t\t 'Agrave': 192,\n\t\t 'Aring': 197,\n\t\t 'Atilde': 195,\n\t\t 'Auml': 196,\n\t\t 'Ccedil': 199,\n\t\t 'ETH': 208,\n\t\t 'Eacute': 201,\n\t\t 'Ecirc': 202,\n\t\t 'Egrave': 200,\n\t\t 'Euml': 203,\n\t\t 'Iacute': 205,\n\t\t 'Icirc': 206,\n\t\t 'Igrave': 204,\n\t\t 'Iuml': 207,\n\t\t 'Ntilde': 209,\n\t\t 'Oacute': 211,\n\t\t 'Ocirc': 212,\n\t\t 'Ograve': 210,\n\t\t 'Oslash': 216,\n\t\t 'Otilde': 213,\n\t\t 'Ouml': 214,\n\t\t 'THORN': 222,\n\t\t 'Uacute': 218,\n\t\t 'Ucirc': 219,\n\t\t 'Ugrave': 217,\n\t\t 'Uuml': 220,\n\t\t 'Yacute': 221,\n\t\t 'aacute': 225,\n\t\t 'acirc': 226,\n\t\t 'aelig': 230,\n\t\t 'agrave': 224,\n\t\t 'aring': 229,\n\t\t 'atilde': 227,\n\t\t 'auml': 228,\n\t\t 'ccedil': 231,\n\t\t 'eacute': 233,\n\t\t 'ecirc': 234,\n\t\t 'egrave': 232,\n\t\t 'eth': 240,\n\t\t 'euml': 235,\n\t\t 'iacute': 237,\n\t\t 'icirc': 238,\n\t\t 'igrave': 236,\n\t\t 'iuml': 239,\n\t\t 'ntilde': 241,\n\t\t 'oacute': 243,\n\t\t 'ocirc': 244,\n\t\t 'ograve': 242,\n\t\t 'oslash': 248,\n\t\t 'otilde': 245,\n\t\t 'ouml': 246,\n\t\t 'szlig': 223,\n\t\t 'thorn': 254,\n\t\t 'uacute': 250,\n\t\t 'ucirc': 251,\n\t\t 'ugrave': 249,\n\t\t 'uuml': 252,\n\t\t 'yacute': 253,\n\t\t 'yuml': 255,\n\t\t 'copy': 169,\n\t\t 'reg': 174,\n\t\t 'nbsp': 160,\n\t\t 'iexcl': 161,\n\t\t 'cent': 162,\n\t\t 'pound': 163,\n\t\t 'curren': 164,\n\t\t 'yen': 165,\n\t\t 'brvbar': 166,\n\t\t 'sect': 167,\n\t\t 'uml': 168,\n\t\t 'ordf': 170,\n\t\t 'laquo': 171,\n\t\t 'not': 172,\n\t\t 'shy': 173,\n\t\t 'macr': 175,\n\t\t 'deg': 176,\n\t\t 'plusmn': 177,\n\t\t 'sup1': 185,\n\t\t 'sup2': 178,\n\t\t 'sup3': 179,\n\t\t 'acute': 180,\n\t\t 'micro': 181,\n\t\t 'para': 182,\n\t\t 'middot': 183,\n\t\t 'cedil': 184,\n\t\t 'ordm': 186,\n\t\t 'raquo': 187,\n\t\t 'frac14': 188,\n\t\t 'frac12': 189,\n\t\t 'frac34': 190,\n\t\t 'iquest': 191,\n\t\t 'times': 215,\n\t\t 'divide': 247,\n\t\t 'OElig': 338,\n\t\t 'oelig': 339,\n\t\t 'Scaron': 352,\n\t\t 'scaron': 353,\n\t\t 'Yuml': 376,\n\t\t 'fnof': 402,\n\t\t 'circ': 710,\n\t\t 'tilde': 732,\n\t\t 'Alpha': 913,\n\t\t 'Beta': 914,\n\t\t 'Gamma': 915,\n\t\t 'Delta': 916,\n\t\t 'Epsilon': 917,\n\t\t 'Zeta': 918,\n\t\t 'Eta': 919,\n\t\t 'Theta': 920,\n\t\t 'Iota': 921,\n\t\t 'Kappa': 922,\n\t\t 'Lambda': 923,\n\t\t 'Mu': 924,\n\t\t 'Nu': 925,\n\t\t 'Xi': 926,\n\t\t 'Omicron': 927,\n\t\t 'Pi': 928,\n\t\t 'Rho': 929,\n\t\t 'Sigma': 931,\n\t\t 'Tau': 932,\n\t\t 'Upsilon': 933,\n\t\t 'Phi': 934,\n\t\t 'Chi': 935,\n\t\t 'Psi': 936,\n\t\t 'Omega': 937,\n\t\t 'alpha': 945,\n\t\t 'beta': 946,\n\t\t 'gamma': 947,\n\t\t 'delta': 948,\n\t\t 'epsilon': 949,\n\t\t 'zeta': 950,\n\t\t 'eta': 951,\n\t\t 'theta': 952,\n\t\t 'iota': 953,\n\t\t 'kappa': 954,\n\t\t 'lambda': 955,\n\t\t 'mu': 956,\n\t\t 'nu': 957,\n\t\t 'xi': 958,\n\t\t 'omicron': 959,\n\t\t 'pi': 960,\n\t\t 'rho': 961,\n\t\t 'sigmaf': 962,\n\t\t 'sigma': 963,\n\t\t 'tau': 964,\n\t\t 'upsilon': 965,\n\t\t 'phi': 966,\n\t\t 'chi': 967,\n\t\t 'psi': 968,\n\t\t 'omega': 969,\n\t\t 'thetasym': 977,\n\t\t 'upsih': 978,\n\t\t 'piv': 982,\n\t\t 'ensp': 8194,\n\t\t 'emsp': 8195,\n\t\t 'thinsp': 8201,\n\t\t 'zwnj': 8204,\n\t\t 'zwj': 8205,\n\t\t 'lrm': 8206,\n\t\t 'rlm': 8207,\n\t\t 'ndash': 8211,\n\t\t 'mdash': 8212,\n\t\t 'lsquo': 8216,\n\t\t 'rsquo': 8217,\n\t\t 'sbquo': 8218,\n\t\t 'ldquo': 8220,\n\t\t 'rdquo': 8221,\n\t\t 'bdquo': 8222,\n\t\t 'dagger': 8224,\n\t\t 'Dagger': 8225,\n\t\t 'bull': 8226,\n\t\t 'hellip': 8230,\n\t\t 'permil': 8240,\n\t\t 'prime': 8242,\n\t\t 'Prime': 8243,\n\t\t 'lsaquo': 8249,\n\t\t 'rsaquo': 8250,\n\t\t 'oline': 8254,\n\t\t 'frasl': 8260,\n\t\t 'euro': 8364,\n\t\t 'image': 8465,\n\t\t 'weierp': 8472,\n\t\t 'real': 8476,\n\t\t 'trade': 8482,\n\t\t 'alefsym': 8501,\n\t\t 'larr': 8592,\n\t\t 'uarr': 8593,\n\t\t 'rarr': 8594,\n\t\t 'darr': 8595,\n\t\t 'harr': 8596,\n\t\t 'crarr': 8629,\n\t\t 'lArr': 8656,\n\t\t 'uArr': 8657,\n\t\t 'rArr': 8658,\n\t\t 'dArr': 8659,\n\t\t 'hArr': 8660,\n\t\t 'forall': 8704,\n\t\t 'part': 8706,\n\t\t 'exist': 8707,\n\t\t 'empty': 8709,\n\t\t 'nabla': 8711,\n\t\t 'isin': 8712,\n\t\t 'notin': 8713,\n\t\t 'ni': 8715,\n\t\t 'prod': 8719,\n\t\t 'sum': 8721,\n\t\t 'minus': 8722,\n\t\t 'lowast': 8727,\n\t\t 'radic': 8730,\n\t\t 'prop': 8733,\n\t\t 'infin': 8734,\n\t\t 'ang': 8736,\n\t\t 'and': 8743,\n\t\t 'or': 8744,\n\t\t 'cap': 8745,\n\t\t 'cup': 8746,\n\t\t 'int': 8747,\n\t\t 'there4': 8756,\n\t\t 'sim': 8764,\n\t\t 'cong': 8773,\n\t\t 'asymp': 8776,\n\t\t 'ne': 8800,\n\t\t 'equiv': 8801,\n\t\t 'le': 8804,\n\t\t 'ge': 8805,\n\t\t 'sub': 8834,\n\t\t 'sup': 8835,\n\t\t 'nsub': 8836,\n\t\t 'sube': 8838,\n\t\t 'supe': 8839,\n\t\t 'oplus': 8853,\n\t\t 'otimes': 8855,\n\t\t 'perp': 8869,\n\t\t 'sdot': 8901,\n\t\t 'lceil': 8968,\n\t\t 'rceil': 8969,\n\t\t 'lfloor': 8970,\n\t\t 'rfloor': 8971,\n\t\t 'lang': 9001,\n\t\t 'rang': 9002,\n\t\t 'loz': 9674,\n\t\t 'spades': 9824,\n\t\t 'clubs': 9827,\n\t\t 'hearts': 9829,\n\t\t 'diams': 9830\n\t\t };\n\n\t\t Object.keys(sax.ENTITIES).forEach(function (key) {\n\t\t var e = sax.ENTITIES[key];\n\t\t var s = typeof e === 'number' ? String.fromCharCode(e) : e;\n\t\t sax.ENTITIES[key] = s;\n\t\t });\n\n\t\t for (var s in sax.STATE) {\n\t\t sax.STATE[sax.STATE[s]] = s;\n\t\t }\n\n\t\t // shorthand\n\t\t S = sax.STATE;\n\n\t\t function emit (parser, event, data) {\n\t\t parser[event] && parser[event](data);\n\t\t }\n\n\t\t function emitNode (parser, nodeType, data) {\n\t\t if (parser.textNode) closeText(parser);\n\t\t emit(parser, nodeType, data);\n\t\t }\n\n\t\t function closeText (parser) {\n\t\t parser.textNode = textopts(parser.opt, parser.textNode);\n\t\t if (parser.textNode) emit(parser, 'ontext', parser.textNode);\n\t\t parser.textNode = '';\n\t\t }\n\n\t\t function textopts (opt, text) {\n\t\t if (opt.trim) text = text.trim();\n\t\t if (opt.normalize) text = text.replace(/\\s+/g, ' ');\n\t\t return text\n\t\t }\n\n\t\t function error (parser, er) {\n\t\t closeText(parser);\n\t\t if (parser.trackPosition) {\n\t\t er += '\\nLine: ' + parser.line +\n\t\t '\\nColumn: ' + parser.column +\n\t\t '\\nChar: ' + parser.c;\n\t\t }\n\t\t er = new Error(er);\n\t\t parser.error = er;\n\t\t emit(parser, 'onerror', er);\n\t\t return parser\n\t\t }\n\n\t\t function end (parser) {\n\t\t if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag');\n\t\t if ((parser.state !== S.BEGIN) &&\n\t\t (parser.state !== S.BEGIN_WHITESPACE) &&\n\t\t (parser.state !== S.TEXT)) {\n\t\t error(parser, 'Unexpected end');\n\t\t }\n\t\t closeText(parser);\n\t\t parser.c = '';\n\t\t parser.closed = true;\n\t\t emit(parser, 'onend');\n\t\t SAXParser.call(parser, parser.strict, parser.opt);\n\t\t return parser\n\t\t }\n\n\t\t function strictFail (parser, message) {\n\t\t if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n\t\t throw new Error('bad call to strictFail')\n\t\t }\n\t\t if (parser.strict) {\n\t\t error(parser, message);\n\t\t }\n\t\t }\n\n\t\t function newTag (parser) {\n\t\t if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]();\n\t\t var parent = parser.tags[parser.tags.length - 1] || parser;\n\t\t var tag = parser.tag = { name: parser.tagName, attributes: {} };\n\n\t\t // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n\t\t if (parser.opt.xmlns) {\n\t\t tag.ns = parent.ns;\n\t\t }\n\t\t parser.attribList.length = 0;\n\t\t emitNode(parser, 'onopentagstart', tag);\n\t\t }\n\n\t\t function qname (name, attribute) {\n\t\t var i = name.indexOf(':');\n\t\t var qualName = i < 0 ? [ '', name ] : name.split(':');\n\t\t var prefix = qualName[0];\n\t\t var local = qualName[1];\n\n\t\t // <x \"xmlns\"=\"http://foo\">\n\t\t if (attribute && name === 'xmlns') {\n\t\t prefix = 'xmlns';\n\t\t local = '';\n\t\t }\n\n\t\t return { prefix: prefix, local: local }\n\t\t }\n\n\t\t function attrib (parser) {\n\t\t if (!parser.strict) {\n\t\t parser.attribName = parser.attribName[parser.looseCase]();\n\t\t }\n\n\t\t if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n\t\t parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n\t\t parser.attribName = parser.attribValue = '';\n\t\t return\n\t\t }\n\n\t\t if (parser.opt.xmlns) {\n\t\t var qn = qname(parser.attribName, true);\n\t\t var prefix = qn.prefix;\n\t\t var local = qn.local;\n\n\t\t if (prefix === 'xmlns') {\n\t\t // namespace binding attribute. push the binding into scope\n\t\t if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n\t\t strictFail(parser,\n\t\t 'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n\t\t 'Actual: ' + parser.attribValue);\n\t\t } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n\t\t strictFail(parser,\n\t\t 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n\t\t 'Actual: ' + parser.attribValue);\n\t\t } else {\n\t\t var tag = parser.tag;\n\t\t var parent = parser.tags[parser.tags.length - 1] || parser;\n\t\t if (tag.ns === parent.ns) {\n\t\t tag.ns = Object.create(parent.ns);\n\t\t }\n\t\t tag.ns[local] = parser.attribValue;\n\t\t }\n\t\t }\n\n\t\t // defer onattribute events until all attributes have been seen\n\t\t // so any new bindings can take effect. preserve attribute order\n\t\t // so deferred events can be emitted in document order\n\t\t parser.attribList.push([parser.attribName, parser.attribValue]);\n\t\t } else {\n\t\t // in non-xmlns mode, we can emit the event right away\n\t\t parser.tag.attributes[parser.attribName] = parser.attribValue;\n\t\t emitNode(parser, 'onattribute', {\n\t\t name: parser.attribName,\n\t\t value: parser.attribValue\n\t\t });\n\t\t }\n\n\t\t parser.attribName = parser.attribValue = '';\n\t\t }\n\n\t\t function openTag (parser, selfClosing) {\n\t\t if (parser.opt.xmlns) {\n\t\t // emit namespace binding events\n\t\t var tag = parser.tag;\n\n\t\t // add namespace info to tag\n\t\t var qn = qname(parser.tagName);\n\t\t tag.prefix = qn.prefix;\n\t\t tag.local = qn.local;\n\t\t tag.uri = tag.ns[qn.prefix] || '';\n\n\t\t if (tag.prefix && !tag.uri) {\n\t\t strictFail(parser, 'Unbound namespace prefix: ' +\n\t\t JSON.stringify(parser.tagName));\n\t\t tag.uri = qn.prefix;\n\t\t }\n\n\t\t var parent = parser.tags[parser.tags.length - 1] || parser;\n\t\t if (tag.ns && parent.ns !== tag.ns) {\n\t\t Object.keys(tag.ns).forEach(function (p) {\n\t\t emitNode(parser, 'onopennamespace', {\n\t\t prefix: p,\n\t\t uri: tag.ns[p]\n\t\t });\n\t\t });\n\t\t }\n\n\t\t // handle deferred onattribute events\n\t\t // Note: do not apply default ns to attributes:\n\t\t // http://www.w3.org/TR/REC-xml-names/#defaulting\n\t\t for (var i = 0, l = parser.attribList.length; i < l; i++) {\n\t\t var nv = parser.attribList[i];\n\t\t var name = nv[0];\n\t\t var value = nv[1];\n\t\t var qualName = qname(name, true);\n\t\t var prefix = qualName.prefix;\n\t\t var local = qualName.local;\n\t\t var uri = prefix === '' ? '' : (tag.ns[prefix] || '');\n\t\t var a = {\n\t\t name: name,\n\t\t value: value,\n\t\t prefix: prefix,\n\t\t local: local,\n\t\t uri: uri\n\t\t };\n\n\t\t // if there's any attributes with an undefined namespace,\n\t\t // then fail on them now.\n\t\t if (prefix && prefix !== 'xmlns' && !uri) {\n\t\t strictFail(parser, 'Unbound namespace prefix: ' +\n\t\t JSON.stringify(prefix));\n\t\t a.uri = prefix;\n\t\t }\n\t\t parser.tag.attributes[name] = a;\n\t\t emitNode(parser, 'onattribute', a);\n\t\t }\n\t\t parser.attribList.length = 0;\n\t\t }\n\n\t\t parser.tag.isSelfClosing = !!selfClosing;\n\n\t\t // process the tag\n\t\t parser.sawRoot = true;\n\t\t parser.tags.push(parser.tag);\n\t\t emitNode(parser, 'onopentag', parser.tag);\n\t\t if (!selfClosing) {\n\t\t // special case for <script> in non-strict mode.\n\t\t if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n\t\t parser.state = S.SCRIPT;\n\t\t } else {\n\t\t parser.state = S.TEXT;\n\t\t }\n\t\t parser.tag = null;\n\t\t parser.tagName = '';\n\t\t }\n\t\t parser.attribName = parser.attribValue = '';\n\t\t parser.attribList.length = 0;\n\t\t }\n\n\t\t function closeTag (parser) {\n\t\t if (!parser.tagName) {\n\t\t strictFail(parser, 'Weird empty close tag.');\n\t\t parser.textNode += '</>';\n\t\t parser.state = S.TEXT;\n\t\t return\n\t\t }\n\n\t\t if (parser.script) {\n\t\t if (parser.tagName !== 'script') {\n\t\t parser.script += '</' + parser.tagName + '>';\n\t\t parser.tagName = '';\n\t\t parser.state = S.SCRIPT;\n\t\t return\n\t\t }\n\t\t emitNode(parser, 'onscript', parser.script);\n\t\t parser.script = '';\n\t\t }\n\n\t\t // first make sure that the closing tag actually exists.\n\t\t // <a><b></c></b></a> will close everything, otherwise.\n\t\t var t = parser.tags.length;\n\t\t var tagName = parser.tagName;\n\t\t if (!parser.strict) {\n\t\t tagName = tagName[parser.looseCase]();\n\t\t }\n\t\t var closeTo = tagName;\n\t\t while (t--) {\n\t\t var close = parser.tags[t];\n\t\t if (close.name !== closeTo) {\n\t\t // fail the first time in strict mode\n\t\t strictFail(parser, 'Unexpected close tag');\n\t\t } else {\n\t\t break\n\t\t }\n\t\t }\n\n\t\t // didn't find it. we already failed for strict, so just abort.\n\t\t if (t < 0) {\n\t\t strictFail(parser, 'Unmatched closing tag: ' + parser.tagName);\n\t\t parser.textNode += '</' + parser.tagName + '>';\n\t\t parser.state = S.TEXT;\n\t\t return\n\t\t }\n\t\t parser.tagName = tagName;\n\t\t var s = parser.tags.length;\n\t\t while (s-- > t) {\n\t\t var tag = parser.tag = parser.tags.pop();\n\t\t parser.tagName = parser.tag.name;\n\t\t emitNode(parser, 'onclosetag', parser.tagName);\n\n\t\t var x = {};\n\t\t for (var i in tag.ns) {\n\t\t x[i] = tag.ns[i];\n\t\t }\n\n\t\t var parent = parser.tags[parser.tags.length - 1] || parser;\n\t\t if (parser.opt.xmlns && tag.ns !== parent.ns) {\n\t\t // remove namespace bindings introduced by tag\n\t\t Object.keys(tag.ns).forEach(function (p) {\n\t\t var n = tag.ns[p];\n\t\t emitNode(parser, 'onclosenamespace', { prefix: p, uri: n });\n\t\t });\n\t\t }\n\t\t }\n\t\t if (t === 0) parser.closedRoot = true;\n\t\t parser.tagName = parser.attribValue = parser.attribName = '';\n\t\t parser.attribList.length = 0;\n\t\t parser.state = S.TEXT;\n\t\t }\n\n\t\t function parseEntity (parser) {\n\t\t var entity = parser.entity;\n\t\t var entityLC = entity.toLowerCase();\n\t\t var num;\n\t\t var numStr = '';\n\n\t\t if (parser.ENTITIES[entity]) {\n\t\t return parser.ENTITIES[entity]\n\t\t }\n\t\t if (parser.ENTITIES[entityLC]) {\n\t\t return parser.ENTITIES[entityLC]\n\t\t }\n\t\t entity = entityLC;\n\t\t if (entity.charAt(0) === '#') {\n\t\t if (entity.charAt(1) === 'x') {\n\t\t entity = entity.slice(2);\n\t\t num = parseInt(entity, 16);\n\t\t numStr = num.toString(16);\n\t\t } else {\n\t\t entity = entity.slice(1);\n\t\t num = parseInt(entity, 10);\n\t\t numStr = num.toString(10);\n\t\t }\n\t\t }\n\t\t entity = entity.replace(/^0+/, '');\n\t\t if (isNaN(num) || numStr.toLowerCase() !== entity) {\n\t\t strictFail(parser, 'Invalid character entity');\n\t\t return '&' + parser.entity + ';'\n\t\t }\n\n\t\t return String.fromCodePoint(num)\n\t\t }\n\n\t\t function beginWhiteSpace (parser, c) {\n\t\t if (c === '<') {\n\t\t parser.state = S.OPEN_WAKA;\n\t\t parser.startTagPosition = parser.position;\n\t\t } else if (!isWhitespace(c)) {\n\t\t // have to process this as a text node.\n\t\t // weird, but happens.\n\t\t strictFail(parser, 'Non-whitespace before first tag.');\n\t\t parser.textNode = c;\n\t\t parser.state = S.TEXT;\n\t\t }\n\t\t }\n\n\t\t function charAt (chunk, i) {\n\t\t var result = '';\n\t\t if (i < chunk.length) {\n\t\t result = chunk.charAt(i);\n\t\t }\n\t\t return result\n\t\t }\n\n\t\t function write (chunk) {\n\t\t var parser = this;\n\t\t if (this.error) {\n\t\t throw this.error\n\t\t }\n\t\t if (parser.closed) {\n\t\t return error(parser,\n\t\t 'Cannot write after close. Assign an onready handler.')\n\t\t }\n\t\t if (chunk === null) {\n\t\t return end(parser)\n\t\t }\n\t\t if (typeof chunk === 'object') {\n\t\t chunk = chunk.toString();\n\t\t }\n\t\t var i = 0;\n\t\t var c = '';\n\t\t while (true) {\n\t\t c = charAt(chunk, i++);\n\t\t parser.c = c;\n\n\t\t if (!c) {\n\t\t break\n\t\t }\n\n\t\t if (parser.trackPosition) {\n\t\t parser.position++;\n\t\t if (c === '\\n') {\n\t\t parser.line++;\n\t\t parser.column = 0;\n\t\t } else {\n\t\t parser.column++;\n\t\t }\n\t\t }\n\n\t\t switch (parser.state) {\n\t\t case S.BEGIN:\n\t\t parser.state = S.BEGIN_WHITESPACE;\n\t\t if (c === '\\uFEFF') {\n\t\t continue\n\t\t }\n\t\t beginWhiteSpace(parser, c);\n\t\t continue\n\n\t\t case S.BEGIN_WHITESPACE:\n\t\t beginWhiteSpace(parser, c);\n\t\t continue\n\n\t\t case S.TEXT:\n\t\t if (parser.sawRoot && !parser.closedRoot) {\n\t\t var starti = i - 1;\n\t\t while (c && c !== '<' && c !== '&') {\n\t\t c = charAt(chunk, i++);\n\t\t if (c && parser.trackPosition) {\n\t\t parser.position++;\n\t\t if (c === '\\n') {\n\t\t parser.line++;\n\t\t parser.column = 0;\n\t\t } else {\n\t\t parser.column++;\n\t\t }\n\t\t }\n\t\t }\n\t\t parser.textNode += chunk.substring(starti, i - 1);\n\t\t }\n\t\t if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n\t\t parser.state = S.OPEN_WAKA;\n\t\t parser.startTagPosition = parser.position;\n\t\t } else {\n\t\t if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n\t\t strictFail(parser, 'Text data outside of root node.');\n\t\t }\n\t\t if (c === '&') {\n\t\t parser.state = S.TEXT_ENTITY;\n\t\t } else {\n\t\t parser.textNode += c;\n\t\t }\n\t\t }\n\t\t continue\n\n\t\t case S.SCRIPT:\n\t\t // only non-strict\n\t\t if (c === '<') {\n\t\t parser.state = S.SCRIPT_ENDING;\n\t\t } else {\n\t\t parser.script += c;\n\t\t }\n\t\t continue\n\n\t\t case S.SCRIPT_ENDING:\n\t\t if (c === '/') {\n\t\t parser.state = S.CLOSE_TAG;\n\t\t } else {\n\t\t parser.script += '<' + c;\n\t\t parser.state = S.SCRIPT;\n\t\t }\n\t\t continue\n\n\t\t case S.OPEN_WAKA:\n\t\t // either a /, ?, !, or text is coming next.\n\t\t if (c === '!') {\n\t\t parser.state = S.SGML_DECL;\n\t\t parser.sgmlDecl = '';\n\t\t } else if (isWhitespace(c)) ; else if (isMatch(nameStart, c)) {\n\t\t parser.state = S.OPEN_TAG;\n\t\t parser.tagName = c;\n\t\t } else if (c === '/') {\n\t\t parser.state = S.CLOSE_TAG;\n\t\t parser.tagName = '';\n\t\t } else if (c === '?') {\n\t\t parser.state = S.PROC_INST;\n\t\t parser.procInstName = parser.procInstBody = '';\n\t\t } else {\n\t\t strictFail(parser, 'Unencoded <');\n\t\t // if there was some whitespace, then add that in.\n\t\t if (parser.startTagPosition + 1 < parser.position) {\n\t\t var pad = parser.position - parser.startTagPosition;\n\t\t c = new Array(pad).join(' ') + c;\n\t\t }\n\t\t parser.textNode += '<' + c;\n\t\t parser.state = S.TEXT;\n\t\t }\n\t\t continue\n\n\t\t case S.SGML_DECL:\n\t\t if (parser.sgmlDecl + c === '--') {\n\t\t parser.state = S.COMMENT;\n\t\t parser.comment = '';\n\t\t parser.sgmlDecl = '';\n\t\t continue;\n\t\t }\n\n\t\t if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n\t\t parser.state = S.DOCTYPE_DTD;\n\t\t parser.doctype += '<!' + parser.sgmlDecl + c;\n\t\t parser.sgmlDecl = '';\n\t\t } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n\t\t emitNode(parser, 'onopencdata');\n\t\t parser.state = S.CDATA;\n\t\t parser.sgmlDecl = '';\n\t\t parser.cdata = '';\n\t\t } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n\t\t parser.state = S.DOCTYPE;\n\t\t if (parser.doctype || parser.sawRoot) {\n\t\t strictFail(parser,\n\t\t 'Inappropriately located doctype declaration');\n\t\t }\n\t\t parser.doctype = '';\n\t\t parser.sgmlDecl = '';\n\t\t } else if (c === '>') {\n\t\t emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl);\n\t\t parser.sgmlDecl = '';\n\t\t parser.state = S.TEXT;\n\t\t } else if (isQuote(c)) {\n\t\t parser.state = S.SGML_DECL_QUOTED;\n\t\t parser.sgmlDecl += c;\n\t\t } else {\n\t\t parser.sgmlDecl += c;\n\t\t }\n\t\t continue\n\n\t\t case S.SGML_DECL_QUOTED:\n\t\t if (c === parser.q) {\n\t\t parser.state = S.SGML_DECL;\n\t\t parser.q = '';\n\t\t }\n\t\t parser.sgmlDecl += c;\n\t\t continue\n\n\t\t case S.DOCTYPE:\n\t\t if (c === '>') {\n\t\t parser.state = S.TEXT;\n\t\t emitNode(parser, 'ondoctype', parser.doctype);\n\t\t parser.doctype = true; // just remember that we saw it.\n\t\t } else {\n\t\t parser.doctype += c;\n\t\t if (c === '[') {\n\t\t parser.state = S.DOCTYPE_DTD;\n\t\t } else if (isQuote(c)) {\n\t\t parser.state = S.DOCTYPE_QUOTED;\n\t\t parser.q = c;\n\t\t }\n\t\t }\n\t\t continue\n\n\t\t case S.DOCTYPE_QUOTED:\n\t\t parser.doctype += c;\n\t\t if (c === parser.q) {\n\t\t parser.q = '';\n\t\t parser.state = S.DOCTYPE;\n\t\t }\n\t\t continue\n\n\t\t case S.DOCTYPE_DTD:\n\t\t if (c === ']') {\n\t\t parser.doctype += c;\n\t\t parser.state = S.DOCTYPE;\n\t\t } else if (c === '<') {\n\t\t parser.state = S.OPEN_WAKA;\n\t\t parser.startTagPosition = parser.position;\n\t\t } else if (isQuote(c)) {\n\t\t parser.doctype += c;\n\t\t parser.state = S.DOCTYPE_DTD_QUOTED;\n\t\t parser.q = c;\n\t\t } else {\n\t\t parser.doctype += c;\n\t\t }\n\t\t continue\n\n\t\t case S.DOCTYPE_DTD_QUOTED:\n\t\t parser.doctype += c;\n\t\t if (c === parser.q) {\n\t\t parser.state = S.DOCTYPE_DTD;\n\t\t parser.q = '';\n\t\t }\n\t\t continue\n\n\t\t case S.COMMENT:\n\t\t if (c === '-') {\n\t\t parser.state = S.COMMENT_ENDING;\n\t\t } else {\n\t\t parser.comment += c;\n\t\t }\n\t\t continue\n\n\t\t case S.COMMENT_ENDING:\n\t\t if (c === '-') {\n\t\t parser.state = S.COMMENT_ENDED;\n\t\t parser.comment = textopts(parser.opt, parser.comment);\n\t\t if (parser.comment) {\n\t\t emitNode(parser, 'oncomment', parser.comment);\n\t\t }\n\t\t parser.comment = '';\n\t\t } else {\n\t\t parser.comment += '-' + c;\n\t\t parser.state = S.COMMENT;\n\t\t }\n\t\t continue\n\n\t\t case S.COMMENT_ENDED:\n\t\t if (c !== '>') {\n\t\t strictFail(parser, 'Malformed comment');\n\t\t // allow <!-- blah -- bloo --> in non-strict mode,\n\t\t // which is a comment of \" blah -- bloo \"\n\t\t parser.comment += '--' + c;\n\t\t parser.state = S.COMMENT;\n\t\t } else if (parser.doctype && parser.doctype !== true) {\n\t\t parser.state = S.DOCTYPE_DTD;\n\t\t } else {\n\t\t parser.state = S.TEXT;\n\t\t }\n\t\t continue\n\n\t\t case S.CDATA:\n\t\t if (c === ']') {\n\t\t parser.state = S.CDATA_ENDING;\n\t\t } else {\n\t\t parser.cdata += c;\n\t\t }\n\t\t continue\n\n\t\t case S.CDATA_ENDING:\n\t\t if (c === ']') {\n\t\t parser.state = S.CDATA_ENDING_2;\n\t\t } else {\n\t\t parser.cdata += ']' + c;\n\t\t parser.state = S.CDATA;\n\t\t }\n\t\t continue\n\n\t\t case S.CDATA_ENDING_2:\n\t\t if (c === '>') {\n\t\t if (parser.cdata) {\n\t\t emitNode(parser, 'oncdata', parser.cdata);\n\t\t }\n\t\t emitNode(parser, 'onclosecdata');\n\t\t parser.cdata = '';\n\t\t parser.state = S.TEXT;\n\t\t } else if (c === ']') {\n\t\t parser.cdata += ']';\n\t\t } else {\n\t\t parser.cdata += ']]' + c;\n\t\t parser.state = S.CDATA;\n\t\t }\n\t\t continue\n\n\t\t case S.PROC_INST:\n\t\t if (c === '?') {\n\t\t parser.state = S.PROC_INST_ENDING;\n\t\t } else if (isWhitespace(c)) {\n\t\t parser.state = S.PROC_INST_BODY;\n\t\t } else {\n\t\t parser.procInstName += c;\n\t\t }\n\t\t continue\n\n\t\t case S.PROC_INST_BODY:\n\t\t if (!parser.procInstBody && isWhitespace(c)) {\n\t\t continue\n\t\t } else if (c === '?') {\n\t\t parser.state = S.PROC_INST_ENDING;\n\t\t } else {\n\t\t parser.procInstBody += c;\n\t\t }\n\t\t continue\n\n\t\t case S.PROC_INST_ENDING:\n\t\t if (c === '>') {\n\t\t emitNode(parser, 'onprocessinginstruction', {\n\t\t name: parser.procInstName,\n\t\t body: parser.procInstBody\n\t\t });\n\t\t parser.procInstName = parser.procInstBody = '';\n\t\t parser.state = S.TEXT;\n\t\t } else {\n\t\t parser.procInstBody += '?' + c;\n\t\t parser.state = S.PROC_INST_BODY;\n\t\t }\n\t\t continue\n\n\t\t case S.OPEN_TAG:\n\t\t if (isMatch(nameBody, c)) {\n\t\t parser.tagName += c;\n\t\t } else {\n\t\t newTag(parser);\n\t\t if (c === '>') {\n\t\t openTag(parser);\n\t\t } else if (c === '/') {\n\t\t parser.state = S.OPEN_TAG_SLASH;\n\t\t } else {\n\t\t if (!isWhitespace(c)) {\n\t\t strictFail(parser, 'Invalid character in tag name');\n\t\t }\n\t\t parser.state = S.ATTRIB;\n\t\t }\n\t\t }\n\t\t continue\n\n\t\t case S.OPEN_TAG_SLASH:\n\t\t if (c === '>') {\n\t\t openTag(parser, true);\n\t\t closeTag(parser);\n\t\t } else {\n\t\t strictFail(parser, 'Forward-slash in opening tag not followed by >');\n\t\t parser.state = S.ATTRIB;\n\t\t }\n\t\t continue\n\n\t\t case S.ATTRIB:\n\t\t // haven't read the attribute name yet.\n\t\t if (isWhitespace(c)) {\n\t\t continue\n\t\t } else if (c === '>') {\n\t\t openTag(parser);\n\t\t } else if (c === '/') {\n\t\t parser.state = S.OPEN_TAG_SLASH;\n\t\t } else if (isMatch(nameStart, c)) {\n\t\t parser.attribName = c;\n\t\t parser.attribValue = '';\n\t\t parser.state = S.ATTRIB_NAME;\n\t\t } else {\n\t\t strictFail(parser, 'Invalid attribute name');\n\t\t }\n\t\t continue\n\n\t\t case S.ATTRIB_NAME:\n\t\t if (c === '=') {\n\t\t parser.state = S.ATTRIB_VALUE;\n\t\t } else if (c === '>') {\n\t\t strictFail(parser, 'Attribute without value');\n\t\t parser.attribValue = parser.attribName;\n\t\t attrib(parser);\n\t\t openTag(parser);\n\t\t } else if (isWhitespace(c)) {\n\t\t parser.state = S.ATTRIB_NAME_SAW_WHITE;\n\t\t } else if (isMatch(nameBody, c)) {\n\t\t parser.attribName += c;\n\t\t } else {\n\t\t strictFail(parser, 'Invalid attribute name');\n\t\t }\n\t\t continue\n\n\t\t case S.ATTRIB_NAME_SAW_WHITE:\n\t\t if (c === '=') {\n\t\t parser.state = S.ATTRIB_VALUE;\n\t\t } else if (isWhitespace(c)) {\n\t\t continue\n\t\t } else {\n\t\t strictFail(parser, 'Attribute without value');\n\t\t parser.tag.attributes[parser.attribName] = '';\n\t\t parser.attribValue = '';\n\t\t emitNode(parser, 'onattribute', {\n\t\t name: parser.attribName,\n\t\t value: ''\n\t\t });\n\t\t parser.attribName = '';\n\t\t if (c === '>') {\n\t\t openTag(parser);\n\t\t } else if (isMatch(nameStart, c)) {\n\t\t parser.attribName = c;\n\t\t parser.state = S.ATTRIB_NAME;\n\t\t } else {\n\t\t strictFail(parser, 'Invalid attribute name');\n\t\t parser.state = S.ATTRIB;\n\t\t }\n\t\t }\n\t\t continue\n\n\t\t case S.ATTRIB_VALUE:\n\t\t if (isWhitespace(c)) {\n\t\t continue\n\t\t } else if (isQuote(c)) {\n\t\t parser.q = c;\n\t\t parser.state = S.ATTRIB_VALUE_QUOTED;\n\t\t } else {\n\t\t if (!parser.opt.unquotedAttributeValues) {\n\t\t error(parser, 'Unquoted attribute value');\n\t\t }\n\t\t parser.state = S.ATTRIB_VALUE_UNQUOTED;\n\t\t parser.attribValue = c;\n\t\t }\n\t\t continue\n\n\t\t case S.ATTRIB_VALUE_QUOTED:\n\t\t if (c !== parser.q) {\n\t\t if (c === '&') {\n\t\t parser.state = S.ATTRIB_VALUE_ENTITY_Q;\n\t\t } else {\n\t\t parser.attribValue += c;\n\t\t }\n\t\t continue\n\t\t }\n\t\t attrib(parser);\n\t\t parser.q = '';\n\t\t parser.state = S.ATTRIB_VALUE_CLOSED;\n\t\t continue\n\n\t\t case S.ATTRIB_VALUE_CLOSED:\n\t\t if (isWhitespace(c)) {\n\t\t parser.state = S.ATTRIB;\n\t\t } else if (c === '>') {\n\t\t openTag(parser);\n\t\t } else if (c === '/') {\n\t\t parser.state = S.OPEN_TAG_SLASH;\n\t\t } else if (isMatch(nameStart, c)) {\n\t\t strictFail(parser, 'No whitespace between attributes');\n\t\t parser.attribName = c;\n\t\t parser.attribValue = '';\n\t\t parser.state = S.ATTRIB_NAME;\n\t\t } else {\n\t\t strictFail(parser, 'Invalid attribute name');\n\t\t }\n\t\t continue\n\n\t\t case S.ATTRIB_VALUE_UNQUOTED:\n\t\t if (!isAttribEnd(c)) {\n\t\t if (c === '&') {\n\t\t parser.state = S.ATTRIB_VALUE_ENTITY_U;\n\t\t } else {\n\t\t parser.attribValue += c;\n\t\t }\n\t\t continue\n\t\t }\n\t\t attrib(parser);\n\t\t if (c === '>') {\n\t\t openTag(parser);\n\t\t } else {\n\t\t parser.state = S.ATTRIB;\n\t\t }\n\t\t continue\n\n\t\t case S.CLOSE_TAG:\n\t\t if (!parser.tagName) {\n\t\t if (isWhitespace(c)) {\n\t\t continue\n\t\t } else if (notMatch(nameStart, c)) {\n\t\t if (parser.script) {\n\t\t parser.script += '</' + c;\n\t\t parser.state = S.SCRIPT;\n\t\t } else {\n\t\t strictFail(parser, 'Invalid tagname in closing tag.');\n\t\t }\n\t\t } else {\n\t\t parser.tagName = c;\n\t\t }\n\t\t } else if (c === '>') {\n\t\t closeTag(parser);\n\t\t } else if (isMatch(nameBody, c)) {\n\t\t parser.tagName += c;\n\t\t } else if (parser.script) {\n\t\t parser.script += '</' + parser.tagName;\n\t\t parser.tagName = '';\n\t\t parser.state = S.SCRIPT;\n\t\t } else {\n\t\t if (!isWhitespace(c)) {\n\t\t strictFail(parser, 'Invalid tagname in closing tag');\n\t\t }\n\t\t parser.state = S.CLOSE_TAG_SAW_WHITE;\n\t\t }\n\t\t continue\n\n\t\t case S.CLOSE_TAG_SAW_WHITE:\n\t\t if (isWhitespace(c)) {\n\t\t continue\n\t\t }\n\t\t if (c === '>') {\n\t\t closeTag(parser);\n\t\t } else {\n\t\t strictFail(parser, 'Invalid characters in closing tag');\n\t\t }\n\t\t continue\n\n\t\t case S.TEXT_ENTITY:\n\t\t case S.ATTRIB_VALUE_ENTITY_Q:\n\t\t case S.ATTRIB_VALUE_ENTITY_U:\n\t\t var returnState;\n\t\t var buffer;\n\t\t switch (parser.state) {\n\t\t case S.TEXT_ENTITY:\n\t\t returnState = S.TEXT;\n\t\t buffer = 'textNode';\n\t\t break\n\n\t\t case S.ATTRIB_VALUE_ENTITY_Q:\n\t\t returnState = S.ATTRIB_VALUE_QUOTED;\n\t\t buffer = 'attribValue';\n\t\t break\n\n\t\t case S.ATTRIB_VALUE_ENTITY_U:\n\t\t returnState = S.ATTRIB_VALUE_UNQUOTED;\n\t\t buffer = 'attribValue';\n\t\t break\n\t\t }\n\n\t\t if (c === ';') {\n\t\t var parsedEntity = parseEntity(parser);\n\t\t if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {\n\t\t parser.entity = '';\n\t\t parser.state = returnState;\n\t\t parser.write(parsedEntity);\n\t\t } else {\n\t\t parser[buffer] += parsedEntity;\n\t\t parser.entity = '';\n\t\t parser.state = returnState;\n\t\t }\n\t\t } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n\t\t parser.entity += c;\n\t\t } else {\n\t\t strictFail(parser, 'Invalid character in entity name');\n\t\t parser[buffer] += '&' + parser.entity + c;\n\t\t parser.entity = '';\n\t\t parser.state = returnState;\n\t\t }\n\n\t\t continue\n\n\t\t default: /* istanbul ignore next */ {\n\t\t throw new Error(parser, 'Unknown state: ' + parser.state)\n\t\t }\n\t\t }\n\t\t } // while\n\n\t\t if (parser.position >= parser.bufferCheckPosition) {\n\t\t checkBufferLength(parser);\n\t\t }\n\t\t return parser\n\t\t }\n\n\t\t /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n\t\t /* istanbul ignore next */\n\t\t if (!String.fromCodePoint) {\n\t\t (function () {\n\t\t var stringFromCharCode = String.fromCharCode;\n\t\t var floor = Math.floor;\n\t\t var fromCodePoint = function () {\n\t\t var MAX_SIZE = 0x4000;\n\t\t var codeUnits = [];\n\t\t var highSurrogate;\n\t\t var lowSurrogate;\n\t\t var index = -1;\n\t\t var length = arguments.length;\n\t\t if (!length) {\n\t\t return ''\n\t\t }\n\t\t var result = '';\n\t\t while (++index < length) {\n\t\t var codePoint = Number(arguments[index]);\n\t\t if (\n\t\t !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t codePoint < 0 || // not a valid Unicode code point\n\t\t codePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t floor(codePoint) !== codePoint // not an integer\n\t\t ) {\n\t\t throw RangeError('Invalid code point: ' + codePoint)\n\t\t }\n\t\t if (codePoint <= 0xFFFF) { // BMP code point\n\t\t codeUnits.push(codePoint);\n\t\t } else { // Astral code point; split in surrogate halves\n\t\t // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t codePoint -= 0x10000;\n\t\t highSurrogate = (codePoint >> 10) + 0xD800;\n\t\t lowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t codeUnits.push(highSurrogate, lowSurrogate);\n\t\t }\n\t\t if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n\t\t result += stringFromCharCode.apply(null, codeUnits);\n\t\t codeUnits.length = 0;\n\t\t }\n\t\t }\n\t\t return result\n\t\t };\n\t\t /* istanbul ignore next */\n\t\t if (Object.defineProperty) {\n\t\t Object.defineProperty(String, 'fromCodePoint', {\n\t\t value: fromCodePoint,\n\t\t configurable: true,\n\t\t writable: true\n\t\t });\n\t\t } else {\n\t\t String.fromCodePoint = fromCodePoint;\n\t\t }\n\t\t }());\n\t\t }\n\t\t})(exports); \n\t} (sax));\n\treturn sax;\n}\n\nvar arrayHelper;\nvar hasRequiredArrayHelper;\n\nfunction requireArrayHelper () {\n\tif (hasRequiredArrayHelper) return arrayHelper;\n\thasRequiredArrayHelper = 1;\n\tarrayHelper = {\r\n\r\n\t isArray: function(value) {\r\n\t if (Array.isArray) {\r\n\t return Array.isArray(value);\r\n\t }\r\n\t // fallback for older browsers like IE 8\r\n\t return Object.prototype.toString.call( value ) === '[object Array]';\r\n\t }\r\n\r\n\t};\n\treturn arrayHelper;\n}\n\nvar optionsHelper;\nvar hasRequiredOptionsHelper;\n\nfunction requireOptionsHelper () {\n\tif (hasRequiredOptionsHelper) return optionsHelper;\n\thasRequiredOptionsHelper = 1;\n\tvar isArray = requireArrayHelper().isArray;\r\n\r\n\toptionsHelper = {\r\n\r\n\t copyOptions: function (options) {\r\n\t var key, copy = {};\r\n\t for (key in options) {\r\n\t if (options.hasOwnProperty(key)) {\r\n\t copy[key] = options[key];\r\n\t }\r\n\t }\r\n\t return copy;\r\n\t },\r\n\r\n\t ensureFlagExists: function (item, options) {\r\n\t if (!(item in options) || typeof options[item] !== 'boolean') {\r\n\t options[item] = false;\r\n\t }\r\n\t },\r\n\r\n\t ensureSpacesExists: function (options) {\r\n\t if (!('spaces' in options) || (typeof options.spaces !== 'number' && typeof options.spaces !== 'string')) {\r\n\t options.spaces = 0;\r\n\t }\r\n\t },\r\n\r\n\t ensureAlwaysArrayExists: function (options) {\r\n\t if (!('alwaysArray' in options) || (typeof options.alwaysArray !== 'boolean' && !isArray(options.alwaysArray))) {\r\n\t options.alwaysArray = false;\r\n\t }\r\n\t },\r\n\r\n\t ensureKeyExists: function (key, options) {\r\n\t if (!(key + 'Key' in options) || typeof options[key + 'Key'] !== 'string') {\r\n\t options[key + 'Key'] = options.compact ? '_' + key : key;\r\n\t }\r\n\t },\r\n\r\n\t checkFnExists: function (key, options) {\r\n\t return key + 'Fn' in options;\r\n\t }\r\n\r\n\t};\n\treturn optionsHelper;\n}\n\nvar xml2js;\nvar hasRequiredXml2js;\n\nfunction requireXml2js () {\n\tif (hasRequiredXml2js) return xml2js;\n\thasRequiredXml2js = 1;\n\tvar sax = requireSax();\r\n\tvar helper = requireOptionsHelper();\r\n\tvar isArray = requireArrayHelper().isArray;\r\n\r\n\tvar options;\r\n\tvar currentElement;\r\n\r\n\tfunction validateOptions(userOptions) {\r\n\t options = helper.copyOptions(userOptions);\r\n\t helper.ensureFlagExists('ignoreDeclaration', options);\r\n\t helper.ensureFlagExists('ignoreInstruction', options);\r\n\t helper.ensureFlagExists('ignoreAttributes', options);\r\n\t helper.ensureFlagExists('ignoreText', options);\r\n\t helper.ensureFlagExists('ignoreComment', options);\r\n\t helper.ensureFlagExists('ignoreCdata', options);\r\n\t helper.ensureFlagExists('ignoreDoctype', options);\r\n\t helper.ensureFlagExists('compact', options);\r\n\t helper.ensureFlagExists('alwaysChildren', options);\r\n\t helper.ensureFlagExists('addParent', options);\r\n\t helper.ensureFlagExists('trim', options);\r\n\t helper.ensureFlagExists('nativeType', options);\r\n\t helper.ensureFlagExists('nativeTypeAttributes', options);\r\n\t helper.ensureFlagExists('sanitize', options);\r\n\t helper.ensureFlagExists('instructionHasAttributes', options);\r\n\t helper.ensureFlagExists('captureSpacesBetweenElements', options);\r\n\t helper.ensureAlwaysArrayExists(options);\r\n\t helper.ensureKeyExists('declaration', options);\r\n\t helper.ensureKeyExists('instruction', options);\r\n\t helper.ensureKeyExists('attributes', options);\r\n\t helper.ensureKeyExists('text', options);\r\n\t helper.ensureKeyExists('comment', options);\r\n\t helper.ensureKeyExists('cdata', options);\r\n\t helper.ensureKeyExists('doctype', options);\r\n\t helper.ensureKeyExists('type', options);\r\n\t helper.ensureKeyExists('name', options);\r\n\t helper.ensureKeyExists('elements', options);\r\n\t helper.ensureKeyExists('parent', options);\r\n\t helper.checkFnExists('doctype', options);\r\n\t helper.checkFnExists('instruction', options);\r\n\t helper.checkFnExists('cdata', options);\r\n\t helper.checkFnExists('comment', options);\r\n\t helper.checkFnExists('text', options);\r\n\t helper.checkFnExists('instructionName', options);\r\n\t helper.checkFnExists('elementName', options);\r\n\t helper.checkFnExists('attributeName', options);\r\n\t helper.checkFnExists('attributeValue', options);\r\n\t helper.checkFnExists('attributes', options);\r\n\t return options;\r\n\t}\r\n\r\n\tfunction nativeType(value) {\r\n\t var nValue = Number(value);\r\n\t if (!isNaN(nValue)) {\r\n\t return nValue;\r\n\t }\r\n\t var bValue = value.toLowerCase();\r\n\t if (bValue === 'true') {\r\n\t return true;\r\n\t } else if (bValue === 'false') {\r\n\t return false;\r\n\t }\r\n\t return value;\r\n\t}\r\n\r\n\tfunction addField(type, value) {\r\n\t var key;\r\n\t if (options.compact) {\r\n\t if (\r\n\t !currentElement[options[type + 'Key']] &&\r\n\t (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(options[type + 'Key']) !== -1 : options.alwaysArray)\r\n\t ) {\r\n\t currentElement[options[type + 'Key']] = [];\r\n\t }\r\n\t if (currentElement[options[type + 'Key']] && !isArray(currentElement[options[type + 'Key']])) {\r\n\t currentElement[options[type + 'Key']] = [currentElement[options[type + 'Key']]];\r\n\t }\r\n\t if (type + 'Fn' in options && typeof value === 'string') {\r\n\t value = options[type + 'Fn'](value, currentElement);\r\n\t }\r\n\t if (type === 'instruction' && ('instructionFn' in options || 'instructionNameFn' in options)) {\r\n\t for (key in value) {\r\n\t if (value.hasOwnProperty(key)) {\r\n\t if ('instructionFn' in options) {\r\n\t value[key] = options.instructionFn(value[key], key, currentElement);\r\n\t } else {\r\n\t var temp = value[key];\r\n\t delete value[key];\r\n\t value[options.instructionNameFn(key, temp, currentElement)] = temp;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if (isArray(currentElement[options[type + 'Key']])) {\r\n\t currentElement[options[type + 'Key']].push(value);\r\n\t } else {\r\n\t currentElement[options[type + 'Key']] = value;\r\n\t }\r\n\t } else {\r\n\t if (!currentElement[options.elementsKey]) {\r\n\t currentElement[options.elementsKey] = [];\r\n\t }\r\n\t var element = {};\r\n\t element[options.typeKey] = type;\r\n\t if (type === 'instruction') {\r\n\t for (key in value) {\r\n\t if (value.hasOwnProperty(key)) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t element[options.nameKey] = 'instructionNameFn' in options ? options.instructionNameFn(key, value, currentElement) : key;\r\n\t if (options.instructionHasAttributes) {\r\n\t element[options.attributesKey] = value[key][options.attributesKey];\r\n\t if ('instructionFn' in options) {\r\n\t element[options.attributesKey] = options.instructionFn(element[options.attributesKey], key, currentElement);\r\n\t }\r\n\t } else {\r\n\t if ('instructionFn' in options) {\r\n\t value[key] = options.instructionFn(value[key], key, currentElement);\r\n\t }\r\n\t element[options.instructionKey] = value[key];\r\n\t }\r\n\t } else {\r\n\t if (type + 'Fn' in options) {\r\n\t value = options[type + 'Fn'](value, currentElement);\r\n\t }\r\n\t element[options[type + 'Key']] = value;\r\n\t }\r\n\t if (options.addParent) {\r\n\t element[options.parentKey] = currentElement;\r\n\t }\r\n\t currentElement[options.elementsKey].push(element);\r\n\t }\r\n\t}\r\n\r\n\tfunction manipulateAttributes(attributes) {\r\n\t if ('attributesFn' in options && attributes) {\r\n\t attributes = options.attributesFn(attributes, currentElement);\r\n\t }\r\n\t if ((options.trim || 'attributeValueFn' in options || 'attributeNameFn' in options || options.nativeTypeAttributes) && attributes) {\r\n\t var key;\r\n\t for (key in attributes) {\r\n\t if (attributes.hasOwnProperty(key)) {\r\n\t if (options.trim) attributes[key] = attributes[key].trim();\r\n\t if (options.nativeTypeAttributes) {\r\n\t attributes[key] = nativeType(attributes[key]);\r\n\t }\r\n\t if ('attributeValueFn' in options) attributes[key] = options.attributeValueFn(attributes[key], key, currentElement);\r\n\t if ('attributeNameFn' in options) {\r\n\t var temp = attributes[key];\r\n\t delete attributes[key];\r\n\t attributes[options.attributeNameFn(key, attributes[key], currentElement)] = temp;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t return attributes;\r\n\t}\r\n\r\n\tfunction onInstruction(instruction) {\r\n\t var attributes = {};\r\n\t if (instruction.body && (instruction.name.toLowerCase() === 'xml' || options.instructionHasAttributes)) {\r\n\t var attrsRegExp = /([\\w:-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|(\\w+))\\s*/g;\r\n\t var match;\r\n\t while ((match = attrsRegExp.exec(instruction.body)) !== null) {\r\n\t attributes[match[1]] = match[2] || match[3] || match[4];\r\n\t }\r\n\t attributes = manipulateAttributes(attributes);\r\n\t }\r\n\t if (instruction.name.toLowerCase() === 'xml') {\r\n\t if (options.ignoreDeclaration) {\r\n\t return;\r\n\t }\r\n\t currentElement[options.declarationKey] = {};\r\n\t if (Object.keys(attributes).length) {\r\n\t currentElement[options.declarationKey][options.attributesKey] = attributes;\r\n\t }\r\n\t if (options.addParent) {\r\n\t currentElement[options.declarationKey][options.parentKey] = currentElement;\r\n\t }\r\n\t } else {\r\n\t if (options.ignoreInstruction) {\r\n\t return;\r\n\t }\r\n\t if (options.trim) {\r\n\t instruction.body = instruction.body.trim();\r\n\t }\r\n\t var value = {};\r\n\t if (options.instructionHasAttributes && Object.keys(attributes).length) {\r\n\t value[instruction.name] = {};\r\n\t value[instruction.name][options.attributesKey] = attributes;\r\n\t } else {\r\n\t value[instruction.name] = instruction.body;\r\n\t }\r\n\t addField('instruction', value);\r\n\t }\r\n\t}\r\n\r\n\tfunction onStartElement(name, attributes) {\r\n\t var element;\r\n\t if (typeof name === 'object') {\r\n\t attributes = name.attributes;\r\n\t name = name.name;\r\n\t }\r\n\t attributes = manipulateAttributes(attributes);\r\n\t if ('elementNameFn' in options) {\r\n\t name = options.elementNameFn(name, currentElement);\r\n\t }\r\n\t if (options.compact) {\r\n\t element = {};\r\n\t if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n\t element[options.attributesKey] = {};\r\n\t var key;\r\n\t for (key in attributes) {\r\n\t if (attributes.hasOwnProperty(key)) {\r\n\t element[options.attributesKey][key] = attributes[key];\r\n\t }\r\n\t }\r\n\t }\r\n\t if (\r\n\t !(name in currentElement) &&\r\n\t (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(name) !== -1 : options.alwaysArray)\r\n\t ) {\r\n\t currentElement[name] = [];\r\n\t }\r\n\t if (currentElement[name] && !isArray(currentElement[name])) {\r\n\t currentElement[name] = [currentElement[name]];\r\n\t }\r\n\t if (isArray(currentElement[name])) {\r\n\t currentElement[name].push(element);\r\n\t } else {\r\n\t currentElement[name] = element;\r\n\t }\r\n\t } else {\r\n\t if (!currentElement[options.elementsKey]) {\r\n\t currentElement[options.elementsKey] = [];\r\n\t }\r\n\t element = {};\r\n\t element[options.typeKey] = 'element';\r\n\t element[options.nameKey] = name;\r\n\t if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n\t element[options.attributesKey] = attributes;\r\n\t }\r\n\t if (options.alwaysChildren) {\r\n\t element[options.elementsKey] = [];\r\n\t }\r\n\t currentElement[options.elementsKey].push(element);\r\n\t }\r\n\t element[options.parentKey] = currentElement; // will be deleted in onEndElement() if !options.addParent\r\n\t currentElement = element;\r\n\t}\r\n\r\n\tfunction onText(text) {\r\n\t if (options.ignoreText) {\r\n\t return;\r\n\t }\r\n\t if (!text.trim() && !options.captureSpacesBetweenElements) {\r\n\t return;\r\n\t }\r\n\t if (options.trim) {\r\n\t text = text.trim();\r\n\t }\r\n\t if (options.nativeType) {\r\n\t text = nativeType(text);\r\n\t }\r\n\t if (options.sanitize) {\r\n\t text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r\n\t }\r\n\t addField('text', text);\r\n\t}\r\n\r\n\tfunction onComment(comment) {\r\n\t if (options.ignoreComment) {\r\n\t return;\r\n\t }\r\n\t if (options.trim) {\r\n\t comment = comment.trim();\r\n\t }\r\n\t addField('comment', comment);\r\n\t}\r\n\r\n\tfunction onEndElement(name) {\r\n\t var parentElement = currentElement[options.parentKey];\r\n\t if (!options.addParent) {\r\n\t delete currentElement[options.parentKey];\r\n\t }\r\n\t currentElement = parentElement;\r\n\t}\r\n\r\n\tfunction onCdata(cdata) {\r\n\t if (options.ignoreCdata) {\r\n\t return;\r\n\t }\r\n\t if (options.trim) {\r\n\t cdata = cdata.trim();\r\n\t }\r\n\t addField('cdata', cdata);\r\n\t}\r\n\r\n\tfunction onDoctype(doctype) {\r\n\t if (options.ignoreDoctype) {\r\n\t return;\r\n\t }\r\n\t doctype = doctype.replace(/^ /, '');\r\n\t if (options.trim) {\r\n\t doctype = doctype.trim();\r\n\t }\r\n\t addField('doctype', doctype);\r\n\t}\r\n\r\n\tfunction onError(error) {\r\n\t error.note = error; //console.error(error);\r\n\t}\r\n\r\n\txml2js = function (xml, userOptions) {\r\n\r\n\t var parser = sax.parser(true, {}) ;\r\n\t var result = {};\r\n\t currentElement = result;\r\n\r\n\t options = validateOptions(userOptions);\r\n\r\n\t {\r\n\t parser.opt = {strictEntities: true};\r\n\t parser.onopentag = onStartElement;\r\n\t parser.ontext = onText;\r\n\t parser.oncomment = onComment;\r\n\t parser.onclosetag = onEndElement;\r\n\t parser.onerror = onError;\r\n\t parser.oncdata = onCdata;\r\n\t parser.ondoctype = onDoctype;\r\n\t parser.onprocessinginstruction = onInstruction;\r\n\t }\r\n\r\n\t {\r\n\t parser.write(xml).close();\r\n\t }\r\n\r\n\t if (result[options.elementsKey]) {\r\n\t var temp = result[options.elementsKey];\r\n\t delete result[options.elementsKey];\r\n\t result[options.elementsKey] = temp;\r\n\t delete result.text;\r\n\t }\r\n\r\n\t return result;\r\n\r\n\t};\n\treturn xml2js;\n}\n\nvar xml2json;\nvar hasRequiredXml2json;\n\nfunction requireXml2json () {\n\tif (hasRequiredXml2json) return xml2json;\n\thasRequiredXml2json = 1;\n\tvar helper = requireOptionsHelper();\r\n\tvar xml2js = requireXml2js();\r\n\r\n\tfunction validateOptions (userOptions) {\r\n\t var options = helper.copyOptions(userOptions);\r\n\t helper.ensureSpacesExists(options);\r\n\t return options;\r\n\t}\r\n\r\n\txml2json = function(xml, userOptions) {\r\n\t var options, js, json, parentKey;\r\n\t options = validateOptions(userOptions);\r\n\t js = xml2js(xml, options);\r\n\t parentKey = 'compact' in options && options.compact ? '_parent' : 'parent';\r\n\t // parentKey = ptions.compact ? '_parent' : 'parent'; // consider this\r\n\t if ('addParent' in options && options.addParent) {\r\n\t json = JSON.stringify(js, function (k, v) { return k === parentKey? '_' : v; }, options.spaces);\r\n\t } else {\r\n\t json = JSON.stringify(js, null, options.spaces);\r\n\t }\r\n\t return json.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\r\n\t};\n\treturn xml2json;\n}\n\nvar js2xml;\nvar hasRequiredJs2xml;\n\nfunction requireJs2xml () {\n\tif (hasRequiredJs2xml) return js2xml;\n\thasRequiredJs2xml = 1;\n\tvar helper = requireOptionsHelper();\n\tvar isArray = requireArrayHelper().isArray;\n\n\tvar currentElement, currentElementName;\n\n\tfunction validateOptions(userOptions) {\n\t var options = helper.copyOptions(userOptions);\n\t helper.ensureFlagExists('ignoreDeclaration', options);\n\t helper.ensureFlagExists('ignoreInstruction', options);\n\t helper.ensureFlagExists('ignoreAttributes', options);\n\t helper.ensureFlagExists('ignoreText', options);\n\t helper.ensureFlagExists('ignoreComment', options);\n\t helper.ensureFlagExists('ignoreCdata', options);\n\t helper.ensureFlagExists('ignoreDoctype', options);\n\t helper.ensureFlagExists('compact', options);\n\t helper.ensureFlagExists('indentText', options);\n\t helper.ensureFlagExists('indentCdata', options);\n\t helper.ensureFlagExists('indentAttributes', options);\n\t helper.ensureFlagExists('indentInstruction', options);\n\t helper.ensureFlagExists('fullTagEmptyElement', options);\n\t helper.ensureFlagExists('noQuotesForNativeAttributes', options);\n\t helper.ensureSpacesExists(options);\n\t if (typeof options.spaces === 'number') {\n\t options.spaces = Array(options.spaces + 1).join(' ');\n\t }\n\t helper.ensureKeyExists('declaration', options);\n\t helper.ensureKeyExists('instruction', options);\n\t helper.ensureKeyExists('attributes', options);\n\t helper.ensureKeyExists('text', options);\n\t helper.ensureKeyExists('comment', options);\n\t helper.ensureKeyExists('cdata', options);\n\t helper.ensureKeyExists('doctype', options);\n\t helper.ensureKeyExists('type', options);\n\t helper.ensureKeyExists('name', options);\n\t helper.ensureKeyExists('elements', options);\n\t helper.checkFnExists('doctype', options);\n\t helper.checkFnExists('instruction', options);\n\t helper.checkFnExists('cdata', options);\n\t helper.checkFnExists('comment', options);\n\t helper.checkFnExists('text', options);\n\t helper.checkFnExists('instructionName', options);\n\t helper.checkFnExists('elementName', options);\n\t helper.checkFnExists('attributeName', options);\n\t helper.checkFnExists('attributeValue', options);\n\t helper.checkFnExists('attributes', options);\n\t helper.checkFnExists('fullTagEmptyElement', options);\n\t return options;\n\t}\n\n\tfunction writeIndentation(options, depth, firstLine) {\n\t return (!firstLine && options.spaces ? '\\n' : '') + Array(depth + 1).join(options.spaces);\n\t}\n\n\tfunction writeAttributes(attributes, options, depth) {\n\t if (options.ignoreAttributes) {\n\t return '';\n\t }\n\t if ('attributesFn' in options) {\n\t attributes = options.attributesFn(attributes, currentElementName, currentElement);\n\t }\n\t var key, attr, attrName, quote, result = [];\n\t for (key in attributes) {\n\t if (attributes.hasOwnProperty(key) && attributes[key] !== null && attributes[key] !== undefined) {\n\t quote = options.noQuotesForNativeAttributes && typeof attributes[key] !== 'string' ? '' : '\"';\n\t attr = '' + attributes[key]; // ensure number and boolean are converted to String\n\t attr = attr.replace(/\"/g, '&quot;');\n\t attrName = 'attributeNameFn' in options ? options.attributeNameFn(key, attr, currentElementName, currentElement) : key;\n\t result.push((options.spaces && options.indentAttributes? writeIndentation(options, depth+1, false) : ' '));\n\t result.push(attrName + '=' + quote + ('attributeValueFn' in options ? options.attributeValueFn(attr, key, currentElementName, currentElement) : attr) + quote);\n\t }\n\t }\n\t if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) {\n\t result.push(writeIndentation(options, depth, false));\n\t }\n\t return result.join('');\n\t}\n\n\tfunction writeDeclaration(declaration, options, depth) {\n\t currentElement = declaration;\n\t currentElementName = 'xml';\n\t return options.ignoreDeclaration ? '' : '<?' + 'xml' + writeAttributes(declaration[options.attributesKey], options, depth) + '?>';\n\t}\n\n\tfunction writeInstruction(instruction, options, depth) {\n\t if (options.ignoreInstruction) {\n\t return '';\n\t }\n\t var key;\n\t for (key in instruction) {\n\t if (instruction.hasOwnProperty(key)) {\n\t break;\n\t }\n\t }\n\t var instructionName = 'instructionNameFn' in options ? options.instructionNameFn(key, instruction[key], currentElementName, currentElement) : key;\n\t if (typeof instruction[key] === 'object') {\n\t currentElement = instruction;\n\t currentElementName = instructionName;\n\t return '<?' + instructionName + writeAttributes(instruction[key][options.attributesKey], options, depth) + '?>';\n\t } else {\n\t var instructionValue = instruction[key] ? instruction[key] : '';\n\t if ('instructionFn' in options) instructionValue = options.instructionFn(instructionValue, key, currentElementName, currentElement);\n\t return '<?' + instructionName + (instructionValue ? ' ' + instructionValue : '') + '?>';\n\t }\n\t}\n\n\tfunction writeComment(comment, options) {\n\t return options.ignoreComment ? '' : '<!--' + ('commentFn' in options ? options.commentFn(comment, currentElementName, currentElement) : comment) + '-->';\n\t}\n\n\tfunction writeCdata(cdata, options) {\n\t return options.ignoreCdata ? '' : '<![CDATA[' + ('cdataFn' in options ? options.cdataFn(cdata, currentElementName, currentElement) : cdata.replace(']]>', ']]]]><![CDATA[>')) + ']]>';\n\t}\n\n\tfunction writeDoctype(doctype, options) {\n\t return options.ignoreDoctype ? '' : '<!DOCTYPE ' + ('doctypeFn' in options ? options.doctypeFn(doctype, currentElementName, currentElement) : doctype) + '>';\n\t}\n\n\tfunction writeText(text, options) {\n\t if (options.ignoreText) return '';\n\t text = '' + text; // ensure Number and Boolean are converted to String\n\t text = text.replace(/&amp;/g, '&'); // desanitize to avoid double sanitization\n\t text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\t return 'textFn' in options ? options.textFn(text, currentElementName, currentElement) : text;\n\t}\n\n\tfunction hasContent(element, options) {\n\t var i;\n\t if (element.elements && element.elements.length) {\n\t for (i = 0; i < element.elements.length; ++i) {\n\t switch (element.elements[i][options.typeKey]) {\n\t case 'text':\n\t if (options.indentText) {\n\t return true;\n\t }\n\t break; // skip to next key\n\t case 'cdata':\n\t if (options.indentCdata) {\n\t return true;\n\t }\n\t break; // skip to next key\n\t case 'instruction':\n\t if (options.indentInstruction) {\n\t return true;\n\t }\n\t break; // skip to next key\n\t case 'doctype':\n\t case 'comment':\n\t case 'element':\n\t return true;\n\t default:\n\t return true;\n\t }\n\t }\n\t }\n\t return false;\n\t}\n\n\tfunction writeElement(element, options, depth) {\n\t currentElement = element;\n\t currentElementName = element.name;\n\t var xml = [], elementName = 'elementNameFn' in options ? options.elementNameFn(element.name, element) : element.name;\n\t xml.push('<' + elementName);\n\t if (element[options.attributesKey]) {\n\t xml.push(writeAttributes(element[options.attributesKey], options, depth));\n\t }\n\t var withClosingTag = element[options.elementsKey] && element[options.elementsKey].length || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n\t if (!withClosingTag) {\n\t if ('fullTagEmptyElementFn' in options) {\n\t withClosingTag = options.fullTagEmptyElementFn(element.name, element);\n\t } else {\n\t withClosingTag = options.fullTagEmptyElement;\n\t }\n\t }\n\t if (withClosingTag) {\n\t xml.push('>');\n\t if (element[options.elementsKey] && element[options.elementsKey].length) {\n\t xml.push(writeElements(element[options.elementsKey], options, depth + 1));\n\t currentElement = element;\n\t currentElementName = element.name;\n\t }\n\t xml.push(options.spaces && hasContent(element, options) ? '\\n' + Array(depth + 1).join(options.spaces) : '');\n\t xml.push('</' + elementName + '>');\n\t } else {\n\t xml.push('/>');\n\t }\n\t return xml.join('');\n\t}\n\n\tfunction writeElements(elements, options, depth, firstLine) {\n\t return elements.reduce(function (xml, element) {\n\t var indent = writeIndentation(options, depth, firstLine && !xml);\n\t switch (element.type) {\n\t case 'element': return xml + indent + writeElement(element, options, depth);\n\t case 'comment': return xml + indent + writeComment(element[options.commentKey], options);\n\t case 'doctype': return xml + indent + writeDoctype(element[options.doctypeKey], options);\n\t case 'cdata': return xml + (options.indentCdata ? indent : '') + writeCdata(element[options.cdataKey], options);\n\t case 'text': return xml + (options.indentText ? indent : '') + writeText(element[options.textKey], options);\n\t case 'instruction':\n\t var instruction = {};\n\t instruction[element[options.nameKey]] = element[options.attributesKey] ? element : element[options.instructionKey];\n\t return xml + (options.indentInstruction ? indent : '') + writeInstruction(instruction, options, depth);\n\t }\n\t }, '');\n\t}\n\n\tfunction hasContentCompact(element, options, anyContent) {\n\t var key;\n\t for (key in element) {\n\t if (element.hasOwnProperty(key)) {\n\t switch (key) {\n\t case options.parentKey:\n\t case options.attributesKey:\n\t break; // skip to next key\n\t case options.textKey:\n\t if (options.indentText || anyContent) {\n\t return true;\n\t }\n\t break; // skip to next key\n\t case options.cdataKey:\n\t if (options.indentCdata || anyContent) {\n\t return true;\n\t }\n\t break; // skip to next key\n\t case options.instructionKey:\n\t if (options.indentInstruction || anyContent) {\n\t return true;\n\t }\n\t break; // skip to next key\n\t case options.doctypeKey:\n\t case options.commentKey:\n\t return true;\n\t default:\n\t return true;\n\t }\n\t }\n\t }\n\t return false;\n\t}\n\n\tfunction writeElementCompact(element, name, options, depth, indent) {\n\t currentElement = element;\n\t currentElementName = name;\n\t var elementName = 'elementNameFn' in options ? options.elementNameFn(name, element) : name;\n\t if (typeof element === 'undefined' || element === null || element === '') {\n\t return 'fullTagEmptyElementFn' in options && options.fullTagEmptyElementFn(name, element) || options.fullTagEmptyElement ? '<' + elementName + '></' + elementName + '>' : '<' + elementName + '/>';\n\t }\n\t var xml = [];\n\t if (name) {\n\t xml.push('<' + elementName);\n\t if (typeof element !== 'object') {\n\t xml.push('>' + writeText(element,options) + '</' + elementName + '>');\n\t return xml.join('');\n\t }\n\t if (element[options.attributesKey]) {\n\t xml.push(writeAttributes(element[options.attributesKey], options, depth));\n\t }\n\t var withClosingTag = hasContentCompact(element, options, true) || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n\t if (!withClosingTag) {\n\t if ('fullTagEmptyElementFn' in options) {\n\t withClosingTag = options.fullTagEmptyElementFn(name, element);\n\t } else {\n\t withClosingTag = options.fullTagEmptyElement;\n\t }\n\t }\n\t if (withClosingTag) {\n\t xml.push('>');\n\t } else {\n\t xml.push('/>');\n\t return xml.join('');\n\t }\n\t }\n\t xml.push(writeElementsCompact(element, options, depth + 1, false));\n\t currentElement = element;\n\t currentElementName = name;\n\t if (name) {\n\t xml.push((indent ? writeIndentation(options, depth, false) : '') + '</' + elementName + '>');\n\t }\n\t return xml.join('');\n\t}\n\n\tfunction writeElementsCompact(element, options, depth, firstLine) {\n\t var i, key, nodes, xml = [];\n\t for (key in element) {\n\t if (element.hasOwnProperty(key)) {\n\t nodes = isArray(element[key]) ? element[key] : [element[key]];\n\t for (i = 0; i < nodes.length; ++i) {\n\t switch (key) {\n\t case options.declarationKey: xml.push(writeDeclaration(nodes[i], options, depth)); break;\n\t case options.instructionKey: xml.push((options.indentInstruction ? writeIndentation(options, depth, firstLine) : '') + writeInstruction(nodes[i], options, depth)); break;\n\t case options.attributesKey: case options.parentKey: break; // skip\n\t case options.textKey: xml.push((options.indentText ? writeIndentation(options, depth, firstLine) : '') + writeText(nodes[i], options)); break;\n\t case options.cdataKey: xml.push((options.indentCdata ? writeIndentation(options, depth, firstLine) : '') + writeCdata(nodes[i], options)); break;\n\t case options.doctypeKey: xml.push(writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i], options)); break;\n\t case options.commentKey: xml.push(writeIndentation(options, depth, firstLine) + writeComment(nodes[i], options)); break;\n\t default: xml.push(writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i], key, options, depth, hasContentCompact(nodes[i], options)));\n\t }\n\t firstLine = firstLine && !xml.length;\n\t }\n\t }\n\t }\n\t return xml.join('');\n\t}\n\n\tjs2xml = function (js, options) {\n\t options = validateOptions(options);\n\t var xml = [];\n\t currentElement = js;\n\t currentElementName = '_root_';\n\t if (options.compact) {\n\t xml.push(writeElementsCompact(js, options, 0, true));\n\t } else {\n\t if (js[options.declarationKey]) {\n\t xml.push(writeDeclaration(js[options.declarationKey], options, 0));\n\t }\n\t if (js[options.elementsKey] && js[options.elementsKey].length) {\n\t xml.push(writeElements(js[options.elementsKey], options, 0, !xml.length));\n\t }\n\t }\n\t return xml.join('');\n\t};\n\treturn js2xml;\n}\n\nvar json2xml;\nvar hasRequiredJson2xml;\n\nfunction requireJson2xml () {\n\tif (hasRequiredJson2xml) return json2xml;\n\thasRequiredJson2xml = 1;\n\tvar js2xml = requireJs2xml();\r\n\r\n\tjson2xml = function (json, options) {\r\n\t if (json instanceof Buffer) {\r\n\t json = json.toString();\r\n\t }\r\n\t var js = null;\r\n\t if (typeof (json) === 'string') {\r\n\t try {\r\n\t js = JSON.parse(json);\r\n\t } catch (e) {\r\n\t throw new Error('The JSON structure is invalid');\r\n\t }\r\n\t } else {\r\n\t js = json;\r\n\t }\r\n\t return js2xml(js, options);\r\n\t};\n\treturn json2xml;\n}\n\n/*jslint node:true */\n\nvar lib;\nvar hasRequiredLib;\n\nfunction requireLib () {\n\tif (hasRequiredLib) return lib;\n\thasRequiredLib = 1;\n\tvar xml2js = requireXml2js();\r\n\tvar xml2json = requireXml2json();\r\n\tvar js2xml = requireJs2xml();\r\n\tvar json2xml = requireJson2xml();\r\n\r\n\tlib = {\r\n\t xml2js: xml2js,\r\n\t xml2json: xml2json,\r\n\t js2xml: js2xml,\r\n\t json2xml: json2xml\r\n\t};\n\treturn lib;\n}\n\nvar libExports = requireLib();\n\nvar bufferExports = requireBuffer();\n\nclass TiledParser {\n constructor(xml, filePath = \"\", basePath = \"\") {\n this.xml = xml;\n this.filePath = filePath;\n this.basePath = basePath;\n this.layers = /* @__PURE__ */ new Map();\n this.transform = (obj) => {\n if (!obj) return;\n const attr = obj.attributes || obj._attributes;\n if (!attr) return obj;\n let newObj = {\n ...obj,\n ...attr,\n ...TiledParser.propToNumber(attr, [\n \"version\",\n \"width\",\n \"height\",\n \"tilewidth\",\n \"tileheight\",\n \"nextlayerid\",\n \"nextobjectid\",\n \"hexsidelength\",\n \"opacity\",\n \"x\",\n \"y\",\n \"offsetx\",\n \"offsety\",\n \"startx\",\n \"starty\",\n \"id\",\n \"firstgid\",\n \"imageheight\",\n \"imagewidth\",\n \"margin\",\n \"columns\",\n \"rows\",\n \"tilecount\",\n \"rotation\",\n \"gid\",\n \"tileid\",\n \"duration\",\n \"parallaxx\",\n \"parallaxy\",\n \"repeatx\",\n \"repeaty\",\n \"pixelsize\"\n ]),\n ...TiledParser.propToBool(attr, [\n \"visible\",\n \"infinite\",\n \"locked\",\n \"bold\",\n \"italic\",\n \"kerning\",\n \"strikeout\",\n \"underline\",\n \"wrap\"\n ])\n };\n if (newObj.properties) {\n const properties = TiledParser.toArray(newObj.properties.property);\n const propObj = {};\n for (let prop of properties) {\n const attr2 = prop._attributes;\n if (!attr2) continue;\n let val;\n switch (attr2.type) {\n case \"file\":\n val = this.getImagePath(attr2.value);\n break;\n case \"object\":\n case \"float\":\n case \"int\":\n val = +attr2.value;\n break;\n case \"bool\":\n val = attr2.value == \"true\" ? true : false;\n break;\n case \"class\":\n val = {\n ...this.transform(prop)?.properties ?? {},\n _classname: attr2.propertytype\n };\n break;\n default:\n val = attr2.value;\n }\n propObj[attr2.name] = val;\n }\n newObj.properties = propObj;\n }\n if (newObj.polygon) {\n newObj.polygon = this.transform(newObj.polygon);\n }\n if (newObj.polyline) {\n newObj.polyline = this.transform(newObj.polyline);\n }\n if (newObj.points) {\n newObj = newObj.points.split(\" \").map((point) => {\n const pos = point.split(\",\");\n return { x: +pos[0], y: +pos[1] };\n });\n }\n if (newObj.point) {\n newObj.point = true;\n }\n if (newObj.ellipse) {\n newObj.ellipse = true;\n }\n if (newObj.text) {\n newObj.text = {\n text: newObj.text._text,\n ...this.transform(newObj.text)\n };\n delete newObj.text._text;\n }\n if (newObj.image) {\n newObj.image = this.transform(newObj.image);\n }\n if (newObj.source) {\n if (!this.isTilesetSource(newObj)) {\n newObj.source = this.getImagePath(newObj.source);\n }\n }\n const objectgroup = newObj.object || newObj.objectgroup?.object;\n if (objectgroup) {\n newObj.objects = TiledParser.toArray(objectgroup).map((object) => {\n return this.transform(object);\n });\n }\n delete newObj._attributes;\n delete newObj.attributes;\n delete newObj.object;\n delete newObj.objectgroup;\n return newObj;\n };\n }\n static {\n this.propToNumber = (obj, props) => {\n for (let key of props) {\n if (obj[key] !== void 0) {\n obj[key] = +obj[key];\n }\n }\n return obj;\n };\n }\n static {\n this.propToBool = (obj, props) => {\n for (let key of props) {\n if (obj[key] !== void 0) {\n obj[key] = obj[key] == \"true\" || obj[key] == \"1\";\n }\n }\n return obj;\n };\n }\n static toArray(prop) {\n if (!prop) return [];\n if (!Array.isArray(prop)) return [prop];\n return prop;\n }\n getImagePath(image) {\n if (this.filePath.startsWith(\"http\")) return new URL(image, this.filePath).href;\n return joinPath(this.basePath, image);\n }\n /**\n * Check if the object is a tileset source reference\n * Tileset sources should not have their paths transformed with getImagePath\n */\n isTilesetSource(obj) {\n return obj.firstgid !== void 0 || obj.tilewidth !== void 0 || obj.tileheight !== void 0 || obj.tilecount !== void 0 || obj.columns !== void 0;\n }\n static unpackTileBytes(buffer, size) {\n const expectedCount = size * 4;\n if (buffer.length !== expectedCount) {\n throw new Error(\"Expected \" + expectedCount + \" bytes of tile data; received \" + buffer.length);\n }\n let tileIndex = 0;\n const array = [];\n for (let i = 0; i < expectedCount; i += 4) {\n array[tileIndex] = buffer.readUInt32LE(i);\n tileIndex++;\n }\n return array;\n }\n static decode(obj, size) {\n const { encoding, data } = obj;\n if (encoding == \"base64\") {\n return TiledParser.unpackTileBytes(bufferExports.Buffer.from(data.trim(), \"base64\"), size);\n } else if (encoding == \"csv\") {\n return data.trim().split(\",\").map((x) => +x);\n }\n return data;\n }\n parseMap() {\n const json = libExports.xml2js(this.xml, { compact: true });\n const jsonNoCompact = libExports.xml2js(this.xml);\n const tileset = json.map.tileset;\n json.map.group;\n const recursiveObjectGroup = (obj) => {\n const { objectgroup, group: group2, layer, imagelayer } = obj;\n const setLayer = (type) => {\n if (!type) return;\n TiledParser.toArray(type).forEach((val) => {\n if (this.layers.has(+val._attributes.id)) {\n throw new Error(`Tiled Parser Error: Layer with id ${val._attributes.id} already exists`);\n }\n this.layers.set(+val._attributes.id, val);\n });\n };\n setLayer(objectgroup);\n setLayer(layer);\n setLayer(group2);\n setLayer(imagelayer);\n if (group2) {\n recursiveObjectGroup(group2);\n }\n };\n recursiveObjectGroup(json.map);\n const recursiveLayer = (elements, array = []) => {\n if (!elements) return array;\n for (let element of elements) {\n const { name } = element;\n if (![\"layer\", \"group\", \"imagelayer\", \"objectgroup\"].includes(name)) continue;\n const data = element.elements?.find((el) => el.name == \"data\");\n element.layer = this.layers.get(+element.attributes.id);\n const obj = {\n ...this.transform(data) ?? {},\n ...this.transform(element),\n ...this.transform(element.layer),\n layers: recursiveLayer(element.elements),\n data: data ? data.elements[0].text : void 0,\n type: name == \"layer\" ? \"tilelayer\" : name\n };\n delete obj.elements;\n delete obj.layer;\n if (obj.data) obj.data = TiledParser.decode(obj, obj.width * obj.height);\n array.push(obj);\n }\n return array;\n };\n const layers = recursiveLayer(jsonNoCompact.elements[0].elements);\n const tilesets = TiledParser.toArray(tileset).map((tileset2) => {\n const obj = this.transform(tileset2);\n return obj;\n });\n const ret = {\n ...this.transform(json.map),\n layers,\n tilesets\n };\n delete ret.layer;\n delete ret.tileset;\n delete ret.group;\n delete ret.imagelayer;\n return ret;\n }\n parseTileset() {\n const json = libExports.xml2js(this.xml, { compact: true });\n const { tileset } = json;\n const ret = {\n ...this.transform(tileset),\n image: this.transform(tileset.image),\n tiles: TiledParser.toArray(tileset.tile).map((tile) => {\n const ret2 = this.transform(tile);\n if (tile.animation) {\n ret2.animations = TiledParser.toArray(tile.animation.frame).map(this.transform);\n }\n delete ret2.animation;\n return ret2;\n })\n };\n delete ret.tile;\n return ret;\n }\n}\n\nclass TiledProperties {\n constructor(data) {\n this.properties = {};\n this.properties = data?.properties ?? {};\n }\n getProperty(name, defaultValue) {\n const val = this.properties[name];\n if (val === void 0) {\n return defaultValue;\n }\n return val;\n }\n hasProperty(name) {\n return !!this.properties[name];\n }\n setProperty(name, value) {\n this.properties[name] = value;\n }\n getType() {\n return this.class || this[\"type\"];\n }\n}\n\nconst FLIPPED_HORIZONTALLY_FLAG = 2147483648;\nconst FLIPPED_VERTICALLY_FLAG = 1073741824;\nconst FLIPPED_DIAGONALLY_FLAG = 536870912;\nconst ROTATED_HEXAGONAL_120_FLAG = 268435456;\nclass TileGid extends TiledProperties {\n constructor(obj) {\n super(obj);\n this.obj = obj;\n this._gid = obj?.gid;\n }\n static getRealGid(gid) {\n return gid & 268435455;\n }\n get horizontalFlip() {\n return !!(this._gid & FLIPPED_HORIZONTALLY_FLAG);\n }\n get verticalFlip() {\n return !!(this._gid & FLIPPED_VERTICALLY_FLAG);\n }\n get diagonalFlip() {\n return !!(this._gid & FLIPPED_DIAGONALLY_FLAG);\n }\n get rotatedHex120() {\n return !!(this._gid & ROTATED_HEXAGONAL_120_FLAG);\n }\n get gid() {\n return TileGid.getRealGid(this._gid);\n }\n set gid(val) {\n this._gid = val;\n }\n}\n\nclass Tile extends TileGid {\n constructor(tile) {\n super(tile);\n this.tile = tile;\n const preservedProperties = this.properties;\n Reflect.deleteProperty(tile, \"gid\");\n Object.assign(this, tile);\n if (preservedProperties && Object.keys(preservedProperties).length > 0) {\n this.properties = { ...preservedProperties, ...this.properties };\n }\n }\n}\n\nclass TiledObjectClass extends TileGid {\n constructor(object) {\n super(object);\n this.layerName = \"\";\n Object.assign(this, object);\n if (object?.gid) {\n this.y -= this.height;\n }\n }\n}\n\nclass Layer extends TiledProperties {\n constructor(layer, tilesets, parent) {\n super(layer);\n this.tilesets = tilesets;\n this.parent = parent;\n this.cacheTiles = false;\n this.tiles = [];\n Object.assign(this, layer);\n this.mapObjects();\n this.mergePropertiesWithParent();\n this.cacheTiles = this.getProperty(\"cache-tiles\", false);\n if (this.cacheTiles) this.propertiesTiles();\n }\n get size() {\n return this.data.length;\n }\n createTile(gid, tileIndex, layerIndex) {\n if (gid == 0) {\n return;\n }\n const realGid = TileGid.getRealGid(gid);\n const tileset = Layer.findTileSet(realGid, this.tilesets);\n if (!tileset) {\n return void 0;\n }\n const tile = tileset.getTile(realGid - tileset.firstgid);\n if (tile) {\n return new Tile({\n ...tile.tile,\n gid,\n index: tileIndex,\n layerIndex\n });\n }\n return new Tile({\n gid,\n index: tileIndex,\n layerIndex\n });\n }\n mergePropertiesWithParent() {\n const parent = this.getLayerParent();\n if (!this.properties) this.properties = {};\n if (!parent) return;\n for (let key in parent.properties) {\n const val = parent.properties[key];\n const valChild = this.properties[key];\n if (valChild === void 0) {\n this.properties[key] = val;\n } else {\n if (key == \"z\") {\n this.properties[key] += val;\n } else {\n continue;\n }\n }\n }\n this.opacity = Math.round((parent.opacity ?? 1) * (this.opacity ?? 1) * 100) / 100;\n this.offsetx = (parent.offsetx ?? 0) + (this.offsetx ?? 0);\n this.offsety = (parent.offsety ?? 0) + (this.offsety ?? 0);\n this.locked = parent.locked ?? false;\n }\n propertiesTiles() {\n if (!this.data) return;\n const data = this.data;\n for (let i = 0; i < data.length; i++) {\n const id = data[i];\n this.tiles.push(this.createTile(id, i));\n }\n }\n mapObjects() {\n if (this.objects) {\n this.objects = this.objects.map((object) => {\n const obj = new TiledObjectClass(object);\n obj.layerName = this.name;\n return obj;\n });\n }\n }\n getTileByIndex(tileIndex) {\n if (this.cacheTiles) {\n return this.tiles[tileIndex];\n }\n return this.createTile(this.data[tileIndex], tileIndex);\n }\n static findTileSet(gid, tileSets) {\n let tileset;\n for (let i = tileSets.length - 1; i >= 0; i--) {\n tileset = tileSets[i];\n if (tileset.firstgid && tileset.firstgid <= gid) {\n break;\n }\n }\n return tileset;\n }\n getLayerParent() {\n return this.parent;\n }\n tilesForEach(cb) {\n for (let i = 0; i < this.data.length; i++) {\n if (this.cacheTiles) {\n cb(this.tiles[i], i);\n continue;\n }\n cb(this.createTile(this.data[i], i), i);\n }\n }\n setData(tileIndex, gid) {\n this.data[tileIndex] = gid;\n }\n}\n\nclass Tileset extends TiledProperties {\n constructor(tileset) {\n super(tileset);\n this.tileset = tileset;\n this.cacheTileId = /* @__PURE__ */ new Map();\n Object.assign(this, tileset);\n this.margin = this.margin ?? 0;\n this.spacing = this.spacing ?? 0;\n const tilesArray = tileset.tiles || tileset.tile || [];\n for (let tile of tilesArray) {\n this.addTile(tile);\n }\n Reflect.deleteProperty(this, \"tiles\");\n Reflect.deleteProperty(this, \"tile\");\n }\n addTile(tileObj) {\n const tile = new Tile(tileObj);\n this.cacheTileId.set(tile.id, tile);\n return tile;\n }\n getTile(id) {\n return this.cacheTileId.get(+id);\n }\n}\n\nclass TiledParserFile {\n constructor(file, {\n basePath = \"\",\n staticDir = \"\",\n relativePath = \"\"\n } = {}) {\n this.file = file;\n this.basePath = basePath;\n }\n static isBrowser() {\n return typeof window !== \"undefined\" && !window.useFileSystem;\n }\n static typeOfFile(file) {\n file = file.trim();\n const isString = typeof file == \"string\";\n const info = {\n isXml: isString && file.startsWith(\"<?xml\"),\n isObject: !!file[\"version\"],\n isHttp: isString && file.startsWith(\"http\")\n };\n return {\n ...info,\n isPath: !info.isXml && !info.isObject && !info.isHttp\n };\n }\n _parseFile(file, type, cb) {\n const isXml = (content) => TiledParserFile.typeOfFile(content).isXml;\n const loadContent = (content) => {\n if (!content) {\n return cb(null);\n }\n if (isXml(content)) {\n const parser = new TiledParser(content, file, this.basePath);\n if (type == \"map\") {\n const json = parser.parseMap();\n return cb(json);\n } else if (type == \"tileset\") {\n const json = parser.parseTileset();\n return cb(json);\n }\n }\n return cb(JSON.parse(content));\n };\n if (TiledParserFile.typeOfFile(file).isObject) {\n return cb(file);\n }\n const { isHttp } = TiledParserFile.typeOfFile(file);\n if (isXml(file)) {\n loadContent(file);\n } else if (isHttp || TiledParserFile.isBrowser() && process.env.NODE_ENV != \"test\") {\n let url = isHttp ? file : joinPath(this.basePath, file);\n if (TiledParserFile.isBrowser() && window.urlCache) {\n url = window.urlCache[file];\n }\n fetch(url, {\n headers: {\n \"Content-Type\": \"application/xml\"\n }\n }).then((response) => response.text()).then(loadContent).catch((err) => cb(null, err));\n }\n }\n parseFile(cb, options = {}) {\n const { getOnlyBasename } = options;\n const basename = (path) => path.substring(path.lastIndexOf(\"/\") + 1);\n if (getOnlyBasename) {\n if (TiledParserFile.typeOfFile(this.file).isPath) {\n this.file = basename(this.file);\n }\n }\n this._parseFile(this.file, \"map\", (map, err) => {\n let hasError = false;\n if (err) return cb(null, err);\n if (map.tilesets) {\n const parseTileset = [];\n const finish = () => {\n loadAll++;\n if (loadAll == map.tilesets.length && !hasError) {\n map.tilesets = parseTileset;\n cb(map);\n }\n };\n let loadAll = 0;\n for (let i = 0; i < map.tilesets.length; i++) {\n const tileset = map.tilesets[i];\n if (!tileset.source || tileset.tiles || tileset.image || tileset.tile) {\n parseTileset[i] = tileset;\n finish();\n continue;\n }\n if (getOnlyBasename) {\n if (TiledParserFile.typeOfFile(tileset.source).isPath) {\n tileset.source = basename(tileset.source);\n }\n }\n this._parseFile(tileset.source, \"tileset\", (result, err2) => {\n if (err2) {\n hasError = true;\n return cb(null, err2);\n }\n parseTileset[i] = {\n ...result,\n firstgid: tileset.firstgid\n };\n finish();\n });\n }\n }\n });\n }\n parseFilePromise(options = {}) {\n return new Promise((resolve, reject) => {\n this.parseFile((ret, err) => {\n if (ret) resolve(ret);\n else reject(err);\n }, options);\n });\n }\n}\n\nlet bufferTilesets = {};\nclass MapClass extends TiledProperties {\n constructor(map) {\n super(map ?? {});\n this.tilesets = [];\n this.layers = [];\n this.tmpLayers = [];\n this.tilesIndex = {};\n /**\n * Allows to define the size of ArrayBuffer to keep in memory the tiles of the map\n */\n this.allocateMemory = 0;\n /**\n * If set to true, the memory allocation will take only one tile (the tile of the last layer)\n */\n this.lowMemory = false;\n if (map) this.load(map);\n }\n load(map) {\n Object.assign(this, map);\n if (this.hasProperty(\"low-memory\")) {\n this.lowMemory = this.getProperty(\"low-memory\", false);\n }\n this.tmpLayers = [];\n this.mapTilesets();\n this.mapLayers(this.layers);\n this.layers = [...this.tmpLayers];\n Reflect.deleteProperty(this, \"tmpLayers\");\n this.setTilesIndex();\n this.data = map;\n }\n /** \n * @title Width of the map in pixels\n * @prop {number} [widthPx]\n * @readonly\n * @memberof Map\n * @memberof RpgSceneMap\n * */\n get widthPx() {\n return this.width * this.tilewidth;\n }\n /** \n * @title Height of the map in pixels\n * @prop {number} [heightPx]\n * @readonly\n * @memberof Map\n * @memberof RpgSceneMap\n * */\n get heightPx() {\n return this.height * this.tileheight;\n }\n /** \n * @title The depth of the map in pixels (this is the height of a tile ;))\n * @prop {number} map.zTileHeight\n * @readonly\n * @memberof Map\n * @memberof RpgSceneMap\n * */\n get zTileHeight() {\n return this.tileheight;\n }\n /**\n * Find a layer by name. Returns `undefined` is the layer is not found\n \n * @title Get Layer by name\n * @method map.getLayerByName(name)\n * @param {string} name layer name\n * @returns {LayerInfo | undefined}\n * @example\n * ```ts\n * const tiles = map.getLayerByName(0, 0)\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getLayerByName(name) {\n return this.layers.find((layer) => layer.name == name);\n }\n /**\n * Get the tile index on the tileset\n * \n * @title Get index of tile\n * @method map.getTileIndex(x,y)\n * @param {number} x Position X\n * @param {number} x Position Y\n * @returns {number}\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getTileIndex(x, y, [z] = [0]) {\n return this.width * Math.floor((y - z) / this.tileheight) + Math.floor(x / this.tilewidth);\n }\n getTilePosition(index) {\n return {\n y: Math.floor(index / this.width) * this.tileheight,\n x: index % this.width * this.tilewidth\n };\n }\n /**\n * Find the point of origin (top left) of a tile. Of course, its position depends on the size of the tile\n \n * @title Get origin position of tile\n * @method map.getTileOriginPosition(x,y)\n * @param {number} x Position X\n * @param {number} x Position Y\n * @returns { {x: number, y: number }}\n * @example\n * ```ts\n * // If the size of a tile is 32x32px\n * const position = map.getTileOriginPosition(35, 12)\n * console.log(position) // { x: 32, y: 0 }\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getTileOriginPosition(x, y) {\n return {\n x: Math.floor(x / this.tilewidth) * this.tilewidth,\n y: Math.floor(y / this.tileheight) * this.tileheight\n };\n }\n /**\n * Recover tiles according to a position\n \n * @title Get tile by position\n * @method map.getTileByPosition(x,y)\n * @param {number} x Position X\n * @param {number} x Position Y\n * @returns {TileInfo}\n * @example\n * ```ts\n * const tiles = map.getTileByPosition(0, 0)\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getTileByPosition(x, y, z = [0, 0], options = {}) {\n const tileIndex = this.getTileIndex(x, y, [z[0]]);\n return this.getTileByIndex(tileIndex, z, options);\n }\n /**\n * Retrieves tiles according to its index\n \n * @title Get tile by index\n * @method map.getTileByIndex(tileIndex)\n * @param {number} tileIndex tile index\n * @returns {TileInfo}\n * @example\n * ```ts\n * const index = map.getTileIndex(0, 0)\n * const tiles = map.getTileByIndex(index)\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getTileByIndex(tileIndex, zPlayer = [0, 0], options = {\n populateTiles: true\n }) {\n const zA = Math.floor(zPlayer[0] / this.zTileHeight);\n Math.floor(zPlayer[1] / this.zTileHeight);\n const level = this.tilesIndex[zA];\n const obj = {\n tiles: [],\n hasCollision: false,\n isOverlay: false,\n objectGroups: [],\n tileIndex\n };\n if (!level) {\n return obj;\n }\n const [layer] = this.layers;\n const getTileByPointer = (pointer = 0) => {\n const pos = tileIndex * this.realAllocateMemory + pointer;\n const gid = level[pos];\n if (gid === 0) {\n return obj;\n }\n const tile2 = layer.createTile(gid, tileIndex, level[pos + 1]);\n if (tile2) obj.tiles.push(tile2);\n };\n if (options.populateTiles) {\n for (let i = 0; i < this.realAllocateMemory; i += 2) {\n getTileByPointer(i);\n }\n } else {\n getTileByPointer();\n }\n const [tile] = obj.tiles;\n if (tile) {\n obj.hasCollision = tile.getProperty(\"collision\", false);\n obj.objectGroups = tile.objects ?? [];\n }\n return obj;\n }\n getAllObjects() {\n return this.layers.reduce((prev, current) => {\n if (!current.objects) return prev;\n return prev.concat(...current.objects);\n }, []);\n }\n getData() {\n return {\n ...this.data,\n layers: this.layers\n };\n }\n setTile(x, y, layerFilter, tileInfo) {\n if (this.lowMemory) {\n throw \"Impossible to change a tile with the lowMemory option\";\n }\n const tileIndex = this.getTileIndex(x, y);\n let fnFilter;\n let tilesEdited = {};\n if (typeof layerFilter == \"string\") {\n fnFilter = (layer) => layer.name == layerFilter;\n } else {\n fnFilter = layerFilter;\n }\n for (let i = 0; i < this.layers.length; i++) {\n const layer = this.layers[i];\n if (!fnFilter(layer)) continue;\n let tile;\n const oldTile = this.getTileByIndex(tileIndex);\n if (tileInfo.gid) {\n tile = layer.createTile(tileInfo.gid, tileIndex);\n }\n if (!tile) continue;\n for (let key in tileInfo) {\n if (key == \"gid\") continue;\n tile[key] = tileInfo[key];\n }\n tilesEdited[layer.name] = {\n gid: tile.gid,\n properties: tile.properties\n };\n this.setTileIndex(layer, oldTile.tiles[0], tile, tileIndex, i);\n layer.setData(tileIndex, tile.gid);\n }\n return {\n x,\n y,\n tiles: tilesEdited\n };\n }\n removeCacheTileset(name) {\n delete bufferTilesets[name];\n }\n clearCacheTilesets() {\n bufferTilesets = {};\n }\n mapTilesets() {\n this.tilesets = this.tilesets.map((tileset) => {\n if (bufferTilesets[tileset.name]) {\n const instance = bufferTilesets[tileset.name];\n instance.firstgid = tileset.firstgid;\n return instance;\n }\n const _tileset = new Tileset(tileset);\n bufferTilesets[_tileset.name] = _tileset;\n return _tileset;\n });\n }\n mapLayers(layers = [], parent) {\n for (let layer of layers) {\n const layerInstance = new Layer(layer, this.tilesets, parent);\n this.tmpLayers.push(layerInstance);\n if (layer.layers) {\n this.mapLayers(layer.layers, layerInstance);\n }\n }\n if (this.lowMemory) this.allocateMemory = 1;\n if (!this.allocateMemory) this.allocateMemory = this.layers.length;\n }\n setTileIndex(layer, oldTile, newTile, tileIndex, layerIndex) {\n const startPos = tileIndex * this.realAllocateMemory;\n let pointer = startPos + this.realAllocateMemory - 2;\n const zLayer = layer.getProperty(\"z\", 0);\n const zTile = oldTile.getProperty(\"z\", 0);\n let z = zLayer + zTile;\n while (pointer >= startPos) {\n const zlayer = this.tilesIndex[z];\n if (zlayer[pointer] === oldTile.gid && zlayer[pointer + 1] === layerIndex) {\n this.tilesIndex[z][pointer] = newTile.gid;\n }\n pointer -= 2;\n }\n }\n /**\n * We multiply by 2 because 2 entries are stored for a tile: its GID and the Layer Index\n * \n * Example If I have 3 layers, The array will have the following form \n * \n * [\n * GID of Layer 3, \n * Layer Index of Layer 3, \n * GID of Layer 2, \n * Layer Index of Layer 2, \n * GID of Layer 1, \n * Layer Index of Layer 1,\n * ... others tiles\n * ]\n * \n * The size in memory of the map is therefore:\n * \n * `(map width * map height * number of layers * 4) bytes`\n * \n * > We multiply by 4, because an element takes 2 bytes and has 2 elements for a tile is 4 bytes in all\n * \n * Example (a 100x100 map with 5 layers)\n * \n * `100 * 100 * 5 * 4 = 200000 bytes = ~195 Kb`\n * \n * If we define on lowMemory then the calculation is the following\n * \n * `(map width * map height * 4) bytes`\n * \n * Example\n * \n * `100 * 100 * 4 = 40000 bytes = ~39 Kb`\n */\n get realAllocateMemory() {\n return this.allocateMemory * 2;\n }\n /**\n * We keep each tile in memory classified by z value. The values are ordered from the end to the beginning so that the first element of the array (when retrieved with getTileByIndex() is the tile on the highest layer. This way, the tile search is very fast for collisions \n * \n */\n addTileIndex(layer, tile, tileIndex, layerIndex) {\n if (!tile || tile && tile.gid == 0) {\n return;\n }\n const zLayer = layer.getProperty(\"z\", 0);\n const zTile = tile.getProperty(\"z\", 0);\n let z = zLayer + zTile;\n if (!this.tilesIndex[z]) {\n const buffer = new ArrayBuffer(layer.size * this.realAllocateMemory * 2);\n this.tilesIndex[z] = new Uint16Array(buffer);\n }\n const startPos = tileIndex * this.realAllocateMemory;\n let pointer = startPos + this.realAllocateMemory - 2;\n while (this.tilesIndex[z][pointer] !== 0 && pointer > startPos) {\n pointer -= 2;\n }\n this.tilesIndex[z][pointer] = tile.gid;\n this.tilesIndex[z][pointer + 1] = layerIndex;\n this.tilesIndex[z][startPos] = tile.gid;\n this.tilesIndex[z][startPos + 1] = layerIndex;\n }\n setTilesIndex() {\n for (let i = 0; i < this.layers.length; i++) {\n const layer = this.layers[i];\n if (layer.type != TiledLayerType.Tile) {\n continue;\n }\n layer.tilesForEach((tile, index) => {\n this.addTileIndex(layer, tile, index, i);\n });\n }\n }\n}\n\nexport { Layer, MapClass, Tile, TiledLayerType, TiledObjectClass, TiledParser, TiledParserFile, TiledProperties, Tileset, isTiledFormat };\n//# sourceMappingURL=index.js.map\n","const settings = {\n /** The default number of textures per tilemap in a tilemap composite. */\n TEXTURES_PER_TILEMAP: 16,\n /** The scaling mode of the combined texture tiling. */\n TEXTILE_SCALE_MODE: \"linear\",\n /** This will enable 32-bit index buffers. It's useful when you have more than 16K tiles. */\n use32bitIndex: false\n};\nconst Constant = settings;\n\nexport { Constant, settings };\n//# sourceMappingURL=settings.mjs.map\n","import { Geometry, Buffer, BufferUsage } from 'pixi.js';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst _TilemapGeometry = class _TilemapGeometry extends Geometry {\n constructor(indexBuffer) {\n const buf = new Buffer({\n data: new Float32Array(2),\n label: \"tilemap-buffer\",\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,\n shrinkToFit: false\n });\n const stride = _TilemapGeometry.stride;\n super({\n indexBuffer,\n attributes: {\n aVertexPosition: {\n buffer: buf,\n format: \"float32x2\",\n stride,\n offset: 0\n // location: 6,\n },\n aTextureCoord: {\n buffer: buf,\n format: \"float32x2\",\n stride,\n offset: 2 * 4\n // location: 4,\n },\n aFrame: {\n buffer: buf,\n format: \"float32x4\",\n stride,\n offset: 4 * 4\n // location: 3,\n },\n aAnim: {\n buffer: buf,\n format: \"float32x2\",\n stride,\n offset: 8 * 4\n // location: 1,\n },\n aTextureId: {\n buffer: buf,\n format: \"sint32\",\n stride,\n offset: 10 * 4\n // location: 5\n },\n aAnimDivisor: {\n buffer: buf,\n format: \"float32\",\n stride,\n offset: 11 * 4\n // location: 2\n },\n aAlpha: {\n buffer: buf,\n format: \"float32\",\n stride,\n offset: 12 * 4\n // location: 0\n }\n }\n });\n __publicField(this, \"lastTimeAccess\", 0);\n __publicField(this, \"vertSize\", _TilemapGeometry.vertSize);\n __publicField(this, \"vertPerQuad\", _TilemapGeometry.vertPerQuad);\n __publicField(this, \"stride\", _TilemapGeometry.stride);\n __publicField(this, \"buf\");\n this.buf = buf;\n }\n};\n__publicField(_TilemapGeometry, \"vertSize\", 13);\n__publicField(_TilemapGeometry, \"vertPerQuad\", 4);\n__publicField(_TilemapGeometry, \"stride\", _TilemapGeometry.vertSize * 4);\nlet TilemapGeometry = _TilemapGeometry;\n\nexport { TilemapGeometry };\n//# sourceMappingURL=TilemapGeometry.mjs.map\n","import { ExtensionType, UniformGroup, Matrix, Buffer, BufferUsage, NOOP } from 'pixi.js';\nimport { settings } from './settings.mjs';\nimport { TilemapGeometry } from './TilemapGeometry.mjs';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass TilemapAdaptor {\n constructor() {\n __publicField(this, \"pipe_uniforms\", new UniformGroup({\n u_proj_trans: { value: new Matrix(), type: \"mat3x3<f32>\" },\n u_anim_frame: { value: new Float32Array(2), type: \"vec2<f32>\" }\n }));\n }\n}\nclass TilemapPipe {\n constructor(renderer, adaptor) {\n /** The managing renderer */\n __publicField(this, \"renderer\");\n /** The tile animation frame */\n __publicField(this, \"tileAnim\", [0, 0]);\n __publicField(this, \"ibLen\", 0);\n // index buffer length\n /** The index buffer for the tilemaps to share. */\n __publicField(this, \"indexBuffer\", null);\n /** The shader used to render tilemaps. */\n __publicField(this, \"shader\");\n __publicField(this, \"adaptor\");\n this.renderer = renderer;\n this.adaptor = adaptor;\n this.adaptor.init();\n this.indexBuffer = new Buffer({\n data: new Uint16Array([0, 1, 2, 0, 2, 3]),\n label: \"index-tilemap-buffer\",\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST\n });\n this.indexBuffer.destroy = NOOP;\n this.checkIndexBuffer(2e3);\n }\n start() {\n }\n /**\n * @internal\n * @ignore\n */\n createVb() {\n const geom = new TilemapGeometry(this.indexBuffer);\n geom.lastTimeAccess = Date.now();\n return geom;\n }\n /** @return The {@link TilemapGeometry} shader that this rendering pipeline is using. */\n getShader() {\n return this.shader;\n }\n destroy() {\n this.shader = null;\n }\n // eslint-disable-next-line no-unused-vars\n checkIndexBuffer(size) {\n const totalIndices = size * 6;\n if (totalIndices <= this.ibLen) {\n return;\n }\n this.ibLen = totalIndices;\n this.indexBuffer.data = createIndicesForQuads(\n size,\n settings.use32bitIndex ? new Uint32Array(totalIndices) : new Uint16Array(totalIndices)\n );\n }\n destroyRenderable(_renderable) {\n _renderable.vb.destroy(true);\n _renderable.vb = null;\n }\n addRenderable(tilemap, instructionSet) {\n const batcher = this.renderer.renderPipes.batch;\n tilemap.updateBuffer(this);\n tilemap.checkValid();\n tilemap.getTileset().update();\n if (tilemap.is_valid) {\n batcher.break(instructionSet);\n instructionSet.add(tilemap._instruction);\n }\n }\n updateRenderable(tilemap, _instructionSet) {\n tilemap.updateBuffer(this);\n tilemap.getTileset().update();\n }\n validateRenderable(renderable) {\n return renderable.checkValid();\n }\n execute({ tilemap }) {\n if (!tilemap.isRenderable)\n return;\n tilemap.state.blendMode = tilemap.groupBlendMode;\n const { pipe_uniforms } = this.adaptor;\n const u_proj_trans = pipe_uniforms.uniforms.u_proj_trans;\n const u_global = this.renderer.globalUniforms._activeUniforms.at(-1).uniforms;\n let anim_frame = this.tileAnim;\n const { u_anim_frame } = pipe_uniforms.uniforms;\n u_global.uProjectionMatrix.copyTo(u_proj_trans).append(u_global.uWorldTransformMatrix).append(tilemap.worldTransform);\n if (tilemap.compositeParent) {\n anim_frame = tilemap.parent.tileAnim || anim_frame;\n }\n u_anim_frame[0] = anim_frame[0];\n u_anim_frame[1] = anim_frame[1];\n pipe_uniforms.update();\n this.adaptor.execute(this, tilemap);\n }\n}\n__publicField(TilemapPipe, \"extension\", {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes\n ],\n name: \"tilemap\"\n});\nfunction createIndicesForQuads(size, outBuffer) {\n const totalIndices = size * 6;\n if (outBuffer.length !== totalIndices) {\n throw new Error(`Out buffer length is incorrect, got ${outBuffer.length} and expected ${totalIndices}`);\n }\n for (let i = 0, j = 0; i < totalIndices; i += 6, j += 4) {\n outBuffer[i + 0] = j + 0;\n outBuffer[i + 1] = j + 1;\n outBuffer[i + 2] = j + 2;\n outBuffer[i + 3] = j + 0;\n outBuffer[i + 4] = j + 2;\n outBuffer[i + 5] = j + 3;\n }\n return outBuffer;\n}\n\nexport { TilemapAdaptor, TilemapPipe };\n//# sourceMappingURL=TilemapPipe.mjs.map\n","import { Buffer, BufferUsage, UniformGroup, Texture, BindGroup } from 'pixi.js';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass TileTextureArray {\n constructor(max_textures) {\n __publicField(this, \"max_textures\");\n __publicField(this, \"arr\", []);\n __publicField(this, \"count\", 0);\n __publicField(this, \"dirty\", false);\n __publicField(this, \"dirty_gpu\", false);\n __publicField(this, \"bind_group\", null);\n __publicField(this, \"bind_group_resources\", {});\n __publicField(this, \"tex_sizes\", null);\n __publicField(this, \"null_color\", new Float32Array([0, 0, 0, 0.5]));\n __publicField(this, \"tex_buf\", null);\n this.max_textures = max_textures;\n this.tex_sizes = new Float32Array(this.max_textures * 4 + 4);\n this.tex_buf = new Buffer({\n usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST\n });\n }\n get length() {\n return this.count;\n }\n push(tex) {\n this.arr[this.count++] = tex;\n this.dirty = true;\n }\n at(ind) {\n return this.arr[ind];\n }\n update() {\n if (!this.dirty) {\n return;\n }\n this.dirty = false;\n this.dirty_gpu = true;\n const { tex_sizes, arr, count, max_textures, null_color } = this;\n for (let i = 0; i < count; i++) {\n const tex = arr[i];\n if (tex) {\n tex_sizes[i * 4] = tex.pixelWidth;\n tex_sizes[i * 4 + 1] = tex.pixelHeight;\n tex_sizes[i * 4 + 2] = 1 / tex.pixelWidth;\n tex_sizes[i * 4 + 3] = 1 / tex.pixelHeight;\n }\n }\n tex_sizes[max_textures * 4] = null_color[0];\n tex_sizes[max_textures * 4 + 1] = null_color[1];\n tex_sizes[max_textures * 4 + 2] = null_color[2];\n tex_sizes[max_textures * 4 + 3] = null_color[3];\n }\n markDirty() {\n this.dirty = true;\n }\n getBindGroup() {\n this.update();\n if (!this.dirty_gpu) {\n return this.bind_group;\n }\n const { bind_group_resources, max_textures, arr, count } = this;\n let bindIndex = 0;\n bind_group_resources[bindIndex++] = new UniformGroup({\n u_texture_size: {\n value: this.tex_sizes,\n type: \"vec4<f32>\",\n size: max_textures\n },\n u_null_color: {\n value: this.null_color,\n type: \"vec4<f32>\"\n }\n });\n for (let i = 0; i < max_textures; i++) {\n const texture = (i < count ? arr[i] : null) || Texture.EMPTY.source;\n bind_group_resources[bindIndex++] = texture.source;\n bind_group_resources[bindIndex++] = texture.style;\n }\n if (!this.bind_group) {\n this.bind_group = new BindGroup(bind_group_resources);\n }\n return this.bind_group;\n }\n static generate_gpu_textures(max_textures) {\n const src = [];\n src.push(`struct TextureArrayFields {`);\n src.push(` u_texture_size: array<vec4f, ${max_textures}>,`);\n src.push(` u_null_color: vec4f`);\n src.push(`}`);\n src.push(`@group(1) @binding(0) var<uniform> taf: TextureArrayFields;`);\n for (let i = 0; i < max_textures; i++) {\n src.push(`@group(1) @binding(${i * 2 + 1}) var u_texture_${i}: texture_2d<f32>;`);\n src.push(`@group(1) @binding(${i * 2 + 2}) var u_sampler_${i}: sampler;`);\n }\n src.push(\"fn sampleMultiTexture(texture_id: i32, uv: vec2f, dx: vec2f, dy: vec2f) -> vec4f {\");\n src.push(`switch texture_id {`);\n for (let i = 0; i < max_textures; i++) {\n src.push(` case ${i}: { return textureSampleGrad(u_texture_${i}, u_sampler_${i}, uv, dx, dy); }`);\n }\n src.push(` default: { return taf.u_null_color; }`);\n src.push(\"} }\");\n return src.join(\"\\n\");\n }\n static generate_gl_textures(max_textures) {\n const src = [];\n src.push(`uniform vec4 u_texture_size[${max_textures + 1}];`);\n src.push(`uniform sampler2D u_textures[${max_textures}];`);\n src.push(`uniform vec4 u_null_color;`);\n src.push(\"vec4 sampleMultiTexture(float texture_id, vec2 uv) {\");\n src.push(`if(texture_id < -0.5) return u_texture_size[${max_textures}];`);\n for (let i = 0; i < max_textures; i++) {\n src.push(`if(texture_id < ${i}.5) return texture(u_textures[${i}], uv * u_texture_size[${i}].zw);`);\n }\n src.push(`return u_texture_size[${max_textures}];`);\n src.push(\"}\");\n return src.join(\"\\n\");\n }\n static gl_gen_resources(max_textures) {\n const sampleValues = [];\n for (let i = 0; i < max_textures; i++) {\n sampleValues[i] = i;\n }\n const samplerSize = [];\n for (let i = 0; i < max_textures; i++) {\n samplerSize.push(2048);\n samplerSize.push(2048);\n samplerSize.push(1 / 2048);\n samplerSize.push(1 / 2048);\n }\n return {\n u_textures: {\n value: sampleValues,\n type: \"i32\",\n size: max_textures\n },\n u_texture_size: {\n value: samplerSize,\n type: \"vec4<f32>\",\n size: max_textures\n }\n };\n }\n}\n\nexport { TileTextureArray };\n//# sourceMappingURL=TileTextureArray.mjs.map\n","import { ExtensionType, Shader, GlProgram, UniformGroup } from 'pixi.js';\nimport { settings } from './settings.mjs';\nimport { TilemapAdaptor } from './TilemapPipe.mjs';\nimport { TileTextureArray } from './TileTextureArray.mjs';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst gl_tilemap_vertex = `\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\nin vec4 aFrame;\nin vec2 aAnim;\nin float aAnimDivisor;\nin float aTextureId;\nin float aAlpha;\n\nuniform mat3 u_proj_trans;\nuniform vec2 u_anim_frame;\n\nout vec2 vTextureCoord;\nout float vTextureId;\nout vec4 vFrame;\nout float vAlpha;\n\nvoid main(void)\n{\n gl_Position = vec4((u_proj_trans * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vec2 animCount = floor((aAnim + 0.5) / 2048.0);\n vec2 animFrameOffset = aAnim - animCount * 2048.0;\n vec2 currentFrame = floor(u_anim_frame / aAnimDivisor);\n vec2 loop_num = floor((currentFrame + 0.5) / animCount);\n vec2 animOffset = animFrameOffset * floor(currentFrame - loop_num * animCount);\n\n vTextureCoord = aTextureCoord + animOffset;\n vFrame = aFrame + vec4(animOffset, animOffset);\n vTextureId = aTextureId;\n vAlpha = aAlpha;\n}\n`;\nconst gl_tilemap_fragment = `\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\nin vec2 vTextureCoord;\nin vec4 vFrame;\nin float vTextureId;\nin float vAlpha;\n\n//include_textures\n\nvoid main(void)\n{\n float textureId = floor(vTextureId + 0.5);\n vec2 textureCoord = clamp(vTextureCoord, vFrame.xy, vFrame.zw);\n vec4 color = sampleMultiTexture(textureId, textureCoord);\n finalColor = color * vAlpha;\n}\n`;\nclass GlTilemapAdaptor extends TilemapAdaptor {\n constructor() {\n super(...arguments);\n __publicField(this, \"_shader\", null);\n __publicField(this, \"max_textures\", settings.TEXTURES_PER_TILEMAP);\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n execute(pipe, tilemap) {\n const renderer = pipe.renderer;\n const shader = this._shader;\n const tileset = tilemap.getTileset();\n const tu = shader.resources.texture_uniforms;\n if (tu.uniforms.u_texture_size !== tileset.tex_sizes) {\n tu.uniforms.u_texture_size = tileset.tex_sizes;\n tu.update();\n }\n for (let i = 0; i < tileset.length; i++) {\n renderer.texture.bind(tileset.arr[i], i);\n }\n renderer.encoder.draw({\n geometry: tilemap.vb,\n shader,\n state: tilemap.state,\n size: tilemap.rects_count * 6\n });\n }\n init() {\n this._shader = new Shader({\n glProgram: GlProgram.from({\n vertex: gl_tilemap_vertex,\n fragment: gl_tilemap_fragment.replace(\n \"//include_textures\",\n TileTextureArray.generate_gl_textures(this.max_textures)\n )\n }),\n resources: {\n texture_uniforms: new UniformGroup(TileTextureArray.gl_gen_resources(this.max_textures), { isStatic: true }),\n pipe_uniforms: this.pipe_uniforms.uniformStructures\n }\n });\n }\n}\n__publicField(GlTilemapAdaptor, \"extension\", {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"tilemap\"\n});\n\nexport { GlTilemapAdaptor };\n//# sourceMappingURL=gl_tilemap.mjs.map\n","import { ExtensionType, Shader, GpuProgram, BindGroup } from 'pixi.js';\nimport { settings } from './settings.mjs';\nimport { TilemapAdaptor } from './TilemapPipe.mjs';\nimport { TileTextureArray } from './TileTextureArray.mjs';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst gpu_tilemap_vertex = `\nstruct GlobalUniforms {\n uProjectionMatrix:mat3x3f,\n uWorldTransformMatrix:mat3x3f,\n uWorldColorAlpha: vec4f,\n uResolution: vec2f,\n}\n\nstruct TilemapUniforms {\n u_proj_trans:mat3x3f,\n u_anim_frame:vec2f\n}\n\n@group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;\n@group(2) @binding(0) var<uniform> loc: TilemapUniforms;\n\nstruct VSOutput {\n @builtin(position) vPosition: vec4f,\n @location(0) @interpolate(flat) vTextureId : i32,\n @location(1) vTextureCoord : vec2f,\n @location(2) @interpolate(flat) vFrame : vec4f,\n @location(3) vAlpha : f32\n};\n\n@vertex\nfn mainVert(\n @location(6) aVertexPosition: vec2f,\n @location(4) aTextureCoord: vec2f,\n @location(3) aFrame: vec4f,\n @location(1) aAnim: vec2f,\n @location(2) aAnimDivisor: f32,\n @location(5) aTextureId: i32,\n @location(0) aAlpha: f32,\n ) -> VSOutput {\n\n var vPosition = vec4((loc.u_proj_trans * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n var animCount = floor((aAnim + 0.5) / 2048.0);\n var animFrameOffset = aAnim - animCount * 2048.0;\n var currentFrame = floor(loc.u_anim_frame / aAnimDivisor);\n var loop_num = floor((currentFrame + 0.5) / animCount);\n var animOffset = animFrameOffset * floor(currentFrame - loop_num * animCount);\n var vTextureCoord = aTextureCoord + animOffset;\n var vFrame = aFrame + vec4(animOffset, animOffset);\n\n return VSOutput(vPosition, aTextureId, vTextureCoord, vFrame, aAlpha);\n};\n`;\nconst gpu_tilemap_fragment = `\n//include_textures\n\n@fragment\nfn mainFrag(\n @location(0) @interpolate(flat) vTextureId : i32,\n @location(1) vTextureCoord : vec2f,\n @location(2) @interpolate(flat) vFrame : vec4f,\n @location(3) vAlpha : f32,\n ) -> @location(0) vec4f {\n var textureCoord = clamp(vTextureCoord, vFrame.xy, vFrame.zw);\n var uv = textureCoord * taf.u_texture_size[vTextureId].zw;\n var dx = dpdx(uv);\n var dy = dpdy(uv);\n var color = sampleMultiTexture(vTextureId, uv, dx, dy);\n return color * vAlpha;\n};\n`;\nclass GpuTilemapAdaptor extends TilemapAdaptor {\n constructor() {\n super(...arguments);\n __publicField(this, \"_shader\", null);\n __publicField(this, \"max_textures\", settings.TEXTURES_PER_TILEMAP);\n __publicField(this, \"bind_group\", null);\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n execute(pipe, tilemap) {\n const renderer = pipe.renderer;\n const shader = this._shader;\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n shader.groups[1] = tilemap.getTileset().getBindGroup();\n shader.groups[2] = this.bind_group;\n renderer.encoder.draw({\n geometry: tilemap.vb,\n shader,\n state: tilemap.state,\n size: tilemap.rects_count * 6\n });\n }\n init() {\n this._shader = new Shader({\n gpuProgram: GpuProgram.from({\n vertex: { source: gpu_tilemap_vertex, entryPoint: \"mainVert\" },\n fragment: {\n source: gpu_tilemap_fragment.replace(\"//include_textures\", TileTextureArray.generate_gpu_textures(this.max_textures))\n }\n })\n });\n this.bind_group = new BindGroup({\n ut: this.pipe_uniforms\n });\n }\n}\n__publicField(GpuTilemapAdaptor, \"extension\", {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"tilemap\"\n});\n\nexport { GpuTilemapAdaptor };\n//# sourceMappingURL=gpu_tilemap.mjs.map\n","import { ViewContainer, State, Bounds, TextureSource, Texture, groupD8 } from 'pixi.js';\nimport { settings } from './settings.mjs';\nimport { TileTextureArray } from './TileTextureArray.mjs';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar POINT_STRUCT = /* @__PURE__ */ ((POINT_STRUCT2) => {\n POINT_STRUCT2[POINT_STRUCT2[\"U\"] = 0] = \"U\";\n POINT_STRUCT2[POINT_STRUCT2[\"V\"] = 1] = \"V\";\n POINT_STRUCT2[POINT_STRUCT2[\"X\"] = 2] = \"X\";\n POINT_STRUCT2[POINT_STRUCT2[\"Y\"] = 3] = \"Y\";\n POINT_STRUCT2[POINT_STRUCT2[\"TILE_WIDTH\"] = 4] = \"TILE_WIDTH\";\n POINT_STRUCT2[POINT_STRUCT2[\"TILE_HEIGHT\"] = 5] = \"TILE_HEIGHT\";\n POINT_STRUCT2[POINT_STRUCT2[\"ROTATE\"] = 6] = \"ROTATE\";\n POINT_STRUCT2[POINT_STRUCT2[\"ANIM_X\"] = 7] = \"ANIM_X\";\n POINT_STRUCT2[POINT_STRUCT2[\"ANIM_Y\"] = 8] = \"ANIM_Y\";\n POINT_STRUCT2[POINT_STRUCT2[\"TEXTURE_INDEX\"] = 9] = \"TEXTURE_INDEX\";\n POINT_STRUCT2[POINT_STRUCT2[\"ANIM_COUNT_X\"] = 10] = \"ANIM_COUNT_X\";\n POINT_STRUCT2[POINT_STRUCT2[\"ANIM_COUNT_Y\"] = 11] = \"ANIM_COUNT_Y\";\n POINT_STRUCT2[POINT_STRUCT2[\"ANIM_DIVISOR\"] = 12] = \"ANIM_DIVISOR\";\n POINT_STRUCT2[POINT_STRUCT2[\"ALPHA\"] = 13] = \"ALPHA\";\n return POINT_STRUCT2;\n})(POINT_STRUCT || {});\nconst POINT_STRUCT_SIZE = Object.keys(POINT_STRUCT).length / 2;\nclass Tilemap extends ViewContainer {\n /**\n * @param tileset - The tileset to use for the tilemap. This can be reset later with {@link Tilemap.setTileset}. The\n * base-textures in this array must not be duplicated.\n */\n constructor(tileset) {\n super({});\n // TODO: make default color work\n /**\n * Currently doesnt work.\n */\n __publicField(this, \"shadowColor\", new Float32Array([0, 0, 0, 0.5]));\n __publicField(this, \"state\", State.for2d());\n __publicField(this, \"is_valid\", false);\n __publicField(this, \"renderPipeId\", \"tilemap\");\n __publicField(this, \"canBundle\", true);\n __publicField(this, \"_instruction\", {\n renderPipeId: \"tilemap\",\n tilemap: this\n });\n /**\n * The tile animation frame.\n *\n * @see CompositeTilemap.tileAnim\n */\n __publicField(this, \"tileAnim\", null);\n /**\n * This is the last uploaded size of the tilemap geometry.\n * @ignore\n */\n __publicField(this, \"rects_count\", 0);\n /** @ignore */\n __publicField(this, \"compositeParent\", false);\n /**\n * The list of base-textures being used in the tilemap.\n *\n * This should not be shuffled after tiles have been added into this tilemap. Usually, only tile textures\n * should be added after tiles have been added into the map.\n */\n __publicField(this, \"tileset\", new TileTextureArray(settings.TEXTURES_PER_TILEMAP));\n /**\n * The local bounds of the tilemap itself. This does not include DisplayObject children.\n */\n __publicField(this, \"tilemapBounds\", new Bounds());\n /** Flags whether any animated tile was added. */\n __publicField(this, \"hasAnimatedTile\", false);\n /** The interleaved geometry of the tilemap. */\n __publicField(this, \"pointsBuf\", []);\n __publicField(this, \"batched\");\n __publicField(this, \"vbId\", 0);\n __publicField(this, \"vb\", null);\n __publicField(this, \"vbBuffer\", null);\n __publicField(this, \"vbArray\", null);\n __publicField(this, \"vbInts\", null);\n this.setTileset(tileset);\n }\n /**\n * @internal\n * @ignore\n */\n checkValid() {\n const v = this.tileset.count > 0 && this.pointsBuf.length > 0;\n const res = this.is_valid !== v;\n this.is_valid = v;\n return res !== v;\n }\n updateBounds() {\n const bounds = this.tilemapBounds;\n this._bounds.minX = bounds.minX;\n this._bounds.maxX = bounds.maxX;\n this._bounds.minY = bounds.minY;\n this._bounds.maxY = bounds.maxY;\n }\n /**\n * @returns The tileset of this tilemap.\n */\n getTileset() {\n return this.tileset;\n }\n /**\n * Define the tileset used by the tilemap.\n *\n * @param textureOrArray - The list of textures to use in the tilemap. If a base-texture (not array) is passed, it will\n * be wrapped into an array. This should not contain any duplicates.\n */\n setTileset(textureOrArray = []) {\n let ts = this.tileset;\n if (textureOrArray instanceof TileTextureArray) {\n this.tileset = textureOrArray;\n this.didViewUpdate = true;\n } else if (textureOrArray instanceof TextureSource) {\n if (ts.count === 1 && ts.arr[0] === textureOrArray) {\n return this;\n }\n ts = this.tileset = new TileTextureArray(settings.TEXTURES_PER_TILEMAP);\n ts.push(textureOrArray);\n this.didViewUpdate = true;\n } else {\n if (textureOrArray.length === ts.count) {\n let flag = true;\n for (let i = 0; i < textureOrArray.length; i++) {\n if (textureOrArray[i]?.source !== ts.arr[i]) {\n flag = false;\n break;\n }\n }\n if (flag) {\n return this;\n }\n }\n ts = this.tileset = new TileTextureArray(settings.TEXTURES_PER_TILEMAP);\n for (let i = 0; i < textureOrArray.length; i++) {\n ts.push(textureOrArray[i]?.source);\n }\n this.didViewUpdate = true;\n }\n return this;\n }\n /** Clears all the tiles added into this tilemap. */\n clear() {\n this.pointsBuf.length = 0;\n this.rects_count = 0;\n this.tilemapBounds.clear();\n this.hasAnimatedTile = false;\n return this;\n }\n /**\n * Adds a tile that paints the given texture at (x, y).\n *\n * @param tileTexture - The tiling texture to render.\n * @param x - The local x-coordinate of the tile's position.\n * @param y - The local y-coordinate of the tile's position.\n * @param options - Additional tile options.\n * @param [options.u=texture.frame.x] - The x-coordinate of the texture in its base-texture's space.\n * @param [options.v=texture.frame.y] - The y-coordinate of the texture in its base-texture's space.\n * @param [options.tileWidth=texture.orig.width] - The local width of the tile.\n * @param [options.tileHeight=texture.orig.height] - The local height of the tile.\n * @param [options.animX=0] - For animated tiles, this is the \"offset\" along the x-axis for adjacent\n * animation frame textures in the base-texture.\n * @param [options.animY=0] - For animated tiles, this is the \"offset\" along the y-axis for adjacent\n * animation frames textures in the base-texture.\n * @param [options.rotate=0]\n * @param [options.animCountX=1024] - For animated tiles, this is the number of animation frame textures\n * per row.\n * @param [options.animCountY=1024] - For animated tiles, this is the number of animation frame textures\n * per column.\n * @param [options.animDivisor=1] - For animated tiles, this is the animation duration of each frame\n * @param [options.alpha=1] - Tile alpha\n * @return This tilemap, good for chaining.\n */\n tile(tileTexture, x, y, options = {}) {\n this.didViewUpdate = true;\n let baseTexture;\n let textureIndex = -1;\n let was_num = false;\n if (typeof tileTexture === \"number\") {\n textureIndex = tileTexture;\n was_num = true;\n baseTexture = this.tileset.arr[textureIndex];\n } else {\n let texture;\n if (typeof tileTexture === \"string\") {\n texture = Texture.from(tileTexture);\n } else {\n texture = tileTexture;\n }\n const textureList = this.tileset;\n for (let i = 0; i < textureList.count; i++) {\n if (textureList.arr[i] === texture.source) {\n textureIndex = i;\n break;\n }\n }\n if (\"frame\" in texture) {\n options.u = options.u ?? texture.frame.x;\n options.v = options.v ?? texture.frame.y;\n options.tileWidth = options.tileWidth ?? texture.orig.width;\n options.tileHeight = options.tileHeight ?? texture.orig.height;\n }\n baseTexture = texture.source;\n }\n if (!was_num && !baseTexture) {\n console.error(\"The tile texture was not found in the tilemap tileset.\");\n return this;\n }\n const {\n u = 0,\n v = 0,\n tileWidth = baseTexture.width,\n tileHeight = baseTexture.height,\n animX = 0,\n animY = 0,\n rotate = 0,\n animCountX = 1024,\n animCountY = 1024,\n animDivisor = 1,\n alpha = 1\n } = options;\n const pb = this.pointsBuf;\n this.hasAnimatedTile = this.hasAnimatedTile || animX > 0 || animY > 0;\n pb.push(u);\n pb.push(v);\n pb.push(x);\n pb.push(y);\n pb.push(tileWidth);\n pb.push(tileHeight);\n pb.push(rotate);\n pb.push(animX | 0);\n pb.push(animY | 0);\n pb.push(textureIndex);\n pb.push(animCountX);\n pb.push(animCountY);\n pb.push(animDivisor);\n pb.push(alpha);\n this.tilemapBounds.addFrame(x, y, x + tileWidth, y + tileHeight);\n return this;\n }\n /** Changes the rotation of the last tile. */\n tileRotate(rotate) {\n const pb = this.pointsBuf;\n pb[pb.length - (POINT_STRUCT_SIZE - 9 /* TEXTURE_INDEX */)] = rotate;\n }\n /** Changes the `animX`, `animCountX` of the last tile. */\n tileAnimX(offset, count) {\n const pb = this.pointsBuf;\n pb[pb.length - (POINT_STRUCT_SIZE - 7 /* ANIM_X */)] = offset;\n pb[pb.length - (POINT_STRUCT_SIZE - 10 /* ANIM_COUNT_X */)] = count;\n }\n /** Changes the `animY`, `animCountY` of the last tile. */\n tileAnimY(offset, count) {\n const pb = this.pointsBuf;\n pb[pb.length - (POINT_STRUCT_SIZE - 8 /* ANIM_Y */)] = offset;\n pb[pb.length - (POINT_STRUCT_SIZE - 11 /* ANIM_COUNT_Y */)] = count;\n }\n /** Changes the `animDivisor` value of the last tile. */\n tileAnimDivisor(divisor) {\n const pb = this.pointsBuf;\n pb[pb.length - (POINT_STRUCT_SIZE - 12 /* ANIM_DIVISOR */)] = divisor;\n }\n tileAlpha(alpha) {\n const pb = this.pointsBuf;\n pb[pb.length - (POINT_STRUCT_SIZE - 13 /* ALPHA */)] = alpha;\n }\n destroyVb() {\n if (this.vb) {\n this.vb.destroy();\n this.vb = null;\n }\n }\n updateBuffer(plugin) {\n const points = this.pointsBuf;\n const rects_count = points.length / POINT_STRUCT_SIZE;\n let vb = this.vb;\n if (this.tileset.count === 0 || rects_count === 0 || this.rects_count === rects_count && vb) {\n return;\n }\n this.rects_count = rects_count;\n if (!vb) {\n vb = plugin.createVb();\n this.vb = vb;\n this.vbId = vb.id;\n this.vbBuffer = null;\n }\n const vertices = rects_count * vb.vertPerQuad;\n plugin.checkIndexBuffer(rects_count);\n const vertexBuf = vb.getBuffer(\"aVertexPosition\");\n const vs = vb.stride * vertices;\n if (!this.vbBuffer || this.vbBuffer.byteLength < vs) {\n let bk = vb.stride;\n while (bk < vs) {\n bk *= 2;\n }\n this.vbBuffer = new ArrayBuffer(bk);\n this.vbArray = new Float32Array(this.vbBuffer);\n this.vbInts = new Uint32Array(this.vbBuffer);\n }\n const arr = this.vbArray;\n const ints = this.vbInts;\n let sz = 0;\n let textureId = 0;\n for (let i = 0; i < points.length; i += POINT_STRUCT_SIZE) {\n const eps = 0.5;\n if (this.compositeParent) {\n textureId = points[i + 9 /* TEXTURE_INDEX */];\n }\n const x = points[i + 2 /* X */];\n const y = points[i + 3 /* Y */];\n const w = points[i + 4 /* TILE_WIDTH */];\n const h = points[i + 5 /* TILE_HEIGHT */];\n const u = points[i + 0 /* U */];\n const v = points[i + 1 /* V */];\n let rotate = points[i + 6 /* ROTATE */];\n const animX = points[i + 7 /* ANIM_X */];\n const animY = points[i + 8 /* ANIM_Y */];\n const animWidth = points[i + 10 /* ANIM_COUNT_X */] || 1024;\n const animHeight = points[i + 11 /* ANIM_COUNT_Y */] || 1024;\n const animXEncoded = animX + animWidth * 2048;\n const animYEncoded = animY + animHeight * 2048;\n const animDivisor = points[i + 12 /* ANIM_DIVISOR */];\n const alpha = points[i + 13 /* ALPHA */];\n let u0;\n let v0;\n let u1;\n let v1;\n let u2;\n let v2;\n let u3;\n let v3;\n if (rotate === 0) {\n u0 = u;\n v0 = v;\n u1 = u + w;\n v1 = v;\n u2 = u + w;\n v2 = v + h;\n u3 = u;\n v3 = v + h;\n } else {\n let w2 = w / 2;\n let h2 = h / 2;\n if (rotate % 4 !== 0) {\n w2 = h / 2;\n h2 = w / 2;\n }\n const cX = u + w2;\n const cY = v + h2;\n rotate = groupD8.add(rotate, groupD8.NW);\n u0 = cX + w2 * groupD8.uX(rotate);\n v0 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n u1 = cX + w2 * groupD8.uX(rotate);\n v1 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n u2 = cX + w2 * groupD8.uX(rotate);\n v2 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n u3 = cX + w2 * groupD8.uX(rotate);\n v3 = cY + h2 * groupD8.uY(rotate);\n }\n arr[sz++] = x;\n arr[sz++] = y;\n arr[sz++] = u0;\n arr[sz++] = v0;\n arr[sz++] = u + eps;\n arr[sz++] = v + eps;\n arr[sz++] = u + w - eps;\n arr[sz++] = v + h - eps;\n arr[sz++] = animXEncoded;\n arr[sz++] = animYEncoded;\n ints[sz++] = textureId;\n arr[sz++] = animDivisor;\n arr[sz++] = alpha;\n arr[sz++] = x + w;\n arr[sz++] = y;\n arr[sz++] = u1;\n arr[sz++] = v1;\n arr[sz++] = u + eps;\n arr[sz++] = v + eps;\n arr[sz++] = u + w - eps;\n arr[sz++] = v + h - eps;\n arr[sz++] = animXEncoded;\n arr[sz++] = animYEncoded;\n ints[sz++] = textureId;\n arr[sz++] = animDivisor;\n arr[sz++] = alpha;\n arr[sz++] = x + w;\n arr[sz++] = y + h;\n arr[sz++] = u2;\n arr[sz++] = v2;\n arr[sz++] = u + eps;\n arr[sz++] = v + eps;\n arr[sz++] = u + w - eps;\n arr[sz++] = v + h - eps;\n arr[sz++] = animXEncoded;\n arr[sz++] = animYEncoded;\n ints[sz++] = textureId;\n arr[sz++] = animDivisor;\n arr[sz++] = alpha;\n arr[sz++] = x;\n arr[sz++] = y + h;\n arr[sz++] = u3;\n arr[sz++] = v3;\n arr[sz++] = u + eps;\n arr[sz++] = v + eps;\n arr[sz++] = u + w - eps;\n arr[sz++] = v + h - eps;\n arr[sz++] = animXEncoded;\n arr[sz++] = animYEncoded;\n ints[sz++] = textureId;\n arr[sz++] = animDivisor;\n arr[sz++] = alpha;\n }\n vertexBuf.data = arr;\n }\n /**\n * @internal\n * @ignore\n */\n isModified(anim) {\n if (this.rects_count * POINT_STRUCT_SIZE !== this.pointsBuf.length || anim && this.hasAnimatedTile) {\n return true;\n }\n return false;\n }\n /**\n * This will pull forward the modification marker.\n *\n * @internal\n * @ignore\n */\n clearModify() {\n this.rects_count = this.pointsBuf.length / POINT_STRUCT_SIZE;\n }\n addBounds(bounds) {\n const _bounds = this.tilemapBounds;\n bounds.addFrame(_bounds.minX, _bounds.minY, _bounds.maxX, _bounds.maxY);\n }\n get bounds() {\n return this.tilemapBounds;\n }\n /** @override */\n destroy(options) {\n super.destroy(options);\n this.destroyVb();\n }\n /**\n * Deprecated signature for {@link Tilemap.tile tile}.\n *\n * @deprecated Since @pixi/tilemap 3.\n */\n addFrame(texture, x, y, animX, animY) {\n this.tile(\n texture,\n x,\n y,\n {\n animX,\n animY\n }\n );\n return true;\n }\n /**\n * Deprecated signature for {@link Tilemap.tile tile}.\n *\n * @deprecated Since @pixi/tilemap 3.\n */\n // eslint-disable-next-line max-params\n addRect(textureIndex, u, v, x, y, tileWidth, tileHeight, animX = 0, animY = 0, rotate = 0, animCountX = 1024, animCountY = 1024, animDivisor = 1, alpha = 1) {\n return this.tile(\n textureIndex,\n x,\n y,\n {\n u,\n v,\n tileWidth,\n tileHeight,\n animX,\n animY,\n rotate,\n animCountX,\n animCountY,\n animDivisor,\n alpha\n }\n );\n }\n}\n\nexport { POINT_STRUCT_SIZE, Tilemap };\n//# sourceMappingURL=Tilemap.mjs.map\n","import { Container, Texture } from 'pixi.js';\nimport { settings } from './settings.mjs';\nimport { Tilemap } from './Tilemap.mjs';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass CompositeTilemap extends Container {\n // private shadowColor = new Float32Array([0.0, 0.0, 0.0, 0.5]);\n /**\n * @param tileset - A list of tile base-textures that will be used to eagerly initialized the layered\n * tilemaps. This is only an performance optimization, and using {@link CompositeTilemap.tile tile}\n * will work equivalently.\n */\n constructor(tileset) {\n super();\n /** The hard limit on the number of tile textures used in each tilemap. */\n __publicField(this, \"texturesPerTilemap\");\n /**\n * The animation frame vector.\n *\n * Animated tiles have four parameters - `animX`, `animY`, `animCountX`, `animCountY`. The textures\n * of adjacent animation frames are at offset `animX` or `animY` of each other, with `animCountX` per\n * row and `animCountY` per column.\n *\n * The animation frame vector specifies which animation frame texture to use. If the x/y coordinate is\n * larger than the `animCountX` or `animCountY` for a specific tile, the modulus is taken.\n */\n __publicField(this, \"tileAnim\", null);\n /** The last modified tilemap. */\n __publicField(this, \"lastModifiedTilemap\", null);\n __publicField(this, \"modificationMarker\", 0);\n /**\n * Alias for {@link CompositeTilemap.tileset tileset}.\n *\n * @deprecated Since @pixi/tilemap 3.\n */\n __publicField(this, \"setBitmaps\", this.tileset);\n this.texturesPerTilemap = settings.TEXTURES_PER_TILEMAP;\n this.tileset(tileset);\n }\n /**\n * This will preinitialize the tilesets of the layered tilemaps.\n *\n * If used after a tilemap has been created (or a tile added), this will overwrite the tile textures of the\n * existing tilemaps. Passing the tileset to the constructor instead is the best practice.\n *\n * @param tileTextures - The list of tile textures that make up the tileset.\n */\n tileset(tileTextures) {\n if (!tileTextures) {\n tileTextures = [];\n }\n const texPerChild = this.texturesPerTilemap;\n const len1 = this.children.length;\n const len2 = Math.ceil(tileTextures.length / texPerChild);\n for (let i = 0; i < Math.min(len1, len2); i++) {\n this.children[i].setTileset(\n tileTextures.slice(i * texPerChild, (i + 1) * texPerChild)\n );\n }\n for (let i = len1; i < len2; i++) {\n const tilemap = new Tilemap(tileTextures.slice(i * texPerChild, (i + 1) * texPerChild));\n tilemap.compositeParent = true;\n this.addChild(tilemap);\n }\n return this;\n }\n /** Clears the tilemap composite. */\n clear() {\n for (let i = 0; i < this.children.length; i++) {\n this.children[i].clear();\n }\n this.modificationMarker = 0;\n return this;\n }\n /** Changes the rotation of the last added tile. */\n tileRotate(rotate) {\n if (this.lastModifiedTilemap) {\n this.lastModifiedTilemap.tileRotate(rotate);\n }\n return this;\n }\n /** Changes `animX`, `animCountX` of the last added tile. */\n tileAnimX(offset, count) {\n if (this.lastModifiedTilemap) {\n this.lastModifiedTilemap.tileAnimX(offset, count);\n }\n return this;\n }\n /** Changes `animY`, `animCountY` of the last added tile. */\n tileAnimY(offset, count) {\n if (this.lastModifiedTilemap) {\n this.lastModifiedTilemap.tileAnimY(offset, count);\n }\n return this;\n }\n /** Changes `tileAnimDivisor` value of the last added tile. */\n tileAnimDivisor(divisor) {\n if (this.lastModifiedTilemap) {\n this.lastModifiedTilemap.tileAnimDivisor(divisor);\n }\n return this;\n }\n /**\n * Adds a tile that paints the given tile texture at (x, y).\n *\n * @param tileTexture - The tile texture. You can pass an index into the composite tilemap as well.\n * @param x - The local x-coordinate of the tile's location.\n * @param y - The local y-coordinate of the tile's location.\n * @param options - Additional options to pass to {@link Tilemap.tile}.\n * @param [options.u=texture.frame.x] - The x-coordinate of the texture in its base-texture's space.\n * @param [options.v=texture.frame.y] - The y-coordinate of the texture in its base-texture's space.\n * @param [options.tileWidth=texture.orig.width] - The local width of the tile.\n * @param [options.tileHeight=texture.orig.height] - The local height of the tile.\n * @param [options.animX=0] - For animated tiles, this is the \"offset\" along the x-axis for adjacent\n * animation frame textures in the base-texture.\n * @param [options.animY=0] - For animated tiles, this is the \"offset\" along the y-axis for adjacent\n * animation frames textures in the base-texture.\n * @param [options.rotate=0]\n * @param [options.animCountX=1024] - For animated tiles, this is the number of animation frame textures\n * per row.\n * @param [options.animCountY=1024] - For animated tiles, this is the number of animation frame textures\n * per column.\n * @param [options.animDivisor=1] - For animated tiles, this is the animation duration each frame\n * @param [options.alpha=1] - Tile alpha\n * @return This tilemap, good for chaining.\n */\n tile(tileTexture, x, y, options = {}) {\n let tilemap = null;\n const children = this.children;\n this.lastModifiedTilemap = null;\n if (typeof tileTexture === \"number\") {\n const childIndex = tileTexture / this.texturesPerTilemap >> 0;\n let tileIndex = 0;\n tilemap = children[childIndex];\n if (!tilemap) {\n tilemap = children[0];\n if (!tilemap)\n return this;\n tileIndex = 0;\n } else {\n tileIndex = tileTexture % this.texturesPerTilemap;\n }\n tilemap.tile(\n tileIndex,\n x,\n y,\n options\n );\n } else {\n if (typeof tileTexture === \"string\") {\n tileTexture = Texture.from(tileTexture);\n }\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const tex = child.getTileset().arr;\n for (let j = 0; j < tex.length; j++) {\n if (tex[j] === tileTexture.source) {\n tilemap = child;\n break;\n }\n }\n if (tilemap) {\n break;\n }\n }\n if (!tilemap) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (child.getTileset().count < this.texturesPerTilemap) {\n tilemap = child;\n child.getTileset().push(tileTexture.source);\n break;\n }\n }\n if (!tilemap) {\n tilemap = new Tilemap(tileTexture.source);\n tilemap.compositeParent = true;\n this.addChild(tilemap);\n }\n }\n tilemap.tile(\n tileTexture,\n x,\n y,\n options\n );\n }\n this.lastModifiedTilemap = tilemap;\n return this;\n }\n /**\n * @internal\n * @ignore\n */\n isModified(anim) {\n const layers = this.children;\n if (this.modificationMarker !== layers.length) {\n return true;\n }\n for (let i = 0; i < layers.length; i++) {\n if (layers[i].isModified(anim)) {\n return true;\n }\n }\n return false;\n }\n /**\n * @internal\n * @ignore\n */\n clearModify() {\n const layers = this.children;\n this.modificationMarker = layers.length;\n for (let i = 0; i < layers.length; i++) {\n layers[i].clearModify();\n }\n }\n /**\n * @deprecated Since @pixi/tilemap 3.\n * @see CompositeTilemap.tile\n */\n addFrame(texture, x, y, animX, animY, animWidth, animHeight, animDivisor, alpha) {\n return this.tile(\n texture,\n x,\n y,\n {\n animX,\n animY,\n animCountX: animWidth,\n animCountY: animHeight,\n animDivisor,\n alpha\n }\n );\n }\n /**\n * @deprecated @pixi/tilemap 3\n * @see CompositeTilemap.tile\n */\n // eslint-disable-next-line max-params\n addRect(textureIndex, u, v, x, y, tileWidth, tileHeight, animX, animY, rotate, animWidth, animHeight) {\n const childIndex = textureIndex / this.texturesPerTilemap >> 0;\n const textureId = textureIndex % this.texturesPerTilemap;\n if (this.children[childIndex] && this.children[childIndex].getTileset().count > 0) {\n this.lastModifiedTilemap = this.children[childIndex];\n this.lastModifiedTilemap.addRect(\n textureId,\n u,\n v,\n x,\n y,\n tileWidth,\n tileHeight,\n animX,\n animY,\n rotate,\n animWidth,\n animHeight\n );\n } else {\n this.lastModifiedTilemap = null;\n }\n return this;\n }\n /**\n * @deprecated Since @pixi/tilemap 3.\n * @readonly\n * @see CompositeTilemap.texturesPerTilemap\n */\n get texPerChild() {\n return this.texturesPerTilemap;\n }\n}\n\nexport { CompositeTilemap };\n//# sourceMappingURL=CompositeTilemap.mjs.map\n","import { extensions } from 'pixi.js';\nimport { GlTilemapAdaptor } from './gl_tilemap.mjs';\nimport { GpuTilemapAdaptor } from './gpu_tilemap.mjs';\nimport { TilemapPipe } from './TilemapPipe.mjs';\nexport { TilemapAdaptor } from './TilemapPipe.mjs';\nexport { CompositeTilemap } from './CompositeTilemap.mjs';\nexport { Constant, settings } from './settings.mjs';\nexport { POINT_STRUCT_SIZE, Tilemap } from './Tilemap.mjs';\nexport { TilemapGeometry } from './TilemapGeometry.mjs';\n\nextensions.add(TilemapPipe);\nextensions.add(GlTilemapAdaptor);\nextensions.add(GpuTilemapAdaptor);\n\nexport { TilemapPipe };\n//# sourceMappingURL=index.mjs.map\n","import { CompositeTilemap } from \"@pixi/tilemap\";\nimport { Tile as TiledTileClass } from '@rpgjs/tiled';\nimport { AnimatedSprite, Texture, groupD8 } from \"pixi.js\";\nimport { TileSet } from \"./TileSet\";\n\nexport class Tile extends AnimatedSprite {\n static getTextures(tile: TiledTileClass, tileSet: TileSet) {\n const textures: Texture[] = [];\n\n if (tile.animations && tile.animations.length) {\n tile.animations.forEach(frame => {\n textures.push(tileSet.textures[frame.tileid])\n });\n } else {\n textures.push(tileSet.textures[tile.gid - tileSet.firstgid])\n }\n\n return textures;\n }\n\n animations: { tileid: number, duration: number }[] = []\n _x: number = 0\n _y: number = 0\n pointsBufIndex: number\n properties: any = {}\n\n constructor(\n private tile: TiledTileClass,\n private tileSet: TileSet\n ) {\n super(Tile.getTextures(tile, tileSet));\n this.animations = tile.animations || []\n this.properties = tile.properties\n this.textures = Tile.getTextures(tile, tileSet)\n this.texture = this.textures[0] as Texture\n this.flip()\n }\n\n get z() {\n return this.properties.z ?? 0\n }\n\n get gid() {\n return this.tile.gid\n }\n\n setAnimation(frame: CompositeTilemap) {\n const size = this.animations.length\n if (size > 1) {\n const offset = (this.animations[1].tileid - this.animations[0].tileid) * this.width\n frame.tileAnimX(offset, size)\n }\n }\n\n flip() {\n let symmetry\n let i = 0\n const add = (symmetrySecond) => {\n i++\n if (symmetry) symmetry = groupD8.add(symmetry, symmetrySecond)\n else symmetry = symmetrySecond\n }\n\n if (this.tile.horizontalFlip) {\n add(groupD8.MIRROR_HORIZONTAL)\n }\n\n if (this.tile.verticalFlip) {\n add(groupD8.MIRROR_VERTICAL)\n }\n\n if (this.tile.diagonalFlip) {\n if (i % 2 == 0) {\n add(groupD8.MAIN_DIAGONAL)\n }\n else {\n add(groupD8.REVERSE_DIAGONAL)\n }\n }\n\n //if (symmetry) this.texture.rotate = symmetry\n }\n}","import {\n CompositeTilemap,\n POINT_STRUCT_SIZE,\n Tilemap,\n settings,\n} from \"@canvasengine/tilemap\";\nimport { Layer, Tile as TileClass } from \"@canvasengine/tiled\";\nimport {\n createComponent,\n registerComponent,\n DisplayObject,\n Signal,\n} from \"canvasengine\";\nimport { Tile } from \"./Tile\";\nimport { TileSet } from \"./TileSet\";\nimport { Subscription } from \"rxjs\";\n\nsettings.use32bitIndex = true;\n\nexport class CanvasTileLayer extends DisplayObject(CompositeTilemap) {\n private _tiles: any = {};\n tiles: (TileClass | null)[];\n private _layer: any; // TODO: fix this, remove any. replace with Layer\n private frameTile: number = 0;\n private frameRateAnimation: number = 10;\n private subscriptionTick: Subscription;\n\n static findTileSet(gid: number, tileSets: TileSet[]) {\n let tileset: TileSet | undefined;\n for (let i = tileSets.length - 1; i >= 0; i--) {\n tileset = tileSets[i];\n if (tileset.firstgid && tileset.firstgid <= gid) {\n break;\n }\n }\n return tileset;\n }\n\n /** @internal */\n createTile(x: number, y: number, options: any = {}): Tile | undefined {\n const { real, filter } = options;\n const { tilewidth, tileheight, width } = this._layer;\n if (real) {\n x = Math.floor(x / tilewidth);\n y = Math.floor(y / tileheight);\n }\n const i = x + y * width;\n const tiledTile = this._layer.getTileByIndex(i);\n\n if (!tiledTile || (tiledTile && tiledTile.gid == 0)) return;\n\n const tileset = CanvasTileLayer.findTileSet(tiledTile.gid, this.tileSets);\n\n if (!tileset) return;\n\n const tile = new Tile(tiledTile, tileset);\n\n tile.x = x * tilewidth;\n tile.y = y * tileheight + (tileheight - tile.texture.height);\n\n tile._x = x;\n tile._y = y;\n\n if (tileset.tileoffset) {\n tile.x += tileset.tileoffset.x ?? 0;\n tile.y += tileset.tileoffset.y ?? 0;\n }\n\n if (filter) {\n const ret = filter(tile);\n if (!ret) return;\n }\n\n return tile;\n }\n\n private _addFrame(tile: Tile, x: number, y: number) {\n const frame = this.tile(tile.texture, tile.x, tile.y, {\n rotate: tile.texture.rotate,\n });\n // const pb = this.pointsBuf\n // if (!pb) return null\n // tile.pointsBufIndex = pb.length - POINT_STRUCT_SIZE\n tile.setAnimation(frame);\n this._tiles[x + \";\" + y] = tile;\n }\n\n async onMount(args) {\n const { props } = args;\n\n this.tileSets = props.tilesets;\n this._layer = new Layer(\n {\n ...props,\n },\n this.tileSets\n );\n\n const tick: Signal = props.context.tick;\n\n this.subscriptionTick = tick.observable.subscribe(({ value }) => {\n if (value.frame % this.frameRateAnimation == 0) {\n this.tileAnim = [this.frameTile, this.frameTile];\n this.frameTile++\n }\n });\n\n super.onMount(args);\n }\n\n onUpdate(props) {\n super.onUpdate(props);\n if (!this.isMounted) return;\n if (props.tileheight) this._layer.tileheight = props.tileheight;\n if (props.tilewidth) this._layer.tilewidth = props.tilewidth;\n if (props.width) this._layer.width = props.width;\n if (props.height) this._layer.height = props.height;\n if (props.parallaxX) this._layer.parallaxX = props.parallaxx;\n if (props.parallaxY) this._layer.parallaxY = props.parallaxy;\n\n this.removeChildren();\n\n for (let y = 0; y < this._layer.height; y++) {\n for (let x = 0; x < this._layer.width; x++) {\n const tile = this.createTile(x, y);\n if (tile) {\n this._addFrame(tile, x, y);\n }\n }\n }\n }\n\n async onDestroy(parent: any) {\n this.subscriptionTick.unsubscribe();\n await super.onDestroy(parent);\n }\n}\n\n// @ts-ignore\nexport interface CanvasTileLayer extends CompositeTilemap {}\n\nregisterComponent(\"CompositeTileLayer\", CanvasTileLayer);\n\nexport function CompositeTileLayer(props) {\n return createComponent(\"CompositeTileLayer\", props);\n}\n","import { TiledTileset, Tileset as TiledTilesetClass } from \"@canvasengine/tiled\";\nimport { Assets, Rectangle, Texture } from \"pixi.js\";\n\nexport class TileSet extends TiledTilesetClass {\n public textures: Texture[] = [];\n private tileGroups = {};\n\n constructor(tileSet: TiledTileset) {\n super(tileSet);\n }\n\n loadGroup() {\n // for (let tile of this.tileset.tiles) {\n // }\n }\n\n /** @internal */\n async load(image: string) {\n const texture = await Assets.load(image);\n for (\n let y = this.margin;\n y < this.image.height;\n y += this.tileheight + this.spacing\n ) {\n for (\n let x = this.margin;\n x < this.image.width;\n x += this.tilewidth + this.spacing\n ) {\n this.textures.push(\n new Texture({\n source: texture.source,\n frame: new Rectangle(+x, +y, +this.tilewidth, +this.tileheight),\n })\n );\n }\n }\n this.loadGroup();\n return this;\n }\n}\n","import { TiledLayer, TiledLayerType, TiledMap, TiledParserFile, TiledTileset } from \"@canvasengine/tiled\"\nimport { loop, h, Container, TilingSprite, useProps, effect, signal } from \"canvasengine\"\nimport { CompositeTileLayer } from \"./TileLayer\"\nimport { TileSet } from \"./TileSet\"\n\n/**\n * Reorganizes tile layers based on the z property of tiles\n * \n * This function analyzes each tile in the layer data and groups them by their z property.\n * If a tile has a z property different from 0, it creates new layers for each z value.\n * \n * @param {TiledLayer[]} originalLayers - The original layers from the tilemap\n * @param {TileSet[]} tilesets - Array of loaded tilesets\n * @param {TiledMap} mapData - The complete map data\n * @returns {TiledLayer[]} - Reorganized layers with tiles grouped by z property\n * \n * @example\n * ```typescript\n * const reorganizedLayers = reorganizeLayersByTileZ(mapData.layers, tilesets, mapData);\n * ```\n */\nfunction reorganizeLayersByTileZ(originalLayers: TiledLayer[], tilesets: TileSet[], mapData: TiledMap): TiledLayer[] {\n const reorganizedLayers: TiledLayer[] = [];\n \n for (const layer of originalLayers) {\n if (layer.type !== TiledLayerType.Tile) {\n // Keep non-tile layers as they are\n reorganizedLayers.push(layer);\n continue;\n }\n\n // Group tiles by their z property\n const layersByZ = new Map<number, number[]>();\n \n // Initialize empty arrays for all z values we'll find\n // Don't pre-populate with original data anymore\n \n // Ensure layer data is number array\n let layerData: number[];\n if (Array.isArray(layer.data)) {\n layerData = layer.data.map(gid => {\n if (typeof gid === 'number') {\n return gid;\n } else {\n return parseInt(String(gid), 10);\n }\n });\n } else {\n // If data is a string, it might be compressed - for now, skip this layer\n reorganizedLayers.push(layer);\n continue;\n }\n \n let tilesProcessed = 0;\n let tilesWithZ = 0;\n \n // Analyze each tile in the layer\n for (let i = 0; i < layerData.length; i++) {\n const gid = layerData[i];\n \n if (gid === 0) continue; // Empty tile\n \n tilesProcessed++;\n \n // Find the corresponding tileset\n let tileset: TileSet | undefined;\n for (let j = tilesets.length - 1; j >= 0; j--) {\n if (tilesets[j].firstgid && tilesets[j].firstgid <= gid) {\n tileset = tilesets[j];\n break;\n }\n }\n \n if (!tileset) {\n // If no tileset found, put tile in z=0 layer\n if (!layersByZ.has(0)) {\n layersByZ.set(0, new Array(layerData.length).fill(0));\n }\n layersByZ.get(0)![i] = gid;\n continue;\n }\n \n // Get tile properties from tileset\n const localTileId = gid - tileset.firstgid;\n // @ts-ignore\n const tileProperties = tileset.tileset.tiles?.[localTileId]?.properties;\n const zValue = tileProperties?.z ?? 0;\n \n // Count tiles with explicit z property\n if (tileProperties?.z !== undefined) {\n tilesWithZ++;\n }\n \n // Create or get the layer for this z value\n if (!layersByZ.has(zValue)) {\n layersByZ.set(zValue, new Array(layerData.length).fill(0));\n }\n \n // Place tile in the appropriate z layer\n layersByZ.get(zValue)![i] = gid;\n }\n \n // Create layers for each z value, ensuring z=0 comes first\n const sortedZValues = Array.from(layersByZ.keys()).sort((a, b) => a - b);\n \n for (const zValue of sortedZValues) {\n const layerDataForZ = layersByZ.get(zValue)!;\n \n // Only create layer if it has tiles\n if (layerDataForZ.some(gid => gid !== 0)) {\n const newLayer = {\n ...layer,\n name: `${layer.name}_z${zValue}`, // Always add _z suffix\n data: layerDataForZ,\n properties: {\n ...layer.properties,\n z: zValue\n }\n };\n \n reorganizedLayers.push(newLayer);\n }\n }\n }\n \n // Sort final layers to ensure z=0 layers come first, then by z value\n reorganizedLayers.sort((a, b) => {\n const zA = a.properties?.z ?? 0.5;\n const zB = b.properties?.z ?? 0.5;\n return zA - zB;\n });\n \n return reorganizedLayers;\n}\n\nexport function TiledMap(props) {\n const { map, basePath, createLayersPerTilesZ } = useProps(props, {\n createLayersPerTilesZ: false,\n basePath: ''\n })\n const layers = signal<TiledLayer[]>([])\n const objectLayer = props.objectLayer\n let tilesets: TileSet[] = []\n let mapData: TiledMap = {} as TiledMap\n\n const parseTmx = async (file: string, basePath: string = '') => {\n if (typeof file !== 'string') {\n return file\n }\n // @ts-ignore\n const parser = new TiledParserFile(\n file,\n {\n basePath\n }\n )\n const data = await parser.parseFilePromise({\n getOnlyBasename: false\n })\n\n return data\n }\n\n effect(async () => {\n const _map = map()\n if (_map) {\n mapData = await parseTmx(_map, basePath())\n tilesets = [] // Reset tilesets array\n for (let tileSet of mapData.tilesets) {\n // @ts-ignore\n if (tileSet.tile) tileSet.tiles = tileSet.tile\n if (!tileSet.tiles) tileSet.tiles = []\n tilesets.push(await new TileSet(tileSet).load(tileSet.image.source))\n }\n \n // Reorganize layers by tile z property if enabled\n let finalLayers = mapData.layers;\n if (createLayersPerTilesZ()) {\n finalLayers = reorganizeLayersByTileZ(mapData.layers, tilesets, mapData);\n }\n \n layers.set(finalLayers)\n }\n })\n\n const createLayer = (layers, props = {}) => {\n return h(Container, props, loop<any>(layers, (layer) => {\n switch (layer.type) {\n case TiledLayerType.Tile:\n return h(CompositeTileLayer, {\n tilewidth: mapData.tilewidth,\n tileheight: mapData.tileheight,\n // @ts-ignore\n width: mapData.width,\n // @ts-ignore\n height: mapData.height,\n ...layer,\n tilesets\n })\n case TiledLayerType.Image:\n const { width, height, source } = layer.image\n return h(TilingSprite, {\n image: source,\n ...layer,\n width: layer.repeatx ? layer.width * layer.tilewidth : width,\n height: layer.repeaty ? layer.height * layer.tileheight : height\n })\n case TiledLayerType.Group:\n return createLayer(signal(layer.layers), layer)\n case TiledLayerType.ObjectGroup:\n const child = objectLayer?.(layer)\n return h(Container, layer, child)\n default:\n return h(Container)\n }\n }))\n }\n\n return h(Container, props, createLayer(layers))\n}","import {\n tick,\n useProps,\n h,\n Mesh,\n signal,\n} from \"canvasengine\";\nimport { Geometry, Shader, GlProgram, UniformGroup } from \"pixi.js\";\n\n/**\n * Weather Effect Component\n * \n * Creates a realistic rain effect using WebGL shaders with customizable parameters.\n * The effect simulates raindrops falling with wind influence, density control, and speed adjustment.\n * \n * ## Design\n * \n * The component uses a fragment shader to generate procedural rain drops with:\n * - **Procedural generation**: Each raindrop is generated using hash functions for randomness\n * - **Wind simulation**: Raindrops are affected by wind direction and strength as they fall\n * - **Density control**: Number of visible raindrops can be adjusted\n * - **Speed variation**: Each drop has slightly different falling speed for realism\n * - **Visual styling**: Zelda-inspired rain appearance with proper fade effects\n * \n * @param {Object} options - Configuration options for the weather effect\n * @param {number} [options.speed=0.5] - Rain falling speed (0.1 = slow, 2.0 = fast)\n * @param {number} [options.windDirection=0.0] - Wind direction (-1.0 = left, 1.0 = right)\n * @param {number} [options.windStrength=0.2] - Wind strength (0.0 = no wind, 1.0 = strong)\n * @param {number} [options.density=180.0] - Rain density (number of raindrops, 50-400)\n * @param {Array<number>} [options.resolution=[1000, 1000]] - Screen resolution for proper scaling\n * \n * @example\n * ```jsx\n * // Basic usage with default settings\n * <Weather />\n * \n * // Customized heavy rain with strong wind\n * <Weather \n * speed={1.5}\n * windDirection={0.8}\n * windStrength={0.6}\n * density={300}\n * />\n * \n * // Light drizzle\n * <Weather \n * speed={0.2}\n * density={80}\n * windStrength={0.1}\n * />\n * \n * // Using signals for dynamic control\n * const rainSpeed = signal(0.5);\n * const windDir = signal(0.0);\n * \n * <Weather \n * speed={rainSpeed}\n * windDirection={windDir}\n * />\n * ```\n * \n * @returns {JSX.Element} A mesh component with the weather shader effect\n */\nexport const WeatherEffect = (options) => {\n const { \n speed = signal(0.5),\n windDirection = signal(0.0),\n windStrength = signal(0.2),\n density = signal(180.0),\n resolution = signal([1000, 1000])\n } = useProps(options);\n\n // Convert to signals if not already\n const speedSignal = typeof speed === 'function' ? speed : signal(speed);\n const windDirectionSignal = typeof windDirection === 'function' ? windDirection : signal(windDirection);\n const windStrengthSignal = typeof windStrength === 'function' ? windStrength : signal(windStrength);\n const densitySignal = typeof density === 'function' ? density : signal(density);\n const resolutionSignal = typeof resolution === 'function' ? resolution : signal(resolution);\n\n // Vertex shader - handles vertex positioning and UV mapping\n const vertexSrc = /* glsl */ `\n precision mediump float;\n attribute vec2 aPosition;\n attribute vec2 aUV;\n varying vec2 vUV;\n void main() {\n vUV = aUV;\n gl_Position = vec4(aPosition, 0.0, 1.0);\n }\n `;\n\n // Fragment shader - generates the rain effect\n const fragmentSrc = /* glsl */ `\n precision mediump float;\n varying vec2 vUV;\n uniform float uTime;\n uniform vec2 uResolution;\n uniform float uRainSpeed;\n uniform float uWindDirection;\n uniform float uWindStrength;\n uniform float uRainDensity;\n \n // Hash function for pseudo-random number generation\n float hash(float n){ return fract(sin(n)*43758.5453); }\n \n // Generate a single raindrop at given UV coordinates\n float rainDrop(vec2 uv, float t, float seed) {\n // Random X position with wider coverage for screen edges\n float x = hash(seed) * 2.4 - 1.2;\n \n // Falling speed with variation per drop\n float baseSpeed = 1.0 + hash(seed + 1.0) * 1.5;\n float speed = baseSpeed * uRainSpeed;\n \n // Y position falling from top (1.0) to bottom (-1.0)\n float y = 1.2 - fract(t * speed + hash(seed + 2.0)) * 2.4;\n \n // Wind effect: more drift as drop falls further\n float fallProgress = (1.2 - y) / 2.4; // 0 = top, 1 = bottom\n float windOffset = uWindDirection * uWindStrength * fallProgress * 0.5;\n x += windOffset;\n \n vec2 dropPos = vec2(x, y);\n vec2 diff = uv - dropPos;\n \n // Raindrop shape (thin streaks)\n float dropWidth = 0.0015 + hash(seed + 3.0) * 0.0005;\n float dropLength = 0.025 + hash(seed + 4.0) * 0.015;\n \n // Slight tilt based on wind\n float windAngle = uWindDirection * uWindStrength * 0.2;\n float cosA = cos(windAngle);\n float sinA = sin(windAngle);\n vec2 rotatedDiff = vec2(\n diff.x * cosA - diff.y * sinA,\n diff.x * sinA + diff.y * cosA\n );\n \n // Distance calculation for thin streaks\n float distX = abs(rotatedDiff.x) / dropWidth;\n float distY = abs(rotatedDiff.y) / dropLength;\n float dist = max(distX, distY * 0.4);\n \n // Intensity with fade and variation (Zelda-style)\n float intensity = 1.0 - smoothstep(0.0, 1.2, dist);\n intensity *= 0.7 + 0.3 * hash(seed + 5.0);\n \n // Natural fade at top and bottom edges\n intensity *= smoothstep(-1.2, -0.8, y) * smoothstep(1.2, 0.8, y);\n \n return intensity;\n }\n \n void main(){\n // Normalized UV coordinates centered on screen\n vec2 uv = (gl_FragCoord.xy - 0.5 * uResolution.xy) / min(uResolution.x, uResolution.y);\n \n float rain = 0.0;\n \n // Generate multiple raindrops\n for(float i = 0.0; i < 200.0; i++) {\n rain += rainDrop(uv, uTime, i * 12.34);\n }\n \n // Adjust intensity based on density setting\n rain *= (uRainDensity / 200.0);\n \n // Zelda-style rain color (bright and visible)\n vec3 rainColor = vec3(0.85, 0.9, 1.0);\n \n gl_FragColor = vec4(rainColor * rain, rain * 0.8);\n }\n `;\n\n // Create WebGL program\n const glProgram = new GlProgram({ vertex: vertexSrc, fragment: fragmentSrc });\n\n // Uniform group for shader parameters\n const uniformGroup = new UniformGroup({\n uTime: { value: 0, type: \"f32\" },\n uResolution: { value: resolutionSignal(), type: \"vec2<f32>\" },\n uRainSpeed: { value: speedSignal(), type: \"f32\" },\n uWindDirection: { value: windDirectionSignal(), type: \"f32\" },\n uWindStrength: { value: windStrengthSignal(), type: \"f32\" },\n uRainDensity: { value: densitySignal(), type: \"f32\" },\n });\n\n // Create shader with program and resources\n const shader = new Shader({\n glProgram,\n resources: {\n uniforms: uniformGroup,\n },\n });\n\n // Full-screen quad geometry\n const geometry = new Geometry({\n attributes: {\n aPosition: [-1, -1, 1, -1, 1, 1, -1, 1],\n aUV: [0, 0, 1, 0, 1, 1, 0, 1],\n },\n indexBuffer: [0, 1, 2, 0, 2, 3],\n });\n\n // Animation loop - update time and reactive uniforms\n tick(({ deltaTime }) => {\n uniformGroup.uniforms.uTime += deltaTime;\n \n // Update uniforms from signals\n uniformGroup.uniforms.uRainSpeed = speedSignal();\n uniformGroup.uniforms.uWindDirection = windDirectionSignal();\n uniformGroup.uniforms.uWindStrength = windStrengthSignal();\n uniformGroup.uniforms.uRainDensity = densitySignal();\n uniformGroup.uniforms.uResolution = resolutionSignal();\n });\n\n return h(Mesh, {\n geometry,\n shader,\n });\n};\n\n// Export as Weather for easier usage\nexport const Weather = WeatherEffect;\n"],"names":["componentToHex","c","hex","rgbToHex","r","g","b","Bar","opts","width","height","value","maxValue","backgroundColor","foregroundColor","border","innerMargin","borderRadius","useProps","h","Graphics","graphics","margin","_borderRadius","w","color","a","LinkedList","node","next","ret","Node","data","dt","BaseEffect","componentId","PIXI","ComponentType","BaseEmitterCore","type","emitter","particle","spawnCount","Rnd","min","max","chance","EmitterType","BoxEmitterCore","settings","w2","h2","angle","x","y","CircleEmitterCore","RingEmitterCore","EffectSequenceComponentType","MovieClip","textures","anchorX","anchorY","t","l","i","Color","startRgb","targetRgb","ease","time","duration","EasingType","Easing","d","p","s","v","FXSignal","callback","scope","callRate","FXSignalListener","params","list","call","once","scaleMod","component","fx","speed","def","em","mod","dt2","childs","child","on","index","Sanitizer","bundle","structure","sequence","bundleObject","structureObject","spawnStructureObject","propName","bundleProp","structureProp","spawn","spawnPropName","Sprite","texture","deepClone","obj","clonedObj","key","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","e","rejected","result","FX","delta","n","bundleSettingsUrl","spritesheetUrl","spritesheetFilter","additionalAssets","assets","bundleSettings","clearCache","preset","container","name","cloneSettings","pool","effectSequence","EffectSequence","autoRecycleOnComplete","ParticleEmitter","dispose","spriteSheet","filter","effect","cache","sprite","mc","Particle","object","core","frames","mapObject","mcs","group","SpawnType","autoStart","RX","waitForParticles","ps","spawns","delay","options","emit","element","tick","deltaRatio","mount","_element","fxSettings","emittersWithIds","Container","LightSpot","radius","scale","animatedSignal","minScale","maxScale","scintillationSpeed","animate","scintillationFactor","newScale","size","gradient","RadialGradient","translate","NightAmbiant","props","children","signal","subscription","draw","rectAndHole","applyChildren","isSignal","isObservable","event","el","displayWidth","displayHeight","Direction","Joystick","outerRadius","innerRadius","innerAlphaStandby","dragging","startPosition","power","innerPositionX","innerPositionY","innerAlpha","getPower","centerPoint","getDirection","center","rad","handleDragStart","_a","handleDragEnd","handleDragMove","newPosition","sideX","sideY","direction","_b","tanVal","radian","centerX","centerY","_c","innerElement","outerElement","innerOptions","TiledLayerType","TiledLayerType2","joinPath","segments","segment","getAugmentedNamespace","f","k","sax","__viteBrowserExternal","__viteBrowserExternal$1","require$$0","string_decoder","safeBuffer","buffer","base64Js","hasRequiredBase64Js","requireBase64Js","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","len","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","ieee754","hasRequiredIeee754","requireIeee754","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","rt","hasRequiredBuffer","requireBuffer","exports","base64","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","fromObject","assertSize","alloc","fill","encoding","checked","string","actual","fromArrayLike","array","arrayView","copy","byteOffset","numberIsNaN","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","str","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","hasRequiredSafeBuffer","requireSafeBuffer","module","copyProps","SafeBuffer","hasRequiredString_decoder","requireString_decoder","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","StringDecoder","nb","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","self","utf8CheckExtraBytes","total","hasRequiredSax","requireSax","strict","opt","SAXParser","SAXStream","createStream","buffers","parser","clearBuffers","S","rootNS","o","F","newf","checkBufferLength","maxAllowed","maxActual","closeText","emitNode","error","flushBuffers","write","Stream","streamWraps","ev","me","er","SD","chunk","handler","args","CDATA","DOCTYPE","XML_NAMESPACE","XMLNS_NAMESPACE","nameStart","nameBody","entityStart","entityBody","isWhitespace","isQuote","isAttribEnd","isMatch","regex","notMatch","nodeType","textopts","text","strictFail","message","newTag","parent","tag","qname","attribute","qualName","prefix","local","attrib","qn","openTag","selfClosing","nv","uri","closeTag","tagName","closeTo","close","parseEntity","entity","entityLC","numStr","beginWhiteSpace","charAt","starti","pad","returnState","parsedEntity","stringFromCharCode","floor","fromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","arrayHelper","hasRequiredArrayHelper","requireArrayHelper","optionsHelper","hasRequiredOptionsHelper","requireOptionsHelper","isArray","item","xml2js","hasRequiredXml2js","requireXml2js","helper","currentElement","validateOptions","userOptions","nativeType","nValue","bValue","addField","temp","manipulateAttributes","attributes","onInstruction","instruction","attrsRegExp","match","onStartElement","onText","onComment","comment","onEndElement","parentElement","onCdata","cdata","onDoctype","doctype","onError","xml","xml2json","hasRequiredXml2json","requireXml2json","js","json","parentKey","js2xml","hasRequiredJs2xml","requireJs2xml","currentElementName","writeIndentation","depth","firstLine","writeAttributes","attr","attrName","quote","writeDeclaration","declaration","writeInstruction","instructionName","instructionValue","writeComment","writeCdata","writeDoctype","writeText","hasContent","writeElement","elementName","withClosingTag","writeElements","elements","indent","hasContentCompact","anyContent","writeElementCompact","writeElementsCompact","nodes","json2xml","hasRequiredJson2xml","requireJson2xml","lib","hasRequiredLib","requireLib","libExports","bufferExports","_TiledParser","filePath","basePath","newObj","properties","propObj","prop","attr2","point","objectgroup","image","expectedCount","tileIndex","jsonNoCompact","tileset","recursiveObjectGroup","group2","layer","imagelayer","setLayer","recursiveLayer","layers","tilesets","tileset2","tile","ret2","TiledParser","TiledProperties","defaultValue","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","ROTATED_HEXAGONAL_120_FLAG","TileGid","gid","preservedProperties","TiledObjectClass","Layer","layerIndex","realGid","Tile","id","tileSets","cb","Tileset","tilesArray","tileObj","TiledParserFile","file","staticDir","relativePath","isString","info","isXml","content","loadContent","isHttp","url","response","err","getOnlyBasename","basename","path","map","hasError","parseTileset","finish","loadAll","err2","__defProp","__defNormalProp","__publicField","_TilemapGeometry","Geometry","indexBuffer","BufferUsage","stride","TilemapGeometry","TilemapAdaptor","UniformGroup","Matrix","TilemapPipe","renderer","adaptor","NOOP","geom","totalIndices","createIndicesForQuads","_renderable","tilemap","instructionSet","batcher","_instructionSet","renderable","pipe_uniforms","u_proj_trans","u_global","anim_frame","u_anim_frame","ExtensionType","outBuffer","TileTextureArray","max_textures","tex","ind","tex_sizes","count","null_color","bind_group_resources","bindIndex","Texture","BindGroup","sampleValues","samplerSize","gl_tilemap_vertex","gl_tilemap_fragment","GlTilemapAdaptor","pipe","shader","tu","Shader","GlProgram","gpu_tilemap_vertex","gpu_tilemap_fragment","GpuTilemapAdaptor","GpuProgram","POINT_STRUCT","POINT_STRUCT2","POINT_STRUCT_SIZE","Tilemap","ViewContainer","State","Bounds","bounds","textureOrArray","ts","TextureSource","flag","tileTexture","baseTexture","textureIndex","was_num","textureList","u","tileWidth","tileHeight","animX","animY","rotate","animCountX","animCountY","animDivisor","alpha","pb","divisor","plugin","points","rects_count","vb","vertices","vertexBuf","vs","bk","ints","sz","textureId","animWidth","animHeight","animXEncoded","animYEncoded","u0","v0","u1","v1","u2","v2","u3","v3","cX","cY","groupD8","anim","_bounds","CompositeTilemap","tileTextures","texPerChild","len1","childIndex","extensions","AnimatedSprite","tileSet","frame","symmetry","add","symmetrySecond","CanvasTileLayer","DisplayObject","real","tilewidth","tileheight","tiledTile","registerComponent","CompositeTileLayer","createComponent","TileSet","TiledTilesetClass","Assets","Rectangle","reorganizeLayersByTileZ","originalLayers","mapData","reorganizedLayers","layersByZ","layerData","localTileId","tileProperties","zValue","sortedZValues","layerDataForZ","newLayer","zA","zB","TiledMap","createLayersPerTilesZ","objectLayer","parseTmx","_map","finalLayers","createLayer","loop","source","TilingSprite","WeatherEffect","windDirection","windStrength","density","resolution","speedSignal","windDirectionSignal","windStrengthSignal","densitySignal","resolutionSignal","vertexSrc","fragmentSrc","glProgram","uniformGroup","geometry","deltaTime","Mesh","Weather"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,26,27,28,29,30,31,32,33,34]}