angular-three-soba 1.14.1 → 2.0.0-beta.10
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/README.md +2 -2
- package/abstractions/billboard/billboard.d.ts +28 -0
- package/abstractions/detailed/detailed.d.ts +26 -0
- package/abstractions/edges/edges.d.ts +34 -0
- package/abstractions/grid/grid.d.ts +50 -0
- package/abstractions/index.d.ts +6 -11
- package/abstractions/text/text.d.ts +82 -0
- package/abstractions/text-3d/text-3d.d.ts +81 -0
- package/cameras/{lib/camera → camera}/camera-content.d.ts +2 -2
- package/cameras/camera/camera.d.ts +26 -0
- package/cameras/cube-camera/cube-camera.d.ts +69 -0
- package/cameras/index.d.ts +4 -4
- package/cameras/orthographic-camera/orthographic-camera.d.ts +37 -0
- package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +10 -1
- package/controls/index.d.ts +1 -1
- package/controls/orbit-controls/orbit-controls.d.ts +54 -0
- package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
- package/esm2022/abstractions/billboard/billboard.mjs +74 -0
- package/esm2022/abstractions/detailed/detailed.mjs +64 -0
- package/esm2022/abstractions/edges/edges.mjs +88 -0
- package/esm2022/abstractions/grid/grid.mjs +180 -0
- package/esm2022/abstractions/index.mjs +7 -12
- package/esm2022/abstractions/text/text.mjs +274 -0
- package/esm2022/abstractions/text-3d/text-3d.mjs +165 -0
- package/esm2022/angular-three-soba.mjs +1 -1
- package/esm2022/cameras/angular-three-soba-cameras.mjs +1 -1
- package/esm2022/cameras/camera/camera-content.mjs +20 -0
- package/esm2022/cameras/camera/camera.mjs +77 -0
- package/esm2022/cameras/cube-camera/cube-camera.mjs +161 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +102 -0
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +46 -0
- package/esm2022/controls/angular-three-soba-controls.mjs +1 -1
- package/esm2022/controls/index.mjs +2 -2
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +181 -0
- package/esm2022/index.mjs +1 -1
- package/esm2022/loaders/angular-three-soba-loaders.mjs +1 -1
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +30 -0
- package/esm2022/loaders/index.mjs +5 -6
- package/esm2022/loaders/loader/loader.mjs +138 -0
- package/esm2022/loaders/progress/progress.mjs +45 -0
- package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
- package/esm2022/materials/angular-three-soba-materials.mjs +1 -1
- package/esm2022/materials/index.mjs +7 -6
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +82 -0
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +367 -0
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +171 -0
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +278 -0
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +68 -0
- package/esm2022/materials/point-material/point-material.mjs +46 -0
- package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
- package/esm2022/misc/animations/animations.mjs +59 -0
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
- package/esm2022/misc/caustics/caustics.mjs +387 -0
- package/esm2022/misc/decal/decal.mjs +187 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +44 -0
- package/esm2022/misc/example/example.mjs +160 -0
- package/esm2022/misc/fbo/fbo.mjs +47 -0
- package/esm2022/misc/html/html-wrapper.mjs +478 -0
- package/esm2022/misc/html/html.mjs +304 -0
- package/esm2022/misc/index.mjs +14 -5
- package/esm2022/misc/sampler/sampler.mjs +142 -0
- package/esm2022/misc/shadow/shadow.mjs +111 -0
- package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
- package/esm2022/misc/trail/trail.mjs +209 -0
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
- package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
- package/esm2022/modifiers/index.mjs +2 -0
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
- package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
- package/esm2022/performances/index.mjs +6 -0
- package/esm2022/performances/points/points-input.mjs +64 -0
- package/esm2022/performances/points/points.mjs +329 -0
- package/esm2022/performances/points/position-point.mjs +54 -0
- package/esm2022/performances/segments/segment-object.mjs +9 -0
- package/esm2022/performances/segments/segments.mjs +182 -0
- package/esm2022/shaders/angular-three-soba-shaders.mjs +1 -1
- package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
- package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
- package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
- package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
- package/esm2022/shaders/index.mjs +18 -15
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +56 -0
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
- package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +25 -0
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +33 -0
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
- package/esm2022/shaders/star-field-material/star-field-material.mjs +33 -0
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +267 -0
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +206 -0
- package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
- package/esm2022/staging/backdrop/backdrop.mjs +77 -0
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
- package/esm2022/staging/bounds/bounds.mjs +308 -0
- package/esm2022/staging/camera-shake/camera-shake.mjs +123 -0
- package/esm2022/staging/center/center.mjs +163 -0
- package/esm2022/staging/cloud/cloud.mjs +158 -0
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +246 -0
- package/esm2022/staging/environment/assets.mjs +13 -0
- package/esm2022/staging/environment/environment-cube.mjs +47 -0
- package/esm2022/staging/environment/environment-ground.mjs +41 -0
- package/esm2022/staging/environment/environment-input.mjs +119 -0
- package/esm2022/staging/environment/environment-map.mjs +53 -0
- package/esm2022/staging/environment/environment-portal.mjs +113 -0
- package/esm2022/staging/environment/environment.mjs +61 -0
- package/esm2022/staging/environment/utils.mjs +105 -0
- package/esm2022/staging/float/float.mjs +94 -0
- package/esm2022/staging/index.mjs +22 -18
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
- package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
- package/esm2022/staging/sky/sky.mjs +119 -0
- package/esm2022/staging/sparkles/sparkles.mjs +164 -0
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
- package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +84 -0
- package/esm2022/staging/spot-light/spot-light.mjs +81 -0
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +98 -0
- package/esm2022/staging/stage/stage.mjs +388 -0
- package/esm2022/staging/stars/stars.mjs +147 -0
- package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
- package/esm2022/staging/wireframe/wireframe.mjs +224 -0
- package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
- package/esm2022/utils/content/content.mjs +15 -0
- package/esm2022/utils/index.mjs +2 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +668 -1882
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +279 -232
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +104 -69
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +177 -164
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +630 -482
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2248 -122
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
- package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
- package/fesm2022/angular-three-soba-performances.mjs +697 -0
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
- package/fesm2022/angular-three-soba-shaders.mjs +554 -209
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +3231 -2852
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-utils.mjs +22 -0
- package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
- package/fesm2022/angular-three-soba.mjs.map +1 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +10 -0
- package/loaders/index.d.ts +4 -5
- package/loaders/loader/loader.d.ts +33 -0
- package/loaders/progress/progress.d.ts +9 -0
- package/loaders/texture-loader/texture-loader.d.ts +7 -0
- package/materials/index.d.ts +6 -5
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +40 -0
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +99 -0
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +62 -0
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +107 -0
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +29 -0
- package/materials/point-material/point-material.d.ts +24 -0
- package/metadata.json +1 -0
- package/misc/animations/animations.d.ts +15 -0
- package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
- package/misc/caustics/caustics.d.ts +87 -0
- package/misc/decal/decal.d.ts +49 -0
- package/misc/depth-buffer/depth-buffer.d.ts +9 -0
- package/misc/example/example.d.ts +81 -0
- package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
- package/misc/html/html-wrapper.d.ts +559 -0
- package/misc/html/html.d.ts +214 -0
- package/misc/index.d.ts +13 -4
- package/misc/sampler/sampler.d.ts +67 -0
- package/misc/shadow/shadow.d.ts +37 -0
- package/misc/stats-gl/stats-gl.d.ts +24 -0
- package/misc/trail/trail.d.ts +57 -0
- package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
- package/misc/trail-texture/trail-texture.d.ts +50 -0
- package/modifiers/README.md +3 -0
- package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
- package/modifiers/index.d.ts +1 -0
- package/package.json +43 -32
- package/performances/README.md +3 -0
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
- package/{performance/lib/adaptive → performances/adaptive-events}/adaptive-events.d.ts +5 -6
- package/performances/index.d.ts +5 -0
- package/performances/points/points-input.d.ts +32 -0
- package/performances/points/points.d.ts +92 -0
- package/performances/points/position-point.d.ts +11 -0
- package/performances/segments/segment-object.d.ts +7 -0
- package/performances/segments/segments.d.ts +124 -0
- package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
- package/shaders/grid-material/grid-material.d.ts +37 -0
- package/shaders/index.d.ts +17 -14
- package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +147 -2
- package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +1 -1
- package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
- package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +2 -2
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +19 -0
- package/shaders/sparkles-material/sparkles-material.d.ts +17 -0
- package/shaders/spot-light-material/spot-light-material.d.ts +13 -0
- package/shaders/star-field-material/star-field-material.d.ts +13 -0
- package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +146 -0
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
- package/staging/accumulative-shadows/randomized-lights.d.ts +90 -0
- package/staging/backdrop/backdrop.d.ts +30 -0
- package/staging/bb-anchor/bb-anchor.d.ts +27 -0
- package/staging/bounds/bounds.d.ts +134 -0
- package/staging/camera-shake/camera-shake.d.ts +43 -0
- package/staging/center/center.d.ts +70 -0
- package/staging/cloud/cloud.d.ts +51 -0
- package/staging/contact-shadows/contact-shadows.d.ts +70 -0
- package/staging/{lib/environment → environment}/assets.d.ts +9 -9
- package/staging/environment/environment-cube.d.ts +15 -0
- package/staging/environment/environment-ground.d.ts +13 -0
- package/staging/environment/environment-input.d.ts +68 -0
- package/staging/environment/environment-map.d.ts +16 -0
- package/staging/environment/environment-portal.d.ts +18 -0
- package/staging/{lib/environment → environment}/environment.d.ts +2 -6
- package/staging/environment/utils.d.ts +7 -0
- package/staging/float/float.d.ts +31 -0
- package/staging/index.d.ts +21 -17
- package/staging/matcap-texture/matcap-texture.d.ts +13 -0
- package/staging/normal-texture/normal-texture.d.ts +16 -0
- package/staging/sky/sky.d.ts +48 -0
- package/staging/sparkles/sparkles.d.ts +63 -0
- package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
- package/staging/spot-light/shadow-mesh.d.ts +37 -0
- package/staging/spot-light/spot-light-input.d.ts +38 -0
- package/staging/spot-light/spot-light.d.ts +39 -0
- package/staging/spot-light/volumetric-mesh.d.ts +24 -0
- package/staging/stage/stage.d.ts +130 -0
- package/staging/stars/stars.d.ts +45 -0
- package/staging/wireframe/wireframe-input.d.ts +65 -0
- package/staging/wireframe/wireframe.d.ts +28 -0
- package/utils/README.md +3 -0
- package/utils/content/content.d.ts +8 -0
- package/utils/index.d.ts +1 -0
- package/web-types.json +1 -0
- package/abstractions/lib/billboard/billboard.d.ts +0 -14
- package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
- package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
- package/abstractions/lib/edges/edges.d.ts +0 -18
- package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +0 -41
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -15
- package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -28
- package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -21
- package/abstractions/lib/line/line-input.d.ts +0 -19
- package/abstractions/lib/line/line.d.ts +0 -21
- package/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -19
- package/abstractions/lib/text/text.d.ts +0 -21
- package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
- package/assets/default-spot-light-shadow.glsl +0 -10
- package/cameras/lib/camera/camera.d.ts +0 -19
- package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
- package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +0 -17
- package/controls/lib/orbit-controls/orbit-controls.d.ts +0 -27
- package/esm2022/abstractions/lib/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -120
- package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -99
- package/esm2022/abstractions/lib/edges/edges.mjs +0 -96
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -213
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -92
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -184
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -46
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -134
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -267
- package/esm2022/abstractions/lib/line/line-input.mjs +0 -76
- package/esm2022/abstractions/lib/line/line.mjs +0 -133
- package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/abstractions/lib/text/text.mjs +0 -115
- package/esm2022/abstractions/lib/text-3d/text-3d.mjs +0 -145
- package/esm2022/cameras/lib/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/lib/camera/camera.mjs +0 -75
- package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +0 -131
- package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -93
- package/esm2022/cameras/lib/perspective-camera/perspective-camera.mjs +0 -47
- package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +0 -147
- package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
- package/esm2022/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
- package/esm2022/loaders/lib/loader/loader.mjs +0 -134
- package/esm2022/loaders/lib/progress/progress.mjs +0 -39
- package/esm2022/loaders/lib/texture-loader/texture-loader.mjs +0 -19
- package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -75
- package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -328
- package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -158
- package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -238
- package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/misc/lib/animations/animations.mjs +0 -52
- package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +0 -26
- package/esm2022/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
- package/esm2022/misc/lib/fbo/fbo.mjs +0 -39
- package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
- package/esm2022/performance/index.mjs +0 -5
- package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +0 -47
- package/esm2022/performance/lib/adaptive/adaptive-events.mjs +0 -37
- package/esm2022/performance/lib/detailed/detailed.mjs +0 -54
- package/esm2022/performance/lib/stats/stats.mjs +0 -80
- package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/lib/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
- package/esm2022/shaders/lib/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/lib/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
- package/esm2022/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
- package/esm2022/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/lib/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
- package/esm2022/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/lib/star-field-material/star-field-material.mjs +0 -32
- package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -249
- package/esm2022/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -201
- package/esm2022/staging/lib/bounds/bounds.mjs +0 -284
- package/esm2022/staging/lib/camera-shake/camera-shake.mjs +0 -122
- package/esm2022/staging/lib/caustics/caustics.mjs +0 -364
- package/esm2022/staging/lib/center/center.mjs +0 -143
- package/esm2022/staging/lib/cloud/cloud.mjs +0 -160
- package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +0 -228
- package/esm2022/staging/lib/environment/assets.mjs +0 -13
- package/esm2022/staging/lib/environment/environment-cube.mjs +0 -41
- package/esm2022/staging/lib/environment/environment-ground.mjs +0 -67
- package/esm2022/staging/lib/environment/environment-inputs.mjs +0 -87
- package/esm2022/staging/lib/environment/environment-map.mjs +0 -39
- package/esm2022/staging/lib/environment/environment-portal.mjs +0 -111
- package/esm2022/staging/lib/environment/environment.mjs +0 -165
- package/esm2022/staging/lib/environment/utils.mjs +0 -70
- package/esm2022/staging/lib/float/float.mjs +0 -77
- package/esm2022/staging/lib/sky/sky.mjs +0 -109
- package/esm2022/staging/lib/sparkles/sparkles.mjs +0 -210
- package/esm2022/staging/lib/spot-light/common.mjs +0 -42
- package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +0 -51
- package/esm2022/staging/lib/spot-light/spot-light-input.mjs +0 -62
- package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -74
- package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -126
- package/esm2022/staging/lib/spot-light/spot-light-shadow.mjs +0 -63
- package/esm2022/staging/lib/spot-light/spot-light.mjs +0 -117
- package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +0 -86
- package/esm2022/staging/lib/stage/stage.mjs +0 -368
- package/esm2022/staging/lib/stars/stars.mjs +0 -140
- package/fesm2022/angular-three-soba-performance.mjs +0 -210
- package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
- package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
- package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
- package/loaders/lib/loader/loader.d.ts +0 -26
- package/loaders/lib/progress/progress.d.ts +0 -16
- package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
- package/materials/lib/mesh-distort-material/mesh-distort-material.d.ts +0 -24
- package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
- package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
- package/materials/lib/mesh-transmission-material/mesh-transmission-material.d.ts +0 -46
- package/materials/lib/mesh-wobble-material/mesh-wobble-material.d.ts +0 -14
- package/misc/lib/animations/animations.d.ts +0 -13
- package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
- package/performance/README.md +0 -3
- package/performance/index.d.ts +0 -4
- package/performance/lib/adaptive/adaptive-dpr.d.ts +0 -11
- package/performance/lib/detailed/detailed.d.ts +0 -13
- package/performance/lib/stats/stats.d.ts +0 -15
- package/plugin/README.md +0 -11
- package/plugin/generators.json +0 -19
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -4
- package/plugin/src/generators/init/init.js +0 -22
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -6
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
- package/shaders/lib/soft-shadow-material/soft-shadow-material.d.ts +0 -10
- package/shaders/lib/spot-light-material/spot-light-material.d.ts +0 -4
- package/shaders/lib/star-field-material/star-field-material.d.ts +0 -3
- package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +0 -58
- package/staging/lib/accumulative-shadows/randomized-lights.d.ts +0 -42
- package/staging/lib/bounds/bounds.d.ts +0 -48
- package/staging/lib/camera-shake/camera-shake.d.ts +0 -28
- package/staging/lib/caustics/caustics.d.ts +0 -47
- package/staging/lib/center/center.d.ts +0 -40
- package/staging/lib/cloud/cloud.d.ts +0 -23
- package/staging/lib/contact-shadows/contact-shadows.d.ts +0 -29
- package/staging/lib/environment/environment-cube.d.ts +0 -11
- package/staging/lib/environment/environment-ground.d.ts +0 -9
- package/staging/lib/environment/environment-inputs.d.ts +0 -28
- package/staging/lib/environment/environment-map.d.ts +0 -10
- package/staging/lib/environment/environment-portal.d.ts +0 -15
- package/staging/lib/environment/utils.d.ts +0 -8
- package/staging/lib/float/float.d.ts +0 -16
- package/staging/lib/sky/sky.d.ts +0 -20
- package/staging/lib/sparkles/sparkles.d.ts +0 -29
- package/staging/lib/spot-light/common.d.ts +0 -3
- package/staging/lib/spot-light/shadow-mesh-input.d.ts +0 -14
- package/staging/lib/spot-light/spot-light-input.d.ts +0 -16
- package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
- package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
- package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
- package/staging/lib/spot-light/spot-light.d.ts +0 -17
- package/staging/lib/spot-light/volumetric-mesh.d.ts +0 -15
- package/staging/lib/stage/stage.d.ts +0 -87
- package/staging/lib/stars/stars.d.ts +0 -20
- /package/shaders/{lib/caustics-material → caustics}/caustics-material.d.ts +0 -0
- /package/shaders/{lib/caustics-projection-material → caustics}/caustics-projection-material.d.ts +0 -0
- /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
- /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
- /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
- /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA, Directive, inject, InjectionToken, Input } from '@angular/core';
|
|
2
|
-
import { extend, getLocalState, injectNgtRef, NgtRxStore, NgtStore } from 'angular-three';
|
|
3
|
-
import { SoftShadowMaterial } from 'angular-three-soba/shaders';
|
|
4
|
-
import { combineLatest, Subject } from 'rxjs';
|
|
5
|
-
import { Group, Mesh, PlaneGeometry } from 'three';
|
|
6
|
-
import { ProgressiveLightMap } from './progressive-light-map';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
extend({ SoftShadowMaterial, Group, Mesh, PlaneGeometry });
|
|
9
|
-
export const NGTS_ACCUMULATIVE_SHADOWS_API = new InjectionToken('NgtsAccumulativeShadows API');
|
|
10
|
-
function accumulativeShadowsApiFactory(accumulativeShadows) {
|
|
11
|
-
const store = inject(NgtStore);
|
|
12
|
-
const api = {
|
|
13
|
-
lights: new Map(),
|
|
14
|
-
count: 0,
|
|
15
|
-
getMesh: () => accumulativeShadows.meshRef.nativeElement,
|
|
16
|
-
reset: () => {
|
|
17
|
-
accumulativeShadows.pLM.clear();
|
|
18
|
-
const material = api.getMesh().material;
|
|
19
|
-
material.opacity = 0;
|
|
20
|
-
material.alphaTest = 0;
|
|
21
|
-
api.count = 0;
|
|
22
|
-
},
|
|
23
|
-
update: (frames = 1) => {
|
|
24
|
-
// adapt the opacity blend ratio to the number of frames
|
|
25
|
-
const material = api.getMesh().material;
|
|
26
|
-
if (!api.temporal) {
|
|
27
|
-
material.opacity = accumulativeShadows.get('opacity');
|
|
28
|
-
material.alphaTest = accumulativeShadows.get('alphaTest');
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
material.opacity = Math.min(accumulativeShadows.get('opacity'), material.opacity + accumulativeShadows.get('opacity') / api.blend);
|
|
32
|
-
material.alphaTest = Math.min(accumulativeShadows.get('alphaTest'), material.alphaTest + accumulativeShadows.get('alphaTest') / api.blend);
|
|
33
|
-
}
|
|
34
|
-
// switch accumulative lights on
|
|
35
|
-
accumulativeShadows.accumulativeShadowsRef.nativeElement.visible = true;
|
|
36
|
-
// collect scene lights and meshes
|
|
37
|
-
accumulativeShadows.pLM.prepare();
|
|
38
|
-
// update the lightmap and the accumulative lights
|
|
39
|
-
for (let i = 0; i < frames; i++) {
|
|
40
|
-
api.lights.forEach((light) => light.update());
|
|
41
|
-
accumulativeShadows.pLM.update(store.get('camera'), api.blend);
|
|
42
|
-
}
|
|
43
|
-
// switch lights off
|
|
44
|
-
accumulativeShadows.accumulativeShadowsRef.nativeElement.visible = false;
|
|
45
|
-
// restore lights and meshes
|
|
46
|
-
accumulativeShadows.pLM.finish();
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperties(api, {
|
|
50
|
-
temporal: {
|
|
51
|
-
get: () => !!accumulativeShadows.get('temporal'),
|
|
52
|
-
},
|
|
53
|
-
frames: {
|
|
54
|
-
get: () => Math.max(2, accumulativeShadows.get('frames')),
|
|
55
|
-
},
|
|
56
|
-
blend: {
|
|
57
|
-
get: () => Math.max(2, accumulativeShadows.get('frames') === Infinity
|
|
58
|
-
? accumulativeShadows.get('blend')
|
|
59
|
-
: accumulativeShadows.get('frames')),
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
const subject = new Subject();
|
|
63
|
-
accumulativeShadows.hold(accumulativeShadows.meshRef.$, (mesh) => {
|
|
64
|
-
accumulativeShadows.pLM.configure(mesh);
|
|
65
|
-
accumulativeShadows.hold(combineLatest([accumulativeShadows.select(), getLocalState(store.get('scene')).objects]), () => {
|
|
66
|
-
// reset internals, buffers, ...
|
|
67
|
-
api.reset();
|
|
68
|
-
// update lightmap
|
|
69
|
-
if (!api.temporal && api.frames !== Infinity)
|
|
70
|
-
api.update(api.blend);
|
|
71
|
-
});
|
|
72
|
-
accumulativeShadows.effect(subject, () => store.get('internal').subscribe(() => {
|
|
73
|
-
const limit = accumulativeShadows.get('limit');
|
|
74
|
-
if ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {
|
|
75
|
-
api.update();
|
|
76
|
-
api.count++;
|
|
77
|
-
}
|
|
78
|
-
}));
|
|
79
|
-
subject.next();
|
|
80
|
-
});
|
|
81
|
-
return api;
|
|
82
|
-
}
|
|
83
|
-
class AccumulativeShadowsConsumer {
|
|
84
|
-
constructor() {
|
|
85
|
-
inject(NGTS_ACCUMULATIVE_SHADOWS_API);
|
|
86
|
-
}
|
|
87
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AccumulativeShadowsConsumer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
88
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: AccumulativeShadowsConsumer, isStandalone: true, selector: "[ngtsAccumulativeShadowsConsumer]", ngImport: i0 }); }
|
|
89
|
-
}
|
|
90
|
-
export { AccumulativeShadowsConsumer };
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AccumulativeShadowsConsumer, decorators: [{
|
|
92
|
-
type: Directive,
|
|
93
|
-
args: [{ selector: '[ngtsAccumulativeShadowsConsumer]', standalone: true }]
|
|
94
|
-
}], ctorParameters: function () { return []; } });
|
|
95
|
-
class NgtsAccumulativeShadows extends NgtRxStore {
|
|
96
|
-
constructor() {
|
|
97
|
-
super(...arguments);
|
|
98
|
-
this.nullTraverse = () => null;
|
|
99
|
-
this.Math = Math;
|
|
100
|
-
this.store = inject(NgtStore);
|
|
101
|
-
this.pLM = new ProgressiveLightMap(this.store.get('gl'), this.store.get('scene'), this.get('resolution'));
|
|
102
|
-
this.accumulativeShadowsRef = injectNgtRef();
|
|
103
|
-
this.meshRef = injectNgtRef();
|
|
104
|
-
}
|
|
105
|
-
/** How many frames it can render, more yields cleaner results but takes more time, 40 */
|
|
106
|
-
set frames(frames) {
|
|
107
|
-
this.set({ frames });
|
|
108
|
-
}
|
|
109
|
-
/** If frames === Infinity blend controls the refresh ratio, 100 */
|
|
110
|
-
set blend(blend) {
|
|
111
|
-
this.set({ blend });
|
|
112
|
-
}
|
|
113
|
-
/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */
|
|
114
|
-
set limit(limit) {
|
|
115
|
-
this.set({ limit });
|
|
116
|
-
}
|
|
117
|
-
/** Scale of the plane, */
|
|
118
|
-
set scale(scale) {
|
|
119
|
-
this.set({ scale });
|
|
120
|
-
}
|
|
121
|
-
/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */
|
|
122
|
-
set temporal(temporal) {
|
|
123
|
-
this.set({ temporal });
|
|
124
|
-
}
|
|
125
|
-
/** Opacity of the plane, 1 */
|
|
126
|
-
set opacity(opacity) {
|
|
127
|
-
this.set({ opacity });
|
|
128
|
-
}
|
|
129
|
-
/** Discards alpha pixels, 0.65 */
|
|
130
|
-
set alphaTest(alphaTest) {
|
|
131
|
-
this.set({ alphaTest });
|
|
132
|
-
}
|
|
133
|
-
/** Shadow color, black */
|
|
134
|
-
set color(color) {
|
|
135
|
-
this.set({ color });
|
|
136
|
-
}
|
|
137
|
-
/** Colorblend, how much colors turn to black, 0 is black, 2 */
|
|
138
|
-
set colorBlend(colorBlend) {
|
|
139
|
-
this.set({ colorBlend });
|
|
140
|
-
}
|
|
141
|
-
/** Buffer resolution, 1024 */
|
|
142
|
-
set resolution(resolution) {
|
|
143
|
-
this.set({ resolution });
|
|
144
|
-
}
|
|
145
|
-
/** Texture tonemapping */
|
|
146
|
-
set toneMapped(toneMapped) {
|
|
147
|
-
this.set({ toneMapped });
|
|
148
|
-
}
|
|
149
|
-
initialize() {
|
|
150
|
-
super.initialize();
|
|
151
|
-
this.set({
|
|
152
|
-
frames: 40,
|
|
153
|
-
limit: Infinity,
|
|
154
|
-
blend: 20,
|
|
155
|
-
scale: 10,
|
|
156
|
-
opacity: 1,
|
|
157
|
-
alphaTest: 0.75,
|
|
158
|
-
color: 'black',
|
|
159
|
-
colorBlend: 2,
|
|
160
|
-
resolution: 1024,
|
|
161
|
-
toneMapped: true,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsAccumulativeShadows, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { frames: "frames", blend: "blend", limit: "limit", scale: "scale", temporal: "temporal", opacity: "opacity", alphaTest: "alphaTest", color: "color", colorBlend: "colorBlend", resolution: "resolution", toneMapped: "toneMapped" }, providers: [
|
|
166
|
-
{
|
|
167
|
-
provide: NGTS_ACCUMULATIVE_SHADOWS_API,
|
|
168
|
-
useFactory: accumulativeShadowsApiFactory,
|
|
169
|
-
deps: [NgtsAccumulativeShadows],
|
|
170
|
-
},
|
|
171
|
-
], usesInheritance: true, ngImport: i0, template: `
|
|
172
|
-
<ngt-group ngtCompound>
|
|
173
|
-
<ngt-group [ref]="accumulativeShadowsRef" [traverse]="nullTraverse">
|
|
174
|
-
<ng-content />
|
|
175
|
-
<ng-container ngtsAccumulativeShadowsConsumer />
|
|
176
|
-
</ngt-group>
|
|
177
|
-
<ngt-mesh [ref]="meshRef" [receiveShadow]="true" [scale]="get('scale')" [rotation]="[-Math.PI / 2, 0, 0]">
|
|
178
|
-
<ngt-plane-geometry />
|
|
179
|
-
<ngt-soft-shadow-material
|
|
180
|
-
[transparent]="true"
|
|
181
|
-
[depthWrite]="false"
|
|
182
|
-
[color]="get('color')"
|
|
183
|
-
[toneMapped]="get('toneMapped')"
|
|
184
|
-
[blend]="get('colorBlend')"
|
|
185
|
-
[map]="pLM.progressiveLightMap2.texture"
|
|
186
|
-
/>
|
|
187
|
-
</ngt-mesh>
|
|
188
|
-
</ngt-group>
|
|
189
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: AccumulativeShadowsConsumer, selector: "[ngtsAccumulativeShadowsConsumer]" }] }); }
|
|
190
|
-
}
|
|
191
|
-
export { NgtsAccumulativeShadows };
|
|
192
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
|
|
193
|
-
type: Component,
|
|
194
|
-
args: [{
|
|
195
|
-
selector: 'ngts-accumulative-shadows',
|
|
196
|
-
standalone: true,
|
|
197
|
-
template: `
|
|
198
|
-
<ngt-group ngtCompound>
|
|
199
|
-
<ngt-group [ref]="accumulativeShadowsRef" [traverse]="nullTraverse">
|
|
200
|
-
<ng-content />
|
|
201
|
-
<ng-container ngtsAccumulativeShadowsConsumer />
|
|
202
|
-
</ngt-group>
|
|
203
|
-
<ngt-mesh [ref]="meshRef" [receiveShadow]="true" [scale]="get('scale')" [rotation]="[-Math.PI / 2, 0, 0]">
|
|
204
|
-
<ngt-plane-geometry />
|
|
205
|
-
<ngt-soft-shadow-material
|
|
206
|
-
[transparent]="true"
|
|
207
|
-
[depthWrite]="false"
|
|
208
|
-
[color]="get('color')"
|
|
209
|
-
[toneMapped]="get('toneMapped')"
|
|
210
|
-
[blend]="get('colorBlend')"
|
|
211
|
-
[map]="pLM.progressiveLightMap2.texture"
|
|
212
|
-
/>
|
|
213
|
-
</ngt-mesh>
|
|
214
|
-
</ngt-group>
|
|
215
|
-
`,
|
|
216
|
-
imports: [AccumulativeShadowsConsumer],
|
|
217
|
-
providers: [
|
|
218
|
-
{
|
|
219
|
-
provide: NGTS_ACCUMULATIVE_SHADOWS_API,
|
|
220
|
-
useFactory: accumulativeShadowsApiFactory,
|
|
221
|
-
deps: [NgtsAccumulativeShadows],
|
|
222
|
-
},
|
|
223
|
-
],
|
|
224
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
225
|
-
}]
|
|
226
|
-
}], propDecorators: { frames: [{
|
|
227
|
-
type: Input
|
|
228
|
-
}], blend: [{
|
|
229
|
-
type: Input
|
|
230
|
-
}], limit: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], scale: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], temporal: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], opacity: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], alphaTest: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], color: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], colorBlend: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], resolution: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], toneMapped: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW11bGF0aXZlLXNoYWRvd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGtCQUFrQixFQUE0QixNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFOUQsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBZTNELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUMzRCw2QkFBNkIsQ0FDaEMsQ0FBQztBQUVGLFNBQVMsNkJBQTZCLENBQUMsbUJBQTRDO0lBQy9FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUvQixNQUFNLEdBQUcsR0FBRztRQUNSLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUNqQixLQUFLLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDVixt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YWdCLE1BQU07c0JBQWxCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxLQUFLO3NCQUFqQixLQUFLO2dCQUtPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS08sUUFBUTtzQkFBcEIsS0FBSztnQkFLTyxPQUFPO3NCQUFuQixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFLTyxVQUFVO3NCQUF0QixLQUFLO2dCQUtPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBS08sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdGlvblRva2VuLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3ROZ3RSZWYsIE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTb2Z0U2hhZG93TWF0ZXJpYWwsIFNvZnRTaGFkb3dNYXRlcmlhbElucHV0cyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBQbGFuZUdlb21ldHJ5IH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NpdmVMaWdodE1hcCB9IGZyb20gJy4vcHJvZ3Jlc3NpdmUtbGlnaHQtbWFwJztcblxuZXh0ZW5kKHsgU29mdFNoYWRvd01hdGVyaWFsLCBHcm91cCwgTWVzaCwgUGxhbmVHZW9tZXRyeSB9KTtcblxuZXhwb3J0IHR5cGUgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NMaWdodEFwaSA9IHsgdXBkYXRlOiAoKSA9PiB2b2lkIH07XG5cbmV4cG9ydCB0eXBlIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzQXBpID0ge1xuICAgIGxpZ2h0czogTWFwPHN0cmluZywgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NMaWdodEFwaT47XG4gICAgdGVtcG9yYWw6IGJvb2xlYW47XG4gICAgZnJhbWVzOiBudW1iZXI7XG4gICAgYmxlbmQ6IG51bWJlcjtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIGdldE1lc2g6ICgpID0+IFRIUkVFLk1lc2g8VEhSRUUuUGxhbmVHZW9tZXRyeSwgU29mdFNoYWRvd01hdGVyaWFsSW5wdXRzICYgVEhSRUUuU2hhZGVyTWF0ZXJpYWw+O1xuICAgIHJlc2V0OiAoKSA9PiB2b2lkO1xuICAgIHVwZGF0ZTogKGZyYW1lcz86IG51bWJlcikgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBOR1RTX0FDQ1VNVUxBVElWRV9TSEFET1dTX0FQSSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3RzQWNjdW11bGF0aXZlU2hhZG93c0FwaT4oXG4gICAgJ05ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIEFQSSdcbik7XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGl2ZVNoYWRvd3NBcGlGYWN0b3J5KGFjY3VtdWxhdGl2ZVNoYWRvd3M6IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzKSB7XG4gICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBsaWdodHM6IG5ldyBNYXAoKSxcbiAgICAgICAgY291bnQ6IDAsXG4gICAgICAgIGdldE1lc2g6ICgpID0+XG4gICAgICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3dzLm1lc2hSZWYubmF0aXZlRWxlbWVudCBhcyBUSFJFRS5NZXNoPFxuICAgICAgICAgICAgICAgIFRIUkVFLlBsYW5lR2VvbWV0cnksXG4gICAgICAgICAgICAgICAgU29mdFNoYWRvd01hdGVyaWFsSW5wdXRzICYgVEhSRUUuU2hhZGVyTWF0ZXJpYWxcbiAgICAgICAgICAgID4sXG4gICAgICAgIHJlc2V0OiAoKSA9PiB7XG4gICAgICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3dzLnBMTS5jbGVhcigpO1xuICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBhcGkuZ2V0TWVzaCgpLm1hdGVyaWFsO1xuICAgICAgICAgICAgbWF0ZXJpYWwub3BhY2l0eSA9IDA7XG4gICAgICAgICAgICBtYXRlcmlhbC5hbHBoYVRlc3QgPSAwO1xuICAgICAgICAgICAgYXBpLmNvdW50ID0gMDtcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiAoZnJhbWVzID0gMSkgPT4ge1xuICAgICAgICAgICAgLy8gYWRhcHQgdGhlIG9wYWNpdHkgYmxlbmQgcmF0aW8gdG8gdGhlIG51bWJlciBvZiBmcmFtZXNcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsID0gYXBpLmdldE1lc2goKS5tYXRlcmlhbDtcbiAgICAgICAgICAgIGlmICghYXBpLnRlbXBvcmFsKSB7XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwub3BhY2l0eSA9IGFjY3VtdWxhdGl2ZVNoYWRvd3MuZ2V0KCdvcGFjaXR5Jyk7XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuYWxwaGFUZXN0ID0gYWNjdW11bGF0aXZlU2hhZG93cy5nZXQoJ2FscGhhVGVzdCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5vcGFjaXR5ID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGl2ZVNoYWRvd3MuZ2V0KCdvcGFjaXR5JyksXG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLm9wYWNpdHkgKyBhY2N1bXVsYXRpdmVTaGFkb3dzLmdldCgnb3BhY2l0eScpIC8gYXBpLmJsZW5kXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5hbHBoYVRlc3QgPSBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0aXZlU2hhZG93cy5nZXQoJ2FscGhhVGVzdCcpLFxuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbC5hbHBoYVRlc3QgKyBhY2N1bXVsYXRpdmVTaGFkb3dzLmdldCgnYWxwaGFUZXN0JykgLyBhcGkuYmxlbmRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzd2l0Y2ggYWNjdW11bGF0aXZlIGxpZ2h0cyBvblxuICAgICAgICAgICAgYWNjdW11bGF0aXZlU2hhZG93cy5hY2N1bXVsYXRpdmVTaGFkb3dzUmVmLm5hdGl2ZUVsZW1lbnQudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAvLyBjb2xsZWN0IHNjZW5lIGxpZ2h0cyBhbmQgbWVzaGVzXG4gICAgICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3dzLnBMTS5wcmVwYXJlKCk7XG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgbGlnaHRtYXAgYW5kIHRoZSBhY2N1bXVsYXRpdmUgbGlnaHRzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXBpLmxpZ2h0cy5mb3JFYWNoKChsaWdodCkgPT4gbGlnaHQudXBkYXRlKCkpO1xuICAgICAgICAgICAgICAgIGFjY3VtdWxhdGl2ZVNoYWRvd3MucExNLnVwZGF0ZShzdG9yZS5nZXQoJ2NhbWVyYScpLCBhcGkuYmxlbmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzd2l0Y2ggbGlnaHRzIG9mZlxuICAgICAgICAgICAgYWNjdW11bGF0aXZlU2hhZG93cy5hY2N1bXVsYXRpdmVTaGFkb3dzUmVmLm5hdGl2ZUVsZW1lbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gcmVzdG9yZSBsaWdodHMgYW5kIG1lc2hlc1xuICAgICAgICAgICAgYWNjdW11bGF0aXZlU2hhZG93cy5wTE0uZmluaXNoKCk7XG4gICAgICAgIH0sXG4gICAgfSBhcyBOZ3RzQWNjdW11bGF0aXZlU2hhZG93c0FwaTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGFwaSwge1xuICAgICAgICB0ZW1wb3JhbDoge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiAhIWFjY3VtdWxhdGl2ZVNoYWRvd3MuZ2V0KCd0ZW1wb3JhbCcpLFxuICAgICAgICB9LFxuICAgICAgICBmcmFtZXM6IHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gTWF0aC5tYXgoMiwgYWNjdW11bGF0aXZlU2hhZG93cy5nZXQoJ2ZyYW1lcycpKSxcbiAgICAgICAgfSxcbiAgICAgICAgYmxlbmQ6IHtcbiAgICAgICAgICAgIGdldDogKCkgPT5cbiAgICAgICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0aXZlU2hhZG93cy5nZXQoJ2ZyYW1lcycpID09PSBJbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBhY2N1bXVsYXRpdmVTaGFkb3dzLmdldCgnYmxlbmQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhY2N1bXVsYXRpdmVTaGFkb3dzLmdldCgnZnJhbWVzJylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBhY2N1bXVsYXRpdmVTaGFkb3dzLmhvbGQoYWNjdW11bGF0aXZlU2hhZG93cy5tZXNoUmVmLiQsIChtZXNoKSA9PiB7XG4gICAgICAgIGFjY3VtdWxhdGl2ZVNoYWRvd3MucExNLmNvbmZpZ3VyZShtZXNoKTtcblxuICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3dzLmhvbGQoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFthY2N1bXVsYXRpdmVTaGFkb3dzLnNlbGVjdCgpLCBnZXRMb2NhbFN0YXRlKHN0b3JlLmdldCgnc2NlbmUnKSkub2JqZWN0c10pLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IGludGVybmFscywgYnVmZmVycywgLi4uXG4gICAgICAgICAgICAgICAgYXBpLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIGxpZ2h0bWFwXG4gICAgICAgICAgICAgICAgaWYgKCFhcGkudGVtcG9yYWwgJiYgYXBpLmZyYW1lcyAhPT0gSW5maW5pdHkpIGFwaS51cGRhdGUoYXBpLmJsZW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBhY2N1bXVsYXRpdmVTaGFkb3dzLmVmZmVjdChzdWJqZWN0LCAoKSA9PlxuICAgICAgICAgICAgc3RvcmUuZ2V0KCdpbnRlcm5hbCcpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGltaXQgPSBhY2N1bXVsYXRpdmVTaGFkb3dzLmdldCgnbGltaXQnKTtcbiAgICAgICAgICAgICAgICBpZiAoKGFwaS50ZW1wb3JhbCB8fCBhcGkuZnJhbWVzID09PSBJbmZpbml0eSkgJiYgYXBpLmNvdW50IDwgYXBpLmZyYW1lcyAmJiBhcGkuY291bnQgPCBsaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICBhcGkudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGFwaS5jb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHN1YmplY3QubmV4dCgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFwaTtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25ndHNBY2N1bXVsYXRpdmVTaGFkb3dzQ29uc3VtZXJdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIEFjY3VtdWxhdGl2ZVNoYWRvd3NDb25zdW1lciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluamVjdChOR1RTX0FDQ1VNVUxBVElWRV9TSEFET1dTX0FQSSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtYWNjdW11bGF0aXZlLXNoYWRvd3MnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBuZ3RDb21wb3VuZD5cbiAgICAgICAgICAgIDxuZ3QtZ3JvdXAgW3JlZl09XCJhY2N1bXVsYXRpdmVTaGFkb3dzUmVmXCIgW3RyYXZlcnNlXT1cIm51bGxUcmF2ZXJzZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBuZ3RzQWNjdW11bGF0aXZlU2hhZG93c0NvbnN1bWVyIC8+XG4gICAgICAgICAgICA8L25ndC1ncm91cD5cbiAgICAgICAgICAgIDxuZ3QtbWVzaCBbcmVmXT1cIm1lc2hSZWZcIiBbcmVjZWl2ZVNoYWRvd109XCJ0cnVlXCIgW3NjYWxlXT1cImdldCgnc2NhbGUnKVwiIFtyb3RhdGlvbl09XCJbLU1hdGguUEkgLyAyLCAwLCAwXVwiPlxuICAgICAgICAgICAgICAgIDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cbiAgICAgICAgICAgICAgICA8bmd0LXNvZnQtc2hhZG93LW1hdGVyaWFsXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlcHRoV3JpdGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZ2V0KCdjb2xvcicpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RvbmVNYXBwZWRdPVwiZ2V0KCd0b25lTWFwcGVkJylcIlxuICAgICAgICAgICAgICAgICAgICBbYmxlbmRdPVwiZ2V0KCdjb2xvckJsZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICBbbWFwXT1cInBMTS5wcm9ncmVzc2l2ZUxpZ2h0TWFwMi50ZXh0dXJlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9uZ3QtbWVzaD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbQWNjdW11bGF0aXZlU2hhZG93c0NvbnN1bWVyXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdUU19BQ0NVTVVMQVRJVkVfU0hBRE9XU19BUEksXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBhY2N1bXVsYXRpdmVTaGFkb3dzQXBpRmFjdG9yeSxcbiAgICAgICAgICAgIGRlcHM6IFtOZ3RzQWNjdW11bGF0aXZlU2hhZG93c10sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgcmVhZG9ubHkgbnVsbFRyYXZlcnNlID0gKCkgPT4gbnVsbDtcbiAgICByZWFkb25seSBNYXRoID0gTWF0aDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgcmVhZG9ubHkgcExNID0gbmV3IFByb2dyZXNzaXZlTGlnaHRNYXAodGhpcy5zdG9yZS5nZXQoJ2dsJyksIHRoaXMuc3RvcmUuZ2V0KCdzY2VuZScpLCB0aGlzLmdldCgncmVzb2x1dGlvbicpKTtcblxuICAgIHJlYWRvbmx5IGFjY3VtdWxhdGl2ZVNoYWRvd3NSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuR3JvdXA+KCk7XG4gICAgcmVhZG9ubHkgbWVzaFJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuXG4gICAgLyoqIEhvdyBtYW55IGZyYW1lcyBpdCBjYW4gcmVuZGVyLCBtb3JlIHlpZWxkcyBjbGVhbmVyIHJlc3VsdHMgYnV0IHRha2VzIG1vcmUgdGltZSwgNDAgKi9cbiAgICBASW5wdXQoKSBzZXQgZnJhbWVzKGZyYW1lczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJhbWVzIH0pO1xuICAgIH1cblxuICAgIC8qKiBJZiBmcmFtZXMgPT09IEluZmluaXR5IGJsZW5kIGNvbnRyb2xzIHRoZSByZWZyZXNoIHJhdGlvLCAxMDAgKi9cbiAgICBASW5wdXQoKSBzZXQgYmxlbmQoYmxlbmQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJsZW5kIH0pO1xuICAgIH1cblxuICAgIC8qKiBDYW4gbGltaXQgdGhlIGFtb3VudCBvZiBmcmFtZXMgcmVuZGVyZWQgaWYgZnJhbWVzID09PSBJbmZpbml0eSwgdXN1YWxseSB0byBnZXQgc29tZSBwZXJmb3JtYW5jZSBiYWNrIG9uY2UgYSBtb3ZhYmxlIHNjZW5lIGhhcyBzZXR0bGVkLCBJbmZpbml0eSAqL1xuICAgIEBJbnB1dCgpIHNldCBsaW1pdChsaW1pdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGltaXQgfSk7XG4gICAgfVxuXG4gICAgLyoqIFNjYWxlIG9mIHRoZSBwbGFuZSwgICovXG4gICAgQElucHV0KCkgc2V0IHNjYWxlKHNjYWxlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzY2FsZSB9KTtcbiAgICB9XG5cbiAgICAvKiogVGVtcG9yYWwgYWNjdW11bGF0ZXMgc2hhZG93cyBvdmVyIHRpbWUgd2hpY2ggaXMgbW9yZSBwZXJmb3JtYW50IGJ1dCBoYXMgYSB2aXN1YWwgcmVncmVzc2lvbiBvdmVyIGluc3RhbnQgcmVzdWx0cywgZmFsc2UgICovXG4gICAgQElucHV0KCkgc2V0IHRlbXBvcmFsKHRlbXBvcmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdGVtcG9yYWwgfSk7XG4gICAgfVxuXG4gICAgLyoqIE9wYWNpdHkgb2YgdGhlIHBsYW5lLCAxICovXG4gICAgQElucHV0KCkgc2V0IG9wYWNpdHkob3BhY2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3BhY2l0eSB9KTtcbiAgICB9XG5cbiAgICAvKiogRGlzY2FyZHMgYWxwaGEgcGl4ZWxzLCAwLjY1ICovXG4gICAgQElucHV0KCkgc2V0IGFscGhhVGVzdChhbHBoYVRlc3Q6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGFscGhhVGVzdCB9KTtcbiAgICB9XG5cbiAgICAvKiogU2hhZG93IGNvbG9yLCBibGFjayAqL1xuICAgIEBJbnB1dCgpIHNldCBjb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29sb3IgfSk7XG4gICAgfVxuXG4gICAgLyoqIENvbG9yYmxlbmQsIGhvdyBtdWNoIGNvbG9ycyB0dXJuIHRvIGJsYWNrLCAwIGlzIGJsYWNrLCAyICovXG4gICAgQElucHV0KCkgc2V0IGNvbG9yQmxlbmQoY29sb3JCbGVuZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29sb3JCbGVuZCB9KTtcbiAgICB9XG5cbiAgICAvKiogQnVmZmVyIHJlc29sdXRpb24sIDEwMjQgKi9cbiAgICBASW5wdXQoKSBzZXQgcmVzb2x1dGlvbihyZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByZXNvbHV0aW9uIH0pO1xuICAgIH1cblxuICAgIC8qKiBUZXh0dXJlIHRvbmVtYXBwaW5nICovXG4gICAgQElucHV0KCkgc2V0IHRvbmVNYXBwZWQodG9uZU1hcHBlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IHRvbmVNYXBwZWQgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBmcmFtZXM6IDQwLFxuICAgICAgICAgICAgbGltaXQ6IEluZmluaXR5LFxuICAgICAgICAgICAgYmxlbmQ6IDIwLFxuICAgICAgICAgICAgc2NhbGU6IDEwLFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIGFscGhhVGVzdDogMC43NSxcbiAgICAgICAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgICAgICAgY29sb3JCbGVuZDogMixcbiAgICAgICAgICAgIHJlc29sdXRpb246IDEwMjQsXG4gICAgICAgICAgICB0b25lTWFwcGVkOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { DiscardMaterial } from 'angular-three-soba/shaders';
|
|
2
|
-
import * as THREE from 'three';
|
|
3
|
-
function isLight(object) {
|
|
4
|
-
return object.isLight;
|
|
5
|
-
}
|
|
6
|
-
function isGeometry(object) {
|
|
7
|
-
return !!object.geometry;
|
|
8
|
-
}
|
|
9
|
-
export class ProgressiveLightMap {
|
|
10
|
-
constructor(renderer, scene, res = 1024) {
|
|
11
|
-
this.renderer = renderer;
|
|
12
|
-
this.res = res;
|
|
13
|
-
this.scene = scene;
|
|
14
|
-
this.buffer1Active = false;
|
|
15
|
-
this.lights = [];
|
|
16
|
-
this.meshes = [];
|
|
17
|
-
this.object = null;
|
|
18
|
-
this.clearColor = new THREE.Color();
|
|
19
|
-
this.clearAlpha = 0;
|
|
20
|
-
// Create the Progressive LightMap Texture
|
|
21
|
-
const format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;
|
|
22
|
-
this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {
|
|
23
|
-
type: format,
|
|
24
|
-
encoding: renderer.outputEncoding,
|
|
25
|
-
});
|
|
26
|
-
this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {
|
|
27
|
-
type: format,
|
|
28
|
-
encoding: renderer.outputEncoding,
|
|
29
|
-
});
|
|
30
|
-
// Inject some spicy new logic into a standard phong material
|
|
31
|
-
this.discardMat = new DiscardMaterial();
|
|
32
|
-
this.targetMat = new THREE.MeshLambertMaterial({ fog: false });
|
|
33
|
-
this.previousShadowMap = { value: this.progressiveLightMap1.texture };
|
|
34
|
-
this.averagingWindow = { value: 100 };
|
|
35
|
-
this.targetMat.onBeforeCompile = (shader) => {
|
|
36
|
-
// Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions
|
|
37
|
-
shader.vertexShader =
|
|
38
|
-
'varying vec2 vUv;\n' +
|
|
39
|
-
shader.vertexShader.slice(0, -1) +
|
|
40
|
-
'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';
|
|
41
|
-
// Fragment Shader: Set Pixels to average in the Previous frame's Shadows
|
|
42
|
-
const bodyStart = shader.fragmentShader.indexOf('void main() {');
|
|
43
|
-
shader.fragmentShader =
|
|
44
|
-
'varying vec2 vUv;\n' +
|
|
45
|
-
shader.fragmentShader.slice(0, bodyStart) +
|
|
46
|
-
'uniform sampler2D previousShadowMap;\n uniform float averagingWindow;\n' +
|
|
47
|
-
shader.fragmentShader.slice(bodyStart - 1, -1) +
|
|
48
|
-
`\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;
|
|
49
|
-
gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);
|
|
50
|
-
}`;
|
|
51
|
-
// Set the Previous Frame's Texture Buffer and Averaging Window
|
|
52
|
-
shader.uniforms['previousShadowMap'] = this.previousShadowMap;
|
|
53
|
-
shader.uniforms['averagingWindow'] = this.averagingWindow;
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
clear() {
|
|
57
|
-
this.renderer.getClearColor(this.clearColor);
|
|
58
|
-
this.clearAlpha = this.renderer.getClearAlpha();
|
|
59
|
-
this.renderer.setClearColor('black', 1);
|
|
60
|
-
this.renderer.setRenderTarget(this.progressiveLightMap1);
|
|
61
|
-
this.renderer.clear();
|
|
62
|
-
this.renderer.setRenderTarget(this.progressiveLightMap2);
|
|
63
|
-
this.renderer.clear();
|
|
64
|
-
this.renderer.setRenderTarget(null);
|
|
65
|
-
this.renderer.setClearColor(this.clearColor, this.clearAlpha);
|
|
66
|
-
this.lights = [];
|
|
67
|
-
this.meshes = [];
|
|
68
|
-
this.scene.traverse((object) => {
|
|
69
|
-
if (isGeometry(object)) {
|
|
70
|
-
this.meshes.push({ object, material: object.material });
|
|
71
|
-
}
|
|
72
|
-
else if (isLight(object)) {
|
|
73
|
-
this.lights.push({ object, intensity: object.intensity });
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
prepare() {
|
|
78
|
-
this.lights.forEach((light) => (light.object.intensity = 0));
|
|
79
|
-
this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));
|
|
80
|
-
}
|
|
81
|
-
finish() {
|
|
82
|
-
this.lights.forEach((light) => (light.object.intensity = light.intensity));
|
|
83
|
-
this.meshes.forEach((mesh) => (mesh.object.material = mesh.material));
|
|
84
|
-
}
|
|
85
|
-
configure(object) {
|
|
86
|
-
this.object = object;
|
|
87
|
-
}
|
|
88
|
-
update(camera, blendWindow = 100) {
|
|
89
|
-
if (!this.object)
|
|
90
|
-
return;
|
|
91
|
-
// Set each object's material to the UV Unwrapped Surface Mapping Version
|
|
92
|
-
this.averagingWindow.value = blendWindow;
|
|
93
|
-
this.object.material = this.targetMat;
|
|
94
|
-
// Ping-pong two surface buffers for reading/writing
|
|
95
|
-
const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;
|
|
96
|
-
const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;
|
|
97
|
-
// Render the object's surface maps
|
|
98
|
-
const oldBg = this.scene.background;
|
|
99
|
-
this.scene.background = null;
|
|
100
|
-
this.renderer.setRenderTarget(activeMap);
|
|
101
|
-
this.previousShadowMap.value = inactiveMap.texture;
|
|
102
|
-
this.buffer1Active = !this.buffer1Active;
|
|
103
|
-
this.renderer.render(this.scene, camera);
|
|
104
|
-
this.renderer.setRenderTarget(null);
|
|
105
|
-
this.scene.background = oldBg;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NpdmUtbGlnaHQtbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzL3Byb2dyZXNzaXZlLWxpZ2h0LW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsU0FBUyxPQUFPLENBQUMsTUFBVztJQUN4QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLE1BQVc7SUFDM0IsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQWlCNUIsWUFBWSxRQUE2QixFQUFFLEtBQWtCLEVBQUUsTUFBYyxJQUFJO1FBQzdFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUVwQiwwQ0FBMEM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFNBQVMs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QUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlzY2FyZE1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5mdW5jdGlvbiBpc0xpZ2h0KG9iamVjdDogYW55KTogb2JqZWN0IGlzIFRIUkVFLkxpZ2h0IHtcbiAgICByZXR1cm4gb2JqZWN0LmlzTGlnaHQ7XG59XG5cbmZ1bmN0aW9uIGlzR2VvbWV0cnkob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgVEhSRUUuTWVzaCB7XG4gICAgcmV0dXJuICEhb2JqZWN0Lmdlb21ldHJ5O1xufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NpdmVMaWdodE1hcCB7XG4gICAgcmVuZGVyZXI6IFRIUkVFLldlYkdMUmVuZGVyZXI7XG4gICAgcmVzOiBudW1iZXI7XG4gICAgc2NlbmU6IFRIUkVFLlNjZW5lO1xuICAgIG9iamVjdDogVEhSRUUuTWVzaCB8IG51bGw7XG4gICAgYnVmZmVyMUFjdGl2ZTogYm9vbGVhbjtcbiAgICBwcm9ncmVzc2l2ZUxpZ2h0TWFwMTogVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ7XG4gICAgcHJvZ3Jlc3NpdmVMaWdodE1hcDI6IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0O1xuICAgIGRpc2NhcmRNYXQ6IFRIUkVFLlNoYWRlck1hdGVyaWFsO1xuICAgIHRhcmdldE1hdDogVEhSRUUuTWVzaExhbWJlcnRNYXRlcmlhbDtcbiAgICBwcmV2aW91c1NoYWRvd01hcDogeyB2YWx1ZTogVEhSRUUuVGV4dHVyZSB9O1xuICAgIGF2ZXJhZ2luZ1dpbmRvdzogeyB2YWx1ZTogbnVtYmVyIH07XG4gICAgY2xlYXJDb2xvcjogVEhSRUUuQ29sb3I7XG4gICAgY2xlYXJBbHBoYTogbnVtYmVyO1xuICAgIGxpZ2h0czogeyBvYmplY3Q6IFRIUkVFLkxpZ2h0OyBpbnRlbnNpdHk6IG51bWJlciB9W107XG4gICAgbWVzaGVzOiB7IG9iamVjdDogVEhSRUUuTWVzaDsgbWF0ZXJpYWw6IFRIUkVFLk1hdGVyaWFsIHwgVEhSRUUuTWF0ZXJpYWxbXSB9W107XG5cbiAgICBjb25zdHJ1Y3RvcihyZW5kZXJlcjogVEhSRUUuV2ViR0xSZW5kZXJlciwgc2NlbmU6IFRIUkVFLlNjZW5lLCByZXM6IG51bWJlciA9IDEwMjQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgICAgICB0aGlzLnJlcyA9IHJlcztcbiAgICAgICAgdGhpcy5zY2VuZSA9IHNjZW5lO1xuICAgICAgICB0aGlzLmJ1ZmZlcjFBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saWdodHMgPSBbXTtcbiAgICAgICAgdGhpcy5tZXNoZXMgPSBbXTtcbiAgICAgICAgdGhpcy5vYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLmNsZWFyQ29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoKTtcbiAgICAgICAgdGhpcy5jbGVhckFscGhhID0gMDtcblxuICAgICAgICAvLyBDcmVhdGUgdGhlIFByb2dyZXNzaXZlIExpZ2h0TWFwIFRleHR1cmVcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gLyhBbmRyb2lkfGlQYWR8aVBob25lfGlQb2QpL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSA/IFRIUkVFLkhhbGZGbG9hdFR5cGUgOiBUSFJFRS5GbG9hdFR5cGU7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NpdmVMaWdodE1hcDEgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQodGhpcy5yZXMsIHRoaXMucmVzLCB7XG4gICAgICAgICAgICB0eXBlOiBmb3JtYXQsXG4gICAgICAgICAgICBlbmNvZGluZzogcmVuZGVyZXIub3V0cHV0RW5jb2RpbmcsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByb2dyZXNzaXZlTGlnaHRNYXAyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0KHRoaXMucmVzLCB0aGlzLnJlcywge1xuICAgICAgICAgICAgdHlwZTogZm9ybWF0LFxuICAgICAgICAgICAgZW5jb2Rpbmc6IHJlbmRlcmVyLm91dHB1dEVuY29kaW5nLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbmplY3Qgc29tZSBzcGljeSBuZXcgbG9naWMgaW50byBhIHN0YW5kYXJkIHBob25nIG1hdGVyaWFsXG4gICAgICAgIHRoaXMuZGlzY2FyZE1hdCA9IG5ldyBEaXNjYXJkTWF0ZXJpYWwoKTtcbiAgICAgICAgdGhpcy50YXJnZXRNYXQgPSBuZXcgVEhSRUUuTWVzaExhbWJlcnRNYXRlcmlhbCh7IGZvZzogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMucHJldmlvdXNTaGFkb3dNYXAgPSB7IHZhbHVlOiB0aGlzLnByb2dyZXNzaXZlTGlnaHRNYXAxLnRleHR1cmUgfTtcbiAgICAgICAgdGhpcy5hdmVyYWdpbmdXaW5kb3cgPSB7IHZhbHVlOiAxMDAgfTtcbiAgICAgICAgdGhpcy50YXJnZXRNYXQub25CZWZvcmVDb21waWxlID0gKHNoYWRlcikgPT4ge1xuICAgICAgICAgICAgLy8gVmVydGV4IFNoYWRlcjogU2V0IFZlcnRleCBQb3NpdGlvbnMgdG8gdGhlIFVud3JhcHBlZCBVViBQb3NpdGlvbnNcbiAgICAgICAgICAgIHNoYWRlci52ZXJ0ZXhTaGFkZXIgPVxuICAgICAgICAgICAgICAgICd2YXJ5aW5nIHZlYzIgdlV2O1xcbicgK1xuICAgICAgICAgICAgICAgIHNoYWRlci52ZXJ0ZXhTaGFkZXIuc2xpY2UoMCwgLTEpICtcbiAgICAgICAgICAgICAgICAndlV2ID0gdXY7IGdsX1Bvc2l0aW9uID0gdmVjNCgodXYgLSAwLjUpICogMi4wLCAxLjAsIDEuMCk7IH0nO1xuXG4gICAgICAgICAgICAvLyBGcmFnbWVudCBTaGFkZXI6IFNldCBQaXhlbHMgdG8gYXZlcmFnZSBpbiB0aGUgUHJldmlvdXMgZnJhbWUncyBTaGFkb3dzXG4gICAgICAgICAgICBjb25zdCBib2R5U3RhcnQgPSBzaGFkZXIuZnJhZ21lbnRTaGFkZXIuaW5kZXhPZigndm9pZCBtYWluKCkgeycpO1xuICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyID1cbiAgICAgICAgICAgICAgICAndmFyeWluZyB2ZWMyIHZVdjtcXG4nICtcbiAgICAgICAgICAgICAgICBzaGFkZXIuZnJhZ21lbnRTaGFkZXIuc2xpY2UoMCwgYm9keVN0YXJ0KSArXG4gICAgICAgICAgICAgICAgJ3VuaWZvcm0gc2FtcGxlcjJEIHByZXZpb3VzU2hhZG93TWFwO1xcblx0dW5pZm9ybSBmbG9hdCBhdmVyYWdpbmdXaW5kb3c7XFxuJyArXG4gICAgICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyLnNsaWNlKGJvZHlTdGFydCAtIDEsIC0xKSArXG4gICAgICAgICAgICAgICAgYFxcbnZlYzMgdGV4ZWxPbGQgPSB0ZXh0dXJlMkQocHJldmlvdXNTaGFkb3dNYXAsIHZVdikucmdiO1xuICAgICAgICBnbF9GcmFnQ29sb3IucmdiID0gbWl4KHRleGVsT2xkLCBnbF9GcmFnQ29sb3IucmdiLCAxLjAvIGF2ZXJhZ2luZ1dpbmRvdyk7XG4gICAgICB9YDtcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBQcmV2aW91cyBGcmFtZSdzIFRleHR1cmUgQnVmZmVyIGFuZCBBdmVyYWdpbmcgV2luZG93XG4gICAgICAgICAgICBzaGFkZXIudW5pZm9ybXNbJ3ByZXZpb3VzU2hhZG93TWFwJ10gPSB0aGlzLnByZXZpb3VzU2hhZG93TWFwO1xuICAgICAgICAgICAgc2hhZGVyLnVuaWZvcm1zWydhdmVyYWdpbmdXaW5kb3cnXSA9IHRoaXMuYXZlcmFnaW5nV2luZG93O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmdldENsZWFyQ29sb3IodGhpcy5jbGVhckNvbG9yKTtcbiAgICAgICAgdGhpcy5jbGVhckFscGhhID0gdGhpcy5yZW5kZXJlci5nZXRDbGVhckFscGhhKCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0Q2xlYXJDb2xvcignYmxhY2snLCAxKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQodGhpcy5wcm9ncmVzc2l2ZUxpZ2h0TWFwMSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQodGhpcy5wcm9ncmVzc2l2ZUxpZ2h0TWFwMik7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0Q2xlYXJDb2xvcih0aGlzLmNsZWFyQ29sb3IsIHRoaXMuY2xlYXJBbHBoYSk7XG5cbiAgICAgICAgdGhpcy5saWdodHMgPSBbXTtcbiAgICAgICAgdGhpcy5tZXNoZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zY2VuZS50cmF2ZXJzZSgob2JqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNHZW9tZXRyeShvYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNoZXMucHVzaCh7IG9iamVjdCwgbWF0ZXJpYWw6IG9iamVjdC5tYXRlcmlhbCB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNMaWdodChvYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saWdodHMucHVzaCh7IG9iamVjdCwgaW50ZW5zaXR5OiBvYmplY3QuaW50ZW5zaXR5IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcmVwYXJlKCkge1xuICAgICAgICB0aGlzLmxpZ2h0cy5mb3JFYWNoKChsaWdodCkgPT4gKGxpZ2h0Lm9iamVjdC5pbnRlbnNpdHkgPSAwKSk7XG4gICAgICAgIHRoaXMubWVzaGVzLmZvckVhY2goKG1lc2gpID0+IChtZXNoLm9iamVjdC5tYXRlcmlhbCA9IHRoaXMuZGlzY2FyZE1hdCkpO1xuICAgIH1cblxuICAgIGZpbmlzaCgpIHtcbiAgICAgICAgdGhpcy5saWdodHMuZm9yRWFjaCgobGlnaHQpID0+IChsaWdodC5vYmplY3QuaW50ZW5zaXR5ID0gbGlnaHQuaW50ZW5zaXR5KSk7XG4gICAgICAgIHRoaXMubWVzaGVzLmZvckVhY2goKG1lc2gpID0+IChtZXNoLm9iamVjdC5tYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWwpKTtcbiAgICB9XG5cbiAgICBjb25maWd1cmUob2JqZWN0OiBhbnkpIHtcbiAgICAgICAgdGhpcy5vYmplY3QgPSBvYmplY3Q7XG4gICAgfVxuXG4gICAgdXBkYXRlKGNhbWVyYTogYW55LCBibGVuZFdpbmRvdyA9IDEwMCkge1xuICAgICAgICBpZiAoIXRoaXMub2JqZWN0KSByZXR1cm47XG4gICAgICAgIC8vIFNldCBlYWNoIG9iamVjdCdzIG1hdGVyaWFsIHRvIHRoZSBVViBVbndyYXBwZWQgU3VyZmFjZSBNYXBwaW5nIFZlcnNpb25cbiAgICAgICAgdGhpcy5hdmVyYWdpbmdXaW5kb3cudmFsdWUgPSBibGVuZFdpbmRvdztcbiAgICAgICAgdGhpcy5vYmplY3QubWF0ZXJpYWwgPSB0aGlzLnRhcmdldE1hdDtcbiAgICAgICAgLy8gUGluZy1wb25nIHR3byBzdXJmYWNlIGJ1ZmZlcnMgZm9yIHJlYWRpbmcvd3JpdGluZ1xuICAgICAgICBjb25zdCBhY3RpdmVNYXAgPSB0aGlzLmJ1ZmZlcjFBY3RpdmUgPyB0aGlzLnByb2dyZXNzaXZlTGlnaHRNYXAxIDogdGhpcy5wcm9ncmVzc2l2ZUxpZ2h0TWFwMjtcbiAgICAgICAgY29uc3QgaW5hY3RpdmVNYXAgPSB0aGlzLmJ1ZmZlcjFBY3RpdmUgPyB0aGlzLnByb2dyZXNzaXZlTGlnaHRNYXAyIDogdGhpcy5wcm9ncmVzc2l2ZUxpZ2h0TWFwMTtcbiAgICAgICAgLy8gUmVuZGVyIHRoZSBvYmplY3QncyBzdXJmYWNlIG1hcHNcbiAgICAgICAgY29uc3Qgb2xkQmcgPSB0aGlzLnNjZW5lLmJhY2tncm91bmQ7XG4gICAgICAgIHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IG51bGw7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KGFjdGl2ZU1hcCk7XG4gICAgICAgIHRoaXMucHJldmlvdXNTaGFkb3dNYXAudmFsdWUgPSBpbmFjdGl2ZU1hcC50ZXh0dXJlO1xuICAgICAgICB0aGlzLmJ1ZmZlcjFBY3RpdmUgPSAhdGhpcy5idWZmZXIxQWN0aXZlO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCBjYW1lcmEpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFJlbmRlclRhcmdldChudWxsKTtcbiAgICAgICAgdGhpcy5zY2VuZS5iYWNrZ3JvdW5kID0gb2xkQmc7XG4gICAgfVxufVxuIl19
|