angular-three-soba 1.3.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/README.md +3 -0
- package/abstractions/index.d.ts +6 -0
- package/abstractions/lib/billboard/billboard.d.ts +14 -0
- package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +41 -0
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.d.ts +12 -0
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +16 -0
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +24 -0
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +14 -0
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +15 -0
- package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -0
- package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +21 -0
- package/abstractions/lib/text/text.d.ts +21 -0
- package/abstractions/lib/text-3d/text-3d.d.ts +39 -0
- package/esm2020/abstractions/angular-three-soba-abstractions.mjs +5 -0
- package/esm2020/abstractions/index.mjs +7 -0
- package/esm2020/abstractions/lib/billboard/billboard.mjs +73 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +206 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +91 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +182 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +45 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +133 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +193 -0
- package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +266 -0
- package/esm2020/abstractions/lib/text/text.mjs +110 -0
- package/esm2020/abstractions/lib/text-3d/text-3d.mjs +144 -0
- package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +5 -5
- package/esm2020/staging/index.mjs +3 -1
- package/esm2020/staging/lib/camera-shake/camera-shake.mjs +121 -0
- package/esm2020/staging/lib/cloud/cloud.mjs +159 -0
- package/fesm2015/angular-three-soba-abstractions.mjs +1431 -0
- package/fesm2015/angular-three-soba-abstractions.mjs.map +1 -0
- package/fesm2015/angular-three-soba-cameras.mjs +4 -4
- package/fesm2015/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2015/angular-three-soba-staging.mjs +274 -4
- package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2020/angular-three-soba-abstractions.mjs +1428 -0
- package/fesm2020/angular-three-soba-abstractions.mjs.map +1 -0
- package/fesm2020/angular-three-soba-cameras.mjs +4 -4
- package/fesm2020/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2020/angular-three-soba-staging.mjs +274 -4
- package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
- package/package.json +11 -3
- package/plugin/package.json +1 -1
- package/staging/index.d.ts +2 -0
- package/staging/lib/camera-shake/camera-shake.d.ts +28 -0
- package/staging/lib/cloud/cloud.d.ts +23 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/angular-three-soba/staging/src/lib/accumulative-shadows/progressive-light-map.ts","../../../../libs/angular-three-soba/staging/src/lib/accumulative-shadows/accumulative-shadows.ts","../../../../libs/angular-three-soba/staging/src/lib/accumulative-shadows/randomized-lights.ts","../../../../libs/angular-three-soba/staging/src/lib/bounds/bounds.ts","../../../../libs/angular-three-soba/staging/src/lib/center/center.ts","../../../../libs/angular-three-soba/staging/src/lib/contact-shadows/contact-shadows.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/assets.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-inputs.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/utils.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-cube.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-map.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-ground.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-portal.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment.ts","../../../../libs/angular-three-soba/staging/src/lib/float/float.ts","../../../../libs/angular-three-soba/staging/src/lib/sky/sky.ts","../../../../libs/angular-three-soba/staging/src/lib/sparkles/sparkles.ts","../../../../libs/angular-three-soba/staging/src/lib/stage/stage.ts","../../../../libs/angular-three-soba/staging/src/lib/stars/stars.ts","../../../../libs/angular-three-soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import { shaderMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nfunction isLight(object: any): object is THREE.Light {\n return object.isLight;\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n return !!object.geometry;\n}\n\nconst DiscardMaterial = shaderMaterial(\n {},\n 'void main() { gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }',\n 'void main() { discard; }'\n);\n\nexport class ProgressiveLightMap {\n renderer: THREE.WebGLRenderer;\n res: number;\n scene: THREE.Scene;\n object: THREE.Mesh | null;\n buffer1Active: boolean;\n progressiveLightMap1: THREE.WebGLRenderTarget;\n progressiveLightMap2: THREE.WebGLRenderTarget;\n discardMat: THREE.ShaderMaterial;\n targetMat: THREE.MeshLambertMaterial;\n previousShadowMap: { value: THREE.Texture };\n averagingWindow: { value: number };\n clearColor: THREE.Color;\n clearAlpha: number;\n lights: { object: THREE.Light; intensity: number }[];\n meshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[];\n\n constructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n this.renderer = renderer;\n this.res = res;\n this.scene = scene;\n this.buffer1Active = false;\n this.lights = [];\n this.meshes = [];\n this.object = null;\n this.clearColor = new THREE.Color();\n this.clearAlpha = 0;\n\n // Create the Progressive LightMap Texture\n const format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;\n this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n encoding: renderer.outputEncoding,\n });\n this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n encoding: renderer.outputEncoding,\n });\n\n // Inject some spicy new logic into a standard phong material\n this.discardMat = new DiscardMaterial();\n this.targetMat = new THREE.MeshLambertMaterial({ fog: false });\n this.previousShadowMap = { value: this.progressiveLightMap1.texture };\n this.averagingWindow = { value: 100 };\n this.targetMat.onBeforeCompile = (shader) => {\n // Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n shader.vertexShader =\n 'varying vec2 vUv;\\n' +\n shader.vertexShader.slice(0, -1) +\n 'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n // Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n const bodyStart = shader.fragmentShader.indexOf('void main() {');\n shader.fragmentShader =\n 'varying vec2 vUv;\\n' +\n shader.fragmentShader.slice(0, bodyStart) +\n 'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n shader.fragmentShader.slice(bodyStart - 1, -1) +\n `\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`;\n\n // Set the Previous Frame's Texture Buffer and Averaging Window\n shader.uniforms['previousShadowMap'] = this.previousShadowMap;\n shader.uniforms['averagingWindow'] = this.averagingWindow;\n };\n }\n\n clear() {\n this.renderer.getClearColor(this.clearColor);\n this.clearAlpha = this.renderer.getClearAlpha();\n this.renderer.setClearColor('black', 1);\n this.renderer.setRenderTarget(this.progressiveLightMap1);\n this.renderer.clear();\n this.renderer.setRenderTarget(this.progressiveLightMap2);\n this.renderer.clear();\n this.renderer.setRenderTarget(null);\n this.renderer.setClearColor(this.clearColor, this.clearAlpha);\n\n this.lights = [];\n this.meshes = [];\n this.scene.traverse((object) => {\n if (isGeometry(object)) {\n this.meshes.push({ object, material: object.material });\n } else if (isLight(object)) {\n this.lights.push({ object, intensity: object.intensity });\n }\n });\n }\n\n prepare() {\n this.lights.forEach((light) => (light.object.intensity = 0));\n this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));\n }\n\n finish() {\n this.lights.forEach((light) => (light.object.intensity = light.intensity));\n this.meshes.forEach((mesh) => (mesh.object.material = mesh.material));\n }\n\n configure(object: any) {\n this.object = object;\n }\n\n update(camera: any, blendWindow = 100) {\n if (!this.object) return;\n // Set each object's material to the UV Unwrapped Surface Mapping Version\n this.averagingWindow.value = blendWindow;\n this.object.material = this.targetMat;\n // Ping-pong two surface buffers for reading/writing\n const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n // Render the object's surface maps\n const oldBg = this.scene.background;\n this.scene.background = null;\n this.renderer.setRenderTarget(activeMap);\n this.previousShadowMap.value = inactiveMap.texture;\n this.buffer1Active = !this.buffer1Active;\n this.renderer.render(this.scene, camera);\n this.renderer.setRenderTarget(null);\n this.scene.background = oldBg;\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Directive, inject, InjectionToken, Input } from '@angular/core';\nimport { extend, getLocalState, injectNgtRef, NgtRxStore, NgtStore } from 'angular-three';\nimport { shaderMaterial } from 'angular-three-soba/shaders';\nimport { combineLatest, Subject } from 'rxjs';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry } from 'three';\nimport { ProgressiveLightMap } from './progressive-light-map';\n\nconst SoftShadowMaterial = shaderMaterial(\n {\n color: new THREE.Color(),\n blend: 2.0,\n alphaTest: 0.75,\n opacity: 0,\n map: null,\n },\n // language=GLSL\n `\nvarying vec2 vUv;\nvoid main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n}\n `,\n // language=GLSL\n `\nvarying vec2 vUv;\nuniform sampler2D map;\nuniform vec3 color;\nuniform float blend;\nuniform float opacity;\nuniform float alphaTest;\nvoid main() {\n vec4 sampledDiffuseColor = texture2D(map, vUv);\n gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n}\n `\n);\n\ntype SoftShadowMaterialInputs = {\n map: THREE.Texture;\n color?: THREE.ColorRepresentation;\n alphaTest?: number;\n blend?: number;\n};\n\nextend({ SoftShadowMaterial, Group, Mesh, PlaneGeometry });\n\nexport type NgtsAccumulativeShadowsLightApi = { update: () => void };\n\nexport type NgtsAccumulativeShadowsApi = {\n lights: Map<string, NgtsAccumulativeShadowsLightApi>;\n temporal: boolean;\n frames: number;\n blend: number;\n count: number;\n getMesh: () => THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>;\n reset: () => void;\n update: (frames?: number) => void;\n};\n\nexport const NGTS_ACCUMULATIVE_SHADOWS_API = new InjectionToken<NgtsAccumulativeShadowsApi>(\n 'NgtsAccumulativeShadows API'\n);\n\nfunction accumulativeShadowsApiFactory(accumulativeShadows: NgtsAccumulativeShadows) {\n const store = inject(NgtStore);\n\n const api = {\n lights: new Map(),\n count: 0,\n getMesh: () =>\n accumulativeShadows.meshRef.nativeElement as THREE.Mesh<\n THREE.PlaneGeometry,\n SoftShadowMaterialInputs & THREE.ShaderMaterial\n >,\n reset: () => {\n accumulativeShadows.pLM.clear();\n const material = api.getMesh().material;\n material.opacity = 0;\n material.alphaTest = 0;\n api.count = 0;\n },\n update: (frames = 1) => {\n // adapt the opacity blend ratio to the number of frames\n const material = api.getMesh().material;\n if (!api.temporal) {\n material.opacity = accumulativeShadows.get('opacity');\n material.alphaTest = accumulativeShadows.get('alphaTest');\n } else {\n material.opacity = Math.min(\n accumulativeShadows.get('opacity'),\n material.opacity + accumulativeShadows.get('opacity') / api.blend\n );\n material.alphaTest = Math.min(\n accumulativeShadows.get('alphaTest'),\n material.alphaTest + accumulativeShadows.get('alphaTest') / api.blend\n );\n }\n\n // switch accumulative lights on\n accumulativeShadows.accumulativeShadowsRef.nativeElement.visible = true;\n // collect scene lights and meshes\n accumulativeShadows.pLM.prepare();\n\n // update the lightmap and the accumulative lights\n for (let i = 0; i < frames; i++) {\n api.lights.forEach((light) => light.update());\n accumulativeShadows.pLM.update(store.get('camera'), api.blend);\n }\n\n // switch lights off\n accumulativeShadows.accumulativeShadowsRef.nativeElement.visible = false;\n // restore lights and meshes\n accumulativeShadows.pLM.finish();\n },\n } as NgtsAccumulativeShadowsApi;\n\n Object.defineProperties(api, {\n temporal: {\n get: () => !!accumulativeShadows.get('temporal'),\n },\n frames: {\n get: () => Math.max(2, accumulativeShadows.get('frames')),\n },\n blend: {\n get: () =>\n Math.max(\n 2,\n accumulativeShadows.get('frames') === Infinity\n ? accumulativeShadows.get('blend')\n : accumulativeShadows.get('frames')\n ),\n },\n });\n\n const subject = new Subject<void>();\n\n accumulativeShadows.hold(accumulativeShadows.meshRef.$, (mesh) => {\n accumulativeShadows.pLM.configure(mesh);\n\n accumulativeShadows.hold(\n combineLatest([accumulativeShadows.select(), getLocalState(store.get('scene')).objects]),\n () => {\n // reset internals, buffers, ...\n api.reset();\n // update lightmap\n if (!api.temporal && api.frames !== Infinity) api.update(api.blend);\n }\n );\n\n accumulativeShadows.effect(subject, () =>\n store.get('internal').subscribe(() => {\n const limit = accumulativeShadows.get('limit');\n if ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {\n api.update();\n api.count++;\n }\n })\n );\n subject.next();\n });\n\n return api;\n}\n\n@Directive({ selector: 'ngts-accumulative-shadows-consumer', standalone: true })\nexport class AccumulativeShadowsConsumer {\n constructor() {\n inject(NGTS_ACCUMULATIVE_SHADOWS_API);\n }\n}\n\n@Component({\n selector: 'ngts-accumulative-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"accumulativeShadowsRef\" [traverse]=\"nullTraverse\">\n <ng-content />\n <ngts-accumulative-shadows-consumer />\n </ngt-group>\n <ngt-mesh [receiveShadow]=\"true\" [ref]=\"meshRef\" [scale]=\"get('scale')\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n <ngt-plane-geometry />\n <ngt-soft-shadow-material\n [transparent]=\"true\"\n [depthWrite]=\"false\"\n [color]=\"get('color')\"\n [toneMapped]=\"get('toneMapped')\"\n [blend]=\"get('colorBlend')\"\n [map]=\"pLM.progressiveLightMap2.texture\"\n />\n </ngt-mesh>\n </ngt-group>\n `,\n imports: [AccumulativeShadowsConsumer],\n providers: [\n {\n provide: NGTS_ACCUMULATIVE_SHADOWS_API,\n useFactory: accumulativeShadowsApiFactory,\n deps: [NgtsAccumulativeShadows],\n },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsAccumulativeShadows extends NgtRxStore {\n readonly nullTraverse = () => null;\n readonly Math = Math;\n\n private readonly store = inject(NgtStore);\n\n readonly pLM = new ProgressiveLightMap(this.store.get('gl'), this.store.get('scene'), this.get('resolution'));\n\n readonly accumulativeShadowsRef = injectNgtRef<THREE.Group>();\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n @Input() set blend(blend: number) {\n this.set({ blend });\n }\n\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n @Input() set limit(limit: number) {\n this.set({ limit });\n }\n\n /** Scale of the plane, */\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n @Input() set temporal(temporal: boolean) {\n this.set({ temporal });\n }\n\n /** Opacity of the plane, 1 */\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n /** Discards alpha pixels, 0.65 */\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n /** Shadow color, black */\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n @Input() set colorBlend(colorBlend: number) {\n this.set({ colorBlend });\n }\n\n /** Buffer resolution, 1024 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n /** Texture tonemapping */\n @Input() set toneMapped(toneMapped: boolean) {\n this.set({ toneMapped });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n frames: 40,\n limit: Infinity,\n blend: 20,\n scale: 10,\n opacity: 1,\n alphaTest: 0.75,\n color: 'black',\n colorBlend: 2,\n resolution: 1024,\n toneMapped: true,\n });\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Directive, inject, InjectionToken, Input } from '@angular/core';\nimport { extend, injectNgtRef, NgtArgs, NgtRepeat, NgtRxStore } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { NgtsAccumulativeShadowsLightApi, NGTS_ACCUMULATIVE_SHADOWS_API } from './accumulative-shadows';\n\nextend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\nexport const NGTS_RANDOMIZED_LIGHTS_API = new InjectionToken<NgtsAccumulativeShadowsLightApi>(\n 'NgtsRandomizedLights API'\n);\n\nfunction randomizedLightsApiFactory(randomizedLights: NgtsRandomizedLights) {\n const accumulativeApi = inject(NGTS_ACCUMULATIVE_SHADOWS_API);\n\n const update = () => {\n let light: THREE.DirectionalLight | undefined;\n if (randomizedLights.lightsRef.nativeElement) {\n for (let l = 0; l < randomizedLights.lightsRef.nativeElement.children.length; l++) {\n light = randomizedLights.lightsRef.nativeElement.children[l] as THREE.DirectionalLight;\n if (Math.random() > randomizedLights.get('ambient')) {\n const position = randomizedLights.get('position');\n const radius = randomizedLights.get('radius');\n light.position.set(\n position[0] + THREE.MathUtils.randFloatSpread(radius),\n position[1] + THREE.MathUtils.randFloatSpread(radius),\n position[2] + THREE.MathUtils.randFloatSpread(radius)\n );\n } else {\n const lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n const phi = 2 * Math.PI * Math.random();\n const length = randomizedLights.get('length');\n light.position.set(\n Math.cos(lambda) * Math.cos(phi) * length,\n Math.abs(Math.cos(lambda) * Math.sin(phi) * length),\n Math.sin(lambda) * length\n );\n }\n }\n }\n };\n\n const api = { update } as NgtsAccumulativeShadowsLightApi;\n\n randomizedLights.effect(\n combineLatest([\n randomizedLights.lightsRef.$,\n randomizedLights.select('position'),\n randomizedLights.select('radius'),\n randomizedLights.select('length'),\n randomizedLights.select('ambient'),\n ]),\n ([group]) => {\n if (accumulativeApi) accumulativeApi.lights.set(group.uuid, api);\n return () => accumulativeApi.lights.delete(group.uuid);\n }\n );\n\n return api;\n}\n\n@Directive({ selector: 'ngts-randomized-lights-consumer', standalone: true })\nexport class RandomizedLightsConsumer {\n constructor() {\n inject(NGTS_RANDOMIZED_LIGHTS_API);\n }\n}\n\n@Component({\n selector: 'ngts-randomized-lights',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"lightsRef\">\n <ngt-directional-light\n *ngFor=\"let i; repeat: get('amount')\"\n [castShadow]=\"get('castShadow')\"\n [intensity]=\"get('intensity') / get('amount')\"\n >\n <ngt-value [rawValue]=\"get('bias')\" attach=\"shadow.bias\" />\n <ngt-vector2 *args=\"[get('mapSize'), get('mapSize')]\" attach=\"shadow.mapSize\" />\n <ngt-orthographic-camera *args=\"get('cameraArgs')\" attach=\"shadow.camera\" />\n </ngt-directional-light>\n <ngts-randomized-lights-consumer />\n </ngt-group>\n `,\n imports: [RandomizedLightsConsumer, NgtArgs, NgtRepeat],\n providers: [\n { provide: NGTS_RANDOMIZED_LIGHTS_API, useFactory: randomizedLightsApiFactory, deps: [NgtsRandomizedLights] },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsRandomizedLights extends NgtRxStore {\n @Input() lightsRef = injectNgtRef<THREE.Group>();\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** Light position, [0, 0, 0] */\n @Input() set position(position: [x: number, y: number, z: number]) {\n this.set({ position });\n }\n\n /** Radius of the jiggle, higher values make softer light, 5 */\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n /** Amount of lights, 8 */\n @Input() set amount(amount: number) {\n this.set({ amount });\n }\n\n /** Light intensity, 1 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n @Input() set ambient(ambient: number) {\n this.set({ ambient });\n }\n\n /** If the lights cast shadows, this is true by default */\n @Input() set castShadow(castShadow: boolean) {\n this.set({ castShadow });\n }\n\n /** Default shadow bias, 0 */\n @Input() set bias(bias: number) {\n this.set({ bias });\n }\n\n /** Default map size, 512 */\n @Input() set mapSize(mapSize: number) {\n this.set({ mapSize });\n }\n\n /** Default size of the shadow camera, 10 */\n @Input() set size(size: number) {\n this.set({ size });\n }\n\n /** Default shadow camera near, 0.5 */\n @Input() set near(near: number) {\n this.set({ near });\n }\n\n /** Default shadow camera far, 500 */\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n castShadow: true,\n bias: 0.001,\n mapSize: 512,\n size: 5,\n near: 0.5,\n far: 500,\n frames: 1,\n position: [0, 0, 0],\n radius: 1,\n amount: 8,\n intensity: 1,\n ambient: 0.5,\n });\n this.connect(\n 'cameraArgs',\n this.select(['size', 'near', 'far'], ({ size, near, far }) => [-size, size, size, -size, near, far])\n );\n this.connect(\n 'length',\n this.select(['position'], ({ position }) => new THREE.Vector3(...position).length())\n );\n }\n}\n","import {\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, is, NgtRxStore, NgtStore } from 'angular-three';\nimport { combineLatest, switchMap } from 'rxjs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsBoundsSize {\n box: THREE.Box3;\n size: THREE.Vector3;\n center: THREE.Vector3;\n distance: number;\n}\n\nexport interface NgtsBoundsApi {\n getSize: () => NgtsBoundsSize;\n refresh: (object?: THREE.Object3D | THREE.Box3) => NgtsBoundsApi;\n clip: () => NgtsBoundsApi;\n fit: () => NgtsBoundsApi;\n to: ({\n position,\n target,\n }: {\n position: [number, number, number];\n target?: [number, number, number];\n }) => NgtsBoundsApi;\n}\n\ntype ControlsProto = {\n update(): void;\n target: THREE.Vector3;\n maxDistance: number;\n addEventListener: (event: string, callback: (event: any) => void) => void;\n removeEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: unknown): def is THREE.Box3 => !!def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\nexport const NGTS_BOUNDS_API = new InjectionToken<NgtsBoundsApi>('NgtsBounds API');\n\nfunction boundsApiFactory(bounds: NgtsBounds) {\n const store = inject(NgtStore);\n const box = new THREE.Box3();\n\n function getSize() {\n const camera = store.get('camera');\n const margin = bounds.get('margin');\n\n const size = box.getSize(new THREE.Vector3());\n const center = box.getCenter(new THREE.Vector3());\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance = is.orthographicCamera(camera)\n ? maxSize * 4\n : maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n const fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n return { box, size, center, distance };\n }\n\n const api = {\n getSize,\n refresh(object?: THREE.Object3D | THREE.Box3) {\n const { camera, controls: storeControls } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n\n if (isBox3(object)) box.copy(object);\n else {\n const target = object || bounds.boundsRef.nativeElement;\n if (target) {\n target.updateWorldMatrix(true, true);\n box.setFromObject(target);\n }\n }\n if (box.isEmpty()) {\n const max = camera.position.length() || 10;\n box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n }\n\n if (controls?.constructor.name === 'OrthographicTrackballControls') {\n // put camera on a sphere along which it would move\n const { distance } = getSize();\n const direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);\n const newPos = controls.target.clone().add(direction);\n camera.position.copy(newPos);\n }\n return this;\n },\n clip() {\n const { distance } = getSize();\n const { camera, controls: storeControls, invalidate } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n if (controls) controls.maxDistance = distance * 10;\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n if (controls) controls.update();\n invalidate();\n return this;\n },\n to({ position, target }: { position: [number, number, number]; target?: [number, number, number] }) {\n const { camera } = store.get();\n const { damping } = bounds.get();\n\n bounds.current.camera.copy(camera.position);\n const { center } = getSize();\n bounds.goal.camera.set(...position);\n\n if (target) {\n bounds.goal.focus.set(...target);\n } else {\n bounds.goal.focus.copy(center);\n }\n\n if (damping) {\n bounds.current.animating = true;\n } else {\n camera.position.set(...position);\n }\n\n return this;\n },\n fit() {\n const { camera, controls: storeControls, invalidate } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n\n const { damping, margin } = bounds.get();\n\n bounds.current.camera.copy(camera.position);\n if (controls) bounds.current.focus.copy(controls.target);\n\n const { center, distance } = getSize();\n const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n bounds.goal.camera.copy(center).sub(direction);\n bounds.goal.focus.copy(center);\n\n if (is.orthographicCamera(camera)) {\n bounds.current.zoom = camera.zoom;\n\n let maxHeight = 0,\n maxWidth = 0;\n const vertices = [\n new THREE.Vector3(box.min.x, box.min.y, box.min.z),\n new THREE.Vector3(box.min.x, box.max.y, box.min.z),\n new THREE.Vector3(box.min.x, box.min.y, box.max.z),\n new THREE.Vector3(box.min.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.min.z),\n new THREE.Vector3(box.max.x, box.min.y, box.max.z),\n new THREE.Vector3(box.max.x, box.min.y, box.min.z),\n ];\n // Transform the center and each corner to camera space\n center.applyMatrix4(camera.matrixWorldInverse);\n for (const v of vertices) {\n v.applyMatrix4(camera.matrixWorldInverse);\n maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n }\n maxHeight *= 2;\n maxWidth *= 2;\n const zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n const zoomForWidth = (camera.right - camera.left) / maxWidth;\n bounds.goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n if (!damping) {\n camera.zoom = bounds.goal.zoom;\n camera.updateProjectionMatrix();\n }\n }\n\n if (damping) {\n bounds.current.animating = true;\n } else {\n camera.position.copy(bounds.goal.camera);\n camera.lookAt(bounds.goal.focus);\n if (controls) {\n controls.target.copy(bounds.goal.focus);\n controls.update();\n }\n }\n if (bounds.fitted.observed) bounds.fitted.emit(this.getSize());\n invalidate();\n return this;\n },\n } as NgtsBoundsApi;\n\n let count = 0;\n bounds.hold(\n bounds.boundsRef.$.pipe(\n switchMap(() =>\n combineLatest([\n bounds.select('clip'),\n bounds.select('fit'),\n bounds.select('observe'),\n store.select('camera'),\n store.select('controls'),\n store.select('size'),\n bounds.boundsRef.children$(),\n ])\n )\n ),\n ([clip, fit, observe]) => {\n if (observe || count++ === 0) {\n api.refresh();\n if (fit) api.fit();\n if (clip) api.clip();\n }\n }\n );\n\n injectBeforeRender(({ delta }) => {\n if (bounds.current.animating) {\n const { damping, eps } = bounds.get();\n const { camera, controls: storeControls, invalidate } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n\n damp(bounds.current.focus, bounds.goal.focus, damping, delta);\n damp(bounds.current.camera, bounds.goal.camera, damping, delta);\n bounds.current.zoom = THREE.MathUtils.damp(bounds.current.zoom, bounds.goal.zoom, damping, delta);\n camera.position.copy(bounds.current.camera);\n\n if (is.orthographicCamera(camera)) {\n camera.zoom = bounds.current.zoom;\n camera.updateProjectionMatrix();\n }\n\n if (!controls) {\n camera.lookAt(bounds.current.focus);\n } else {\n controls.target.copy(bounds.current.focus);\n controls.update();\n }\n\n invalidate();\n if (is.orthographicCamera(camera) && !(Math.abs(bounds.current.zoom - bounds.goal.zoom) < eps)) return;\n if (!is.orthographicCamera(camera) && !equals(bounds.current.camera, bounds.goal.camera, eps)) return;\n if (controls && !equals(bounds.current.focus, bounds.goal.focus, eps)) return;\n bounds.current.animating = false;\n }\n });\n\n return api;\n}\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-bounds',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"boundsRef\">\n <ng-content />\n </ngt-group>\n `,\n providers: [{ provide: NGTS_BOUNDS_API, useFactory: boundsApiFactory, deps: [NgtsBounds] }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBounds extends NgtRxStore implements OnInit {\n @Input() boundsRef = injectNgtRef<Group>();\n\n @Input() set damping(damping: number) {\n this.set({ damping });\n }\n\n @Input() set fit(fit: boolean) {\n this.set({ fit });\n }\n\n @Input() set clip(clip: boolean) {\n this.set({ clip });\n }\n\n @Input() set observe(observe: boolean) {\n this.set({ observe });\n }\n\n @Input() set margin(margin: number) {\n this.set({ margin });\n }\n\n @Input() set eps(eps: number) {\n this.set({ eps });\n }\n\n @Output() fitted = new EventEmitter<NgtsBoundsSize>();\n\n private readonly store = inject(NgtStore);\n\n readonly current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n readonly goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\n override initialize() {\n super.initialize();\n this.set({ damping: 6, fit: false, clip: false, observe: false, margin: 1.2, eps: 0.01 });\n }\n\n ngOnInit() {\n this.preventDragHijacking();\n }\n\n private preventDragHijacking() {\n this.effect(this.store.select('controls'), (controls) => {\n if (controls) {\n const callback = () => (this.current.animating = false);\n (controls as unknown as ControlsProto).addEventListener('start', callback);\n return () => (controls as unknown as ControlsProto).removeEventListener('start', callback);\n }\n });\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { extend, injectNgtRef, NgtRxStore } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport { Box3, Group, Sphere, Vector3 } from 'three';\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-center',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"centerRef\">\n <ngt-group [ref]=\"outerRef\">\n <ngt-group [ref]=\"innerRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCenter extends NgtRxStore implements OnInit {\n @Input() centerRef = injectNgtRef<Group>();\n\n readonly outerRef = injectNgtRef<Group>();\n readonly innerRef = injectNgtRef<Group>();\n\n @Input() set top(top: boolean) {\n this.set({ top });\n }\n\n @Input() set right(right: boolean) {\n this.set({ right });\n }\n\n @Input() set bottom(bottom: boolean) {\n this.set({ bottom });\n }\n\n @Input() set left(left: boolean) {\n this.set({ left });\n }\n\n @Input() set front(front: boolean) {\n this.set({ front });\n }\n\n @Input() set back(back: boolean) {\n this.set({ back });\n }\n\n @Input() set disableX(disableX: boolean) {\n this.set({ disableX });\n }\n\n @Input() set disableY(disableY: boolean) {\n this.set({ disableY });\n }\n\n @Input() set disableZ(disableZ: boolean) {\n this.set({ disableZ });\n }\n\n @Input() set disabled(disabled: boolean) {\n this.set({ disabled });\n }\n\n @Input() set precise(precise: boolean) {\n this.set({ precise });\n }\n\n @Output() centered = new EventEmitter<{\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }>();\n\n override initialize(): void {\n super.initialize();\n this.set({ precise: true });\n }\n\n ngOnInit(): void {\n this.setPosition();\n }\n\n private setPosition() {\n this.hold(combineLatest([this.innerRef.$, this.innerRef.children$()]), ([innerGroup]) => {\n const { precise, top, left, front, disabled, disableX, disableY, disableZ, back, bottom, right } =\n this.get();\n this.outerRef.nativeElement.matrixWorld.identity();\n const box3 = new Box3().setFromObject(innerGroup, precise);\n const center = new Vector3();\n const sphere = new Sphere();\n const width = box3.max.x - box3.min.x;\n const height = box3.max.y - box3.min.y;\n const depth = box3.max.z - box3.min.z;\n\n box3.getCenter(center);\n box3.getBoundingSphere(sphere);\n\n const vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n const hAlign = left ? -width / 2 : right ? width / 2 : 0;\n const dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n this.outerRef.nativeElement.position.set(\n disabled || disableX ? 0 : -center.x + hAlign,\n disabled || disableY ? 0 : -center.y + vAlign,\n disabled || disableZ ? 0 : -center.z + dAlign\n );\n\n if (this.centered.observed) {\n this.centered.emit({\n parent: this.centerRef.nativeElement.parent!,\n container: this.centerRef.nativeElement,\n width,\n height,\n depth,\n boundingBox: box3,\n boundingSphere: sphere,\n center: center,\n verticalAlignment: vAlign,\n horizontalAlignment: hAlign,\n depthAlignment: dAlign,\n });\n }\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPush,\n NgtRenderState,\n NgtRxStore,\n NgtStore,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\n@Component({\n selector: 'ngts-contact-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"contactShadowsRef\" [rotation]=\"[Math.PI / 2, 0, 0]\">\n <ng-container *ngIf=\"contactShadows$ | ngtPush : null as contactShadows\">\n <ngt-mesh\n [renderOrder]=\"get('renderOrder')\"\n [geometry]=\"contactShadows.planeGeometry\"\n [scale]=\"[1, -1, 1]\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-mesh-basic-material\n [map]=\"contactShadows.renderTarget.texture\"\n transparent\n [opacity]=\"get('opacity')\"\n [depthWrite]=\"get('depthWrite')\"\n >\n <ngt-value [rawValue]=\"encoding\" attach=\"map.encoding\" />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n <ngt-orthographic-camera *args=\"get('cameraArgs')\" [ref]=\"shadowCameraRef\" />\n </ng-container>\n </ngt-group>\n `,\n imports: [NgIf, NgtPush, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsContactShadows extends NgtRxStore {\n private readonly store = inject(NgtStore);\n readonly shadowCameraRef = injectNgtRef<OrthographicCamera>();\n readonly encoding = this.store.get('gl', 'outputEncoding');\n readonly contactShadows$ = this.select('contactShadows');\n readonly Math = Math;\n\n @Input() contactShadowsRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n @Input() set blur(blur: number) {\n this.set({ blur });\n }\n\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n @Input() set smooth(smooth: boolean) {\n this.set({ smooth });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set scale(scale: number | [x: number, y: number]) {\n this.set({ scale });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthWrite(depthWrite: boolean) {\n this.set({ depthWrite });\n }\n\n @Input() set renderOrder(renderOrder: number) {\n this.set({ renderOrder });\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this, 0));\n }\n\n override initialize() {\n super.initialize();\n this.set({\n scale: 10,\n frames: Infinity,\n opacity: 1,\n width: 1,\n height: 1,\n blur: 1,\n far: 10,\n resolution: 512,\n smooth: true,\n color: '#000000',\n depthWrite: false,\n renderOrder: 0,\n });\n this.connect(\n 'scaledWidth',\n this.select(\n ['width', 'scale'],\n ({ width, scale }) => width * (Array.isArray(scale) ? scale[0] : scale || 1)\n )\n );\n this.connect(\n 'scaledHeight',\n this.select(\n ['height', 'scale'],\n ({ height, scale }) => height * (Array.isArray(scale) ? scale[1] : scale || 1)\n )\n );\n this.connect(\n 'cameraArgs',\n this.select(['scaledWidth', 'scaledHeight', 'far'], ({ scaledWidth: width, scaledHeight: height, far }) => {\n return [-width / 2, width / 2, height / 2, -height / 2, 0, far];\n })\n );\n this.connect(\n 'contactShadows',\n this.select(\n ['resolution', 'scaledWidth', 'scaledHeight', 'scale', 'color'],\n ({ resolution, scaledWidth: width, scaledHeight: height, color }) => {\n const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n const planeGeometry = new THREE.PlaneGeometry(width, height).rotateX(Math.PI / 2);\n const blurPlane = new Mesh(planeGeometry);\n const depthMaterial = new THREE.MeshDepthMaterial();\n depthMaterial.depthTest = depthMaterial.depthWrite = false;\n depthMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n ucolor: { value: new THREE.Color(color) },\n };\n shader.fragmentShader = shader.fragmentShader.replace(\n `void main() {`, //\n `uniform vec3 ucolor;\n void main() {\n `\n );\n shader.fragmentShader = shader.fragmentShader.replace(\n 'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n // Colorize the shadow, multiply by the falloff so that the center can remain darker\n 'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );'\n );\n };\n\n const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n return {\n renderTarget,\n planeGeometry,\n depthMaterial,\n blurPlane,\n horizontalBlurMaterial,\n verticalBlurMaterial,\n renderTargetBlur,\n };\n }\n )\n );\n }\n\n private onBeforeRender(count: number, { scene, gl }: NgtRenderState) {\n const {\n frames,\n blur,\n contactShadows: { depthMaterial, renderTarget },\n smooth,\n } = this.get();\n\n if (this.shadowCameraRef.nativeElement && (frames === Infinity || count < frames)) {\n const initialBackground = scene.background;\n scene.background = null;\n const initialOverrideMaterial = scene.overrideMaterial;\n scene.overrideMaterial = depthMaterial;\n gl.setRenderTarget(renderTarget);\n gl.render(scene, this.shadowCameraRef.nativeElement);\n scene.overrideMaterial = initialOverrideMaterial;\n\n this.blurShadows(blur);\n if (smooth) this.blurShadows(blur * 0.4);\n\n gl.setRenderTarget(null);\n scene.background = initialBackground;\n count++;\n }\n }\n\n private blurShadows(blur: number) {\n const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } =\n this.get('contactShadows');\n const gl = this.store.get('gl');\n\n blurPlane.visible = true;\n\n blurPlane.material = horizontalBlurMaterial;\n horizontalBlurMaterial.uniforms.tDiffuse.value = renderTarget.texture;\n horizontalBlurMaterial.uniforms.h.value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTargetBlur);\n gl.render(blurPlane, this.shadowCameraRef.nativeElement);\n\n blurPlane.material = verticalBlurMaterial;\n verticalBlurMaterial.uniforms.tDiffuse.value = renderTargetBlur.texture;\n verticalBlurMaterial.uniforms.v.value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTarget);\n gl.render(blurPlane, this.shadowCameraRef.nativeElement);\n\n blurPlane.visible = false;\n }\n}\n","export const ngtsEnvironmentPresetsObj = {\n sunset: 'venice/venice_sunset_1k.hdr',\n dawn: 'kiara/kiara_1_dawn_1k.hdr',\n night: 'dikhololo/dikhololo_night_1k.hdr',\n warehouse: 'empty-wharehouse/empty_warehouse_01_1k.hdr',\n forest: 'forrest-slope/forest_slope_1k.hdr',\n apartment: 'lebombo/lebombo_1k.hdr',\n studio: 'studio-small-3/studio_small_03_1k.hdr',\n city: 'potsdamer-platz/potsdamer_platz_1k.hdr',\n park: 'rooitou/rooitou_park_1k.hdr',\n lobby: 'st-fagans/st_fagans_interior_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresetsType = keyof typeof ngtsEnvironmentPresetsObj;\n","import { Directive, ElementRef, inject, Input } from '@angular/core';\nimport { NgtRxStore, NgtStore } from 'angular-three';\nimport { Loader, Scene, Texture, TextureEncoding } from 'three';\nimport { NgtsEnvironmentPresetsType } from './assets';\n\n@Directive()\nexport abstract class NgtsEnvironmentInputs extends NgtRxStore {\n protected readonly store = inject(NgtStore);\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set near(near: number) {\n this.set({ near });\n }\n\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set background(background: boolean | 'only') {\n this.set({ background });\n }\n\n @Input() set blur(blur: number) {\n this.set({ blur });\n }\n\n @Input() set map(map: Texture) {\n this.set({ map });\n }\n\n @Input() set files(files: string | string[]) {\n this.set({ files });\n }\n\n @Input() set path(path: string) {\n this.set({ path });\n }\n\n @Input() set preset(preset: NgtsEnvironmentPresetsType) {\n this.set({ preset });\n }\n\n @Input() set scene(scene: Scene | ElementRef<Scene>) {\n this.set({ scene });\n }\n\n @Input() set extensions(extensions: (loader: Loader) => void) {\n this.set({ extensions });\n }\n\n @Input() set ground(\n ground:\n | boolean\n | {\n radius?: number;\n height?: number;\n scale?: number;\n }\n ) {\n this.set({ ground });\n }\n\n @Input() set encoding(encoding: TextureEncoding) {\n this.set({ encoding });\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { injectNgtDestroy, injectNgtLoader, injectNgtRef, is } from 'angular-three';\nimport { debounceTime, isObservable, map, Observable, of, takeUntil } from 'rxjs';\nimport {\n CubeReflectionMapping,\n CubeTexture,\n CubeTextureLoader,\n EquirectangularReflectionMapping,\n LinearEncoding,\n sRGBEncoding,\n Texture,\n} from 'three';\nimport { RGBELoader } from 'three-stdlib';\nimport { ngtsEnvironmentPresetsObj } from './assets';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n return is.ref(scene) ? scene.nativeElement : scene;\n}\n\nexport function setEnvProps(\n background: boolean | 'only',\n scene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n defaultScene: THREE.Scene,\n texture: THREE.Texture,\n blur = 0\n) {\n const target = resolveScene(scene || defaultScene);\n const oldbg = target.background;\n const oldenv = target.environment;\n const oldBlur = target.backgroundBlurriness || 0;\n\n if (background !== 'only') target.environment = texture;\n if (background) target.background = texture;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = blur;\n\n return () => {\n if (background !== 'only') target.environment = oldenv;\n if (background) target.background = oldbg;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = oldBlur;\n };\n}\n\ntype NgtsInjectEnvironmentParams = Partial<\n Pick<NgtsEnvironmentInputs, 'files' | 'path' | 'preset' | 'extensions' | 'encoding'>\n>;\n\nconst CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';\nexport function injectNgtsEnvironment(\n paramsFactory: (\n defaultParams: NgtsInjectEnvironmentParams\n ) => NgtsInjectEnvironmentParams | Observable<NgtsInjectEnvironmentParams>\n) {\n let p = {\n files: ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],\n path: '',\n preset: undefined,\n encoding: undefined,\n } as NgtsInjectEnvironmentParams;\n const params = paramsFactory(p);\n const params$ = isObservable(params) ? params : of(params);\n\n const textureRef = injectNgtRef<Texture | CubeTexture>();\n const { destroy$ } = injectNgtDestroy(() => {\n textureRef.nativeElement?.dispose();\n });\n\n const loaderResult = injectNgtLoader(\n (inputs) => (Array.isArray(inputs) ? CubeTextureLoader : RGBELoader) as new (...args: any[]) => any,\n params$.pipe(\n debounceTime(0),\n map((data) => {\n p = data;\n return p;\n }),\n map((data) => {\n if (data.preset) {\n if (!(data.preset in ngtsEnvironmentPresetsObj))\n throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));\n data.files = ngtsEnvironmentPresetsObj[data.preset];\n data.path = CUBEMAP_ROOT;\n }\n return Array.isArray(data.files) ? [data.files] : (data.files! as any);\n })\n ),\n (loader) => {\n if (p.path) {\n loader.setPath(p.path);\n }\n if (p.extensions) {\n p.extensions(loader);\n }\n }\n );\n\n loaderResult.pipe(takeUntil(destroy$)).subscribe((results) => {\n const texture = Array.isArray(p.files!) ? (results as any[])[0] : results;\n texture.mapping = Array.isArray(p.files!) ? CubeReflectionMapping : EquirectangularReflectionMapping;\n texture.encoding = p.encoding ?? Array.isArray(p.files!) ? sRGBEncoding : LinearEncoding;\n\n textureRef.nativeElement = texture;\n });\n\n return textureRef;\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { startWithUndefined } from 'angular-three';\nimport { combineLatest, startWith } from 'rxjs';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { injectNgtsEnvironment, setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-cube',\n standalone: true,\n})\nexport class NgtsEnvironmentCube extends NgtsEnvironmentInputs implements OnInit {\n readonly textureRef = injectNgtsEnvironment((params) => this.select().pipe(startWith(params)));\n\n override initialize(): void {\n super.initialize();\n this.set({ background: false });\n }\n\n ngOnInit() {\n this.setEnvProps();\n }\n\n private setEnvProps() {\n this.effect(\n combineLatest([\n this.store.select('scene'),\n this.select('scene').pipe(startWithUndefined()),\n this.select('background'),\n this.select('blur').pipe(startWithUndefined()),\n this.textureRef.$,\n ]),\n ([defaultScene, scene, background, blur, texture]) => {\n return setEnvProps(background, scene, defaultScene, texture, blur);\n }\n );\n }\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { startWithUndefined } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-map',\n standalone: true,\n})\nexport class NgtsEnvironmentMap extends NgtsEnvironmentInputs implements OnInit {\n override initialize() {\n super.initialize();\n this.set({ background: false });\n }\n\n ngOnInit() {\n this.setEnvProps();\n }\n\n private setEnvProps() {\n this.effect(\n combineLatest([\n this.store.select('scene'),\n this.select('map'),\n this.select('scene').pipe(startWithUndefined()),\n this.select('background'),\n this.select('blur').pipe(startWithUndefined()),\n ]),\n ([defaultScene, map, scene, background, blur]) => {\n if (map) {\n return setEnvProps(background, scene, defaultScene, map, blur);\n }\n }\n );\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, OnInit } from '@angular/core';\nimport { extend, NgtArgs, startWithUndefined } from 'angular-three';\nimport { combineLatest, map, startWith } from 'rxjs';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { injectNgtsEnvironment } from './utils';\n\nextend({ GroundProjectedEnv });\n\n@Component({\n selector: 'ngts-environment-ground',\n standalone: true,\n template: `\n <ngts-environment-map\n [background]=\"get('background')\"\n [blur]=\"get('blur')\"\n [scene]=\"get('scene')\"\n [map]=\"get('texture')\"\n />\n <ng-container *ngIf=\"get('groundArgs') as groundArgs\">\n <ngt-ground-projected-env\n *args=\"groundArgs\"\n [scale]=\"get('groundScale')\"\n [height]=\"get('groundHeight')\"\n [radius]=\"get('groundRadius')\"\n />\n </ng-container>\n `,\n imports: [NgtsEnvironmentMap, NgtArgs, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentGround extends NgtsEnvironmentInputs implements OnInit {\n readonly defaultTexture = injectNgtsEnvironment((params) => this.select().pipe(startWith(params)));\n\n ngOnInit() {\n this.connect(\n 'texture',\n combineLatest([this.select('map').pipe(startWithUndefined()), this.defaultTexture.$]).pipe(\n map(([map, texture]) => map || texture)\n )\n );\n this.connect('groundArgs', this.select('texture').pipe(map((texture) => [texture])));\n this.connect(\n 'groundHeight',\n this.select(['ground'], ({ ground }) => ground?.height)\n );\n this.connect(\n 'groundRadius',\n this.select(['ground'], ({ ground }) => ground?.radius)\n );\n this.connect(\n 'groundScale',\n this.select(['ground'], ({ ground }) => ground?.scale ?? 1000)\n );\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, OnInit } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPortal,\n NgtPortalContent,\n NgtRenderState,\n prepare,\n} from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport * as THREE from 'three';\nimport { CubeCamera, HalfFloatType } from 'three';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { setEnvProps } from './utils';\n\nextend({ CubeCamera });\n\n@Component({\n selector: 'ngts-environment-portal',\n standalone: true,\n template: `\n <ngt-portal [container]=\"virtualSceneRef\">\n <ng-template ngtPortalContent>\n <ng-content />\n <ngt-cube-camera *args=\"get('cameraArgs')\" [ref]=\"cubeCameraRef\" />\n <ng-container *ngIf=\"get('files') || get('preset'); else environmentMap\">\n <ngts-environment-cube\n [background]=\"true\"\n [files]=\"get('files')\"\n [preset]=\"get('preset')\"\n [path]=\"get('path')\"\n [extensions]=\"get('extensions')\"\n />\n </ng-container>\n <ng-template #environmentMap>\n <ngts-environment-map [background]=\"true\" [map]=\"get('map')\" [extensions]=\"get('extensions')\" />\n </ng-template>\n </ng-template>\n </ngt-portal>\n `,\n imports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentPortal extends NgtsEnvironmentInputs implements OnInit {\n readonly virtualSceneRef = injectNgtRef<THREE.Scene>(prepare(new THREE.Scene()));\n readonly cubeCameraRef = injectNgtRef<THREE.CubeCamera>();\n\n override initialize(): void {\n super.initialize();\n this.set({ near: 1, far: 1000, resolution: 256, frames: 1, background: false, preset: undefined });\n this.connect(\n 'fbo',\n this.select(['resolution'], ({ resolution }) => {\n const fbo = new THREE.WebGLCubeRenderTarget(resolution);\n fbo.texture.type = HalfFloatType;\n return fbo;\n })\n );\n this.connect(\n 'cameraArgs',\n this.select(['fbo', 'near', 'far'], ({ near, far, fbo }) => [near, far, fbo])\n );\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this, 1));\n }\n\n ngOnInit(): void {\n this.setEnvProps();\n }\n\n private setEnvProps() {\n this.effect(\n combineLatest([\n this.store.select('gl'),\n this.store.select('scene'),\n this.select('fbo'),\n this.select('scene'),\n this.select('background'),\n this.select('frames'),\n this.select('blur'),\n this.virtualSceneRef.$,\n this.cubeCameraRef.$,\n ]),\n ([gl, defaultScene, fbo, scene, background, frames, blur, virtualScene, camera]) => {\n if (frames === 1) camera.update(gl, virtualScene);\n return setEnvProps(background, scene, defaultScene, fbo.texture, blur);\n }\n );\n }\n\n private onBeforeRender(count: number, { gl }: NgtRenderState) {\n const { frames } = this.get();\n if (frames === Infinity || count < frames) {\n if (this.cubeCameraRef.nativeElement) {\n this.cubeCameraRef.nativeElement.update(gl, this.virtualSceneRef.nativeElement);\n count++;\n }\n }\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, TemplateRef } from '@angular/core';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentGround } from './environment-ground';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { NgtsEnvironmentPortal } from './environment-portal';\n\n@Directive({ selector: 'ng-template[ngtsEnvironmentContent]', standalone: true })\nexport class NgtsEnvironmentContent {}\n\n@Component({\n selector: 'ngts-environment',\n standalone: true,\n template: `\n <ngts-environment-ground\n *ngIf=\"get('ground'); else noGround\"\n [ground]=\"get('ground')\"\n [map]=\"get('map')\"\n [scene]=\"get('scene')\"\n [blur]=\"get('blur')\"\n [background]=\"get('background')\"\n [preset]=\"get('preset')\"\n [frames]=\"get('frames')\"\n [far]=\"get('far')\"\n [near]=\"get('near')\"\n [resolution]=\"get('resolution')\"\n [files]=\"get('files')\"\n [path]=\"get('path')\"\n [extensions]=\"get('extensions')\"\n />\n <ng-template #noGround>\n <ngts-environment-map\n *ngIf=\"get('map'); else noMap\"\n [map]=\"get('map')\"\n [scene]=\"get('scene')\"\n [blur]=\"get('blur')\"\n [background]=\"get('background')\"\n />\n <ng-template #noMap>\n <ngts-environment-portal\n *ngIf=\"content; else noPortal\"\n [frames]=\"get('frames')\"\n [far]=\"get('far')\"\n [near]=\"get('near')\"\n [resolution]=\"get('resolution')\"\n [map]=\"get('map')\"\n [background]=\"get('background')\"\n [blur]=\"get('blur')\"\n [scene]=\"get('scene')\"\n [files]=\"get('files')\"\n [path]=\"get('path')\"\n [preset]=\"get('preset')\"\n [extensions]=\"get('extensions')\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </ngts-environment-portal>\n <ng-template #noPortal>\n <ngts-environment-cube\n [frames]=\"get('frames')\"\n [far]=\"get('far')\"\n [near]=\"get('near')\"\n [resolution]=\"get('resolution')\"\n [map]=\"get('map')\"\n [background]=\"get('background')\"\n [blur]=\"get('blur')\"\n [scene]=\"get('scene')\"\n [files]=\"get('files')\"\n [path]=\"get('path')\"\n [preset]=\"get('preset')\"\n [extensions]=\"get('extensions')\"\n />\n </ng-template>\n </ng-template>\n </ng-template>\n `,\n imports: [\n NgtsEnvironmentMap,\n NgtsEnvironmentGround,\n NgtsEnvironmentCube,\n NgtsEnvironmentPortal,\n NgIf,\n NgTemplateOutlet,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironment extends NgtsEnvironmentInputs {\n @ContentChild(NgtsEnvironmentContent, { read: TemplateRef }) content?: TemplateRef<unknown>;\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtRenderState, NgtRxStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-float',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"floatRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsFloat extends NgtRxStore {\n private readonly offset = Math.random() * 10000;\n\n @Input() floatRef = injectNgtRef<THREE.Group>();\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set rotationIntensity(rotationIntensity: number) {\n this.set({ rotationIntensity });\n }\n\n @Input() set floatIntensity(floatIntensity: number) {\n this.set({ floatIntensity });\n }\n\n @Input() set floatingRange(floatingRange: [number?, number?]) {\n this.set({ floatingRange });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1] });\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this));\n }\n\n private onBeforeRender({ clock }: NgtRenderState) {\n if (!this.floatRef.nativeElement) return;\n const { speed, floatingRange, floatIntensity, rotationIntensity } = this.get();\n const t = this.offset + clock.getElapsedTime();\n this.floatRef.nativeElement.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n this.floatRef.nativeElement.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n this.floatRef.nativeElement.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n let yPosition = Math.sin((t / 4) * speed) / 10;\n yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);\n this.floatRef.nativeElement.position.y = yPosition * floatIntensity;\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, OnInit } from '@angular/core';\nimport { injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';\nimport { Vector3 } from 'three';\nimport { Sky } from 'three-stdlib';\n\nexport function calcPosFromAngles(inclination: number, azimuth: number, vector: Vector3 = new Vector3()) {\n const theta = Math.PI * (inclination - 0.5);\n const phi = 2 * Math.PI * (azimuth - 0.5);\n\n vector.x = Math.cos(phi);\n vector.y = Math.sin(theta);\n vector.z = Math.sin(phi);\n\n return vector;\n}\n\n@Component({\n selector: 'ngts-sky',\n standalone: true,\n template: `\n <ngt-primitive *args=\"[skyRef.nativeElement]\" ngtCompound [ref]=\"skyRef\" [scale]=\"get('scale')\">\n <ngt-value [rawValue]=\"get('mieCoefficient')\" attach=\"material.uniforms.mieCoefficient.value\" />\n <ngt-value [rawValue]=\"get('mieDirectionalG')\" attach=\"material.uniforms.mieDirectionalG.value\" />\n <ngt-value [rawValue]=\"get('rayleigh')\" attach=\"material.uniforms.rayleigh.value\" />\n <ngt-value [rawValue]=\"get('sunPosition')\" attach=\"material.uniforms.sunPosition.value\" />\n <ngt-value [rawValue]=\"get('turbidity')\" attach=\"material.uniforms.turbidity.value\" />\n </ngt-primitive>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSky extends NgtRxStore implements OnInit {\n @Input() skyRef = injectNgtRef<Sky>();\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set sunPosition(sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n this.set({ sunPosition });\n }\n\n @Input() set inclination(inclination: number) {\n this.set({ inclination });\n }\n\n @Input() set azimuth(azimuth: number) {\n this.set({ azimuth });\n }\n\n @Input() set mieCoefficient(mieCoefficient: number) {\n this.set({ mieCoefficient });\n }\n\n @Input() set mieDirectionalG(mieDirectionalG: number) {\n this.set({ mieDirectionalG });\n }\n\n @Input() set rayleigh(rayleigh: number) {\n this.set({ rayleigh });\n }\n\n @Input() set turbidity(turbidity: number) {\n this.set({ turbidity });\n }\n\n override initialize(): void {\n super.initialize();\n const inclination = 0.6;\n const azimuth = 0.1;\n this.set({\n inclination,\n azimuth,\n distance: 1000,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.8,\n rayleigh: 0.5,\n turbidity: 10,\n sunPosition: calcPosFromAngles(inclination, azimuth),\n });\n this.connect(\n 'sunPosition',\n this.select(['inclination', 'azimuth'], ({ inclination, azimuth }) =>\n calcPosFromAngles(inclination, azimuth)\n )\n );\n this.connect(\n 'scale',\n this.select(['distance'], ({ distance }) => new Vector3().setScalar(distance))\n );\n }\n\n ngOnInit() {\n if (!this.skyRef.nativeElement) this.skyRef.nativeElement = new Sky();\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRenderState, NgtRxStore, NgtStore } from 'angular-three';\nimport { shaderMaterial } from 'angular-three-soba/shaders';\nimport { map, Observable, startWith, withLatestFrom } from 'rxjs';\nimport { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';\n\nconst SparklesMaterial = shaderMaterial(\n { time: 0, pixelRatio: 1 },\n // language=GLSL\n `\nuniform float pixelRatio;\nuniform float time;\n\nattribute float size;\nattribute float speed;\nattribute float opacity;\nattribute vec3 noise;\nattribute vec3 color;\n\nvarying vec3 vColor;\nvarying float vOpacity;\n\nvoid main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n\n modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;\n modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;\n modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;\n\n vec4 viewPosition = viewMatrix * modelPosition;\n vec4 projectionPostion = projectionMatrix * viewPosition;\n\n gl_Position = projectionPostion;\n gl_PointSize = size * 25. * pixelRatio;\n gl_PointSize *= (1.0 / - viewPosition.z);\n\n vColor = color;\n vOpacity = opacity;\n}\n `,\n // language=GLSL\n `\nvarying vec3 vColor;\nvarying float vOpacity;\n\nvoid main() {\n float distanceToCenter = distance(gl_PointCoord, vec2(0.5));\n float strength = 0.05 / distanceToCenter - 0.1;\n\n gl_FragColor = vec4(vColor, strength * vOpacity);\n}\n `\n);\n\nextend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });\n\nconst isFloat32Array = (def: any): def is Float32Array => def && (def as Float32Array).constructor === Float32Array;\n\nconst expandColor = (v: THREE.Color) => [v.r, v.g, v.b];\nconst isVector = (v: any): v is THREE.Vector2 | THREE.Vector3 | THREE.Vector4 =>\n v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;\n\nconst normalizeVector = (v: any): number[] => {\n if (Array.isArray(v)) return v;\n else if (isVector(v)) return v.toArray();\n return [v, v, v] as number[];\n};\n\nfunction usePropAsIsOrAsAttribute<T = any>(count: number, prop?: T | Float32Array, setDefault?: (v: T) => number) {\n if (prop !== undefined) {\n if (isFloat32Array(prop)) {\n return prop as Float32Array;\n } else {\n if (prop instanceof Color) {\n const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();\n return Float32Array.from(a);\n } else if (isVector(prop) || Array.isArray(prop)) {\n const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();\n return Float32Array.from(a);\n }\n return Float32Array.from({ length: count }, () => prop as unknown as number);\n }\n }\n return Float32Array.from({ length: count }, setDefault!);\n}\n\n@Component({\n selector: 'ngts-sparkles',\n standalone: true,\n template: `\n <ngt-points ngtCompount [ref]=\"pointsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute *args=\"[get('positions'), 3]\" attach=\"attributes.position\" />\n <ngt-buffer-attribute *args=\"[get('sizes'), 1]\" attach=\"attributes.size\" />\n <ngt-buffer-attribute *args=\"[get('opacities'), 1]\" attach=\"attributes.opacity\" />\n <ngt-buffer-attribute *args=\"[get('speeds'), 1]\" attach=\"attributes.speed\" />\n <ngt-buffer-attribute *args=\"[get('colors'), 3]\" attach=\"attributes.color\" />\n <ngt-buffer-attribute *args=\"[get('noises'), 3]\" attach=\"attributes.noise\" />\n </ngt-buffer-geometry>\n <ngt-sparkles-material [ref]=\"materialRef\" [transparent]=\"true\" [depthWrite]=\"false\" [pixelRatio]=\"dpr\" />\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSparkles extends NgtRxStore {\n private readonly store = inject(NgtStore);\n readonly dpr = this.store.get('viewport', 'dpr');\n readonly materialRef = injectNgtRef<typeof SparklesMaterial.prototype>();\n\n @Input() pointsRef = injectNgtRef<Points>();\n\n /** Number of particles (default: 100) */\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n /** Speed of particles (default: 1) */\n @Input() set speed(speed: number | Float32Array) {\n this.set({ speed });\n }\n\n /** Opacity of particles (default: 1) */\n @Input() set opacity(opacity: number | Float32Array) {\n this.set({ opacity });\n }\n\n /** Color of particles (default: 100) */\n @Input() set color(color: THREE.ColorRepresentation | Float32Array) {\n this.set({ color });\n }\n\n /** Size of particles (default: randomized between 0 and 1) */\n @Input() set size(size: number | Float32Array) {\n this.set({ size });\n }\n\n /** The space the particles occupy (default: 1) */\n @Input() set scale(scale: number | [number, number, number] | THREE.Vector3) {\n this.set({ scale });\n }\n\n /** Movement factor (default: 1) */\n @Input() set noise(noise: number | [number, number, number] | THREE.Vector3 | Float32Array) {\n this.set({ noise });\n }\n\n override initialize() {\n super.initialize();\n this.set({\n noise: 1,\n count: 100,\n speed: 1,\n opacity: 1,\n scale: 1,\n });\n this.connect(\n 'positions',\n this.select(['count', 'scale'], ({ count, scale }) =>\n Float32Array.from(\n Array.from({ length: count }, () => normalizeVector(scale).map(MathUtils.randFloatSpread)).flat()\n )\n )\n );\n\n this.connect('sizes', this.getAttribute$<number>('size', { setDefault: Math.random }));\n this.connect('opacities', this.getAttribute$<number>('opacity'));\n this.connect('speeds', this.getAttribute$<number>('speed'));\n this.connect(\n 'noises',\n this.getAttribute$<number | [number, number, number] | THREE.Vector3 | Float32Array>('noise', {\n countValue: (_, count) => count * 3,\n })\n );\n this.connect(\n 'colors',\n this.getAttribute$<THREE.ColorRepresentation>('color', {\n keyValue: (color) => (!isFloat32Array(color) ? new Color(color) : color),\n countValue: (color, count) => (color === undefined ? count * 3 : count),\n setDefault: () => 1,\n })\n );\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this));\n }\n\n private onBeforeRender({ clock }: NgtRenderState) {\n if (!this.materialRef.nativeElement) return;\n this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;\n }\n\n private getAttribute$<TValue>(\n key: string,\n options?: {\n keyValue?: (value: TValue, count: number) => TValue;\n countValue?: (value: TValue, count: number) => number;\n setDefault?: (value: TValue) => number;\n }\n ): Observable<Float32Array> {\n options ??= {};\n if (!options.keyValue) {\n options.keyValue = (value) => value;\n }\n\n if (!options.countValue) {\n options.countValue = (_, count) => count;\n }\n return this.select(key).pipe(\n startWith(this.get(key) || undefined),\n withLatestFrom(this.select('count')),\n map(([value, count]) =>\n usePropAsIsOrAsAttribute(\n options!.countValue!(value, count),\n options!.keyValue!(value, count),\n options?.setDefault\n )\n )\n );\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtRxStore } from 'angular-three';\nimport { map } from 'rxjs';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows } from '../accumulative-shadows/accumulative-shadows';\nimport { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';\nimport { NgtsBounds, NGTS_BOUNDS_API } from '../bounds/bounds';\nimport { NgtsCenter } from '../center/center';\nimport { NgtsContactShadows } from '../contact-shadows/contact-shadows';\nimport { NgtsEnvironmentPresetsType } from '../environment/assets';\nimport { NgtsEnvironment } from '../environment/environment';\nimport { NgtsEnvironmentInputs } from '../environment/environment-inputs';\n\nconst presets = {\n rembrandt: {\n main: [1, 2, 1],\n fill: [-2, -0.5, -2],\n },\n portrait: {\n main: [-1, 2, 0.5],\n fill: [-1, 0.5, -1.5],\n },\n upfront: {\n main: [0, 2, 1],\n fill: [-1, 0.5, -1.5],\n },\n soft: {\n main: [-2, 4, 4],\n fill: [-1, 0.5, -1.5],\n },\n};\n\ntype NgtsStageShadows = Partial<NgtsAccumulativeShadows> &\n Partial<NgtsRandomizedLights> &\n Partial<NgtsContactShadows> & {\n type: 'contact' | 'accumulative';\n /** Shadow plane offset, default: 0 */\n offset?: number;\n /** Shadow bias, default: -0.0001 */\n bias?: number;\n /** Shadow normal bias, default: 0 */\n normalBias?: number;\n /** Shadow map size, default: 1024 */\n size?: number;\n };\n\ntype NgtsStageProps = {\n /** Lighting setup, default: \"rembrandt\" */\n preset?:\n | 'rembrandt'\n | 'portrait'\n | 'upfront'\n | 'soft'\n | { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n /** Controls the ground shadows, default: \"contact\" */\n shadows?: boolean | 'contact' | 'accumulative' | NgtsStageShadows;\n /** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n adjustCamera?: boolean | number;\n /** The default environment, default: \"city\" */\n environment?: NgtsEnvironmentPresetsType | Partial<NgtsEnvironmentInputs>;\n /** The lighting intensity, default: 0.5 */\n intensity?: number;\n /** To adjust centering, default: undefined */\n center?: Partial<NgtsCenter>;\n};\n\n@Directive({\n selector: 'ngts-stage-refit',\n standalone: true,\n})\nexport class NgtsStageRefit implements OnChanges {\n private readonly boundsApi = inject(NGTS_BOUNDS_API);\n\n @Input() radius = 0;\n @Input() adjustCamera = true;\n\n ngOnChanges() {\n if (this.adjustCamera) {\n this.boundsApi.refresh().clip().fit();\n }\n }\n}\n\nextend({ AmbientLight, SpotLight, Vector2, PointLight, Group });\n\n@Component({\n selector: 'ngts-stage',\n standalone: true,\n template: `\n <ngt-ambient-light [intensity]=\"get('intensity')! / 3\" />\n <ngt-spot-light\n [penumbra]=\"1\"\n [position]=\"get('spotLightPosition')\"\n [intensity]=\"get('intensity')! * 2\"\n [castShadow]=\"!!get('shadows')\"\n >\n <ngt-value [rawValue]=\"get('shadowsInfo').shadowBias\" attach=\"shadow.bias\" />\n <ngt-value [rawValue]=\"get('shadowsInfo').normalBias\" attach=\"shadow.normalBias\" />\n <ngt-vector2\n *args=\"[get('shadowsInfo').shadowSize, get('shadowsInfo').shadowSize]\"\n attach=\"shadow.mapSize\"\n />\n </ngt-spot-light>\n <ngt-point-light [position]=\"get('pointLightPosition')\" [intensity]=\"get('intensity')\" />\n\n <ngts-bounds\n [fit]=\"!!get('adjustCamera')\"\n [clip]=\"!!get('adjustCamera')\"\n [margin]=\"Number(get('adjustCamera'))\"\n [observe]=\"true\"\n >\n <ngts-stage-refit [radius]=\"get('radius')\" [adjustCamera]=\"!!get('adjustCamera')\" />\n <ngts-center\n [position]=\"[0, get('shadowsInfo').shadowOffset / 2, 0]\"\n [top]=\"!!get('center')?.top\"\n [right]=\"!!get('center')?.right\"\n [bottom]=\"!!get('center')?.bottom\"\n [left]=\"!!get('center')?.left\"\n [front]=\"!!get('center')?.front\"\n [back]=\"!!get('center')?.back\"\n [disableX]=\"!!get('center')?.disableX\"\n [disableY]=\"!!get('center')?.disableY\"\n [disableZ]=\"!!get('center')?.disableZ\"\n [precise]=\"!!get('center')?.precise\"\n (centered)=\"onCentered($event)\"\n >\n <ng-content />\n </ngts-center>\n </ngts-bounds>\n <ngt-group [position]=\"[0, -get('height') / 2 - get('shadowsInfo').shadowOffset / 2, 0]\">\n <ngts-contact-shadows\n *ngIf=\"get('shadowsInfo').contactShadow\"\n [scale]=\"get('radius') * 4\"\n [far]=\"get('radius')\"\n [blur]=\"2\"\n [opacity]=\"get('shadowsInfo').opacity\"\n [width]=\"get('shadowsInfo').width\"\n [height]=\"get('shadowsInfo').height\"\n [smooth]=\"get('shadowsInfo').smooth\"\n [resolution]=\"get('shadowsInfo').resolution\"\n [frames]=\"get('shadowsInfo').frames\"\n [scale]=\"get('shadowsInfo').scale\"\n [color]=\"get('shadowsInfo').color\"\n [depthWrite]=\"get('shadowsInfo').depthWrite\"\n [renderOrder]=\"get('shadowsInfo').renderOrder\"\n />\n <ngts-accumulative-shadows\n *ngIf=\"get('shadowsInfo').accumulativeShadow\"\n [temporal]=\"true\"\n [frames]=\"100\"\n [alphaTest]=\"0.9\"\n [toneMapped]=\"true\"\n [scale]=\"get('radius') * 4\"\n [opacity]=\"get('shadowsInfo').opacity\"\n [alphaTest]=\"get('shadowsInfo').alphaTest\"\n [color]=\"get('shadowsInfo').color\"\n [colorBlend]=\"get('shadowsInfo').colorBlend\"\n [resolution]=\"get('shadowsInfo').resolution\"\n >\n <ngts-randomized-lights\n [amount]=\"get('shadowsInfo').amount ?? 8\"\n [radius]=\"get('shadowsInfo').radius ?? get('radius')\"\n [ambient]=\"get('shadowsInfo').ambient ?? 0.5\"\n [intensity]=\"get('shadowsInfo').intensity ?? 1\"\n [position]=\"get('spotLightPosition')\"\n [size]=\"get('radius') * 4\"\n [bias]=\"-get('shadowsInfo').shadowBias\"\n [mapSize]=\"get('shadowsInfo').shadowSize\"\n />\n </ngts-accumulative-shadows>\n </ngt-group>\n <ngts-environment\n *ngIf=\"get('environmentInfo')\"\n [frames]=\"get('environmentInfo').frames\"\n [near]=\"get('environmentInfo').near\"\n [far]=\"get('environmentInfo').far\"\n [resolution]=\"get('environmentInfo').resolution\"\n [background]=\"get('environmentInfo').background\"\n [blur]=\"get('environmentInfo').blur\"\n [map]=\"get('environmentInfo').map\"\n [files]=\"get('environmentInfo').files\"\n [path]=\"get('environmentInfo').path\"\n [preset]=\"get('environmentInfo').preset\"\n [scene]=\"get('environmentInfo').scene\"\n [extensions]=\"get('environmentInfo').extensions\"\n [ground]=\"get('environmentInfo').ground\"\n [encoding]=\"get('environmentInfo').encoding\"\n />\n `,\n imports: [\n NgtArgs,\n NgtsBounds,\n NgtsStageRefit,\n NgtsCenter,\n NgIf,\n NgtsContactShadows,\n NgtsAccumulativeShadows,\n NgtsRandomizedLights,\n NgtsEnvironment,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStage extends NgtRxStore<NgtsStageProps> {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly Number = Number;\n\n @Input() set preset(preset: NgtsStageProps['preset']) {\n this.set({ preset });\n }\n\n @Input() set shadows(shadows: NgtsStageProps['shadows']) {\n this.set({ shadows });\n }\n\n @Input() set adjustCamera(adjustCamera: NgtsStageProps['adjustCamera']) {\n this.set({ adjustCamera });\n }\n\n @Input() set environment(environment: NgtsStageProps['environment']) {\n this.set({ environment });\n }\n\n @Input() set intensity(intensity: NgtsStageProps['intensity']) {\n this.set({ intensity });\n }\n\n @Input() set center(center: NgtsStageProps['center']) {\n this.set({ center });\n }\n\n @Output() centered = new EventEmitter() as NgtsCenter['centered'];\n\n override initialize() {\n super.initialize();\n this.set({\n adjustCamera: true,\n intensity: 0.5,\n shadows: 'contact',\n environment: 'city',\n preset: 'rembrandt',\n\n radius: 0,\n width: 0,\n height: 0,\n depth: 0,\n });\n\n this.connect(\n 'config',\n this.select('preset').pipe(map((preset) => (typeof preset === 'string' ? presets[preset] : preset)))\n );\n\n this.connect(\n 'shadowsInfo',\n this.select('shadows').pipe(\n map((shadows) => {\n return {\n contactShadow: shadows === 'contact' || (shadows as NgtsStageShadows)?.type === 'contact',\n accumulativeShadow:\n shadows === 'accumulative' || (shadows as NgtsStageShadows)?.type === 'accumulative',\n shadowBias: (shadows as NgtsStageShadows)?.bias ?? -0.0001,\n normalBias: (shadows as NgtsStageShadows)?.normalBias ?? 0,\n shadowSize: (shadows as NgtsStageShadows)?.size ?? 1024,\n shadowOffset: (shadows as NgtsStageShadows)?.offset ?? 0,\n ...(typeof shadows === 'string' ? {} : (shadows as NgtsStageShadows) || {}),\n };\n })\n )\n );\n\n this.connect(\n 'spotLightPosition',\n this.select(['config', 'radius'], ({ config, radius }) => [\n config.main[0] * radius,\n config.main[1] * radius,\n config.main[2] * radius,\n ])\n );\n\n this.connect(\n 'pointLightPosition',\n this.select(['config', 'radius'], ({ config, radius }) => [\n config.fill[0] * radius,\n config.fill[1] * radius,\n config.fill[2] * radius,\n ])\n );\n\n this.connect(\n 'environmentInfo',\n this.select('environment').pipe(\n map((environment) => {\n if (!environment) return null;\n if (typeof environment === 'string') return { preset: environment };\n return environment;\n })\n )\n );\n }\n\n onCentered(props: {\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }) {\n const { boundingSphere, width, height, depth } = props;\n this.set({ radius: boundingSphere.radius, width, height, depth });\n this.cdr.detectChanges();\n if (this.centered.observed) this.centered.emit(props);\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRenderState, NgtRxStore } from 'angular-three';\nimport { shaderMaterial } from 'angular-three-soba/shaders';\nimport { AdditiveBlending, BufferAttribute, BufferGeometry, Color, Points, Spherical, Vector3 } from 'three';\n\nconst StarFieldMaterial = shaderMaterial(\n {\n time: 0.0,\n fade: 0.0,\n },\n // language=GLSL\n `\nuniform float time;\nattribute float size;\nvarying vec3 vColor;\nvoid main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(time + 100.0));\n gl_Position = projectionMatrix * mvPosition;\n}\n `,\n // language=GLSL\n `\nuniform sampler2D pointTexture;\nuniform float fade;\nvarying vec3 vColor;\nvoid main() {\n float opacity = 1.0;\n if (fade == 1.0) {\n float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n }\n gl_FragColor = vec4(vColor, opacity);\n\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n}\n `\n);\n\nextend({ Points, BufferGeometry, BufferAttribute });\n\nconst genStar = (r: number) => {\n return new Vector3().setFromSpherical(\n new Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI)\n );\n};\n\n@Component({\n selector: 'ngts-stars',\n standalone: true,\n template: `\n <ngt-points [ref]=\"starsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute attach=\"attributes.position\" *args=\"[get('bufferAttributes').positions, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.color\" *args=\"[get('bufferAttributes').colors, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.size\" *args=\"[get('bufferAttributes').sizes, 1]\" />\n </ngt-buffer-geometry>\n <ngt-primitive\n *args=\"[material]\"\n attach=\"material\"\n [blending]=\"AdditiveBlending\"\n [depthWrite]=\"false\"\n [transparent]=\"true\"\n [vertexColors]=\"true\"\n >\n <ngt-value attach=\"uniforms.fade.value\" [rawValue]=\"get('fade')\" />\n </ngt-primitive>\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStars extends NgtRxStore {\n readonly AdditiveBlending = AdditiveBlending;\n readonly material = new StarFieldMaterial();\n\n @Input() starsRef = injectNgtRef<Points>();\n\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n @Input() set factor(factor: number) {\n this.set({ factor });\n }\n\n @Input() set saturation(saturation: number) {\n this.set({ saturation });\n }\n\n @Input() set fade(fade: boolean) {\n this.set({ fade });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n radius: 100,\n depth: 50,\n count: 5000,\n saturation: 0,\n factor: 4,\n fade: false,\n speed: 1,\n });\n this.connect(\n 'bufferAttributes',\n this.select(\n ['count', 'depth', 'factor', 'radius', 'saturation'],\n ({ count, depth, factor, radius, saturation }) => {\n const positions: any[] = [];\n const colors: any[] = [];\n const sizes = Array.from({ length: count }, () => (0.5 + 0.5 * Math.random()) * factor);\n const color = new Color();\n let r = radius + depth;\n const increment = depth / count;\n for (let i = 0; i < count; i++) {\n r -= increment * Math.random();\n positions.push(...genStar(r).toArray());\n color.setHSL(i / count, saturation, 0.9);\n colors.push(color.r, color.g, color.b);\n }\n return {\n positions: new Float32Array(positions),\n colors: new Float32Array(colors),\n sizes: new Float32Array(sizes),\n };\n }\n )\n );\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this));\n }\n\n onBeforeRender({ clock }: NgtRenderState) {\n this.material.uniforms['time'].value = clock.getElapsedTime() * this.get('speed');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/angular-three-soba/staging/src/lib/accumulative-shadows/progressive-light-map.ts","../../../../libs/angular-three-soba/staging/src/lib/accumulative-shadows/accumulative-shadows.ts","../../../../libs/angular-three-soba/staging/src/lib/accumulative-shadows/randomized-lights.ts","../../../../libs/angular-three-soba/staging/src/lib/bounds/bounds.ts","../../../../libs/angular-three-soba/staging/src/lib/camera-shake/camera-shake.ts","../../../../libs/angular-three-soba/staging/src/lib/center/center.ts","../../../../libs/angular-three-soba/staging/src/lib/cloud/cloud.ts","../../../../libs/angular-three-soba/staging/src/lib/contact-shadows/contact-shadows.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/assets.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-inputs.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/utils.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-cube.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-map.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-ground.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment-portal.ts","../../../../libs/angular-three-soba/staging/src/lib/environment/environment.ts","../../../../libs/angular-three-soba/staging/src/lib/float/float.ts","../../../../libs/angular-three-soba/staging/src/lib/sky/sky.ts","../../../../libs/angular-three-soba/staging/src/lib/sparkles/sparkles.ts","../../../../libs/angular-three-soba/staging/src/lib/stage/stage.ts","../../../../libs/angular-three-soba/staging/src/lib/stars/stars.ts","../../../../libs/angular-three-soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import { shaderMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nfunction isLight(object: any): object is THREE.Light {\n return object.isLight;\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n return !!object.geometry;\n}\n\nconst DiscardMaterial = shaderMaterial(\n {},\n 'void main() { gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }',\n 'void main() { discard; }'\n);\n\nexport class ProgressiveLightMap {\n renderer: THREE.WebGLRenderer;\n res: number;\n scene: THREE.Scene;\n object: THREE.Mesh | null;\n buffer1Active: boolean;\n progressiveLightMap1: THREE.WebGLRenderTarget;\n progressiveLightMap2: THREE.WebGLRenderTarget;\n discardMat: THREE.ShaderMaterial;\n targetMat: THREE.MeshLambertMaterial;\n previousShadowMap: { value: THREE.Texture };\n averagingWindow: { value: number };\n clearColor: THREE.Color;\n clearAlpha: number;\n lights: { object: THREE.Light; intensity: number }[];\n meshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[];\n\n constructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n this.renderer = renderer;\n this.res = res;\n this.scene = scene;\n this.buffer1Active = false;\n this.lights = [];\n this.meshes = [];\n this.object = null;\n this.clearColor = new THREE.Color();\n this.clearAlpha = 0;\n\n // Create the Progressive LightMap Texture\n const format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;\n this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n encoding: renderer.outputEncoding,\n });\n this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n encoding: renderer.outputEncoding,\n });\n\n // Inject some spicy new logic into a standard phong material\n this.discardMat = new DiscardMaterial();\n this.targetMat = new THREE.MeshLambertMaterial({ fog: false });\n this.previousShadowMap = { value: this.progressiveLightMap1.texture };\n this.averagingWindow = { value: 100 };\n this.targetMat.onBeforeCompile = (shader) => {\n // Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n shader.vertexShader =\n 'varying vec2 vUv;\\n' +\n shader.vertexShader.slice(0, -1) +\n 'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n // Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n const bodyStart = shader.fragmentShader.indexOf('void main() {');\n shader.fragmentShader =\n 'varying vec2 vUv;\\n' +\n shader.fragmentShader.slice(0, bodyStart) +\n 'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n shader.fragmentShader.slice(bodyStart - 1, -1) +\n `\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`;\n\n // Set the Previous Frame's Texture Buffer and Averaging Window\n shader.uniforms['previousShadowMap'] = this.previousShadowMap;\n shader.uniforms['averagingWindow'] = this.averagingWindow;\n };\n }\n\n clear() {\n this.renderer.getClearColor(this.clearColor);\n this.clearAlpha = this.renderer.getClearAlpha();\n this.renderer.setClearColor('black', 1);\n this.renderer.setRenderTarget(this.progressiveLightMap1);\n this.renderer.clear();\n this.renderer.setRenderTarget(this.progressiveLightMap2);\n this.renderer.clear();\n this.renderer.setRenderTarget(null);\n this.renderer.setClearColor(this.clearColor, this.clearAlpha);\n\n this.lights = [];\n this.meshes = [];\n this.scene.traverse((object) => {\n if (isGeometry(object)) {\n this.meshes.push({ object, material: object.material });\n } else if (isLight(object)) {\n this.lights.push({ object, intensity: object.intensity });\n }\n });\n }\n\n prepare() {\n this.lights.forEach((light) => (light.object.intensity = 0));\n this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));\n }\n\n finish() {\n this.lights.forEach((light) => (light.object.intensity = light.intensity));\n this.meshes.forEach((mesh) => (mesh.object.material = mesh.material));\n }\n\n configure(object: any) {\n this.object = object;\n }\n\n update(camera: any, blendWindow = 100) {\n if (!this.object) return;\n // Set each object's material to the UV Unwrapped Surface Mapping Version\n this.averagingWindow.value = blendWindow;\n this.object.material = this.targetMat;\n // Ping-pong two surface buffers for reading/writing\n const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n // Render the object's surface maps\n const oldBg = this.scene.background;\n this.scene.background = null;\n this.renderer.setRenderTarget(activeMap);\n this.previousShadowMap.value = inactiveMap.texture;\n this.buffer1Active = !this.buffer1Active;\n this.renderer.render(this.scene, camera);\n this.renderer.setRenderTarget(null);\n this.scene.background = oldBg;\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Directive, inject, InjectionToken, Input } from '@angular/core';\nimport { extend, getLocalState, injectNgtRef, NgtRxStore, NgtStore } from 'angular-three';\nimport { shaderMaterial } from 'angular-three-soba/shaders';\nimport { combineLatest, Subject } from 'rxjs';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry } from 'three';\nimport { ProgressiveLightMap } from './progressive-light-map';\n\nconst SoftShadowMaterial = shaderMaterial(\n {\n color: new THREE.Color(),\n blend: 2.0,\n alphaTest: 0.75,\n opacity: 0,\n map: null,\n },\n // language=GLSL\n `\nvarying vec2 vUv;\nvoid main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n}\n `,\n // language=GLSL\n `\nvarying vec2 vUv;\nuniform sampler2D map;\nuniform vec3 color;\nuniform float blend;\nuniform float opacity;\nuniform float alphaTest;\nvoid main() {\n vec4 sampledDiffuseColor = texture2D(map, vUv);\n gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n}\n `\n);\n\ntype SoftShadowMaterialInputs = {\n map: THREE.Texture;\n color?: THREE.ColorRepresentation;\n alphaTest?: number;\n blend?: number;\n};\n\nextend({ SoftShadowMaterial, Group, Mesh, PlaneGeometry });\n\nexport type NgtsAccumulativeShadowsLightApi = { update: () => void };\n\nexport type NgtsAccumulativeShadowsApi = {\n lights: Map<string, NgtsAccumulativeShadowsLightApi>;\n temporal: boolean;\n frames: number;\n blend: number;\n count: number;\n getMesh: () => THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>;\n reset: () => void;\n update: (frames?: number) => void;\n};\n\nexport const NGTS_ACCUMULATIVE_SHADOWS_API = new InjectionToken<NgtsAccumulativeShadowsApi>(\n 'NgtsAccumulativeShadows API'\n);\n\nfunction accumulativeShadowsApiFactory(accumulativeShadows: NgtsAccumulativeShadows) {\n const store = inject(NgtStore);\n\n const api = {\n lights: new Map(),\n count: 0,\n getMesh: () =>\n accumulativeShadows.meshRef.nativeElement as THREE.Mesh<\n THREE.PlaneGeometry,\n SoftShadowMaterialInputs & THREE.ShaderMaterial\n >,\n reset: () => {\n accumulativeShadows.pLM.clear();\n const material = api.getMesh().material;\n material.opacity = 0;\n material.alphaTest = 0;\n api.count = 0;\n },\n update: (frames = 1) => {\n // adapt the opacity blend ratio to the number of frames\n const material = api.getMesh().material;\n if (!api.temporal) {\n material.opacity = accumulativeShadows.get('opacity');\n material.alphaTest = accumulativeShadows.get('alphaTest');\n } else {\n material.opacity = Math.min(\n accumulativeShadows.get('opacity'),\n material.opacity + accumulativeShadows.get('opacity') / api.blend\n );\n material.alphaTest = Math.min(\n accumulativeShadows.get('alphaTest'),\n material.alphaTest + accumulativeShadows.get('alphaTest') / api.blend\n );\n }\n\n // switch accumulative lights on\n accumulativeShadows.accumulativeShadowsRef.nativeElement.visible = true;\n // collect scene lights and meshes\n accumulativeShadows.pLM.prepare();\n\n // update the lightmap and the accumulative lights\n for (let i = 0; i < frames; i++) {\n api.lights.forEach((light) => light.update());\n accumulativeShadows.pLM.update(store.get('camera'), api.blend);\n }\n\n // switch lights off\n accumulativeShadows.accumulativeShadowsRef.nativeElement.visible = false;\n // restore lights and meshes\n accumulativeShadows.pLM.finish();\n },\n } as NgtsAccumulativeShadowsApi;\n\n Object.defineProperties(api, {\n temporal: {\n get: () => !!accumulativeShadows.get('temporal'),\n },\n frames: {\n get: () => Math.max(2, accumulativeShadows.get('frames')),\n },\n blend: {\n get: () =>\n Math.max(\n 2,\n accumulativeShadows.get('frames') === Infinity\n ? accumulativeShadows.get('blend')\n : accumulativeShadows.get('frames')\n ),\n },\n });\n\n const subject = new Subject<void>();\n\n accumulativeShadows.hold(accumulativeShadows.meshRef.$, (mesh) => {\n accumulativeShadows.pLM.configure(mesh);\n\n accumulativeShadows.hold(\n combineLatest([accumulativeShadows.select(), getLocalState(store.get('scene')).objects]),\n () => {\n // reset internals, buffers, ...\n api.reset();\n // update lightmap\n if (!api.temporal && api.frames !== Infinity) api.update(api.blend);\n }\n );\n\n accumulativeShadows.effect(subject, () =>\n store.get('internal').subscribe(() => {\n const limit = accumulativeShadows.get('limit');\n if ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {\n api.update();\n api.count++;\n }\n })\n );\n subject.next();\n });\n\n return api;\n}\n\n@Directive({ selector: 'ngts-accumulative-shadows-consumer', standalone: true })\nexport class AccumulativeShadowsConsumer {\n constructor() {\n inject(NGTS_ACCUMULATIVE_SHADOWS_API);\n }\n}\n\n@Component({\n selector: 'ngts-accumulative-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"accumulativeShadowsRef\" [traverse]=\"nullTraverse\">\n <ng-content />\n <ngts-accumulative-shadows-consumer />\n </ngt-group>\n <ngt-mesh [receiveShadow]=\"true\" [ref]=\"meshRef\" [scale]=\"get('scale')\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n <ngt-plane-geometry />\n <ngt-soft-shadow-material\n [transparent]=\"true\"\n [depthWrite]=\"false\"\n [color]=\"get('color')\"\n [toneMapped]=\"get('toneMapped')\"\n [blend]=\"get('colorBlend')\"\n [map]=\"pLM.progressiveLightMap2.texture\"\n />\n </ngt-mesh>\n </ngt-group>\n `,\n imports: [AccumulativeShadowsConsumer],\n providers: [\n {\n provide: NGTS_ACCUMULATIVE_SHADOWS_API,\n useFactory: accumulativeShadowsApiFactory,\n deps: [NgtsAccumulativeShadows],\n },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsAccumulativeShadows extends NgtRxStore {\n readonly nullTraverse = () => null;\n readonly Math = Math;\n\n private readonly store = inject(NgtStore);\n\n readonly pLM = new ProgressiveLightMap(this.store.get('gl'), this.store.get('scene'), this.get('resolution'));\n\n readonly accumulativeShadowsRef = injectNgtRef<THREE.Group>();\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n @Input() set blend(blend: number) {\n this.set({ blend });\n }\n\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n @Input() set limit(limit: number) {\n this.set({ limit });\n }\n\n /** Scale of the plane, */\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n @Input() set temporal(temporal: boolean) {\n this.set({ temporal });\n }\n\n /** Opacity of the plane, 1 */\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n /** Discards alpha pixels, 0.65 */\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n /** Shadow color, black */\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n @Input() set colorBlend(colorBlend: number) {\n this.set({ colorBlend });\n }\n\n /** Buffer resolution, 1024 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n /** Texture tonemapping */\n @Input() set toneMapped(toneMapped: boolean) {\n this.set({ toneMapped });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n frames: 40,\n limit: Infinity,\n blend: 20,\n scale: 10,\n opacity: 1,\n alphaTest: 0.75,\n color: 'black',\n colorBlend: 2,\n resolution: 1024,\n toneMapped: true,\n });\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Directive, inject, InjectionToken, Input } from '@angular/core';\nimport { extend, injectNgtRef, NgtArgs, NgtRepeat, NgtRxStore } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { NgtsAccumulativeShadowsLightApi, NGTS_ACCUMULATIVE_SHADOWS_API } from './accumulative-shadows';\n\nextend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\nexport const NGTS_RANDOMIZED_LIGHTS_API = new InjectionToken<NgtsAccumulativeShadowsLightApi>(\n 'NgtsRandomizedLights API'\n);\n\nfunction randomizedLightsApiFactory(randomizedLights: NgtsRandomizedLights) {\n const accumulativeApi = inject(NGTS_ACCUMULATIVE_SHADOWS_API);\n\n const update = () => {\n let light: THREE.DirectionalLight | undefined;\n if (randomizedLights.lightsRef.nativeElement) {\n for (let l = 0; l < randomizedLights.lightsRef.nativeElement.children.length; l++) {\n light = randomizedLights.lightsRef.nativeElement.children[l] as THREE.DirectionalLight;\n if (Math.random() > randomizedLights.get('ambient')) {\n const position = randomizedLights.get('position');\n const radius = randomizedLights.get('radius');\n light.position.set(\n position[0] + THREE.MathUtils.randFloatSpread(radius),\n position[1] + THREE.MathUtils.randFloatSpread(radius),\n position[2] + THREE.MathUtils.randFloatSpread(radius)\n );\n } else {\n const lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n const phi = 2 * Math.PI * Math.random();\n const length = randomizedLights.get('length');\n light.position.set(\n Math.cos(lambda) * Math.cos(phi) * length,\n Math.abs(Math.cos(lambda) * Math.sin(phi) * length),\n Math.sin(lambda) * length\n );\n }\n }\n }\n };\n\n const api = { update } as NgtsAccumulativeShadowsLightApi;\n\n randomizedLights.effect(\n combineLatest([\n randomizedLights.lightsRef.$,\n randomizedLights.select('position'),\n randomizedLights.select('radius'),\n randomizedLights.select('length'),\n randomizedLights.select('ambient'),\n ]),\n ([group]) => {\n if (accumulativeApi) accumulativeApi.lights.set(group.uuid, api);\n return () => accumulativeApi.lights.delete(group.uuid);\n }\n );\n\n return api;\n}\n\n@Directive({ selector: 'ngts-randomized-lights-consumer', standalone: true })\nexport class RandomizedLightsConsumer {\n constructor() {\n inject(NGTS_RANDOMIZED_LIGHTS_API);\n }\n}\n\n@Component({\n selector: 'ngts-randomized-lights',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"lightsRef\">\n <ngt-directional-light\n *ngFor=\"let i; repeat: get('amount')\"\n [castShadow]=\"get('castShadow')\"\n [intensity]=\"get('intensity') / get('amount')\"\n >\n <ngt-value [rawValue]=\"get('bias')\" attach=\"shadow.bias\" />\n <ngt-vector2 *args=\"[get('mapSize'), get('mapSize')]\" attach=\"shadow.mapSize\" />\n <ngt-orthographic-camera *args=\"get('cameraArgs')\" attach=\"shadow.camera\" />\n </ngt-directional-light>\n <ngts-randomized-lights-consumer />\n </ngt-group>\n `,\n imports: [RandomizedLightsConsumer, NgtArgs, NgtRepeat],\n providers: [\n { provide: NGTS_RANDOMIZED_LIGHTS_API, useFactory: randomizedLightsApiFactory, deps: [NgtsRandomizedLights] },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsRandomizedLights extends NgtRxStore {\n @Input() lightsRef = injectNgtRef<THREE.Group>();\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** Light position, [0, 0, 0] */\n @Input() set position(position: [x: number, y: number, z: number]) {\n this.set({ position });\n }\n\n /** Radius of the jiggle, higher values make softer light, 5 */\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n /** Amount of lights, 8 */\n @Input() set amount(amount: number) {\n this.set({ amount });\n }\n\n /** Light intensity, 1 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n @Input() set ambient(ambient: number) {\n this.set({ ambient });\n }\n\n /** If the lights cast shadows, this is true by default */\n @Input() set castShadow(castShadow: boolean) {\n this.set({ castShadow });\n }\n\n /** Default shadow bias, 0 */\n @Input() set bias(bias: number) {\n this.set({ bias });\n }\n\n /** Default map size, 512 */\n @Input() set mapSize(mapSize: number) {\n this.set({ mapSize });\n }\n\n /** Default size of the shadow camera, 10 */\n @Input() set size(size: number) {\n this.set({ size });\n }\n\n /** Default shadow camera near, 0.5 */\n @Input() set near(near: number) {\n this.set({ near });\n }\n\n /** Default shadow camera far, 500 */\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n castShadow: true,\n bias: 0.001,\n mapSize: 512,\n size: 5,\n near: 0.5,\n far: 500,\n frames: 1,\n position: [0, 0, 0],\n radius: 1,\n amount: 8,\n intensity: 1,\n ambient: 0.5,\n });\n this.connect(\n 'cameraArgs',\n this.select(['size', 'near', 'far'], ({ size, near, far }) => [-size, size, size, -size, near, far])\n );\n this.connect(\n 'length',\n this.select(['position'], ({ position }) => new THREE.Vector3(...position).length())\n );\n }\n}\n","import {\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, is, NgtRxStore, NgtStore } from 'angular-three';\nimport { combineLatest, switchMap } from 'rxjs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsBoundsSize {\n box: THREE.Box3;\n size: THREE.Vector3;\n center: THREE.Vector3;\n distance: number;\n}\n\nexport interface NgtsBoundsApi {\n getSize: () => NgtsBoundsSize;\n refresh: (object?: THREE.Object3D | THREE.Box3) => NgtsBoundsApi;\n clip: () => NgtsBoundsApi;\n fit: () => NgtsBoundsApi;\n to: ({\n position,\n target,\n }: {\n position: [number, number, number];\n target?: [number, number, number];\n }) => NgtsBoundsApi;\n}\n\ntype ControlsProto = {\n update(): void;\n target: THREE.Vector3;\n maxDistance: number;\n addEventListener: (event: string, callback: (event: any) => void) => void;\n removeEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: unknown): def is THREE.Box3 => !!def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\nexport const NGTS_BOUNDS_API = new InjectionToken<NgtsBoundsApi>('NgtsBounds API');\n\nfunction boundsApiFactory(bounds: NgtsBounds) {\n const store = inject(NgtStore);\n const box = new THREE.Box3();\n\n function getSize() {\n const camera = store.get('camera');\n const margin = bounds.get('margin');\n\n const size = box.getSize(new THREE.Vector3());\n const center = box.getCenter(new THREE.Vector3());\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance = is.orthographicCamera(camera)\n ? maxSize * 4\n : maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n const fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n return { box, size, center, distance };\n }\n\n const api = {\n getSize,\n refresh(object?: THREE.Object3D | THREE.Box3) {\n const { camera, controls: storeControls } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n\n if (isBox3(object)) box.copy(object);\n else {\n const target = object || bounds.boundsRef.nativeElement;\n if (target) {\n target.updateWorldMatrix(true, true);\n box.setFromObject(target);\n }\n }\n if (box.isEmpty()) {\n const max = camera.position.length() || 10;\n box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n }\n\n if (controls?.constructor.name === 'OrthographicTrackballControls') {\n // put camera on a sphere along which it would move\n const { distance } = getSize();\n const direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);\n const newPos = controls.target.clone().add(direction);\n camera.position.copy(newPos);\n }\n return this;\n },\n clip() {\n const { distance } = getSize();\n const { camera, controls: storeControls, invalidate } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n if (controls) controls.maxDistance = distance * 10;\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n if (controls) controls.update();\n invalidate();\n return this;\n },\n to({ position, target }: { position: [number, number, number]; target?: [number, number, number] }) {\n const { camera } = store.get();\n const { damping } = bounds.get();\n\n bounds.current.camera.copy(camera.position);\n const { center } = getSize();\n bounds.goal.camera.set(...position);\n\n if (target) {\n bounds.goal.focus.set(...target);\n } else {\n bounds.goal.focus.copy(center);\n }\n\n if (damping) {\n bounds.current.animating = true;\n } else {\n camera.position.set(...position);\n }\n\n return this;\n },\n fit() {\n const { camera, controls: storeControls, invalidate } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n\n const { damping, margin } = bounds.get();\n\n bounds.current.camera.copy(camera.position);\n if (controls) bounds.current.focus.copy(controls.target);\n\n const { center, distance } = getSize();\n const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n bounds.goal.camera.copy(center).sub(direction);\n bounds.goal.focus.copy(center);\n\n if (is.orthographicCamera(camera)) {\n bounds.current.zoom = camera.zoom;\n\n let maxHeight = 0,\n maxWidth = 0;\n const vertices = [\n new THREE.Vector3(box.min.x, box.min.y, box.min.z),\n new THREE.Vector3(box.min.x, box.max.y, box.min.z),\n new THREE.Vector3(box.min.x, box.min.y, box.max.z),\n new THREE.Vector3(box.min.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.min.z),\n new THREE.Vector3(box.max.x, box.min.y, box.max.z),\n new THREE.Vector3(box.max.x, box.min.y, box.min.z),\n ];\n // Transform the center and each corner to camera space\n center.applyMatrix4(camera.matrixWorldInverse);\n for (const v of vertices) {\n v.applyMatrix4(camera.matrixWorldInverse);\n maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n }\n maxHeight *= 2;\n maxWidth *= 2;\n const zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n const zoomForWidth = (camera.right - camera.left) / maxWidth;\n bounds.goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n if (!damping) {\n camera.zoom = bounds.goal.zoom;\n camera.updateProjectionMatrix();\n }\n }\n\n if (damping) {\n bounds.current.animating = true;\n } else {\n camera.position.copy(bounds.goal.camera);\n camera.lookAt(bounds.goal.focus);\n if (controls) {\n controls.target.copy(bounds.goal.focus);\n controls.update();\n }\n }\n if (bounds.fitted.observed) bounds.fitted.emit(this.getSize());\n invalidate();\n return this;\n },\n } as NgtsBoundsApi;\n\n let count = 0;\n bounds.hold(\n bounds.boundsRef.$.pipe(\n switchMap(() =>\n combineLatest([\n bounds.select('clip'),\n bounds.select('fit'),\n bounds.select('observe'),\n store.select('camera'),\n store.select('controls'),\n store.select('size'),\n bounds.boundsRef.children$(),\n ])\n )\n ),\n ([clip, fit, observe]) => {\n if (observe || count++ === 0) {\n api.refresh();\n if (fit) api.fit();\n if (clip) api.clip();\n }\n }\n );\n\n injectBeforeRender(({ delta }) => {\n if (bounds.current.animating) {\n const { damping, eps } = bounds.get();\n const { camera, controls: storeControls, invalidate } = store.get();\n const controls = storeControls as unknown as ControlsProto;\n\n damp(bounds.current.focus, bounds.goal.focus, damping, delta);\n damp(bounds.current.camera, bounds.goal.camera, damping, delta);\n bounds.current.zoom = THREE.MathUtils.damp(bounds.current.zoom, bounds.goal.zoom, damping, delta);\n camera.position.copy(bounds.current.camera);\n\n if (is.orthographicCamera(camera)) {\n camera.zoom = bounds.current.zoom;\n camera.updateProjectionMatrix();\n }\n\n if (!controls) {\n camera.lookAt(bounds.current.focus);\n } else {\n controls.target.copy(bounds.current.focus);\n controls.update();\n }\n\n invalidate();\n if (is.orthographicCamera(camera) && !(Math.abs(bounds.current.zoom - bounds.goal.zoom) < eps)) return;\n if (!is.orthographicCamera(camera) && !equals(bounds.current.camera, bounds.goal.camera, eps)) return;\n if (controls && !equals(bounds.current.focus, bounds.goal.focus, eps)) return;\n bounds.current.animating = false;\n }\n });\n\n return api;\n}\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-bounds',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"boundsRef\">\n <ng-content />\n </ngt-group>\n `,\n providers: [{ provide: NGTS_BOUNDS_API, useFactory: boundsApiFactory, deps: [NgtsBounds] }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBounds extends NgtRxStore implements OnInit {\n @Input() boundsRef = injectNgtRef<Group>();\n\n @Input() set damping(damping: number) {\n this.set({ damping });\n }\n\n @Input() set fit(fit: boolean) {\n this.set({ fit });\n }\n\n @Input() set clip(clip: boolean) {\n this.set({ clip });\n }\n\n @Input() set observe(observe: boolean) {\n this.set({ observe });\n }\n\n @Input() set margin(margin: number) {\n this.set({ margin });\n }\n\n @Input() set eps(eps: number) {\n this.set({ eps });\n }\n\n @Output() fitted = new EventEmitter<NgtsBoundsSize>();\n\n private readonly store = inject(NgtStore);\n\n readonly current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n readonly goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\n override initialize() {\n super.initialize();\n this.set({ damping: 6, fit: false, clip: false, observe: false, margin: 1.2, eps: 0.01 });\n }\n\n ngOnInit() {\n this.preventDragHijacking();\n }\n\n private preventDragHijacking() {\n this.effect(this.store.select('controls'), (controls) => {\n if (controls) {\n const callback = () => (this.current.animating = false);\n (controls as unknown as ControlsProto).addEventListener('start', callback);\n return () => (controls as unknown as ControlsProto).removeEventListener('start', callback);\n }\n });\n }\n}\n","import { Directive, inject, Input, OnInit } from '@angular/core';\nimport { injectBeforeRender, NgtRxStore, NgtStore } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport { SimplexNoise } from 'three-stdlib';\n\n@Directive({\n selector: 'ngts-camera-shake',\n standalone: true,\n})\nexport class NgtsCameraShake extends NgtRxStore implements OnInit {\n private readonly store = inject(NgtStore);\n\n private initialRotation = this.store.get('camera').rotation.clone();\n\n private readonly yawNoise = new SimplexNoise();\n private readonly pitchNoise = new SimplexNoise();\n private readonly rollNoise = new SimplexNoise();\n\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n @Input() set decay(decay: boolean) {\n this.set({ decay });\n }\n\n @Input() set decayRate(decayRate: number) {\n this.set({ decayRate });\n }\n\n @Input() set maxYaw(maxYaw: number) {\n this.set({ maxYaw });\n }\n\n @Input() set maxPitch(maxPitch: number) {\n this.set({ maxPitch });\n }\n\n @Input() set maxRoll(maxRoll: number) {\n this.set({ maxRoll });\n }\n\n @Input() set yawFrequency(yawFrequency: number) {\n this.set({ yawFrequency });\n }\n\n @Input() set pitchFrequency(pitchFrequency: number) {\n this.set({ pitchFrequency });\n }\n\n @Input() set rollFrequency(rollFrequency: number) {\n this.set({ rollFrequency });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n intensity: 1,\n decayRate: 0.65,\n maxYaw: 0.1,\n maxPitch: 0.1,\n maxRoll: 0.1,\n yawFrequency: 0.1,\n pitchFrequency: 0.1,\n rollFrequency: 0.1,\n });\n }\n\n constructor() {\n super();\n injectBeforeRender(({ clock, delta, camera }) => {\n const {\n intensity,\n maxYaw,\n maxPitch,\n maxRoll,\n yawFrequency,\n pitchFrequency,\n rollFrequency,\n decay,\n decayRate,\n } = this.get();\n\n const shake = Math.pow(intensity, 2);\n const yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n const pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n const roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n camera.rotation.set(\n this.initialRotation.x + pitch,\n this.initialRotation.y + yaw,\n this.initialRotation.z + roll\n );\n\n if (decay && intensity > 0) {\n this.set({ intensity: intensity - decayRate * delta });\n this.constraintIntensity();\n }\n });\n }\n\n ngOnInit(): void {\n this.setChangeEvent();\n }\n\n private setChangeEvent() {\n this.effect(\n combineLatest([this.store.select('camera'), this.store.select('controls')]),\n ([camera, controls]) => {\n if (controls) {\n const callback = () => void (this.initialRotation = camera.rotation.clone());\n controls.addEventListener('change', callback);\n callback();\n return () => void controls.removeEventListener('change', callback);\n }\n }\n );\n }\n\n getIntensity() {\n return this.get('intensity');\n }\n\n setIntensity(intensity: number) {\n this.set({ intensity });\n this.constraintIntensity();\n }\n\n private constraintIntensity() {\n const intensity = this.get('intensity');\n if (intensity < 0 || intensity > 1) {\n this.set({ intensity: intensity < 0 ? 0 : 1 });\n }\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { extend, injectNgtRef, NgtRxStore } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport { Box3, Group, Sphere, Vector3 } from 'three';\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-center',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"centerRef\">\n <ngt-group [ref]=\"outerRef\">\n <ngt-group [ref]=\"innerRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCenter extends NgtRxStore implements OnInit {\n @Input() centerRef = injectNgtRef<Group>();\n\n readonly outerRef = injectNgtRef<Group>();\n readonly innerRef = injectNgtRef<Group>();\n\n @Input() set top(top: boolean) {\n this.set({ top });\n }\n\n @Input() set right(right: boolean) {\n this.set({ right });\n }\n\n @Input() set bottom(bottom: boolean) {\n this.set({ bottom });\n }\n\n @Input() set left(left: boolean) {\n this.set({ left });\n }\n\n @Input() set front(front: boolean) {\n this.set({ front });\n }\n\n @Input() set back(back: boolean) {\n this.set({ back });\n }\n\n @Input() set disableX(disableX: boolean) {\n this.set({ disableX });\n }\n\n @Input() set disableY(disableY: boolean) {\n this.set({ disableY });\n }\n\n @Input() set disableZ(disableZ: boolean) {\n this.set({ disableZ });\n }\n\n @Input() set disabled(disabled: boolean) {\n this.set({ disabled });\n }\n\n @Input() set precise(precise: boolean) {\n this.set({ precise });\n }\n\n @Output() centered = new EventEmitter<{\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }>();\n\n override initialize(): void {\n super.initialize();\n this.set({ precise: true });\n }\n\n ngOnInit(): void {\n this.setPosition();\n }\n\n private setPosition() {\n this.hold(combineLatest([this.innerRef.$, this.innerRef.children$()]), ([innerGroup]) => {\n const { precise, top, left, front, disabled, disableX, disableY, disableZ, back, bottom, right } =\n this.get();\n this.outerRef.nativeElement.matrixWorld.identity();\n const box3 = new Box3().setFromObject(innerGroup, precise);\n const center = new Vector3();\n const sphere = new Sphere();\n const width = box3.max.x - box3.min.x;\n const height = box3.max.y - box3.min.y;\n const depth = box3.max.z - box3.min.z;\n\n box3.getCenter(center);\n box3.getBoundingSphere(sphere);\n\n const vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n const hAlign = left ? -width / 2 : right ? width / 2 : 0;\n const dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n this.outerRef.nativeElement.position.set(\n disabled || disableX ? 0 : -center.x + hAlign,\n disabled || disableY ? 0 : -center.y + vAlign,\n disabled || disableZ ? 0 : -center.z + dAlign\n );\n\n if (this.centered.observed) {\n this.centered.emit({\n parent: this.centerRef.nativeElement.parent!,\n container: this.centerRef.nativeElement,\n width,\n height,\n depth,\n boundingBox: box3,\n boundingSphere: sphere,\n center: center,\n verticalAlignment: vAlign,\n horizontalAlignment: hAlign,\n depthAlignment: dAlign,\n });\n }\n });\n }\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { extend, injectNgtRef, NgtBeforeRenderEvent, NgtPush, NgtRxStore, NgtStore } from 'angular-three';\nimport { NgtsBillboard } from 'angular-three-soba/abstractions';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport { Observable } from 'rxjs';\nimport { ColorRepresentation, Group, Mesh, MeshStandardMaterial, PlaneGeometry, Texture } from 'three';\n\nconst CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';\n\nextend({ Group, Mesh, PlaneGeometry, MeshStandardMaterial });\n\n@Component({\n selector: 'ngts-cloud',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"groupRef\">\n <ngt-group\n [position]=\"[0, 0, (get('segments') / 2) * get('depth')]\"\n (beforeRender)=\"onBeforeRender($any($event))\"\n >\n <ngts-billboard\n *ngFor=\"let cloud of clouds$ | ngtPush : []; let i = index\"\n [position]=\"[cloud.x, cloud.y, -i * get('depth')]\"\n >\n <ngt-mesh [scale]=\"cloud.scale\" [rotation]=\"[0, 0, 0]\">\n <ngt-plane-geometry />\n <!-- we use ngIf here for texture because by the time ngt-value is initialized -->\n <!-- [map] has not been resolved yet. we ngIf it so that texture is available before -->\n <ngt-mesh-standard-material\n *ngIf=\"cloudTexture$ | ngtPush as cloudTexture\"\n [transparent]=\"true\"\n [map]=\"cloudTexture\"\n [depthTest]=\"get('depthTest')\"\n [opacity]=\"(cloud.scale / 6) * cloud.density * get('opacity')\"\n [color]=\"get('color')\"\n >\n <ngt-value [rawValue]=\"encoding\" attach=\"map.encoding\" />\n </ngt-mesh-standard-material>\n </ngt-mesh>\n </ngts-billboard>\n </ngt-group>\n </ngt-group>\n `,\n imports: [NgFor, NgtPush, NgtsBillboard, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCloud extends NgtRxStore {\n private readonly store = inject(NgtStore);\n readonly encoding = this.store.get('gl', 'outputEncoding');\n\n @Input() groupRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set segments(segments: number) {\n this.set({ segments });\n }\n\n @Input() set texture(texture: string) {\n this.set({ texture });\n }\n\n @Input() set color(color: ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthTest(depthTest: boolean) {\n this.set({ depthTest });\n }\n\n readonly clouds$ = this.select('clouds');\n readonly cloudTexture$ = injectNgtsTextureLoader(this.select('texture')) as Observable<Texture>;\n\n override initialize() {\n super.initialize();\n this.set({\n opacity: 0.5,\n speed: 0.4,\n width: 10,\n depth: 1.5,\n segments: 20,\n texture: CLOUD_URL,\n color: '#ffffff',\n depthTest: true,\n });\n this.connect(\n 'clouds',\n this.select(['width', 'segments', 'speed'], ({ width, segments, speed }) => {\n return [...new Array(segments)].map((_, index) => ({\n x: width / 2 - Math.random() * width,\n y: width / 2 - Math.random() * width,\n scale: 0.4 + Math.sin(((index + 1) / segments) * Math.PI) * ((0.2 + Math.random()) * 10),\n density: Math.max(0.2, Math.random()),\n rotation: Math.max(0.002, 0.005 * Math.random()) * speed,\n }));\n })\n );\n }\n\n onBeforeRender({ state, object }: NgtBeforeRenderEvent<Group>) {\n const clouds = this.get('clouds');\n object.children.forEach((cloud, index) => {\n cloud.children[0].rotation.z += clouds[index].rotation;\n cloud.children[0].scale.setScalar(\n clouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10\n );\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPush,\n NgtRenderState,\n NgtRxStore,\n NgtStore,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\n@Component({\n selector: 'ngts-contact-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"contactShadowsRef\" [rotation]=\"[Math.PI / 2, 0, 0]\">\n <ng-container *ngIf=\"contactShadows$ | ngtPush : null as contactShadows\">\n <ngt-mesh\n [renderOrder]=\"get('renderOrder')\"\n [geometry]=\"contactShadows.planeGeometry\"\n [scale]=\"[1, -1, 1]\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-mesh-basic-material\n [map]=\"contactShadows.renderTarget.texture\"\n transparent\n [opacity]=\"get('opacity')\"\n [depthWrite]=\"get('depthWrite')\"\n >\n <ngt-value [rawValue]=\"encoding\" attach=\"map.encoding\" />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n <ngt-orthographic-camera *args=\"get('cameraArgs')\" [ref]=\"shadowCameraRef\" />\n </ng-container>\n </ngt-group>\n `,\n imports: [NgIf, NgtPush, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsContactShadows extends NgtRxStore {\n private readonly store = inject(NgtStore);\n readonly shadowCameraRef = injectNgtRef<OrthographicCamera>();\n readonly encoding = this.store.get('gl', 'outputEncoding');\n readonly contactShadows$ = this.select('contactShadows');\n readonly Math = Math;\n\n @Input() contactShadowsRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n @Input() set blur(blur: number) {\n this.set({ blur });\n }\n\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n @Input() set smooth(smooth: boolean) {\n this.set({ smooth });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set scale(scale: number | [x: number, y: number]) {\n this.set({ scale });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthWrite(depthWrite: boolean) {\n this.set({ depthWrite });\n }\n\n @Input() set renderOrder(renderOrder: number) {\n this.set({ renderOrder });\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this, 0));\n }\n\n override initialize() {\n super.initialize();\n this.set({\n scale: 10,\n frames: Infinity,\n opacity: 1,\n width: 1,\n height: 1,\n blur: 1,\n far: 10,\n resolution: 512,\n smooth: true,\n color: '#000000',\n depthWrite: false,\n renderOrder: 0,\n });\n this.connect(\n 'scaledWidth',\n this.select(\n ['width', 'scale'],\n ({ width, scale }) => width * (Array.isArray(scale) ? scale[0] : scale || 1)\n )\n );\n this.connect(\n 'scaledHeight',\n this.select(\n ['height', 'scale'],\n ({ height, scale }) => height * (Array.isArray(scale) ? scale[1] : scale || 1)\n )\n );\n this.connect(\n 'cameraArgs',\n this.select(['scaledWidth', 'scaledHeight', 'far'], ({ scaledWidth: width, scaledHeight: height, far }) => {\n return [-width / 2, width / 2, height / 2, -height / 2, 0, far];\n })\n );\n this.connect(\n 'contactShadows',\n this.select(\n ['resolution', 'scaledWidth', 'scaledHeight', 'scale', 'color'],\n ({ resolution, scaledWidth: width, scaledHeight: height, color }) => {\n const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n const planeGeometry = new THREE.PlaneGeometry(width, height).rotateX(Math.PI / 2);\n const blurPlane = new Mesh(planeGeometry);\n const depthMaterial = new THREE.MeshDepthMaterial();\n depthMaterial.depthTest = depthMaterial.depthWrite = false;\n depthMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n ucolor: { value: new THREE.Color(color) },\n };\n shader.fragmentShader = shader.fragmentShader.replace(\n `void main() {`, //\n `uniform vec3 ucolor;\n void main() {\n `\n );\n shader.fragmentShader = shader.fragmentShader.replace(\n 'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n // Colorize the shadow, multiply by the falloff so that the center can remain darker\n 'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );'\n );\n };\n\n const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n return {\n renderTarget,\n planeGeometry,\n depthMaterial,\n blurPlane,\n horizontalBlurMaterial,\n verticalBlurMaterial,\n renderTargetBlur,\n };\n }\n )\n );\n }\n\n private onBeforeRender(count: number, { scene, gl }: NgtRenderState) {\n const {\n frames,\n blur,\n contactShadows: { depthMaterial, renderTarget },\n smooth,\n } = this.get();\n\n if (this.shadowCameraRef.nativeElement && (frames === Infinity || count < frames)) {\n const initialBackground = scene.background;\n scene.background = null;\n const initialOverrideMaterial = scene.overrideMaterial;\n scene.overrideMaterial = depthMaterial;\n gl.setRenderTarget(renderTarget);\n gl.render(scene, this.shadowCameraRef.nativeElement);\n scene.overrideMaterial = initialOverrideMaterial;\n\n this.blurShadows(blur);\n if (smooth) this.blurShadows(blur * 0.4);\n\n gl.setRenderTarget(null);\n scene.background = initialBackground;\n count++;\n }\n }\n\n private blurShadows(blur: number) {\n const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } =\n this.get('contactShadows');\n const gl = this.store.get('gl');\n\n blurPlane.visible = true;\n\n blurPlane.material = horizontalBlurMaterial;\n horizontalBlurMaterial.uniforms.tDiffuse.value = renderTarget.texture;\n horizontalBlurMaterial.uniforms.h.value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTargetBlur);\n gl.render(blurPlane, this.shadowCameraRef.nativeElement);\n\n blurPlane.material = verticalBlurMaterial;\n verticalBlurMaterial.uniforms.tDiffuse.value = renderTargetBlur.texture;\n verticalBlurMaterial.uniforms.v.value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTarget);\n gl.render(blurPlane, this.shadowCameraRef.nativeElement);\n\n blurPlane.visible = false;\n }\n}\n","export const ngtsEnvironmentPresetsObj = {\n sunset: 'venice/venice_sunset_1k.hdr',\n dawn: 'kiara/kiara_1_dawn_1k.hdr',\n night: 'dikhololo/dikhololo_night_1k.hdr',\n warehouse: 'empty-wharehouse/empty_warehouse_01_1k.hdr',\n forest: 'forrest-slope/forest_slope_1k.hdr',\n apartment: 'lebombo/lebombo_1k.hdr',\n studio: 'studio-small-3/studio_small_03_1k.hdr',\n city: 'potsdamer-platz/potsdamer_platz_1k.hdr',\n park: 'rooitou/rooitou_park_1k.hdr',\n lobby: 'st-fagans/st_fagans_interior_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresetsType = keyof typeof ngtsEnvironmentPresetsObj;\n","import { Directive, ElementRef, inject, Input } from '@angular/core';\nimport { NgtRxStore, NgtStore } from 'angular-three';\nimport { Loader, Scene, Texture, TextureEncoding } from 'three';\nimport { NgtsEnvironmentPresetsType } from './assets';\n\n@Directive()\nexport abstract class NgtsEnvironmentInputs extends NgtRxStore {\n protected readonly store = inject(NgtStore);\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set near(near: number) {\n this.set({ near });\n }\n\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set background(background: boolean | 'only') {\n this.set({ background });\n }\n\n @Input() set blur(blur: number) {\n this.set({ blur });\n }\n\n @Input() set map(map: Texture) {\n this.set({ map });\n }\n\n @Input() set files(files: string | string[]) {\n this.set({ files });\n }\n\n @Input() set path(path: string) {\n this.set({ path });\n }\n\n @Input() set preset(preset: NgtsEnvironmentPresetsType) {\n this.set({ preset });\n }\n\n @Input() set scene(scene: Scene | ElementRef<Scene>) {\n this.set({ scene });\n }\n\n @Input() set extensions(extensions: (loader: Loader) => void) {\n this.set({ extensions });\n }\n\n @Input() set ground(\n ground:\n | boolean\n | {\n radius?: number;\n height?: number;\n scale?: number;\n }\n ) {\n this.set({ ground });\n }\n\n @Input() set encoding(encoding: TextureEncoding) {\n this.set({ encoding });\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { injectNgtDestroy, injectNgtLoader, injectNgtRef, is } from 'angular-three';\nimport { debounceTime, isObservable, map, Observable, of, takeUntil } from 'rxjs';\nimport {\n CubeReflectionMapping,\n CubeTexture,\n CubeTextureLoader,\n EquirectangularReflectionMapping,\n LinearEncoding,\n sRGBEncoding,\n Texture,\n} from 'three';\nimport { RGBELoader } from 'three-stdlib';\nimport { ngtsEnvironmentPresetsObj } from './assets';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n return is.ref(scene) ? scene.nativeElement : scene;\n}\n\nexport function setEnvProps(\n background: boolean | 'only',\n scene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n defaultScene: THREE.Scene,\n texture: THREE.Texture,\n blur = 0\n) {\n const target = resolveScene(scene || defaultScene);\n const oldbg = target.background;\n const oldenv = target.environment;\n const oldBlur = target.backgroundBlurriness || 0;\n\n if (background !== 'only') target.environment = texture;\n if (background) target.background = texture;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = blur;\n\n return () => {\n if (background !== 'only') target.environment = oldenv;\n if (background) target.background = oldbg;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = oldBlur;\n };\n}\n\ntype NgtsInjectEnvironmentParams = Partial<\n Pick<NgtsEnvironmentInputs, 'files' | 'path' | 'preset' | 'extensions' | 'encoding'>\n>;\n\nconst CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';\nexport function injectNgtsEnvironment(\n paramsFactory: (\n defaultParams: NgtsInjectEnvironmentParams\n ) => NgtsInjectEnvironmentParams | Observable<NgtsInjectEnvironmentParams>\n) {\n let p = {\n files: ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],\n path: '',\n preset: undefined,\n encoding: undefined,\n } as NgtsInjectEnvironmentParams;\n const params = paramsFactory(p);\n const params$ = isObservable(params) ? params : of(params);\n\n const textureRef = injectNgtRef<Texture | CubeTexture>();\n const { destroy$ } = injectNgtDestroy(() => {\n textureRef.nativeElement?.dispose();\n });\n\n const loaderResult = injectNgtLoader(\n (inputs) => (Array.isArray(inputs) ? CubeTextureLoader : RGBELoader) as new (...args: any[]) => any,\n params$.pipe(\n debounceTime(0),\n map((data) => {\n p = data;\n return p;\n }),\n map((data) => {\n if (data.preset) {\n if (!(data.preset in ngtsEnvironmentPresetsObj))\n throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));\n data.files = ngtsEnvironmentPresetsObj[data.preset];\n data.path = CUBEMAP_ROOT;\n }\n return Array.isArray(data.files) ? [data.files] : (data.files! as any);\n })\n ),\n (loader) => {\n if (p.path) {\n loader.setPath(p.path);\n }\n if (p.extensions) {\n p.extensions(loader);\n }\n }\n );\n\n loaderResult.pipe(takeUntil(destroy$)).subscribe((results) => {\n const texture = Array.isArray(p.files!) ? (results as any[])[0] : results;\n texture.mapping = Array.isArray(p.files!) ? CubeReflectionMapping : EquirectangularReflectionMapping;\n texture.encoding = p.encoding ?? Array.isArray(p.files!) ? sRGBEncoding : LinearEncoding;\n\n textureRef.nativeElement = texture;\n });\n\n return textureRef;\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { startWithUndefined } from 'angular-three';\nimport { combineLatest, startWith } from 'rxjs';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { injectNgtsEnvironment, setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-cube',\n standalone: true,\n})\nexport class NgtsEnvironmentCube extends NgtsEnvironmentInputs implements OnInit {\n readonly textureRef = injectNgtsEnvironment((params) => this.select().pipe(startWith(params)));\n\n override initialize(): void {\n super.initialize();\n this.set({ background: false });\n }\n\n ngOnInit() {\n this.setEnvProps();\n }\n\n private setEnvProps() {\n this.effect(\n combineLatest([\n this.store.select('scene'),\n this.select('scene').pipe(startWithUndefined()),\n this.select('background'),\n this.select('blur').pipe(startWithUndefined()),\n this.textureRef.$,\n ]),\n ([defaultScene, scene, background, blur, texture]) => {\n return setEnvProps(background, scene, defaultScene, texture, blur);\n }\n );\n }\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { startWithUndefined } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-map',\n standalone: true,\n})\nexport class NgtsEnvironmentMap extends NgtsEnvironmentInputs implements OnInit {\n override initialize() {\n super.initialize();\n this.set({ background: false });\n }\n\n ngOnInit() {\n this.setEnvProps();\n }\n\n private setEnvProps() {\n this.effect(\n combineLatest([\n this.store.select('scene'),\n this.select('map'),\n this.select('scene').pipe(startWithUndefined()),\n this.select('background'),\n this.select('blur').pipe(startWithUndefined()),\n ]),\n ([defaultScene, map, scene, background, blur]) => {\n if (map) {\n return setEnvProps(background, scene, defaultScene, map, blur);\n }\n }\n );\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, OnInit } from '@angular/core';\nimport { extend, NgtArgs, startWithUndefined } from 'angular-three';\nimport { combineLatest, map, startWith } from 'rxjs';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { injectNgtsEnvironment } from './utils';\n\nextend({ GroundProjectedEnv });\n\n@Component({\n selector: 'ngts-environment-ground',\n standalone: true,\n template: `\n <ngts-environment-map\n [background]=\"get('background')\"\n [blur]=\"get('blur')\"\n [scene]=\"get('scene')\"\n [map]=\"get('texture')\"\n />\n <ng-container *ngIf=\"get('groundArgs') as groundArgs\">\n <ngt-ground-projected-env\n *args=\"groundArgs\"\n [scale]=\"get('groundScale')\"\n [height]=\"get('groundHeight')\"\n [radius]=\"get('groundRadius')\"\n />\n </ng-container>\n `,\n imports: [NgtsEnvironmentMap, NgtArgs, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentGround extends NgtsEnvironmentInputs implements OnInit {\n readonly defaultTexture = injectNgtsEnvironment((params) => this.select().pipe(startWith(params)));\n\n ngOnInit() {\n this.connect(\n 'texture',\n combineLatest([this.select('map').pipe(startWithUndefined()), this.defaultTexture.$]).pipe(\n map(([map, texture]) => map || texture)\n )\n );\n this.connect('groundArgs', this.select('texture').pipe(map((texture) => [texture])));\n this.connect(\n 'groundHeight',\n this.select(['ground'], ({ ground }) => ground?.height)\n );\n this.connect(\n 'groundRadius',\n this.select(['ground'], ({ ground }) => ground?.radius)\n );\n this.connect(\n 'groundScale',\n this.select(['ground'], ({ ground }) => ground?.scale ?? 1000)\n );\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, OnInit } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPortal,\n NgtPortalContent,\n NgtRenderState,\n prepare,\n} from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport * as THREE from 'three';\nimport { CubeCamera, HalfFloatType } from 'three';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { setEnvProps } from './utils';\n\nextend({ CubeCamera });\n\n@Component({\n selector: 'ngts-environment-portal',\n standalone: true,\n template: `\n <ngt-portal [container]=\"virtualSceneRef\">\n <ng-template ngtPortalContent>\n <ng-content />\n <ngt-cube-camera *args=\"get('cameraArgs')\" [ref]=\"cubeCameraRef\" />\n <ng-container *ngIf=\"get('files') || get('preset'); else environmentMap\">\n <ngts-environment-cube\n [background]=\"true\"\n [files]=\"get('files')\"\n [preset]=\"get('preset')\"\n [path]=\"get('path')\"\n [extensions]=\"get('extensions')\"\n />\n </ng-container>\n <ng-template #environmentMap>\n <ngts-environment-map [background]=\"true\" [map]=\"get('map')\" [extensions]=\"get('extensions')\" />\n </ng-template>\n </ng-template>\n </ngt-portal>\n `,\n imports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentPortal extends NgtsEnvironmentInputs implements OnInit {\n readonly virtualSceneRef = injectNgtRef<THREE.Scene>(prepare(new THREE.Scene()));\n readonly cubeCameraRef = injectNgtRef<THREE.CubeCamera>();\n\n override initialize(): void {\n super.initialize();\n this.set({ near: 1, far: 1000, resolution: 256, frames: 1, background: false, preset: undefined });\n this.connect(\n 'fbo',\n this.select(['resolution'], ({ resolution }) => {\n const fbo = new THREE.WebGLCubeRenderTarget(resolution);\n fbo.texture.type = HalfFloatType;\n return fbo;\n })\n );\n this.connect(\n 'cameraArgs',\n this.select(['fbo', 'near', 'far'], ({ near, far, fbo }) => [near, far, fbo])\n );\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this, 1));\n }\n\n ngOnInit(): void {\n this.setEnvProps();\n }\n\n private setEnvProps() {\n this.effect(\n combineLatest([\n this.store.select('gl'),\n this.store.select('scene'),\n this.select('fbo'),\n this.select('scene'),\n this.select('background'),\n this.select('frames'),\n this.select('blur'),\n this.virtualSceneRef.$,\n this.cubeCameraRef.$,\n ]),\n ([gl, defaultScene, fbo, scene, background, frames, blur, virtualScene, camera]) => {\n if (frames === 1) camera.update(gl, virtualScene);\n return setEnvProps(background, scene, defaultScene, fbo.texture, blur);\n }\n );\n }\n\n private onBeforeRender(count: number, { gl }: NgtRenderState) {\n const { frames } = this.get();\n if (frames === Infinity || count < frames) {\n if (this.cubeCameraRef.nativeElement) {\n this.cubeCameraRef.nativeElement.update(gl, this.virtualSceneRef.nativeElement);\n count++;\n }\n }\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, TemplateRef } from '@angular/core';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentGround } from './environment-ground';\nimport { NgtsEnvironmentInputs } from './environment-inputs';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { NgtsEnvironmentPortal } from './environment-portal';\n\n@Directive({ selector: 'ng-template[ngtsEnvironmentContent]', standalone: true })\nexport class NgtsEnvironmentContent {}\n\n@Component({\n selector: 'ngts-environment',\n standalone: true,\n template: `\n <ngts-environment-ground\n *ngIf=\"get('ground'); else noGround\"\n [ground]=\"get('ground')\"\n [map]=\"get('map')\"\n [scene]=\"get('scene')\"\n [blur]=\"get('blur')\"\n [background]=\"get('background')\"\n [preset]=\"get('preset')\"\n [frames]=\"get('frames')\"\n [far]=\"get('far')\"\n [near]=\"get('near')\"\n [resolution]=\"get('resolution')\"\n [files]=\"get('files')\"\n [path]=\"get('path')\"\n [extensions]=\"get('extensions')\"\n />\n <ng-template #noGround>\n <ngts-environment-map\n *ngIf=\"get('map'); else noMap\"\n [map]=\"get('map')\"\n [scene]=\"get('scene')\"\n [blur]=\"get('blur')\"\n [background]=\"get('background')\"\n />\n <ng-template #noMap>\n <ngts-environment-portal\n *ngIf=\"content; else noPortal\"\n [frames]=\"get('frames')\"\n [far]=\"get('far')\"\n [near]=\"get('near')\"\n [resolution]=\"get('resolution')\"\n [map]=\"get('map')\"\n [background]=\"get('background')\"\n [blur]=\"get('blur')\"\n [scene]=\"get('scene')\"\n [files]=\"get('files')\"\n [path]=\"get('path')\"\n [preset]=\"get('preset')\"\n [extensions]=\"get('extensions')\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </ngts-environment-portal>\n <ng-template #noPortal>\n <ngts-environment-cube\n [frames]=\"get('frames')\"\n [far]=\"get('far')\"\n [near]=\"get('near')\"\n [resolution]=\"get('resolution')\"\n [map]=\"get('map')\"\n [background]=\"get('background')\"\n [blur]=\"get('blur')\"\n [scene]=\"get('scene')\"\n [files]=\"get('files')\"\n [path]=\"get('path')\"\n [preset]=\"get('preset')\"\n [extensions]=\"get('extensions')\"\n />\n </ng-template>\n </ng-template>\n </ng-template>\n `,\n imports: [\n NgtsEnvironmentMap,\n NgtsEnvironmentGround,\n NgtsEnvironmentCube,\n NgtsEnvironmentPortal,\n NgIf,\n NgTemplateOutlet,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironment extends NgtsEnvironmentInputs {\n @ContentChild(NgtsEnvironmentContent, { read: TemplateRef }) content?: TemplateRef<unknown>;\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtRenderState, NgtRxStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-float',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"floatRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsFloat extends NgtRxStore {\n private readonly offset = Math.random() * 10000;\n\n @Input() floatRef = injectNgtRef<THREE.Group>();\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set rotationIntensity(rotationIntensity: number) {\n this.set({ rotationIntensity });\n }\n\n @Input() set floatIntensity(floatIntensity: number) {\n this.set({ floatIntensity });\n }\n\n @Input() set floatingRange(floatingRange: [number?, number?]) {\n this.set({ floatingRange });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1] });\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this));\n }\n\n private onBeforeRender({ clock }: NgtRenderState) {\n if (!this.floatRef.nativeElement) return;\n const { speed, floatingRange, floatIntensity, rotationIntensity } = this.get();\n const t = this.offset + clock.getElapsedTime();\n this.floatRef.nativeElement.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n this.floatRef.nativeElement.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n this.floatRef.nativeElement.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n let yPosition = Math.sin((t / 4) * speed) / 10;\n yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);\n this.floatRef.nativeElement.position.y = yPosition * floatIntensity;\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, OnInit } from '@angular/core';\nimport { injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';\nimport { Vector3 } from 'three';\nimport { Sky } from 'three-stdlib';\n\nexport function calcPosFromAngles(inclination: number, azimuth: number, vector: Vector3 = new Vector3()) {\n const theta = Math.PI * (inclination - 0.5);\n const phi = 2 * Math.PI * (azimuth - 0.5);\n\n vector.x = Math.cos(phi);\n vector.y = Math.sin(theta);\n vector.z = Math.sin(phi);\n\n return vector;\n}\n\n@Component({\n selector: 'ngts-sky',\n standalone: true,\n template: `\n <ngt-primitive *args=\"[skyRef.nativeElement]\" ngtCompound [ref]=\"skyRef\" [scale]=\"get('scale')\">\n <ngt-value [rawValue]=\"get('mieCoefficient')\" attach=\"material.uniforms.mieCoefficient.value\" />\n <ngt-value [rawValue]=\"get('mieDirectionalG')\" attach=\"material.uniforms.mieDirectionalG.value\" />\n <ngt-value [rawValue]=\"get('rayleigh')\" attach=\"material.uniforms.rayleigh.value\" />\n <ngt-value [rawValue]=\"get('sunPosition')\" attach=\"material.uniforms.sunPosition.value\" />\n <ngt-value [rawValue]=\"get('turbidity')\" attach=\"material.uniforms.turbidity.value\" />\n </ngt-primitive>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSky extends NgtRxStore implements OnInit {\n @Input() skyRef = injectNgtRef<Sky>();\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set sunPosition(sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n this.set({ sunPosition });\n }\n\n @Input() set inclination(inclination: number) {\n this.set({ inclination });\n }\n\n @Input() set azimuth(azimuth: number) {\n this.set({ azimuth });\n }\n\n @Input() set mieCoefficient(mieCoefficient: number) {\n this.set({ mieCoefficient });\n }\n\n @Input() set mieDirectionalG(mieDirectionalG: number) {\n this.set({ mieDirectionalG });\n }\n\n @Input() set rayleigh(rayleigh: number) {\n this.set({ rayleigh });\n }\n\n @Input() set turbidity(turbidity: number) {\n this.set({ turbidity });\n }\n\n override initialize(): void {\n super.initialize();\n const inclination = 0.6;\n const azimuth = 0.1;\n this.set({\n inclination,\n azimuth,\n distance: 1000,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.8,\n rayleigh: 0.5,\n turbidity: 10,\n sunPosition: calcPosFromAngles(inclination, azimuth),\n });\n this.connect(\n 'sunPosition',\n this.select(['inclination', 'azimuth'], ({ inclination, azimuth }) =>\n calcPosFromAngles(inclination, azimuth)\n )\n );\n this.connect(\n 'scale',\n this.select(['distance'], ({ distance }) => new Vector3().setScalar(distance))\n );\n }\n\n ngOnInit() {\n if (!this.skyRef.nativeElement) this.skyRef.nativeElement = new Sky();\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRenderState, NgtRxStore, NgtStore } from 'angular-three';\nimport { shaderMaterial } from 'angular-three-soba/shaders';\nimport { map, Observable, startWith, withLatestFrom } from 'rxjs';\nimport { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';\n\nconst SparklesMaterial = shaderMaterial(\n { time: 0, pixelRatio: 1 },\n // language=GLSL\n `\nuniform float pixelRatio;\nuniform float time;\n\nattribute float size;\nattribute float speed;\nattribute float opacity;\nattribute vec3 noise;\nattribute vec3 color;\n\nvarying vec3 vColor;\nvarying float vOpacity;\n\nvoid main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n\n modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;\n modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;\n modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;\n\n vec4 viewPosition = viewMatrix * modelPosition;\n vec4 projectionPostion = projectionMatrix * viewPosition;\n\n gl_Position = projectionPostion;\n gl_PointSize = size * 25. * pixelRatio;\n gl_PointSize *= (1.0 / - viewPosition.z);\n\n vColor = color;\n vOpacity = opacity;\n}\n `,\n // language=GLSL\n `\nvarying vec3 vColor;\nvarying float vOpacity;\n\nvoid main() {\n float distanceToCenter = distance(gl_PointCoord, vec2(0.5));\n float strength = 0.05 / distanceToCenter - 0.1;\n\n gl_FragColor = vec4(vColor, strength * vOpacity);\n}\n `\n);\n\nextend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });\n\nconst isFloat32Array = (def: any): def is Float32Array => def && (def as Float32Array).constructor === Float32Array;\n\nconst expandColor = (v: THREE.Color) => [v.r, v.g, v.b];\nconst isVector = (v: any): v is THREE.Vector2 | THREE.Vector3 | THREE.Vector4 =>\n v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;\n\nconst normalizeVector = (v: any): number[] => {\n if (Array.isArray(v)) return v;\n else if (isVector(v)) return v.toArray();\n return [v, v, v] as number[];\n};\n\nfunction usePropAsIsOrAsAttribute<T = any>(count: number, prop?: T | Float32Array, setDefault?: (v: T) => number) {\n if (prop !== undefined) {\n if (isFloat32Array(prop)) {\n return prop as Float32Array;\n } else {\n if (prop instanceof Color) {\n const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();\n return Float32Array.from(a);\n } else if (isVector(prop) || Array.isArray(prop)) {\n const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();\n return Float32Array.from(a);\n }\n return Float32Array.from({ length: count }, () => prop as unknown as number);\n }\n }\n return Float32Array.from({ length: count }, setDefault!);\n}\n\n@Component({\n selector: 'ngts-sparkles',\n standalone: true,\n template: `\n <ngt-points ngtCompount [ref]=\"pointsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute *args=\"[get('positions'), 3]\" attach=\"attributes.position\" />\n <ngt-buffer-attribute *args=\"[get('sizes'), 1]\" attach=\"attributes.size\" />\n <ngt-buffer-attribute *args=\"[get('opacities'), 1]\" attach=\"attributes.opacity\" />\n <ngt-buffer-attribute *args=\"[get('speeds'), 1]\" attach=\"attributes.speed\" />\n <ngt-buffer-attribute *args=\"[get('colors'), 3]\" attach=\"attributes.color\" />\n <ngt-buffer-attribute *args=\"[get('noises'), 3]\" attach=\"attributes.noise\" />\n </ngt-buffer-geometry>\n <ngt-sparkles-material [ref]=\"materialRef\" [transparent]=\"true\" [depthWrite]=\"false\" [pixelRatio]=\"dpr\" />\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSparkles extends NgtRxStore {\n private readonly store = inject(NgtStore);\n readonly dpr = this.store.get('viewport', 'dpr');\n readonly materialRef = injectNgtRef<typeof SparklesMaterial.prototype>();\n\n @Input() pointsRef = injectNgtRef<Points>();\n\n /** Number of particles (default: 100) */\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n /** Speed of particles (default: 1) */\n @Input() set speed(speed: number | Float32Array) {\n this.set({ speed });\n }\n\n /** Opacity of particles (default: 1) */\n @Input() set opacity(opacity: number | Float32Array) {\n this.set({ opacity });\n }\n\n /** Color of particles (default: 100) */\n @Input() set color(color: THREE.ColorRepresentation | Float32Array) {\n this.set({ color });\n }\n\n /** Size of particles (default: randomized between 0 and 1) */\n @Input() set size(size: number | Float32Array) {\n this.set({ size });\n }\n\n /** The space the particles occupy (default: 1) */\n @Input() set scale(scale: number | [number, number, number] | THREE.Vector3) {\n this.set({ scale });\n }\n\n /** Movement factor (default: 1) */\n @Input() set noise(noise: number | [number, number, number] | THREE.Vector3 | Float32Array) {\n this.set({ noise });\n }\n\n override initialize() {\n super.initialize();\n this.set({\n noise: 1,\n count: 100,\n speed: 1,\n opacity: 1,\n scale: 1,\n });\n this.connect(\n 'positions',\n this.select(['count', 'scale'], ({ count, scale }) =>\n Float32Array.from(\n Array.from({ length: count }, () => normalizeVector(scale).map(MathUtils.randFloatSpread)).flat()\n )\n )\n );\n\n this.connect('sizes', this.getAttribute$<number>('size', { setDefault: Math.random }));\n this.connect('opacities', this.getAttribute$<number>('opacity'));\n this.connect('speeds', this.getAttribute$<number>('speed'));\n this.connect(\n 'noises',\n this.getAttribute$<number | [number, number, number] | THREE.Vector3 | Float32Array>('noise', {\n countValue: (_, count) => count * 3,\n })\n );\n this.connect(\n 'colors',\n this.getAttribute$<THREE.ColorRepresentation>('color', {\n keyValue: (color) => (!isFloat32Array(color) ? new Color(color) : color),\n countValue: (color, count) => (color === undefined ? count * 3 : count),\n setDefault: () => 1,\n })\n );\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this));\n }\n\n private onBeforeRender({ clock }: NgtRenderState) {\n if (!this.materialRef.nativeElement) return;\n this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;\n }\n\n private getAttribute$<TValue>(\n key: string,\n options?: {\n keyValue?: (value: TValue, count: number) => TValue;\n countValue?: (value: TValue, count: number) => number;\n setDefault?: (value: TValue) => number;\n }\n ): Observable<Float32Array> {\n options ??= {};\n if (!options.keyValue) {\n options.keyValue = (value) => value;\n }\n\n if (!options.countValue) {\n options.countValue = (_, count) => count;\n }\n return this.select(key).pipe(\n startWith(this.get(key) || undefined),\n withLatestFrom(this.select('count')),\n map(([value, count]) =>\n usePropAsIsOrAsAttribute(\n options!.countValue!(value, count),\n options!.keyValue!(value, count),\n options?.setDefault\n )\n )\n );\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtRxStore } from 'angular-three';\nimport { map } from 'rxjs';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows } from '../accumulative-shadows/accumulative-shadows';\nimport { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';\nimport { NgtsBounds, NGTS_BOUNDS_API } from '../bounds/bounds';\nimport { NgtsCenter } from '../center/center';\nimport { NgtsContactShadows } from '../contact-shadows/contact-shadows';\nimport { NgtsEnvironmentPresetsType } from '../environment/assets';\nimport { NgtsEnvironment } from '../environment/environment';\nimport { NgtsEnvironmentInputs } from '../environment/environment-inputs';\n\nconst presets = {\n rembrandt: {\n main: [1, 2, 1],\n fill: [-2, -0.5, -2],\n },\n portrait: {\n main: [-1, 2, 0.5],\n fill: [-1, 0.5, -1.5],\n },\n upfront: {\n main: [0, 2, 1],\n fill: [-1, 0.5, -1.5],\n },\n soft: {\n main: [-2, 4, 4],\n fill: [-1, 0.5, -1.5],\n },\n};\n\ntype NgtsStageShadows = Partial<NgtsAccumulativeShadows> &\n Partial<NgtsRandomizedLights> &\n Partial<NgtsContactShadows> & {\n type: 'contact' | 'accumulative';\n /** Shadow plane offset, default: 0 */\n offset?: number;\n /** Shadow bias, default: -0.0001 */\n bias?: number;\n /** Shadow normal bias, default: 0 */\n normalBias?: number;\n /** Shadow map size, default: 1024 */\n size?: number;\n };\n\ntype NgtsStageProps = {\n /** Lighting setup, default: \"rembrandt\" */\n preset?:\n | 'rembrandt'\n | 'portrait'\n | 'upfront'\n | 'soft'\n | { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n /** Controls the ground shadows, default: \"contact\" */\n shadows?: boolean | 'contact' | 'accumulative' | NgtsStageShadows;\n /** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n adjustCamera?: boolean | number;\n /** The default environment, default: \"city\" */\n environment?: NgtsEnvironmentPresetsType | Partial<NgtsEnvironmentInputs>;\n /** The lighting intensity, default: 0.5 */\n intensity?: number;\n /** To adjust centering, default: undefined */\n center?: Partial<NgtsCenter>;\n};\n\n@Directive({\n selector: 'ngts-stage-refit',\n standalone: true,\n})\nexport class NgtsStageRefit implements OnChanges {\n private readonly boundsApi = inject(NGTS_BOUNDS_API);\n\n @Input() radius = 0;\n @Input() adjustCamera = true;\n\n ngOnChanges() {\n if (this.adjustCamera) {\n this.boundsApi.refresh().clip().fit();\n }\n }\n}\n\nextend({ AmbientLight, SpotLight, Vector2, PointLight, Group });\n\n@Component({\n selector: 'ngts-stage',\n standalone: true,\n template: `\n <ngt-ambient-light [intensity]=\"get('intensity')! / 3\" />\n <ngt-spot-light\n [penumbra]=\"1\"\n [position]=\"get('spotLightPosition')\"\n [intensity]=\"get('intensity')! * 2\"\n [castShadow]=\"!!get('shadows')\"\n >\n <ngt-value [rawValue]=\"get('shadowsInfo').shadowBias\" attach=\"shadow.bias\" />\n <ngt-value [rawValue]=\"get('shadowsInfo').normalBias\" attach=\"shadow.normalBias\" />\n <ngt-vector2\n *args=\"[get('shadowsInfo').shadowSize, get('shadowsInfo').shadowSize]\"\n attach=\"shadow.mapSize\"\n />\n </ngt-spot-light>\n <ngt-point-light [position]=\"get('pointLightPosition')\" [intensity]=\"get('intensity')\" />\n\n <ngts-bounds\n [fit]=\"!!get('adjustCamera')\"\n [clip]=\"!!get('adjustCamera')\"\n [margin]=\"Number(get('adjustCamera'))\"\n [observe]=\"true\"\n >\n <ngts-stage-refit [radius]=\"get('radius')\" [adjustCamera]=\"!!get('adjustCamera')\" />\n <ngts-center\n [position]=\"[0, get('shadowsInfo').shadowOffset / 2, 0]\"\n [top]=\"!!get('center')?.top\"\n [right]=\"!!get('center')?.right\"\n [bottom]=\"!!get('center')?.bottom\"\n [left]=\"!!get('center')?.left\"\n [front]=\"!!get('center')?.front\"\n [back]=\"!!get('center')?.back\"\n [disableX]=\"!!get('center')?.disableX\"\n [disableY]=\"!!get('center')?.disableY\"\n [disableZ]=\"!!get('center')?.disableZ\"\n [precise]=\"!!get('center')?.precise\"\n (centered)=\"onCentered($event)\"\n >\n <ng-content />\n </ngts-center>\n </ngts-bounds>\n <ngt-group [position]=\"[0, -get('height') / 2 - get('shadowsInfo').shadowOffset / 2, 0]\">\n <ngts-contact-shadows\n *ngIf=\"get('shadowsInfo').contactShadow\"\n [scale]=\"get('radius') * 4\"\n [far]=\"get('radius')\"\n [blur]=\"2\"\n [opacity]=\"get('shadowsInfo').opacity\"\n [width]=\"get('shadowsInfo').width\"\n [height]=\"get('shadowsInfo').height\"\n [smooth]=\"get('shadowsInfo').smooth\"\n [resolution]=\"get('shadowsInfo').resolution\"\n [frames]=\"get('shadowsInfo').frames\"\n [scale]=\"get('shadowsInfo').scale\"\n [color]=\"get('shadowsInfo').color\"\n [depthWrite]=\"get('shadowsInfo').depthWrite\"\n [renderOrder]=\"get('shadowsInfo').renderOrder\"\n />\n <ngts-accumulative-shadows\n *ngIf=\"get('shadowsInfo').accumulativeShadow\"\n [temporal]=\"true\"\n [frames]=\"100\"\n [alphaTest]=\"0.9\"\n [toneMapped]=\"true\"\n [scale]=\"get('radius') * 4\"\n [opacity]=\"get('shadowsInfo').opacity\"\n [alphaTest]=\"get('shadowsInfo').alphaTest\"\n [color]=\"get('shadowsInfo').color\"\n [colorBlend]=\"get('shadowsInfo').colorBlend\"\n [resolution]=\"get('shadowsInfo').resolution\"\n >\n <ngts-randomized-lights\n [amount]=\"get('shadowsInfo').amount ?? 8\"\n [radius]=\"get('shadowsInfo').radius ?? get('radius')\"\n [ambient]=\"get('shadowsInfo').ambient ?? 0.5\"\n [intensity]=\"get('shadowsInfo').intensity ?? 1\"\n [position]=\"get('spotLightPosition')\"\n [size]=\"get('radius') * 4\"\n [bias]=\"-get('shadowsInfo').shadowBias\"\n [mapSize]=\"get('shadowsInfo').shadowSize\"\n />\n </ngts-accumulative-shadows>\n </ngt-group>\n <ngts-environment\n *ngIf=\"get('environmentInfo')\"\n [frames]=\"get('environmentInfo').frames\"\n [near]=\"get('environmentInfo').near\"\n [far]=\"get('environmentInfo').far\"\n [resolution]=\"get('environmentInfo').resolution\"\n [background]=\"get('environmentInfo').background\"\n [blur]=\"get('environmentInfo').blur\"\n [map]=\"get('environmentInfo').map\"\n [files]=\"get('environmentInfo').files\"\n [path]=\"get('environmentInfo').path\"\n [preset]=\"get('environmentInfo').preset\"\n [scene]=\"get('environmentInfo').scene\"\n [extensions]=\"get('environmentInfo').extensions\"\n [ground]=\"get('environmentInfo').ground\"\n [encoding]=\"get('environmentInfo').encoding\"\n />\n `,\n imports: [\n NgtArgs,\n NgtsBounds,\n NgtsStageRefit,\n NgtsCenter,\n NgIf,\n NgtsContactShadows,\n NgtsAccumulativeShadows,\n NgtsRandomizedLights,\n NgtsEnvironment,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStage extends NgtRxStore<NgtsStageProps> {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly Number = Number;\n\n @Input() set preset(preset: NgtsStageProps['preset']) {\n this.set({ preset });\n }\n\n @Input() set shadows(shadows: NgtsStageProps['shadows']) {\n this.set({ shadows });\n }\n\n @Input() set adjustCamera(adjustCamera: NgtsStageProps['adjustCamera']) {\n this.set({ adjustCamera });\n }\n\n @Input() set environment(environment: NgtsStageProps['environment']) {\n this.set({ environment });\n }\n\n @Input() set intensity(intensity: NgtsStageProps['intensity']) {\n this.set({ intensity });\n }\n\n @Input() set center(center: NgtsStageProps['center']) {\n this.set({ center });\n }\n\n @Output() centered = new EventEmitter() as NgtsCenter['centered'];\n\n override initialize() {\n super.initialize();\n this.set({\n adjustCamera: true,\n intensity: 0.5,\n shadows: 'contact',\n environment: 'city',\n preset: 'rembrandt',\n\n radius: 0,\n width: 0,\n height: 0,\n depth: 0,\n });\n\n this.connect(\n 'config',\n this.select('preset').pipe(map((preset) => (typeof preset === 'string' ? presets[preset] : preset)))\n );\n\n this.connect(\n 'shadowsInfo',\n this.select('shadows').pipe(\n map((shadows) => {\n return {\n contactShadow: shadows === 'contact' || (shadows as NgtsStageShadows)?.type === 'contact',\n accumulativeShadow:\n shadows === 'accumulative' || (shadows as NgtsStageShadows)?.type === 'accumulative',\n shadowBias: (shadows as NgtsStageShadows)?.bias ?? -0.0001,\n normalBias: (shadows as NgtsStageShadows)?.normalBias ?? 0,\n shadowSize: (shadows as NgtsStageShadows)?.size ?? 1024,\n shadowOffset: (shadows as NgtsStageShadows)?.offset ?? 0,\n ...(typeof shadows === 'string' ? {} : (shadows as NgtsStageShadows) || {}),\n };\n })\n )\n );\n\n this.connect(\n 'spotLightPosition',\n this.select(['config', 'radius'], ({ config, radius }) => [\n config.main[0] * radius,\n config.main[1] * radius,\n config.main[2] * radius,\n ])\n );\n\n this.connect(\n 'pointLightPosition',\n this.select(['config', 'radius'], ({ config, radius }) => [\n config.fill[0] * radius,\n config.fill[1] * radius,\n config.fill[2] * radius,\n ])\n );\n\n this.connect(\n 'environmentInfo',\n this.select('environment').pipe(\n map((environment) => {\n if (!environment) return null;\n if (typeof environment === 'string') return { preset: environment };\n return environment;\n })\n )\n );\n }\n\n onCentered(props: {\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }) {\n const { boundingSphere, width, height, depth } = props;\n this.set({ radius: boundingSphere.radius, width, height, depth });\n this.cdr.detectChanges();\n if (this.centered.observed) this.centered.emit(props);\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRenderState, NgtRxStore } from 'angular-three';\nimport { shaderMaterial } from 'angular-three-soba/shaders';\nimport { AdditiveBlending, BufferAttribute, BufferGeometry, Color, Points, Spherical, Vector3 } from 'three';\n\nconst StarFieldMaterial = shaderMaterial(\n {\n time: 0.0,\n fade: 0.0,\n },\n // language=GLSL\n `\nuniform float time;\nattribute float size;\nvarying vec3 vColor;\nvoid main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(time + 100.0));\n gl_Position = projectionMatrix * mvPosition;\n}\n `,\n // language=GLSL\n `\nuniform sampler2D pointTexture;\nuniform float fade;\nvarying vec3 vColor;\nvoid main() {\n float opacity = 1.0;\n if (fade == 1.0) {\n float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n }\n gl_FragColor = vec4(vColor, opacity);\n\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n}\n `\n);\n\nextend({ Points, BufferGeometry, BufferAttribute });\n\nconst genStar = (r: number) => {\n return new Vector3().setFromSpherical(\n new Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI)\n );\n};\n\n@Component({\n selector: 'ngts-stars',\n standalone: true,\n template: `\n <ngt-points [ref]=\"starsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute attach=\"attributes.position\" *args=\"[get('bufferAttributes').positions, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.color\" *args=\"[get('bufferAttributes').colors, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.size\" *args=\"[get('bufferAttributes').sizes, 1]\" />\n </ngt-buffer-geometry>\n <ngt-primitive\n *args=\"[material]\"\n attach=\"material\"\n [blending]=\"AdditiveBlending\"\n [depthWrite]=\"false\"\n [transparent]=\"true\"\n [vertexColors]=\"true\"\n >\n <ngt-value attach=\"uniforms.fade.value\" [rawValue]=\"get('fade')\" />\n </ngt-primitive>\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStars extends NgtRxStore {\n readonly AdditiveBlending = AdditiveBlending;\n readonly material = new StarFieldMaterial();\n\n @Input() starsRef = injectNgtRef<Points>();\n\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n @Input() set factor(factor: number) {\n this.set({ factor });\n }\n\n @Input() set saturation(saturation: number) {\n this.set({ saturation });\n }\n\n @Input() set fade(fade: boolean) {\n this.set({ fade });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n radius: 100,\n depth: 50,\n count: 5000,\n saturation: 0,\n factor: 4,\n fade: false,\n speed: 1,\n });\n this.connect(\n 'bufferAttributes',\n this.select(\n ['count', 'depth', 'factor', 'radius', 'saturation'],\n ({ count, depth, factor, radius, saturation }) => {\n const positions: any[] = [];\n const colors: any[] = [];\n const sizes = Array.from({ length: count }, () => (0.5 + 0.5 * Math.random()) * factor);\n const color = new Color();\n let r = radius + depth;\n const increment = depth / count;\n for (let i = 0; i < count; i++) {\n r -= increment * Math.random();\n positions.push(...genStar(r).toArray());\n color.setHSL(i / count, saturation, 0.9);\n colors.push(color.r, color.g, color.b);\n }\n return {\n positions: new Float32Array(positions),\n colors: new Float32Array(colors),\n sizes: new Float32Array(sizes),\n };\n }\n )\n );\n }\n\n constructor() {\n super();\n injectBeforeRender(this.onBeforeRender.bind(this));\n }\n\n onBeforeRender({ clock }: NgtRenderState) {\n this.material.uniforms['time'].value = clock.getElapsedTime() * this.get('speed');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAGA,SAAS,OAAO,CAAC,MAAW,EAAA;IACxB,OAAO,MAAM,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,MAAW,EAAA;AAC3B,IAAA,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,eAAe,GAAG,cAAc,CAClC,EAAE,EACF,iEAAiE,EACjE,0BAA0B,CAC7B,CAAC;MAEW,mBAAmB,CAAA;AAiB5B,IAAA,WAAA,CAAY,QAA6B,EAAE,KAAkB,EAAE,MAAc,IAAI,EAAA;AAC7E,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;;QAGpB,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;AAC/G,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACxE,YAAA,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,QAAQ,CAAC,cAAc;AACpC,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACxE,YAAA,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,QAAQ,CAAC,cAAc;AACpC,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACtE,IAAI,CAAC,eAAe,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,CAAC,MAAM,KAAI;;AAExC,YAAA,MAAM,CAAC,YAAY;gBACf,qBAAqB;oBACrB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,oBAAA,6DAA6D,CAAC;;YAGlE,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACjE,YAAA,MAAM,CAAC,cAAc;gBACjB,qBAAqB;oBACrB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;oBACzC,yEAAyE;oBACzE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAA,CAAA;;QAER,CAAC;;YAGG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AAC9D,SAAC,CAAC;KACL;IAED,KAAK,GAAA;QACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAI;AAC3B,YAAA,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3D,aAAA;AAAM,iBAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7D,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAED,OAAO,GAAA;QACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KAC3E;IAED,MAAM,GAAA;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KACzE;AAED,IAAA,SAAS,CAAC,MAAW,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;AAED,IAAA,MAAM,CAAC,MAAW,EAAE,WAAW,GAAG,GAAG,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;;AAEzB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,WAAW,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;;AAEtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC7F,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;;AAE/F,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;KACjC;AACJ;;ACnID,MAAM,kBAAkB,GAAG,cAAc,CACrC;AACI,IAAA,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,GAAG,EAAE,IAAI;AACZ,CAAA;AACD;AACA,CAAA;;;;;;AAMD,EAAA,CAAA;AACC;AACA,CAAA;;;;;;;;;;;;;AAaD,EAAA,CAAA,CACF,CAAC;AASF,MAAM,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AAepD,MAAM,6BAA6B,GAAG,IAAI,cAAc,CAC3D,6BAA6B,CAChC,CAAC;AAEF,SAAS,6BAA6B,CAAC,mBAA4C,EAAA;AAC/E,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE/B,IAAA,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,IAAI,GAAG,EAAE;AACjB,QAAA,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,MACL,mBAAmB,CAAC,OAAO,CAAC,aAG3B;QACL,KAAK,EAAE,MAAK;AACR,YAAA,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;AACxC,YAAA,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,YAAA,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;AACvB,YAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;SACjB;AACD,QAAA,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,KAAI;;YAEnB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;AACxC,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACf,QAAQ,CAAC,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACtD,QAAQ,CAAC,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CACvB,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAClC,QAAQ,CAAC,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CACpE,CAAC;AACF,gBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CACzB,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EACpC,QAAQ,CAAC,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,CACxE,CAAC;AACL,aAAA;;YAGD,mBAAmB,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;;AAExE,YAAA,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;;YAGlC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,gBAAA,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9C,gBAAA,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAClE,aAAA;;YAGD,mBAAmB,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;;AAEzE,YAAA,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACpC;KAC0B,CAAC;AAEhC,IAAA,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACzB,QAAA,QAAQ,EAAE;YACN,GAAG,EAAE,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;AACnD,SAAA;AACD,QAAA,MAAM,EAAE;AACJ,YAAA,GAAG,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5D,SAAA;AACD,QAAA,KAAK,EAAE;AACH,YAAA,GAAG,EAAE,MACD,IAAI,CAAC,GAAG,CACJ,CAAC,EACD,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;AAC1C,kBAAE,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC;AAClC,kBAAE,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAC1C;AACR,SAAA;AACJ,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEpC,IAAA,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,KAAI;AAC7D,QAAA,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAExC,mBAAmB,CAAC,IAAI,CACpB,aAAa,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EACxF,MAAK;;YAED,GAAG,CAAC,KAAK,EAAE,CAAC;;YAEZ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;AAAE,gBAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxE,SAAC,CACJ,CAAC;AAEF,QAAA,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,MAChC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YACjC,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE;gBAC1F,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,EAAE,CAAC;AACf,aAAA;SACJ,CAAC,CACL,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;MAGY,2BAA2B,CAAA;AACpC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,6BAA6B,CAAC,CAAC;KACzC;;wHAHQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,oCAAoC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;AAuCzE,MAAO,uBAAwB,SAAQ,UAAU,CAAA;AAhCvD,IAAA,WAAA,GAAA;;AAiCa,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,IAAI,CAAC;QAC1B,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AAEJ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QAErG,IAAsB,CAAA,sBAAA,GAAG,YAAY,EAAe,CAAC;QACrD,IAAO,CAAA,OAAA,GAAG,YAAY,EAAc,CAAC;AAwEjD,KAAA;;IArEG,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;;IAGD,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,QAAQ,CAAC,QAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;;IAGD,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;;IAGD,IAAa,SAAS,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,UAAU,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;;IAGD,IAAa,UAAU,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;;IAGD,IAAa,UAAU,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,UAAU,EAAE,IAAI;AACnB,SAAA,CAAC,CAAC;KACN;;oHAhFQ,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EATrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,6BAA6B;AACtC,YAAA,UAAU,EAAE,6BAA6B;YACzC,IAAI,EAAE,CAAC,uBAAuB,CAAC;AAClC,SAAA;KACJ,EA1BS,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3BQ,2BAA2B,EAAA,QAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAsC3B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhCnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA;oBACD,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACtC,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,6BAA6B;AACtC,4BAAA,UAAU,EAAE,6BAA6B;AACzC,4BAAA,IAAI,EAAE,CAAyB,uBAAA,CAAA;AAClC,yBAAA;AACJ,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAagB,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAKO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAKO,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAKO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAKO,UAAU,EAAA,CAAA;sBAAtB,KAAK;;;ACtQV,MAAM,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;AAE1D,MAAM,0BAA0B,GAAG,IAAI,cAAc,CACxD,0BAA0B,CAC7B,CAAC;AAEF,SAAS,0BAA0B,CAAC,gBAAsC,EAAA;AACtE,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,MAAK;AAChB,QAAA,IAAI,KAAyC,CAAC;AAC9C,QAAA,IAAI,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE;AAC1C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/E,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAA2B,CAAC;gBACvF,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAClD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC9C,KAAK,CAAC,QAAQ,CAAC,GAAG,CACd,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,EACrD,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,EACrD,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CACxD,CAAC;AACL,iBAAA;AAAM,qBAAA;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAChE,oBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC9C,KAAK,CAAC,QAAQ,CAAC,GAAG,CACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,EACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EACnD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAC5B,CAAC;AACL,iBAAA;AACJ,aAAA;AACJ,SAAA;AACL,KAAC,CAAC;AAEF,IAAA,MAAM,GAAG,GAAG,EAAE,MAAM,EAAqC,CAAC;AAE1D,IAAA,gBAAgB,CAAC,MAAM,CACnB,aAAa,CAAC;QACV,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC5B,QAAA,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;AACnC,QAAA,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,KAAA,CAAC,EACF,CAAC,CAAC,KAAK,CAAC,KAAI;AACR,QAAA,IAAI,eAAe;YAAE,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjE,QAAA,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3D,KAAC,CACJ,CAAC;AAEF,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;MAGY,wBAAwB,CAAA;AACjC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,0BAA0B,CAAC,CAAC;KACtC;;qHAHQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,iCAAiC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;AA8BtE,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AAvBpD,IAAA,WAAA,GAAA;;QAwBa,IAAS,CAAA,SAAA,GAAG,YAAY,EAAe,CAAC;AAuFpD,KAAA;AAtFG;AACgH;IAChH,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;;IAGD,IAAa,QAAQ,CAAC,QAA2C,EAAA;AAC7D,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;;IAGD,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;;IAGD,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;;IAGD,IAAa,SAAS,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC3B;;IAGD,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;;IAGD,IAAa,UAAU,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;;IAGD,IAAa,IAAI,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;;IAGD,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;;IAGD,IAAa,IAAI,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;;IAGD,IAAa,IAAI,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;;IAGD,IAAa,GAAG,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACrB;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,OAAO,EAAE,GAAG;AACf,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CACR,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CACvG,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CACR,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CACvF,CAAC;KACL;;iHAvFQ,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EALlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE;KAChH,EAjBS,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtBQ,wBAAwB,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAuBG,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAM7C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAvBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,IAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,OAAO,EAAE,SAAS,CAAC;AACvD,oBAAA,SAAS,EAAE;wBACP,EAAE,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAA,oBAAA,CAAsB,EAAE;AAChH,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAEY,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAKO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAKO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAKO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAKO,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAKO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAKO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAKO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAKO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAKO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAKO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAKO,GAAG,EAAA,CAAA;sBAAf,KAAK;;;AC3GV,MAAM,MAAM,GAAG,CAAC,GAAY,KAAwB,CAAC,CAAC,GAAG,IAAK,GAAkB,CAAC,MAAM,CAAC;AAExF,SAAS,MAAM,CAAC,CAAgB,EAAE,CAAgB,EAAE,GAAW,EAAA;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC/F,CAAC;AAED,SAAS,IAAI,CAAC,CAAgB,EAAE,CAAgB,EAAE,MAAc,EAAE,KAAa,EAAA;IAC3E,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;MAEY,eAAe,GAAG,IAAI,cAAc,CAAgB,gBAAgB,EAAE;AAEnF,SAAS,gBAAgB,CAAC,MAAkB,EAAA;AACxC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/B,IAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAE7B,IAAA,SAAS,OAAO,GAAA;QACZ,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAEpC,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,QAAA,MAAM,iBAAiB,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC;cACjD,OAAO,GAAG,CAAC;cACX,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;AACzG,QAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QACxE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;KAC1C;AAED,IAAA,MAAM,GAAG,GAAG;QACR,OAAO;AACP,QAAA,OAAO,CAAC,MAAoC,EAAA;AACxC,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,aAAyC,CAAC;YAE3D,IAAI,MAAM,CAAC,MAAM,CAAC;AAAE,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,iBAAA;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;AACxD,gBAAA,IAAI,MAAM,EAAE;AACR,oBAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,oBAAA,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC7B,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;gBACf,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC3C,GAAG,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACnF,aAAA;AAED,YAAA,IAAI,QAAQ,EAAE,WAAW,CAAC,IAAI,KAAK,+BAA+B,EAAE;;AAEhE,gBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACpG,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACtD,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACf;QACD,IAAI,GAAA;AACA,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/B,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,aAAyC,CAAC;AAC3D,YAAA,IAAI,QAAQ;AAAE,gBAAA,QAAQ,CAAC,WAAW,GAAG,QAAQ,GAAG,EAAE,CAAC;AACnD,YAAA,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,GAAG,CAAC;AAC7B,YAAA,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC;YAC5B,MAAM,CAAC,sBAAsB,EAAE,CAAC;AAChC,YAAA,IAAI,QAAQ;gBAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAChC,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,OAAO,IAAI,CAAC;SACf;AACD,QAAA,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAA6E,EAAA;YAC9F,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YAEjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AAEpC,YAAA,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,aAAA;AAED,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACnC,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AACpC,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;SACf;QACD,GAAG,GAAA;AACC,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,aAAyC,CAAC;YAE3D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YAEzC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,YAAA,IAAI,QAAQ;gBAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEzD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAE3F,YAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE/B,YAAA,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;gBAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAElC,gBAAA,IAAI,SAAS,GAAG,CAAC,EACb,QAAQ,GAAG,CAAC,CAAC;AACjB,gBAAA,MAAM,QAAQ,GAAG;oBACb,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBACrD,CAAC;;AAEF,gBAAA,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC/C,gBAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACtB,oBAAA,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;oBAC1C,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,iBAAA;gBACD,SAAS,IAAI,CAAC,CAAC;gBACf,QAAQ,IAAI,CAAC,CAAC;AACd,gBAAA,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;AAC/D,gBAAA,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;AAC7D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC;gBAClE,IAAI,CAAC,OAAO,EAAE;oBACV,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,MAAM,CAAC,sBAAsB,EAAE,CAAC;AACnC,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AACnC,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACrB,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/D,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,OAAO,IAAI,CAAC;SACf;KACa,CAAC;IAEnB,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAA,MAAM,CAAC,IAAI,CACP,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACnB,SAAS,CAAC,MACN,aAAa,CAAC;AACV,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACpB,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AACxB,QAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtB,QAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;AACxB,QAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACpB,QAAA,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC/B,KAAA,CAAC,CACL,CACJ,EACD,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,KAAI;AACrB,QAAA,IAAI,OAAO,IAAI,KAAK,EAAE,KAAK,CAAC,EAAE;YAC1B,GAAG,CAAC,OAAO,EAAE,CAAC;AACd,YAAA,IAAI,GAAG;gBAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACxB,SAAA;AACL,KAAC,CACJ,CAAC;AAEF,IAAA,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAC7B,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;YAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AACtC,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,aAAyC,CAAC;AAE3D,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAClG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5C,YAAA,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;gBAC/B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClC,MAAM,CAAC,sBAAsB,EAAE,CAAC;AACnC,aAAA;YAED,IAAI,CAAC,QAAQ,EAAE;gBACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,aAAA;AAAM,iBAAA;gBACH,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3C,QAAQ,CAAC,MAAM,EAAE,CAAC;AACrB,aAAA;AAED,YAAA,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;gBAAE,OAAO;YACvG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;gBAAE,OAAO;AACtG,YAAA,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;gBAAE,OAAO;AAC9E,YAAA,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AACpC,SAAA;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAaZ,MAAO,UAAW,SAAQ,UAAU,CAAA;AAX1C,IAAA,WAAA,GAAA;;QAYa,IAAS,CAAA,SAAA,GAAG,YAAY,EAAS,CAAC;AA0BjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAkB,CAAC;AAErC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAO,CAAA,OAAA,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjG,IAAI,CAAA,IAAA,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAoBxF,KAAA;IAjDG,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,GAAG,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACrB;IAED,IAAa,IAAI,CAAC,IAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,OAAO,CAAC,OAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,GAAG,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACrB;IASQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;KAC7F;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,KAAI;AACpD,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AACvD,gBAAA,QAAqC,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC3E,OAAO,MAAO,QAAqC,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC9F,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;uGAnDQ,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,6NAHR,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EALjF,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAIQ,UAAU,EAAA,UAAA,EAAA,CAAA;kBAXtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,IAAA,CAAA;AACD,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAA,UAAA,CAAY,EAAE,CAAC;oBAC3F,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAEY,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,GAAG,EAAA,CAAA;sBAAf,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,GAAG,EAAA,CAAA;sBAAf,KAAK;gBAII,MAAM,EAAA,CAAA;sBAAf,MAAM;;;ACpSL,MAAO,eAAgB,SAAQ,UAAU,CAAA;IAS3C,IAAa,SAAS,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC3B;IAED,IAAa,KAAK,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,SAAS,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC3B;IAED,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,QAAQ,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,YAAY,CAAC,YAAoB,EAAA;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;KAC9B;IAED,IAAa,cAAc,CAAC,cAAsB,EAAA;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KAChC;IAED,IAAa,aAAa,CAAC,aAAqB,EAAA;AAC5C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;KAC/B;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,cAAc,EAAE,GAAG;AACnB,YAAA,aAAa,EAAE,GAAG;AACrB,SAAA,CAAC,CAAC;KACN;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AA3DK,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAElC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAEnD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAsD5C,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAI;YAC5C,MAAM,EACF,SAAS,EACT,MAAM,EACN,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,cAAc,EACd,aAAa,EACb,KAAK,EACL,SAAS,GACZ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;YAC9F,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;AAE1F,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,KAAK,EAC9B,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,EAC5B,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAChC,CAAC;AAEF,YAAA,IAAI,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CACP,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3E,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAI;AACnB,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,MAAM,QAAQ,GAAG,MAAM,MAAM,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7E,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9C,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,OAAO,MAAM,KAAK,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtE,aAAA;AACL,SAAC,CACJ,CAAC;KACL;IAED,YAAY,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAChC;AAED,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;IAEO,mBAAmB,GAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACxC,QAAA,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClD,SAAA;KACJ;;4GA5HQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;0EAUgB,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,YAAY,EAAA,CAAA;sBAAxB,KAAK;gBAIO,cAAc,EAAA,CAAA;sBAA1B,KAAK;gBAIO,aAAa,EAAA,CAAA;sBAAzB,KAAK;;;AC7CV,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAgBZ,MAAO,UAAW,SAAQ,UAAU,CAAA;AAd1C,IAAA,WAAA,GAAA;;QAea,IAAS,CAAA,SAAA,GAAG,YAAY,EAAS,CAAC;QAElC,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;QACjC,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;AA8ChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAcjC,CAAC;AAqDR,KAAA;IA/GG,IAAa,GAAG,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACrB;IAED,IAAa,KAAK,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,MAAM,CAAC,MAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,IAAI,CAAC,IAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,KAAK,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,IAAI,CAAC,IAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,QAAQ,CAAC,QAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,QAAQ,CAAC,QAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,QAAQ,CAAC,QAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,QAAQ,CAAC,QAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,OAAO,CAAC,OAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAkBQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/B;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,WAAW,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAI;AACpF,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAC5F,IAAI,CAAC,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AACnD,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC3D,YAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7B,YAAA,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtC,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAE/B,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CACpC,QAAQ,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAC7C,QAAQ,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAC7C,QAAQ,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAChD,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACf,oBAAA,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAO;AAC5C,oBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;oBACvC,KAAK;oBACL,MAAM;oBACN,KAAK;AACL,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,cAAc,EAAE,MAAM;AACtB,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,iBAAiB,EAAE,MAAM;AACzB,oBAAA,mBAAmB,EAAE,MAAM;AAC3B,oBAAA,cAAc,EAAE,MAAM;AACzB,iBAAA,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;uGApHQ,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAXT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;AAQT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAGQ,UAAU,EAAA,UAAA,EAAA,CAAA;kBAdtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,IAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAEY,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKO,GAAG,EAAA,CAAA;sBAAf,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAII,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;AC/DX,MAAM,SAAS,GAAG,kGAAkG,CAAC;AAErH,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAqCvD,MAAO,SAAU,SAAQ,UAAU,CAAA;AAnCzC,IAAA,WAAA,GAAA;;AAoCqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAElD,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAS,CAAC;AAkCjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAa,CAAA,aAAA,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAwB,CAAC;AAqCnG,KAAA;IAtEG,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,QAAQ,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,KAAK,CAAC,KAA0B,EAAA;AACzC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,SAAS,CAAC,SAAkB,EAAA;AACrC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC3B;IAKQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAE,IAAI;AAClB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CACR,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAI;AACvE,YAAA,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM;gBAC/C,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK;gBACpC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK;AACpC,gBAAA,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;gBACxF,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,gBAAA,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK;AAC3D,aAAA,CAAC,CAAC,CAAC;SACP,CAAC,CACL,CAAC;KACL;AAED,IAAA,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAA+B,EAAA;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACrC,YAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YACvD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAC/F,CAAC;AACN,SAAC,CAAC,CAAC;KACN;;sGA3EQ,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAhCR,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,KAAK,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,OAAO,EAAE,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,0HAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGpC,SAAS,EAAA,UAAA,EAAA,CAAA;kBAnCrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,IAAA,CAAA;oBACD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC;oBAC9C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAKY,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,SAAS,EAAA,CAAA;sBAArB,KAAK;;;ACjEV,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,CAAC;AA8BzD,MAAO,kBAAmB,SAAQ,UAAU,CAAA;IAS9C,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,IAAI,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,GAAG,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACrB;IAED,IAAa,MAAM,CAAC,MAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,UAAU,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;IAED,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,KAAK,CAAC,KAAsC,EAAA;AACrD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,KAAK,CAAC,KAAgC,EAAA;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,UAAU,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;IAED,IAAa,WAAW,CAAC,WAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KAC7B;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAzDK,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAe,CAAA,eAAA,GAAG,YAAY,EAAsB,CAAC;QACrD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAChD,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;QAEZ,IAAiB,CAAA,iBAAA,GAAG,YAAY,EAAS,CAAC;AAoD/C,QAAA,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACzD;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,WAAW,EAAE,CAAC;AACjB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CACR,aAAa,EACb,IAAI,CAAC,MAAM,CACP,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAC/E,CACJ,CAAC;QACF,IAAI,CAAC,OAAO,CACR,cAAc,EACd,IAAI,CAAC,MAAM,CACP,CAAC,QAAQ,EAAE,OAAO,CAAC,EACnB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CACjF,CACJ,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CACR,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,KAAI;YACtG,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;SACnE,CAAC,CACL,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CACR,gBAAgB,EAChB,IAAI,CAAC,MAAM,CACP,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,EAC/D,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAI;YAChE,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACzE,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC7E,YAAA,gBAAgB,CAAC,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;YACxF,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAClF,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,YAAA,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3D,YAAA,aAAa,CAAC,eAAe,GAAG,CAAC,MAAM,KAAI;gBACvC,MAAM,CAAC,QAAQ,GAAG;oBACd,GAAG,MAAM,CAAC,QAAQ;oBAClB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;iBAC5C,CAAC;gBACF,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CACjD,CAAe,aAAA,CAAA;AACf,gBAAA,CAAA;;AAEC,4BAAA,CAAA,CACJ,CAAC;gBACF,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CACjD,4CAA4C;;AAE5C,gBAAA,gEAAgE,CACnE,CAAC;AACN,aAAC,CAAC;YAEF,MAAM,sBAAsB,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;YAC9E,MAAM,oBAAoB,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC1E,oBAAoB,CAAC,SAAS,GAAG,sBAAsB,CAAC,SAAS,GAAG,KAAK,CAAC;YAE1E,OAAO;gBACH,YAAY;gBACZ,aAAa;gBACb,aAAa;gBACb,SAAS;gBACT,sBAAsB;gBACtB,oBAAoB;gBACpB,gBAAgB;aACnB,CAAC;SACL,CACJ,CACJ,CAAC;KACL;AAEO,IAAA,cAAc,CAAC,KAAa,EAAE,EAAE,KAAK,EAAE,EAAE,EAAkB,EAAA;QAC/D,MAAM,EACF,MAAM,EACN,IAAI,EACJ,cAAc,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,EAC/C,MAAM,GACT,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAEf,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,KAAK,MAAM,KAAK,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE;AAC/E,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC;AAC3C,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,YAAA,MAAM,uBAAuB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACvD,YAAA,KAAK,CAAC,gBAAgB,GAAG,aAAa,CAAC;AACvC,YAAA,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACjC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACrD,YAAA,KAAK,CAAC,gBAAgB,GAAG,uBAAuB,CAAC;AAEjD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,IAAI,MAAM;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAEzC,YAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzB,YAAA,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC;AACrC,YAAA,KAAK,EAAE,CAAC;AACX,SAAA;KACJ;AAEO,IAAA,WAAW,CAAC,IAAY,EAAA;AAC5B,QAAA,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAC7F,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEhC,QAAA,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;AAEzB,QAAA,SAAS,CAAC,QAAQ,GAAG,sBAAsB,CAAC;QAC5C,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;AACtE,QAAA,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AAE3D,QAAA,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AAEzD,QAAA,SAAS,CAAC,QAAQ,GAAG,oBAAoB,CAAC;QAC1C,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACxE,QAAA,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AAEzD,QAAA,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACjC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AAEzD,QAAA,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;KAC7B;;+GAlMQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAzBjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,OAAO,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGvB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA5B9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,IAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;0EAQY,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,GAAG,EAAA,CAAA;sBAAf,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAIO,WAAW,EAAA,CAAA;sBAAvB,KAAK;;;ACnGG,MAAA,yBAAyB,GAAG;AACrC,IAAA,MAAM,EAAE,6BAA6B;AACrC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,KAAK,EAAE,kCAAkC;AACzC,IAAA,SAAS,EAAE,4CAA4C;AACvD,IAAA,MAAM,EAAE,mCAAmC;AAC3C,IAAA,SAAS,EAAE,wBAAwB;AACnC,IAAA,MAAM,EAAE,uCAAuC;AAC/C,IAAA,IAAI,EAAE,wCAAwC;AAC9C,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,KAAK,EAAE,qCAAqC;;;ACJ1C,MAAgB,qBAAsB,SAAQ,UAAU,CAAA;AAD9D,IAAA,WAAA,GAAA;;AAEuB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAiE/C,KAAA;IA/DG,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,IAAI,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,GAAG,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACrB;IAED,IAAa,UAAU,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;IAED,IAAa,UAAU,CAAC,UAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;IAED,IAAa,IAAI,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,GAAG,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACrB;IAED,IAAa,KAAK,CAAC,KAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,IAAI,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,MAAM,CAAC,MAAkC,EAAA;AAClD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,KAAK,CAAC,KAAgC,EAAA;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,UAAU,CAAC,UAAoC,EAAA;AACxD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;IAED,IAAa,MAAM,CACf,MAMO,EAAA;AAEP,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,QAAQ,CAAC,QAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;;kHAjEiB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAD1C,SAAS;8BAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,GAAG,EAAA,CAAA;sBAAf,KAAK;gBAIO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAIO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,GAAG,EAAA,CAAA;sBAAf,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAYO,QAAQ,EAAA,CAAA;sBAApB,KAAK;;;ACrDV,SAAS,YAAY,CAAC,KAA4C,EAAA;AAC9D,IAAA,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;AACvD,CAAC;AAEe,SAAA,WAAW,CACvB,UAA4B,EAC5B,KAAwD,EACxD,YAAyB,EACzB,OAAsB,EACtB,IAAI,GAAG,CAAC,EAAA;IAER,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;AACnD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AAClC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAEjD,IAAI,UAAU,KAAK,MAAM;AAAE,QAAA,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;AACxD,IAAA,IAAI,UAAU;AAAE,QAAA,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;AAC5C,IAAA,IAAI,UAAU,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;AAAE,QAAA,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;AAEhG,IAAA,OAAO,MAAK;QACR,IAAI,UAAU,KAAK,MAAM;AAAE,YAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;AACvD,QAAA,IAAI,UAAU;AAAE,YAAA,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1C,QAAA,IAAI,UAAU,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;AAAE,YAAA,MAAM,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACvG,KAAC,CAAC;AACN,CAAC;AAMD,MAAM,YAAY,GAAG,4EAA4E,CAAC;AAC5F,SAAU,qBAAqB,CACjC,aAE0E,EAAA;AAE1E,IAAA,IAAI,CAAC,GAAG;AACJ,QAAA,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACzE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,QAAQ,EAAE,SAAS;KACS,CAAC;AACjC,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAChC,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;AAE3D,IAAA,MAAM,UAAU,GAAG,YAAY,EAAyB,CAAC;AACzD,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,MAAK;AACvC,QAAA,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;AACxC,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,YAAY,GAAG,eAAe,CAChC,CAAC,MAAM,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,iBAAiB,GAAG,UAAU,CAAgC,EACnG,OAAO,CAAC,IAAI,CACR,YAAY,CAAC,CAAC,CAAC,EACf,GAAG,CAAC,CAAC,IAAI,KAAI;QACT,CAAC,GAAG,IAAI,CAAC;AACT,QAAA,OAAO,CAAC,CAAC;AACb,KAAC,CAAC,EACF,GAAG,CAAC,CAAC,IAAI,KAAI;QACT,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,yBAAyB,CAAC;AAC3C,gBAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AAC5B,SAAA;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAI,IAAI,CAAC,KAAc,CAAC;AAC3E,KAAC,CAAC,CACL,EACD,CAAC,MAAM,KAAI;QACP,IAAI,CAAC,CAAC,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;QACD,IAAI,CAAC,CAAC,UAAU,EAAE;AACd,YAAA,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxB,SAAA;AACL,KAAC,CACJ,CAAC;AAEF,IAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;QACzD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAM,CAAC,GAAI,OAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAC1E,QAAA,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAM,CAAC,GAAG,qBAAqB,GAAG,gCAAgC,CAAC;QACrG,OAAO,CAAC,QAAQ,GAAG,CAAA,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAM,CAAC,IAAG,YAAY,GAAG,cAAc,CAAC;AAEzF,QAAA,UAAU,CAAC,aAAa,GAAG,OAAO,CAAC;AACvC,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,UAAU,CAAC;AACtB;;AC9FM,MAAO,mBAAoB,SAAQ,qBAAqB,CAAA;AAJ9D,IAAA,WAAA,GAAA;;QAKa,IAAU,CAAA,UAAA,GAAG,qBAAqB,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAyBlG,KAAA;IAvBY,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;KACnC;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CACP,aAAa,CAAC;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,CAAC;AACpB,SAAA,CAAC,EACF,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,KAAI;AACjD,YAAA,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACvE,SAAC,CACJ,CAAC;KACL;;gHAzBQ,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACCK,MAAO,kBAAmB,SAAQ,qBAAqB,CAAA;IAChD,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;KACnC;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CACP,aAAa,CAAC;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACjD,SAAA,CAAC,EACF,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,KAAI;AAC7C,YAAA,IAAI,GAAG,EAAE;AACL,gBAAA,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAClE,aAAA;AACL,SAAC,CACJ,CAAC;KACL;;+GAzBQ,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACAD,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAwBzB,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AAtBhE,IAAA,WAAA,GAAA;;QAuBa,IAAc,CAAA,cAAA,GAAG,qBAAqB,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAuBtG,KAAA;IArBG,QAAQ,GAAA;QACJ,IAAI,CAAC,OAAO,CACR,SAAS,EACT,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACtF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAC1C,CACJ,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO,CACR,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,CAAC,CAC1D,CAAC;QACF,IAAI,CAAC,OAAO,CACR,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,CAAC,CAC1D,CAAC;QACF,IAAI,CAAC,OAAO,CACR,aAAa,EACb,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,CACjE,CAAC;KACL;;kHAvBQ,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAnBpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGlC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAtBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC;oBAC5C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;;;ACZD,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AA4BjB,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;IAInD,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACnG,QAAA,IAAI,CAAC,OAAO,CACR,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,KAAI;YAC3C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACxD,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;AACjC,YAAA,OAAO,GAAG,CAAC;SACd,CAAC,CACL,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CACR,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAChF,CAAC;KACL;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AArBH,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAc,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxE,IAAa,CAAA,aAAA,GAAG,YAAY,EAAoB,CAAC;AAqBtD,QAAA,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACzD;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CACP,aAAa,CAAC;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,CAAC,eAAe,CAAC,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,CAAC;SACvB,CAAC,EACF,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,KAAI;YAC/E,IAAI,MAAM,KAAK,CAAC;AAAE,gBAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAClD,YAAA,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3E,SAAC,CACJ,CAAC;KACL;AAEO,IAAA,cAAc,CAAC,KAAa,EAAE,EAAE,EAAE,EAAkB,EAAA;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9B,QAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,GAAG,MAAM,EAAE;AACvC,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AAClC,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AAChF,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA;AACJ,SAAA;KACJ;;kHA1DQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAvBpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;KAmBT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,EAAE,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,iEAAE,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGpF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1BjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,IAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC;oBAC9F,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;;;MCtCY,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,qCAAqC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;AA8E1E,MAAO,eAAgB,SAAQ,qBAAqB,CAAA;;4GAA7C,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EACV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAzE/C,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6DT,EAEG,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,kEACnB,qBAAqB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAIX,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3E3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DT,IAAA,CAAA;AACD,oBAAA,OAAO,EAAE;wBACL,kBAAkB;wBAClB,qBAAqB;wBACrB,mBAAmB;wBACnB,qBAAqB;wBACrB,IAAI;wBACJ,gBAAgB;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAEgE,OAAO,EAAA,CAAA;sBAAnE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;AClF/D,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAcZ,MAAO,SAAU,SAAQ,UAAU,CAAA;IAKrC,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,iBAAiB,CAAC,iBAAyB,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;KACnC;IAED,IAAa,cAAc,CAAC,cAAsB,EAAA;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KAChC;IAED,IAAa,aAAa,CAAC,aAAiC,EAAA;AACxD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;KAC/B;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;KAC/F;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AA1BK,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;QAEvC,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAe,CAAC;QAyB5C,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;IAEO,cAAc,CAAC,EAAE,KAAK,EAAkB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa;YAAE,OAAO;AACzC,QAAA,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,iBAAiB,CAAC;AAC9F,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/C,QAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AAC/G,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,cAAc,CAAC;KACvE;;sGAzCQ,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EATR,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAGQ,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,IAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;0EAIY,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,iBAAiB,EAAA,CAAA;sBAA7B,KAAK;gBAIO,cAAc,EAAA,CAAA;sBAA1B,KAAK;gBAIO,aAAa,EAAA,CAAA;sBAAzB,KAAK;;;AC/BJ,SAAU,iBAAiB,CAAC,WAAmB,EAAE,OAAe,EAAE,MAAA,GAAkB,IAAI,OAAO,EAAE,EAAA;IACnG,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,WAAW,GAAG,GAAG,CAAC,CAAC;AAC5C,IAAA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC;IAE1C,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzB,IAAA,OAAO,MAAM,CAAC;AAClB,CAAC;AAiBK,MAAO,OAAQ,SAAQ,UAAU,CAAA;AAfvC,IAAA,WAAA,GAAA;;QAgBa,IAAM,CAAA,MAAA,GAAG,YAAY,EAAO,CAAC;AA+DzC,KAAA;IA7DG,IAAa,QAAQ,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,WAAW,CAAC,WAA6D,EAAA;AAClF,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KAC7B;IAED,IAAa,WAAW,CAAC,WAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KAC7B;IAED,IAAa,OAAO,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,cAAc,CAAC,cAAsB,EAAA;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;KAChC;IAED,IAAa,eAAe,CAAC,eAAuB,EAAA;AAChD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;KACjC;IAED,IAAa,QAAQ,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1B;IAED,IAAa,SAAS,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC3B;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,GAAG,CAAC;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC;YACL,WAAW;YACX,OAAO;AACP,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC;AACvD,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO,CACR,aAAa,EACb,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAC7D,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAC1C,CACJ,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CACR,OAAO,EACP,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,OAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CACjF,CAAC;KACL;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;KACzE;;oGA/DQ,OAAO,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,OAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAZN,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;AAQT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGR,OAAO,EAAA,UAAA,EAAA,CAAA;kBAfnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,IAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAEY,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAIO,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAIO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,cAAc,EAAA,CAAA;sBAA1B,KAAK;gBAIO,eAAe,EAAA,CAAA;sBAA3B,KAAK;gBAIO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAIO,SAAS,EAAA,CAAA;sBAArB,KAAK;;;ACxDV,MAAM,gBAAgB,GAAG,cAAc,CACnC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;AAC1B;AACA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BD,EAAA,CAAA;AACC;AACA,CAAA;;;;;;;;;;AAUD,EAAA,CAAA,CACF,CAAC;AAEF,MAAM,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;AAEtE,MAAM,cAAc,GAAG,CAAC,GAAQ,KAA0B,GAAG,IAAK,GAAoB,CAAC,WAAW,KAAK,YAAY,CAAC;AAEpH,MAAM,WAAW,GAAG,CAAC,CAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,CAAC,CAAM,KACpB,CAAC,YAAY,OAAO,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,YAAY,OAAO,CAAC;AAEzE,MAAM,eAAe,GAAG,CAAC,CAAM,KAAc;AACzC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC;SAC1B,IAAI,QAAQ,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACzC,IAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAa,CAAC;AACjC,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAU,KAAa,EAAE,IAAuB,EAAE,UAA6B,EAAA;IAC5G,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AACtB,YAAA,OAAO,IAAoB,CAAC;AAC/B,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,YAAY,KAAK,EAAE;gBACvB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5E,gBAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAA;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChF,gBAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,IAAyB,CAAC,CAAC;AAChF,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,UAAW,CAAC,CAAC;AAC7D,CAAC;AAqBK,MAAO,YAAa,SAAQ,UAAU,CAAA;;IAQxC,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,KAAK,CAAC,KAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,OAAO,CAAC,OAA8B,EAAA;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;;IAGD,IAAa,KAAK,CAAC,KAA+C,EAAA;AAC9D,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,IAAI,CAAC,IAA2B,EAAA;AACzC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;;IAGD,IAAa,KAAK,CAAC,KAAwD,EAAA;AACvE,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;;IAGD,IAAa,KAAK,CAAC,KAAuE,EAAA;AACtF,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CACR,WAAW,EACX,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAC7C,YAAY,CAAC,IAAI,CACb,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CACpG,CACJ,CACJ,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAS,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAS,SAAS,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAS,OAAO,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CACR,QAAQ,EACR,IAAI,CAAC,aAAa,CAAmE,OAAO,EAAE;YAC1F,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,CAAC;AACtC,SAAA,CAAC,CACL,CAAC;QACF,IAAI,CAAC,OAAO,CACR,QAAQ,EACR,IAAI,CAAC,aAAa,CAA4B,OAAO,EAAE;YACnD,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YACxE,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;AACvE,YAAA,UAAU,EAAE,MAAM,CAAC;AACtB,SAAA,CAAC,CACL,CAAC;KACL;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AA/EK,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAG,CAAA,GAAA,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACxC,IAAW,CAAA,WAAA,GAAG,YAAY,EAAqC,CAAC;QAEhE,IAAS,CAAA,SAAA,GAAG,YAAY,EAAU,CAAC;QA4ExC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;IAEO,cAAc,CAAC,EAAE,KAAK,EAAkB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa;YAAE,OAAO;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;KAC7E;IAEO,aAAa,CACjB,GAAW,EACX,OAIC,EAAA;AAED,QAAA,OAAO,KAAP,OAAO,GAAK,EAAE,CAAC,CAAA;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACnB,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACrB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;AAC5C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACxB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,EACrC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EACpC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KACf,wBAAwB,CACpB,OAAQ,CAAC,UAAW,CAAC,KAAK,EAAE,KAAK,CAAC,EAClC,OAAQ,CAAC,QAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAChC,OAAO,EAAE,UAAU,CACtB,CACJ,CACJ,CAAC;KACL;;yGApHQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAhBX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGR,YAAY,EAAA,UAAA,EAAA,CAAA;kBAnBxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,IAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;0EAMY,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;;;ACvHV,MAAM,OAAO,GAAG;AACZ,IAAA,SAAS,EAAE;AACP,QAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvB,KAAA;AACD,IAAA,QAAQ,EAAE;QACN,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AACxB,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AACxB,KAAA;AACD,IAAA,IAAI,EAAE;QACF,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AACxB,KAAA;CACJ,CAAC;MAwCW,cAAc,CAAA;AAJ3B,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAE5C,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;QACX,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAOhC,KAAA;IALG,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;AACzC,SAAA;KACJ;;2GAVQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8BAIY,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;AASV,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAuH1D,MAAO,SAAU,SAAQ,UAA0B,CAAA;AArHzD,IAAA,WAAA,GAAA;;AAsHqB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC;AA0Bf,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAA4B,CAAC;AA0FrE,KAAA;IAlHG,IAAa,MAAM,CAAC,MAAgC,EAAA;AAChD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,OAAO,CAAC,OAAkC,EAAA;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KACzB;IAED,IAAa,YAAY,CAAC,YAA4C,EAAA;AAClE,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;KAC9B;IAED,IAAa,WAAW,CAAC,WAA0C,EAAA;AAC/D,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KAC7B;IAED,IAAa,SAAS,CAAC,SAAsC,EAAA;AACzD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KAC3B;IAED,IAAa,MAAM,CAAC,MAAgC,EAAA;AAChD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAIQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,MAAM,EAAE,WAAW;AAEnB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,OAAO,CACR,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,OAAO,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CACvG,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CACR,aAAa,EACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CACvB,GAAG,CAAC,CAAC,OAAO,KAAI;YACZ,OAAO;gBACH,aAAa,EAAE,OAAO,KAAK,SAAS,IAAK,OAA4B,EAAE,IAAI,KAAK,SAAS;gBACzF,kBAAkB,EACd,OAAO,KAAK,cAAc,IAAK,OAA4B,EAAE,IAAI,KAAK,cAAc;AACxF,gBAAA,UAAU,EAAG,OAA4B,EAAE,IAAI,IAAI,CAAC,MAAM;AAC1D,gBAAA,UAAU,EAAG,OAA4B,EAAE,UAAU,IAAI,CAAC;AAC1D,gBAAA,UAAU,EAAG,OAA4B,EAAE,IAAI,IAAI,IAAI;AACvD,gBAAA,YAAY,EAAG,OAA4B,EAAE,MAAM,IAAI,CAAC;AACxD,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,GAAG,EAAE,GAAI,OAA4B,IAAI,EAAE,CAAC;aAC9E,CAAC;SACL,CAAC,CACL,CACJ,CAAC;QAEF,IAAI,CAAC,OAAO,CACR,mBAAmB,EACnB,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AACtD,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;AAC1B,SAAA,CAAC,CACL,CAAC;QAEF,IAAI,CAAC,OAAO,CACR,oBAAoB,EACpB,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AACtD,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;AAC1B,SAAA,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CACR,iBAAiB,EACjB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,WAAW,KAAI;AAChB,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,OAAO,IAAI,CAAC;YAC9B,IAAI,OAAO,WAAW,KAAK,QAAQ;AAAE,gBAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACpE,YAAA,OAAO,WAAW,CAAC;SACtB,CAAC,CACL,CACJ,CAAC;KACL;AAED,IAAA,UAAU,CAAC,KAcV,EAAA;QACG,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzD;;sGArHQ,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAlHR,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEG,OAAO,EACP,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,EAzHL,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,iGA2HnB,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,oNACpB,eAAe,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAIV,SAAS,EAAA,UAAA,EAAA,CAAA;kBArHrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGT,IAAA,CAAA;AACD,oBAAA,OAAO,EAAE;wBACL,OAAO;wBACP,UAAU;wBACV,cAAc;wBACd,UAAU;wBACV,IAAI;wBACJ,kBAAkB;wBAClB,uBAAuB;wBACvB,oBAAoB;wBACpB,eAAe;AAClB,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;8BAKgB,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,OAAO,EAAA,CAAA;sBAAnB,KAAK;gBAIO,YAAY,EAAA,CAAA;sBAAxB,KAAK;gBAIO,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAIO,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAII,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;AC5OX,MAAM,iBAAiB,GAAG,cAAc,CACpC;AACI,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,IAAI,EAAE,GAAG;AACZ,CAAA;AACD;AACA,CAAA;;;;;;;;;;AAUD,EAAA,CAAA;AACC;AACA,CAAA;;;;;;;;;;;;;;;AAeD,EAAA,CAAA,CACF,CAAC;AAEF,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;AAEpD,MAAM,OAAO,GAAG,CAAC,CAAS,KAAI;AAC1B,IAAA,OAAO,IAAI,OAAO,EAAE,CAAC,gBAAgB,CACjC,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAClF,CAAC;AACN,CAAC,CAAC;AA2BI,MAAO,SAAU,SAAQ,UAAU,CAAA;IAMrC,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAED,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;KACxB;IAED,IAAa,UAAU,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5B;IAED,IAAa,IAAI,CAAC,IAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtB;IAED,IAAa,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvB;IAEQ,UAAU,GAAA;QACf,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC;AACL,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO,CACR,kBAAkB,EAClB,IAAI,CAAC,MAAM,CACP,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EACpD,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAI;YAC7C,MAAM,SAAS,GAAU,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAU,EAAE,CAAC;AACzB,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,CAAC;AACxF,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AACvB,YAAA,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC5B,gBAAA,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;AACzC,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAA;YACD,OAAO;AACH,gBAAA,SAAS,EAAE,IAAI,YAAY,CAAC,SAAS,CAAC;AACtC,gBAAA,MAAM,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC;AAChC,gBAAA,KAAK,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC;aACjC,CAAC;SACL,CACJ,CACJ,CAAC;KACL;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;QAxEH,IAAgB,CAAA,gBAAA,GAAG,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAEnC,IAAQ,CAAA,QAAA,GAAG,YAAY,EAAU,CAAC;QAsEvC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;IAED,cAAc,CAAC,EAAE,KAAK,EAAkB,EAAA;QACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACrF;;sGA/EQ,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAtBR,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGR,SAAS,EAAA,UAAA,EAAA,CAAA;kBAzBrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;0EAKY,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIO,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAIO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAIO,KAAK,EAAA,CAAA;sBAAjB,KAAK;;;ACxGV;;AAEG;;;;"}
|