angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.261
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 +62 -4
- package/abstractions/README.md +278 -2
- package/abstractions/index.d.ts +11 -6
- package/abstractions/lib/catmull-rom-line.d.ts +648 -0
- package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
- package/abstractions/lib/edges.d.ts +850 -0
- package/abstractions/lib/gradient-texture.d.ts +24 -0
- package/abstractions/lib/grid.d.ts +339 -0
- package/abstractions/lib/helper.d.ts +25 -0
- package/abstractions/lib/line.d.ts +41 -0
- package/abstractions/lib/prism-geometry.d.ts +30 -0
- package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
- package/abstractions/lib/text-3d.d.ts +338 -0
- package/abstractions/lib/text.d.ts +55 -0
- package/cameras/README.md +91 -2
- package/cameras/index.d.ts +4 -4
- package/cameras/lib/camera-content.d.ts +10 -0
- package/cameras/lib/cube-camera.d.ts +38 -0
- package/cameras/lib/orthographic-camera.d.ts +40 -0
- package/cameras/lib/perspective-camera.d.ts +36 -0
- package/controls/README.md +95 -2
- package/controls/index.d.ts +2 -1
- package/controls/lib/camera-controls.d.ts +31 -0
- package/controls/lib/orbit-controls.d.ts +38 -0
- package/esm2022/abstractions/index.mjs +12 -7
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
- package/esm2022/abstractions/lib/edges.mjs +70 -0
- package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
- package/esm2022/abstractions/lib/grid.mjs +103 -0
- package/esm2022/abstractions/lib/helper.mjs +80 -0
- package/esm2022/abstractions/lib/line.mjs +123 -0
- package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
- package/esm2022/abstractions/lib/text-3d.mjs +98 -0
- package/esm2022/abstractions/lib/text.mjs +92 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/lib/camera-content.mjs +14 -0
- package/esm2022/cameras/lib/cube-camera.mjs +111 -0
- package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
- package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
- package/esm2022/controls/index.mjs +3 -2
- package/esm2022/controls/lib/camera-controls.mjs +127 -0
- package/esm2022/controls/lib/orbit-controls.mjs +126 -0
- package/esm2022/loaders/index.mjs +6 -5
- package/esm2022/loaders/lib/font-loader.mjs +49 -0
- package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
- package/esm2022/loaders/lib/loader.mjs +109 -0
- package/esm2022/loaders/lib/progress.mjs +51 -0
- package/esm2022/loaders/lib/texture-loader.mjs +32 -0
- package/esm2022/materials/index.mjs +7 -7
- package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
- package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
- package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
- package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
- package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
- package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
- package/esm2022/misc/index.mjs +10 -14
- package/esm2022/misc/lib/animations.mjs +74 -0
- package/esm2022/misc/lib/bake-shadows.mjs +26 -0
- package/esm2022/misc/lib/computed-attribute.mjs +56 -0
- package/esm2022/misc/lib/constants.mjs +5 -0
- package/esm2022/misc/lib/decal.mjs +135 -0
- package/esm2022/misc/lib/deprecated.mjs +15 -0
- package/esm2022/misc/lib/depth-buffer.mjs +39 -0
- package/esm2022/misc/lib/fbo.mjs +89 -0
- package/esm2022/misc/lib/sampler.mjs +121 -0
- package/esm2022/shaders/index.mjs +3 -18
- package/esm2022/shaders/lib/grid-material.mjs +81 -0
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
- package/esm2022/staging/index.mjs +19 -22
- package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
- package/esm2022/staging/lib/backdrop.mjs +73 -0
- package/esm2022/staging/lib/bb-anchor.mjs +58 -0
- package/esm2022/staging/lib/bounds.mjs +286 -0
- package/esm2022/staging/lib/camera-shake.mjs +69 -0
- package/esm2022/staging/lib/caustics.mjs +188 -0
- package/esm2022/staging/lib/center.mjs +113 -0
- package/esm2022/staging/lib/contact-shadows.mjs +201 -0
- package/esm2022/staging/lib/environment.mjs +465 -0
- package/esm2022/staging/lib/float.mjs +60 -0
- package/esm2022/staging/lib/lightformer.mjs +107 -0
- package/esm2022/staging/lib/matcap-texture.mjs +81 -0
- package/esm2022/staging/lib/normal-texture.mjs +85 -0
- package/esm2022/staging/lib/randomized-lights.mjs +104 -0
- package/esm2022/staging/lib/render-texture.mjs +213 -0
- package/esm2022/staging/lib/sky.mjs +86 -0
- package/esm2022/staging/lib/spot-light.mjs +450 -0
- package/esm2022/staging/lib/stage.mjs +236 -0
- package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
- package/esm2022/vanilla-exports/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +260 -307
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +174 -110
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +151 -129
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +511 -764
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +405 -2149
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
- package/loaders/README.md +130 -2
- package/loaders/index.d.ts +5 -4
- package/loaders/lib/font-loader.d.ts +27 -0
- package/loaders/lib/gltf-loader.d.ts +21 -0
- package/loaders/lib/loader.d.ts +29 -0
- package/loaders/lib/progress.d.ts +9 -0
- package/loaders/lib/texture-loader.d.ts +13 -0
- package/materials/README.md +160 -2
- package/materials/index.d.ts +6 -6
- package/materials/lib/custom-shader-material.d.ts +19 -0
- package/materials/lib/mesh-distort-material.d.ts +18 -0
- package/materials/lib/mesh-reflector-material.d.ts +50 -0
- package/materials/lib/mesh-refraction-material.d.ts +42 -0
- package/materials/lib/mesh-transmission-material.d.ts +77 -0
- package/materials/lib/mesh-wobble-material.d.ts +15 -0
- package/metadata.json +1 -1
- package/misc/README.md +217 -2
- package/misc/index.d.ts +9 -13
- package/misc/lib/animations.d.ts +14 -0
- package/misc/lib/computed-attribute.d.ts +69 -0
- package/misc/lib/constants.d.ts +1 -0
- package/misc/lib/decal.d.ts +27 -0
- package/misc/lib/deprecated.d.ts +14 -0
- package/misc/lib/depth-buffer.d.ts +8 -0
- package/misc/lib/fbo.d.ts +47 -0
- package/misc/lib/sampler.d.ts +73 -0
- package/package.json +60 -38
- package/shaders/index.d.ts +2 -17
- package/shaders/lib/grid-material.d.ts +69 -0
- package/shaders/lib/mesh-refraction-material.d.ts +11 -0
- package/staging/README.md +472 -2
- package/staging/index.d.ts +18 -21
- package/staging/lib/accumulative-shadows.d.ts +75 -0
- package/staging/lib/backdrop.d.ts +22 -0
- package/staging/lib/bb-anchor.d.ts +17 -0
- package/staging/lib/bounds.d.ts +47 -0
- package/staging/lib/camera-shake.d.ts +29 -0
- package/staging/lib/caustics.d.ts +53 -0
- package/staging/lib/center.d.ts +422 -0
- package/staging/lib/contact-shadows.d.ts +45 -0
- package/staging/lib/environment.d.ts +159 -0
- package/staging/lib/float.d.ts +19 -0
- package/staging/lib/lightformer.d.ts +334 -0
- package/staging/lib/matcap-texture.d.ts +32 -0
- package/staging/lib/normal-texture.d.ts +37 -0
- package/staging/lib/randomized-lights.d.ts +54 -0
- package/staging/lib/render-texture.d.ts +64 -0
- package/staging/lib/sky.d.ts +32 -0
- package/staging/lib/spot-light.d.ts +120 -0
- package/staging/lib/stage.d.ts +376 -0
- package/vanilla-exports/README.md +3 -0
- package/vanilla-exports/index.d.ts +27 -0
- package/web-types.json +1 -1
- package/abstractions/billboard/billboard.d.ts +0 -28
- package/abstractions/detailed/detailed.d.ts +0 -26
- package/abstractions/edges/edges.d.ts +0 -34
- package/abstractions/grid/grid.d.ts +0 -50
- package/abstractions/text/text.d.ts +0 -82
- package/abstractions/text-3d/text-3d.d.ts +0 -84
- package/assets/distort.vert.glsl +0 -1
- package/cameras/camera/camera-content.d.ts +0 -13
- package/cameras/camera/camera.d.ts +0 -26
- package/cameras/cube-camera/cube-camera.d.ts +0 -69
- package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
- package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
- package/controls/orbit-controls/orbit-controls.d.ts +0 -54
- package/esm2022/abstractions/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/detailed/detailed.mjs +0 -64
- package/esm2022/abstractions/edges/edges.mjs +0 -88
- package/esm2022/abstractions/grid/grid.mjs +0 -180
- package/esm2022/abstractions/text/text.mjs +0 -274
- package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
- package/esm2022/cameras/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/camera/camera.mjs +0 -77
- package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
- package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
- package/esm2022/gizmos/index.mjs +0 -4
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
- package/esm2022/loaders/loader/loader.mjs +0 -138
- package/esm2022/loaders/progress/progress.mjs +0 -52
- package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/materials/point-material/point-material.mjs +0 -50
- package/esm2022/misc/animations/animations.mjs +0 -59
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
- package/esm2022/misc/caustics/caustics.mjs +0 -387
- package/esm2022/misc/decal/decal.mjs +0 -187
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
- package/esm2022/misc/example/example.mjs +0 -160
- package/esm2022/misc/fbo/fbo.mjs +0 -47
- package/esm2022/misc/html/html-wrapper.mjs +0 -478
- package/esm2022/misc/html/html.mjs +0 -304
- package/esm2022/misc/sampler/sampler.mjs +0 -142
- package/esm2022/misc/shadow/shadow.mjs +0 -111
- package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
- package/esm2022/misc/trail/trail.mjs +0 -209
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
- package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
- package/esm2022/modifiers/index.mjs +0 -2
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
- package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
- package/esm2022/performances/index.mjs +0 -8
- package/esm2022/performances/instances/instances.mjs +0 -220
- package/esm2022/performances/instances/position-mesh.mjs +0 -52
- package/esm2022/performances/points/points-input.mjs +0 -64
- package/esm2022/performances/points/points.mjs +0 -326
- package/esm2022/performances/points/position-point.mjs +0 -54
- package/esm2022/performances/segments/segment-object.mjs +0 -9
- package/esm2022/performances/segments/segments.mjs +0 -182
- package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
- package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
- package/esm2022/staging/backdrop/backdrop.mjs +0 -77
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
- package/esm2022/staging/bounds/bounds.mjs +0 -308
- package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
- package/esm2022/staging/center/center.mjs +0 -165
- package/esm2022/staging/cloud/cloud.mjs +0 -158
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
- package/esm2022/staging/environment/assets.mjs +0 -13
- package/esm2022/staging/environment/environment-cube.mjs +0 -47
- package/esm2022/staging/environment/environment-ground.mjs +0 -41
- package/esm2022/staging/environment/environment-input.mjs +0 -119
- package/esm2022/staging/environment/environment-map.mjs +0 -53
- package/esm2022/staging/environment/environment-portal.mjs +0 -113
- package/esm2022/staging/environment/environment.mjs +0 -61
- package/esm2022/staging/environment/utils.mjs +0 -106
- package/esm2022/staging/float/float.mjs +0 -94
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
- package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
- package/esm2022/staging/sky/sky.mjs +0 -119
- package/esm2022/staging/sparkles/sparkles.mjs +0 -164
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
- package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
- package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
- package/esm2022/staging/spot-light/spot-light.mjs +0 -81
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
- package/esm2022/staging/stage/stage.mjs +0 -389
- package/esm2022/staging/stars/stars.mjs +0 -147
- package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
- package/esm2022/staging/wireframe/wireframe.mjs +0 -228
- package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
- package/esm2022/utils/content/content.mjs +0 -15
- package/esm2022/utils/index.mjs +0 -2
- package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
- package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
- package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
- package/fesm2022/angular-three-soba-performances.mjs +0 -956
- package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
- package/fesm2022/angular-three-soba-utils.mjs +0 -22
- package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
- package/gizmos/README.md +0 -3
- package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
- package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
- package/gizmos/index.d.ts +0 -3
- package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
- package/loaders/loader/loader.d.ts +0 -33
- package/loaders/progress/progress.d.ts +0 -9
- package/loaders/texture-loader/texture-loader.d.ts +0 -7
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
- package/materials/point-material/point-material.d.ts +0 -24
- package/misc/animations/animations.d.ts +0 -15
- package/misc/caustics/caustics.d.ts +0 -87
- package/misc/decal/decal.d.ts +0 -49
- package/misc/depth-buffer/depth-buffer.d.ts +0 -9
- package/misc/example/example.d.ts +0 -81
- package/misc/fbo/fbo.d.ts +0 -17
- package/misc/html/html-wrapper.d.ts +0 -559
- package/misc/html/html.d.ts +0 -214
- package/misc/sampler/sampler.d.ts +0 -67
- package/misc/shadow/shadow.d.ts +0 -37
- package/misc/stats-gl/stats-gl.d.ts +0 -24
- package/misc/trail/trail.d.ts +0 -57
- package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
- package/misc/trail-texture/trail-texture.d.ts +0 -50
- package/modifiers/README.md +0 -3
- package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
- package/modifiers/index.d.ts +0 -1
- package/performances/README.md +0 -3
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
- package/performances/adaptive-events/adaptive-events.d.ts +0 -9
- package/performances/index.d.ts +0 -7
- package/performances/instances/instances.d.ts +0 -79
- package/performances/instances/position-mesh.d.ts +0 -10
- package/performances/points/points-input.d.ts +0 -32
- package/performances/points/points.d.ts +0 -92
- package/performances/points/position-point.d.ts +0 -11
- package/performances/segments/segment-object.d.ts +0 -7
- package/performances/segments/segments.d.ts +0 -124
- package/shaders/blur-pass/blur-pass.d.ts +0 -23
- package/shaders/caustics/caustics-material.d.ts +0 -4
- package/shaders/caustics/caustics-projection-material.d.ts +0 -4
- package/shaders/convolution-material/convolution-material.d.ts +0 -7
- package/shaders/discard-material/discard-material.d.ts +0 -3
- package/shaders/grid-material/grid-material.d.ts +0 -37
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
- package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
- package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
- package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
- package/shaders/shader-material/shader-material.d.ts +0 -6
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
- package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
- package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
- package/shaders/star-field-material/star-field-material.d.ts +0 -13
- package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
- package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
- package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
- package/staging/backdrop/backdrop.d.ts +0 -30
- package/staging/bb-anchor/bb-anchor.d.ts +0 -27
- package/staging/bounds/bounds.d.ts +0 -134
- package/staging/camera-shake/camera-shake.d.ts +0 -43
- package/staging/center/center.d.ts +0 -70
- package/staging/cloud/cloud.d.ts +0 -51
- package/staging/contact-shadows/contact-shadows.d.ts +0 -70
- package/staging/environment/assets.d.ts +0 -13
- package/staging/environment/environment-cube.d.ts +0 -15
- package/staging/environment/environment-ground.d.ts +0 -13
- package/staging/environment/environment-input.d.ts +0 -68
- package/staging/environment/environment-map.d.ts +0 -16
- package/staging/environment/environment-portal.d.ts +0 -18
- package/staging/environment/environment.d.ts +0 -8
- package/staging/environment/utils.d.ts +0 -7
- package/staging/float/float.d.ts +0 -31
- package/staging/matcap-texture/matcap-texture.d.ts +0 -13
- package/staging/normal-texture/normal-texture.d.ts +0 -16
- package/staging/sky/sky.d.ts +0 -48
- package/staging/sparkles/sparkles.d.ts +0 -63
- package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/shadow-mesh.d.ts +0 -37
- package/staging/spot-light/spot-light-input.d.ts +0 -38
- package/staging/spot-light/spot-light.d.ts +0 -39
- package/staging/spot-light/volumetric-mesh.d.ts +0 -24
- package/staging/stage/stage.d.ts +0 -130
- package/staging/stars/stars.d.ts +0 -45
- package/staging/wireframe/wireframe-input.d.ts +0 -65
- package/staging/wireframe/wireframe.d.ts +0 -28
- package/utils/README.md +0 -3
- package/utils/content/content.d.ts +0 -8
- package/utils/index.d.ts +0 -1
- /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, Component, EventEmitter, Input, Output, computed, effect, forwardRef, untracked, } from '@angular/core';
|
|
2
|
-
import { createInjectionToken, extend, injectBeforeRender, injectNgtRef, injectNgtStore, is, signalStore, } from 'angular-three';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
import { Group } from 'three';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
extend({ Group });
|
|
7
|
-
const isBox3 = (def) => def && def.isBox3;
|
|
8
|
-
function equals(a, b, eps) {
|
|
9
|
-
return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;
|
|
10
|
-
}
|
|
11
|
-
function damp(v, t, lambda, delta) {
|
|
12
|
-
v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);
|
|
13
|
-
v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);
|
|
14
|
-
v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);
|
|
15
|
-
}
|
|
16
|
-
export const [injectNgtsBoundsApi, provideNgtsBoundsApi] = createInjectionToken((bounds) => bounds.api, {
|
|
17
|
-
isRoot: false,
|
|
18
|
-
deps: [forwardRef(() => NgtsBounds)],
|
|
19
|
-
});
|
|
20
|
-
export class NgtsBounds {
|
|
21
|
-
set _damping(damping) {
|
|
22
|
-
this.inputs.set({ damping });
|
|
23
|
-
}
|
|
24
|
-
set _fit(fit) {
|
|
25
|
-
this.inputs.set({ fit });
|
|
26
|
-
}
|
|
27
|
-
set _clip(clip) {
|
|
28
|
-
this.inputs.set({ clip });
|
|
29
|
-
}
|
|
30
|
-
set _observe(observe) {
|
|
31
|
-
this.inputs.set({ observe });
|
|
32
|
-
}
|
|
33
|
-
set _margin(margin) {
|
|
34
|
-
this.inputs.set({ margin });
|
|
35
|
-
}
|
|
36
|
-
set _eps(eps) {
|
|
37
|
-
this.inputs.set({ eps });
|
|
38
|
-
}
|
|
39
|
-
constructor() {
|
|
40
|
-
this.inputs = signalStore({
|
|
41
|
-
damping: 6,
|
|
42
|
-
fit: false,
|
|
43
|
-
clip: false,
|
|
44
|
-
observe: false,
|
|
45
|
-
margin: 1.2,
|
|
46
|
-
eps: 0.01,
|
|
47
|
-
});
|
|
48
|
-
this.boundsRef = injectNgtRef();
|
|
49
|
-
this.fitted = new EventEmitter();
|
|
50
|
-
this.store = injectNgtStore();
|
|
51
|
-
this.controls = this.store.select('controls');
|
|
52
|
-
this.size = this.store.select('size');
|
|
53
|
-
this.camera = this.store.select('camera');
|
|
54
|
-
this.invalidate = this.store.select('invalidate');
|
|
55
|
-
this.fit = this.inputs.select('fit');
|
|
56
|
-
this.clip = this.inputs.select('clip');
|
|
57
|
-
this.observe = this.inputs.select('observe');
|
|
58
|
-
this.margin = this.inputs.select('margin');
|
|
59
|
-
this.damping = this.inputs.select('damping');
|
|
60
|
-
this.current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };
|
|
61
|
-
this.goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };
|
|
62
|
-
this.box = new THREE.Box3();
|
|
63
|
-
this.api = computed(() => {
|
|
64
|
-
const { box, boundsRef, current, goal, fitted } = this;
|
|
65
|
-
const [camera, margin, controls, invalidate, damping] = [
|
|
66
|
-
this.camera(),
|
|
67
|
-
this.margin(),
|
|
68
|
-
this.controls(),
|
|
69
|
-
this.invalidate(),
|
|
70
|
-
this.damping(),
|
|
71
|
-
];
|
|
72
|
-
function getSize() {
|
|
73
|
-
const size = box.getSize(new THREE.Vector3());
|
|
74
|
-
const center = box.getCenter(new THREE.Vector3());
|
|
75
|
-
const maxSize = Math.max(size.x, size.y, size.z);
|
|
76
|
-
const fitHeightDistance = is.orthographicCamera(camera)
|
|
77
|
-
? maxSize * 4
|
|
78
|
-
: maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));
|
|
79
|
-
const fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;
|
|
80
|
-
const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);
|
|
81
|
-
return { box, size, center, distance };
|
|
82
|
-
}
|
|
83
|
-
return {
|
|
84
|
-
getSize,
|
|
85
|
-
refresh(object) {
|
|
86
|
-
if (isBox3(object))
|
|
87
|
-
box.copy(object);
|
|
88
|
-
else {
|
|
89
|
-
const target = object || boundsRef.nativeElement;
|
|
90
|
-
if (!target)
|
|
91
|
-
return this;
|
|
92
|
-
target.updateWorldMatrix(true, true);
|
|
93
|
-
box.setFromObject(target);
|
|
94
|
-
}
|
|
95
|
-
if (box.isEmpty()) {
|
|
96
|
-
const max = camera.position.length() || 10;
|
|
97
|
-
box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));
|
|
98
|
-
}
|
|
99
|
-
if (controls?.constructor.name === 'OrthographicTrackballControls') {
|
|
100
|
-
// Put camera on a sphere along which it should move
|
|
101
|
-
const { distance } = getSize();
|
|
102
|
-
const direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);
|
|
103
|
-
const newPos = controls.target.clone().add(direction);
|
|
104
|
-
camera.position.copy(newPos);
|
|
105
|
-
}
|
|
106
|
-
return this;
|
|
107
|
-
},
|
|
108
|
-
clip() {
|
|
109
|
-
const { distance } = getSize();
|
|
110
|
-
if (controls)
|
|
111
|
-
controls.maxDistance = distance * 10;
|
|
112
|
-
camera.near = distance / 100;
|
|
113
|
-
camera.far = distance * 100;
|
|
114
|
-
camera.updateProjectionMatrix();
|
|
115
|
-
if (controls)
|
|
116
|
-
controls.update();
|
|
117
|
-
invalidate();
|
|
118
|
-
return this;
|
|
119
|
-
},
|
|
120
|
-
to({ position, target }) {
|
|
121
|
-
current.camera.copy(camera.position);
|
|
122
|
-
const { center } = getSize();
|
|
123
|
-
goal.camera.set(...position);
|
|
124
|
-
if (target) {
|
|
125
|
-
goal.focus.set(...target);
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
goal.focus.copy(center);
|
|
129
|
-
}
|
|
130
|
-
if (damping) {
|
|
131
|
-
current.animating = true;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
camera.position.set(...position);
|
|
135
|
-
}
|
|
136
|
-
return this;
|
|
137
|
-
},
|
|
138
|
-
fit() {
|
|
139
|
-
current.camera.copy(camera.position);
|
|
140
|
-
if (controls)
|
|
141
|
-
current.focus.copy(controls.target);
|
|
142
|
-
const { center, distance } = getSize();
|
|
143
|
-
const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);
|
|
144
|
-
goal.camera.copy(center).sub(direction);
|
|
145
|
-
goal.focus.copy(center);
|
|
146
|
-
if (is.orthographicCamera(camera)) {
|
|
147
|
-
current.zoom = camera.zoom;
|
|
148
|
-
let maxHeight = 0, maxWidth = 0;
|
|
149
|
-
const vertices = [
|
|
150
|
-
new THREE.Vector3(box.min.x, box.min.y, box.min.z),
|
|
151
|
-
new THREE.Vector3(box.min.x, box.max.y, box.min.z),
|
|
152
|
-
new THREE.Vector3(box.min.x, box.min.y, box.max.z),
|
|
153
|
-
new THREE.Vector3(box.min.x, box.max.y, box.max.z),
|
|
154
|
-
new THREE.Vector3(box.max.x, box.max.y, box.max.z),
|
|
155
|
-
new THREE.Vector3(box.max.x, box.max.y, box.min.z),
|
|
156
|
-
new THREE.Vector3(box.max.x, box.min.y, box.max.z),
|
|
157
|
-
new THREE.Vector3(box.max.x, box.min.y, box.min.z),
|
|
158
|
-
];
|
|
159
|
-
// Transform the center and each corner to camera space
|
|
160
|
-
center.applyMatrix4(camera.matrixWorldInverse);
|
|
161
|
-
for (const v of vertices) {
|
|
162
|
-
v.applyMatrix4(camera.matrixWorldInverse);
|
|
163
|
-
maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));
|
|
164
|
-
maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));
|
|
165
|
-
}
|
|
166
|
-
maxHeight *= 2;
|
|
167
|
-
maxWidth *= 2;
|
|
168
|
-
const zoomForHeight = (camera.top - camera.bottom) / maxHeight;
|
|
169
|
-
const zoomForWidth = (camera.right - camera.left) / maxWidth;
|
|
170
|
-
goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;
|
|
171
|
-
if (!damping) {
|
|
172
|
-
camera.zoom = goal.zoom;
|
|
173
|
-
camera.updateProjectionMatrix();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
if (damping) {
|
|
177
|
-
current.animating = true;
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
camera.position.copy(goal.camera);
|
|
181
|
-
camera.lookAt(goal.focus);
|
|
182
|
-
if (controls) {
|
|
183
|
-
controls.target.copy(goal.focus);
|
|
184
|
-
controls.update();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
if (fitted.observed) {
|
|
188
|
-
fitted.emit(this.getSize());
|
|
189
|
-
}
|
|
190
|
-
invalidate();
|
|
191
|
-
return this;
|
|
192
|
-
},
|
|
193
|
-
};
|
|
194
|
-
});
|
|
195
|
-
this.preventDragHijacking();
|
|
196
|
-
this.scalePointer();
|
|
197
|
-
this.beforeRender();
|
|
198
|
-
}
|
|
199
|
-
preventDragHijacking() {
|
|
200
|
-
effect((onCleanup) => {
|
|
201
|
-
const controls = this.controls();
|
|
202
|
-
if (controls) {
|
|
203
|
-
const callback = () => (this.current.animating = false);
|
|
204
|
-
controls.addEventListener('start', callback);
|
|
205
|
-
onCleanup(() => controls.removeEventListener('start', callback));
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
scalePointer() {
|
|
210
|
-
let count = 0;
|
|
211
|
-
effect(() => {
|
|
212
|
-
const [observe, fit, clip, api] = [
|
|
213
|
-
this.observe(),
|
|
214
|
-
this.fit(),
|
|
215
|
-
this.clip(),
|
|
216
|
-
untracked(this.api),
|
|
217
|
-
this.camera(),
|
|
218
|
-
this.controls(),
|
|
219
|
-
this.size(),
|
|
220
|
-
];
|
|
221
|
-
if (observe || count++ === 0) {
|
|
222
|
-
api.refresh();
|
|
223
|
-
if (fit)
|
|
224
|
-
api.fit();
|
|
225
|
-
if (clip)
|
|
226
|
-
api.clip();
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
beforeRender() {
|
|
231
|
-
injectBeforeRender(({ delta }) => {
|
|
232
|
-
const [{ damping, eps }, camera, controls, invalidate] = [
|
|
233
|
-
this.inputs.get(),
|
|
234
|
-
this.camera(),
|
|
235
|
-
this.controls(),
|
|
236
|
-
this.invalidate(),
|
|
237
|
-
];
|
|
238
|
-
if (this.current.animating) {
|
|
239
|
-
damp(this.current.focus, this.goal.focus, damping, delta);
|
|
240
|
-
damp(this.current.camera, this.goal.camera, damping, delta);
|
|
241
|
-
this.current.zoom = THREE.MathUtils.damp(this.current.zoom, this.goal.zoom, damping, delta);
|
|
242
|
-
camera.position.copy(this.current.camera);
|
|
243
|
-
if (is.orthographicCamera(camera)) {
|
|
244
|
-
camera.zoom = this.current.zoom;
|
|
245
|
-
camera.updateProjectionMatrix();
|
|
246
|
-
}
|
|
247
|
-
if (!controls) {
|
|
248
|
-
camera.lookAt(this.current.focus);
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
controls.target.copy(this.current.focus);
|
|
252
|
-
controls.update();
|
|
253
|
-
}
|
|
254
|
-
invalidate();
|
|
255
|
-
if (is.orthographicCamera(camera) && !(Math.abs(this.current.zoom - this.goal.zoom) < eps))
|
|
256
|
-
return;
|
|
257
|
-
if (!is.orthographicCamera(camera) && !equals(this.current.camera, this.goal.camera, eps))
|
|
258
|
-
return;
|
|
259
|
-
if (controls && !equals(this.current.focus, this.goal.focus, eps))
|
|
260
|
-
return;
|
|
261
|
-
this.current.animating = false;
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsBounds, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsBounds, isStandalone: true, selector: "ngts-bounds", inputs: { boundsRef: "boundsRef", _damping: ["damping", "_damping"], _fit: ["fit", "_fit"], _clip: ["clip", "_clip"], _observe: ["observe", "_observe"], _margin: ["margin", "_margin"], _eps: ["eps", "_eps"] }, outputs: { fitted: "fitted" }, providers: [provideNgtsBoundsApi()], ngImport: i0, template: `
|
|
267
|
-
<ngt-group [ref]="boundsRef">
|
|
268
|
-
<ng-content />
|
|
269
|
-
</ngt-group>
|
|
270
|
-
`, isInline: true }); }
|
|
271
|
-
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsBounds, decorators: [{
|
|
273
|
-
type: Component,
|
|
274
|
-
args: [{
|
|
275
|
-
selector: 'ngts-bounds',
|
|
276
|
-
standalone: true,
|
|
277
|
-
template: `
|
|
278
|
-
<ngt-group [ref]="boundsRef">
|
|
279
|
-
<ng-content />
|
|
280
|
-
</ngt-group>
|
|
281
|
-
`,
|
|
282
|
-
providers: [provideNgtsBoundsApi()],
|
|
283
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
284
|
-
}]
|
|
285
|
-
}], ctorParameters: function () { return []; }, propDecorators: { boundsRef: [{
|
|
286
|
-
type: Input
|
|
287
|
-
}], _damping: [{
|
|
288
|
-
type: Input,
|
|
289
|
-
args: [{ alias: 'damping' }]
|
|
290
|
-
}], _fit: [{
|
|
291
|
-
type: Input,
|
|
292
|
-
args: [{ alias: 'fit' }]
|
|
293
|
-
}], _clip: [{
|
|
294
|
-
type: Input,
|
|
295
|
-
args: [{ alias: 'clip' }]
|
|
296
|
-
}], _observe: [{
|
|
297
|
-
type: Input,
|
|
298
|
-
args: [{ alias: 'observe' }]
|
|
299
|
-
}], _margin: [{
|
|
300
|
-
type: Input,
|
|
301
|
-
args: [{ alias: 'margin' }]
|
|
302
|
-
}], _eps: [{
|
|
303
|
-
type: Input,
|
|
304
|
-
args: [{ alias: 'eps' }]
|
|
305
|
-
}], fitted: [{
|
|
306
|
-
type: Output
|
|
307
|
-
}] } });
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2JvdW5kcy9ib3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxHQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osY0FBYyxFQUNkLEVBQUUsRUFDRixXQUFXLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFOUIsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQWlCbEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFRLEVBQXFCLEVBQUUsQ0FBQyxHQUFHLElBQUssR0FBa0IsQ0FBQyxNQUFNLENBQUM7QUFFbEYsU0FBUyxNQUFNLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQixFQUFFLEdBQVc7SUFDOUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUM1RixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsQ0FBZ0IsRUFBRSxDQUFn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QUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUMvQjtRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F6UVcsVUFBVTtrR0FBVixVQUFVLDJTQUhYLENBQUMsb0JBQW9CLEVBQUUsQ0FBQywwQkFMekI7Ozs7RUFJVDs7MkZBSVcsVUFBVTtrQkFYdEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELFNBQVMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFXUyxTQUFTO3NCQUFqQixLQUFLO2dCQUUyQixRQUFRO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFJRSxJQUFJO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFJTyxLQUFLO3NCQUFsQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFJUyxRQUFRO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFJSyxPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJRyxJQUFJO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFJYixNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDb21wb25lbnQsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0Y29tcHV0ZWQsXG5cdGVmZmVjdCxcblx0Zm9yd2FyZFJlZixcblx0dW50cmFja2VkLFxuXHR0eXBlIFNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRjcmVhdGVJbmplY3Rpb25Ub2tlbixcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aW5qZWN0Tmd0U3RvcmUsXG5cdGlzLFxuXHRzaWduYWxTdG9yZSxcblx0dHlwZSBOZ3RHcm91cCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgR3JvdXAgfSk7XG5cbmV4cG9ydCB0eXBlIE5ndHNCb3VuZHNTaXplID0ge1xuXHRib3g6IFRIUkVFLkJveDM7XG5cdHNpemU6IFRIUkVFLlZlY3RvcjM7XG5cdGNlbnRlcjogVEhSRUUuVmVjdG9yMztcblx0ZGlzdGFuY2U6IG51bWJlcjtcbn07XG5cbnR5cGUgQ29udHJvbHNQcm90byA9IHtcblx0dXBkYXRlKCk6IHZvaWQ7XG5cdHRhcmdldDogVEhSRUUuVmVjdG9yMztcblx0bWF4RGlzdGFuY2U6IG51bWJlcjtcblx0YWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcblx0cmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGlzQm94MyA9IChkZWY6IGFueSk6IGRlZiBpcyBUSFJFRS5Cb3gzID0+IGRlZiAmJiAoZGVmIGFzIFRIUkVFLkJveDMpLmlzQm94MztcblxuZnVuY3Rpb24gZXF1YWxzKGE6IFRIUkVFLlZlY3RvcjMsIGI6IFRIUkVFLlZlY3RvcjMsIGVwczogbnVtYmVyKSB7XG5cdHJldHVybiBNYXRoLmFicyhhLnggLSBiLngpIDwgZXBzICYmIE1hdGguYWJzKGEueSAtIGIueSkgPCBlcHMgJiYgTWF0aC5hYnMoYS56IC0gYi56KSA8IGVwcztcbn1cblxuZnVuY3Rpb24gZGFtcCh2OiBUSFJFRS5WZWN0b3IzLCB0OiBUSFJFRS5WZWN0b3IzLCBsYW1iZGE6IG51bWJlciwgZGVsdGE6IG51bWJlcikge1xuXHR2LnggPSBUSFJFRS5NYXRoVXRpbHMuZGFtcCh2LngsIHQueCwgbGFtYmRhLCBkZWx0YSk7XG5cdHYueSA9IFRIUkVFLk1hdGhVdGlscy5kYW1wKHYueSwgdC55LCBsYW1iZGEsIGRlbHRhKTtcblx0di56ID0gVEhSRUUuTWF0aFV0aWxzLmRhbXAodi56LCB0LnosIGxhbWJkYSwgZGVsdGEpO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RzQm91bmRzU3RhdGUgPSB7XG5cdGRhbXBpbmc6IG51bWJlcjtcblx0Zml0OiBib29sZWFuO1xuXHRjbGlwOiBib29sZWFuO1xuXHRvYnNlcnZlOiBib29sZWFuO1xuXHRtYXJnaW46IG51bWJlcjtcblx0ZXBzOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1ncm91cFxuXHRcdCAqL1xuXHRcdCduZ3RzLWJvdW5kcyc6IE5ndHNCb3VuZHNTdGF0ZSAmIE5ndEdyb3VwO1xuXHR9XG59XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0c0JvdW5kc0FwaSwgcHJvdmlkZU5ndHNCb3VuZHNBcGldID0gY3JlYXRlSW5qZWN0aW9uVG9rZW4oKGJvdW5kczogTmd0c0JvdW5kcykgPT4gYm91bmRzLmFwaSwge1xuXHRpc1Jvb3Q6IGZhbHNlLFxuXHRkZXBzOiBbZm9yd2FyZFJlZigoKSA9PiBOZ3RzQm91bmRzKV0sXG59KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1ib3VuZHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgW3JlZl09XCJib3VuZHNSZWZcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVOZ3RzQm91bmRzQXBpKCldLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNCb3VuZHMge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNCb3VuZHNTdGF0ZT4oe1xuXHRcdGRhbXBpbmc6IDYsXG5cdFx0Zml0OiBmYWxzZSxcblx0XHRjbGlwOiBmYWxzZSxcblx0XHRvYnNlcnZlOiBmYWxzZSxcblx0XHRtYXJnaW46IDEuMixcblx0XHRlcHM6IDAuMDEsXG5cdH0pO1xuXG5cdEBJbnB1dCgpIGJvdW5kc1JlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2RhbXBpbmcnIH0pIHNldCBfZGFtcGluZyhkYW1waW5nOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkYW1waW5nIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmaXQnIH0pIHNldCBfZml0KGZpdDogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZpdCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY2xpcCcgfSkgc2V0IF9jbGlwKGNsaXA6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjbGlwIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdvYnNlcnZlJyB9KSBzZXQgX29ic2VydmUob2JzZXJ2ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG9ic2VydmUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ21hcmdpbicgfSkgc2V0IF9tYXJnaW4obWFyZ2luOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBtYXJnaW4gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2VwcycgfSkgc2V0IF9lcHMoZXBzOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBlcHMgfSk7XG5cdH1cblxuXHRAT3V0cHV0KCkgZml0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3RzQm91bmRzU2l6ZT4oKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBjb250cm9scyA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjb250cm9scycpIGFzIHVua25vd24gYXMgU2lnbmFsPENvbnRyb2xzUHJvdG8+O1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblxuXHRwcml2YXRlIGZpdCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZml0Jyk7XG5cdHByaXZhdGUgY2xpcCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY2xpcCcpO1xuXHRwcml2YXRlIG9ic2VydmUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ29ic2VydmUnKTtcblx0cHJpdmF0ZSBtYXJnaW4gPSB0aGlzLmlucHV0cy5zZWxlY3QoJ21hcmdpbicpO1xuXHRwcml2YXRlIGRhbXBpbmcgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2RhbXBpbmcnKTtcblxuXHRwcml2YXRlIGN1cnJlbnQgPSB7IGFuaW1hdGluZzogZmFsc2UsIGZvY3VzOiBuZXcgVEhSRUUuVmVjdG9yMygpLCBjYW1lcmE6IG5ldyBUSFJFRS5WZWN0b3IzKCksIHpvb206IDEgfTtcblx0cHJpdmF0ZSBnb2FsID0geyBmb2N1czogbmV3IFRIUkVFLlZlY3RvcjMoKSwgY2FtZXJhOiBuZXcgVEhSRUUuVmVjdG9yMygpLCB6b29tOiAxIH07XG5cdHByaXZhdGUgYm94ID0gbmV3IFRIUkVFLkJveDMoKTtcblxuXHRhcGkgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgeyBib3gsIGJvdW5kc1JlZiwgY3VycmVudCwgZ29hbCwgZml0dGVkIH0gPSB0aGlzO1xuXHRcdGNvbnN0IFtjYW1lcmEsIG1hcmdpbiwgY29udHJvbHMsIGludmFsaWRhdGUsIGRhbXBpbmddID0gW1xuXHRcdFx0dGhpcy5jYW1lcmEoKSxcblx0XHRcdHRoaXMubWFyZ2luKCksXG5cdFx0XHR0aGlzLmNvbnRyb2xzKCksXG5cdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdHRoaXMuZGFtcGluZygpLFxuXHRcdF07XG5cblx0XHRmdW5jdGlvbiBnZXRTaXplKCkge1xuXHRcdFx0Y29uc3Qgc2l6ZSA9IGJveC5nZXRTaXplKG5ldyBUSFJFRS5WZWN0b3IzKCkpO1xuXHRcdFx0Y29uc3QgY2VudGVyID0gYm94LmdldENlbnRlcihuZXcgVEhSRUUuVmVjdG9yMygpKTtcblx0XHRcdGNvbnN0IG1heFNpemUgPSBNYXRoLm1heChzaXplLngsIHNpemUueSwgc2l6ZS56KTtcblx0XHRcdGNvbnN0IGZpdEhlaWdodERpc3RhbmNlID0gaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSlcblx0XHRcdFx0PyBtYXhTaXplICogNFxuXHRcdFx0XHQ6IG1heFNpemUgLyAoMiAqIE1hdGguYXRhbigoTWF0aC5QSSAqIGNhbWVyYS5mb3YpIC8gMzYwKSk7XG5cdFx0XHRjb25zdCBmaXRXaWR0aERpc3RhbmNlID0gaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkgPyBtYXhTaXplICogNCA6IGZpdEhlaWdodERpc3RhbmNlIC8gY2FtZXJhLmFzcGVjdDtcblx0XHRcdGNvbnN0IGRpc3RhbmNlID0gbWFyZ2luICogTWF0aC5tYXgoZml0SGVpZ2h0RGlzdGFuY2UsIGZpdFdpZHRoRGlzdGFuY2UpO1xuXHRcdFx0cmV0dXJuIHsgYm94LCBzaXplLCBjZW50ZXIsIGRpc3RhbmNlIH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGdldFNpemUsXG5cdFx0XHRyZWZyZXNoKG9iamVjdD86IFRIUkVFLk9iamVjdDNEIHwgVEhSRUUuQm94Mykge1xuXHRcdFx0XHRpZiAoaXNCb3gzKG9iamVjdCkpIGJveC5jb3B5KG9iamVjdCk7XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IHRhcmdldCA9IG9iamVjdCB8fCBib3VuZHNSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0XHRpZiAoIXRhcmdldCkgcmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0dGFyZ2V0LnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIHRydWUpO1xuXHRcdFx0XHRcdGJveC5zZXRGcm9tT2JqZWN0KHRhcmdldCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGJveC5pc0VtcHR5KCkpIHtcblx0XHRcdFx0XHRjb25zdCBtYXggPSBjYW1lcmEucG9zaXRpb24ubGVuZ3RoKCkgfHwgMTA7XG5cdFx0XHRcdFx0Ym94LnNldEZyb21DZW50ZXJBbmRTaXplKG5ldyBUSFJFRS5WZWN0b3IzKCksIG5ldyBUSFJFRS5WZWN0b3IzKG1heCwgbWF4LCBtYXgpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjb250cm9scz8uY29uc3RydWN0b3IubmFtZSA9PT0gJ09ydGhvZ3JhcGhpY1RyYWNrYmFsbENvbnRyb2xzJykge1xuXHRcdFx0XHRcdC8vIFB1dCBjYW1lcmEgb24gYSBzcGhlcmUgYWxvbmcgd2hpY2ggaXQgc2hvdWxkIG1vdmVcblx0XHRcdFx0XHRjb25zdCB7IGRpc3RhbmNlIH0gPSBnZXRTaXplKCk7XG5cdFx0XHRcdFx0Y29uc3QgZGlyZWN0aW9uID0gY2FtZXJhLnBvc2l0aW9uLmNsb25lKCkuc3ViKGNvbnRyb2xzLnRhcmdldCkubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoZGlzdGFuY2UpO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1BvcyA9IGNvbnRyb2xzLnRhcmdldC5jbG9uZSgpLmFkZChkaXJlY3Rpb24pO1xuXHRcdFx0XHRcdGNhbWVyYS5wb3NpdGlvbi5jb3B5KG5ld1Bvcyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRjbGlwKCkge1xuXHRcdFx0XHRjb25zdCB7IGRpc3RhbmNlIH0gPSBnZXRTaXplKCk7XG5cdFx0XHRcdGlmIChjb250cm9scykgY29udHJvbHMubWF4RGlzdGFuY2UgPSBkaXN0YW5jZSAqIDEwO1xuXHRcdFx0XHRjYW1lcmEubmVhciA9IGRpc3RhbmNlIC8gMTAwO1xuXHRcdFx0XHRjYW1lcmEuZmFyID0gZGlzdGFuY2UgKiAxMDA7XG5cdFx0XHRcdGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0XHRcdGlmIChjb250cm9scykgY29udHJvbHMudXBkYXRlKCk7XG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0dG8oeyBwb3NpdGlvbiwgdGFyZ2V0IH06IHsgcG9zaXRpb246IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTsgdGFyZ2V0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIH0pIHtcblx0XHRcdFx0Y3VycmVudC5jYW1lcmEuY29weShjYW1lcmEucG9zaXRpb24pO1xuXHRcdFx0XHRjb25zdCB7IGNlbnRlciB9ID0gZ2V0U2l6ZSgpO1xuXHRcdFx0XHRnb2FsLmNhbWVyYS5zZXQoLi4ucG9zaXRpb24pO1xuXG5cdFx0XHRcdGlmICh0YXJnZXQpIHtcblx0XHRcdFx0XHRnb2FsLmZvY3VzLnNldCguLi50YXJnZXQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGdvYWwuZm9jdXMuY29weShjZW50ZXIpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGRhbXBpbmcpIHtcblx0XHRcdFx0XHRjdXJyZW50LmFuaW1hdGluZyA9IHRydWU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y2FtZXJhLnBvc2l0aW9uLnNldCguLi5wb3NpdGlvbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRmaXQoKSB7XG5cdFx0XHRcdGN1cnJlbnQuY2FtZXJhLmNvcHkoY2FtZXJhLnBvc2l0aW9uKTtcblx0XHRcdFx0aWYgKGNvbnRyb2xzKSBjdXJyZW50LmZvY3VzLmNvcHkoY29udHJvbHMudGFyZ2V0KTtcblxuXHRcdFx0XHRjb25zdCB7IGNlbnRlciwgZGlzdGFuY2UgfSA9IGdldFNpemUoKTtcblx0XHRcdFx0Y29uc3QgZGlyZWN0aW9uID0gY2VudGVyLmNsb25lKCkuc3ViKGNhbWVyYS5wb3NpdGlvbikubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoZGlzdGFuY2UpO1xuXG5cdFx0XHRcdGdvYWwuY2FtZXJhLmNvcHkoY2VudGVyKS5zdWIoZGlyZWN0aW9uKTtcblx0XHRcdFx0Z29hbC5mb2N1cy5jb3B5KGNlbnRlcik7XG5cblx0XHRcdFx0aWYgKGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpKSB7XG5cdFx0XHRcdFx0Y3VycmVudC56b29tID0gY2FtZXJhLnpvb207XG5cblx0XHRcdFx0XHRsZXQgbWF4SGVpZ2h0ID0gMCxcblx0XHRcdFx0XHRcdG1heFdpZHRoID0gMDtcblx0XHRcdFx0XHRjb25zdCB2ZXJ0aWNlcyA9IFtcblx0XHRcdFx0XHRcdG5ldyBUSFJFRS5WZWN0b3IzKGJveC5taW4ueCwgYm94Lm1pbi55LCBib3gubWluLnopLFxuXHRcdFx0XHRcdFx0bmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1pbi54LCBib3gubWF4LnksIGJveC5taW4ueiksXG5cdFx0XHRcdFx0XHRuZXcgVEhSRUUuVmVjdG9yMyhib3gubWluLngsIGJveC5taW4ueSwgYm94Lm1heC56KSxcblx0XHRcdFx0XHRcdG5ldyBUSFJFRS5WZWN0b3IzKGJveC5taW4ueCwgYm94Lm1heC55LCBib3gubWF4LnopLFxuXHRcdFx0XHRcdFx0bmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1heC54LCBib3gubWF4LnksIGJveC5tYXgueiksXG5cdFx0XHRcdFx0XHRuZXcgVEhSRUUuVmVjdG9yMyhib3gubWF4LngsIGJveC5tYXgueSwgYm94Lm1pbi56KSxcblx0XHRcdFx0XHRcdG5ldyBUSFJFRS5WZWN0b3IzKGJveC5tYXgueCwgYm94Lm1pbi55LCBib3gubWF4LnopLFxuXHRcdFx0XHRcdFx0bmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1heC54LCBib3gubWluLnksIGJveC5taW4ueiksXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHQvLyBUcmFuc2Zvcm0gdGhlIGNlbnRlciBhbmQgZWFjaCBjb3JuZXIgdG8gY2FtZXJhIHNwYWNlXG5cdFx0XHRcdFx0Y2VudGVyLmFwcGx5TWF0cml4NChjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHYgb2YgdmVydGljZXMpIHtcblx0XHRcdFx0XHRcdHYuYXBwbHlNYXRyaXg0KGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuXHRcdFx0XHRcdFx0bWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBNYXRoLmFicyh2LnkgLSBjZW50ZXIueSkpO1xuXHRcdFx0XHRcdFx0bWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgTWF0aC5hYnModi54IC0gY2VudGVyLngpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bWF4SGVpZ2h0ICo9IDI7XG5cdFx0XHRcdFx0bWF4V2lkdGggKj0gMjtcblx0XHRcdFx0XHRjb25zdCB6b29tRm9ySGVpZ2h0ID0gKGNhbWVyYS50b3AgLSBjYW1lcmEuYm90dG9tKSAvIG1heEhlaWdodDtcblx0XHRcdFx0XHRjb25zdCB6b29tRm9yV2lkdGggPSAoY2FtZXJhLnJpZ2h0IC0gY2FtZXJhLmxlZnQpIC8gbWF4V2lkdGg7XG5cdFx0XHRcdFx0Z29hbC56b29tID0gTWF0aC5taW4oem9vbUZvckhlaWdodCwgem9vbUZvcldpZHRoKSAvIG1hcmdpbjtcblx0XHRcdFx0XHRpZiAoIWRhbXBpbmcpIHtcblx0XHRcdFx0XHRcdGNhbWVyYS56b29tID0gZ29hbC56b29tO1xuXHRcdFx0XHRcdFx0Y2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZGFtcGluZykge1xuXHRcdFx0XHRcdGN1cnJlbnQuYW5pbWF0aW5nID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjYW1lcmEucG9zaXRpb24uY29weShnb2FsLmNhbWVyYSk7XG5cdFx0XHRcdFx0Y2FtZXJhLmxvb2tBdChnb2FsLmZvY3VzKTtcblx0XHRcdFx0XHRpZiAoY29udHJvbHMpIHtcblx0XHRcdFx0XHRcdGNvbnRyb2xzLnRhcmdldC5jb3B5KGdvYWwuZm9jdXMpO1xuXHRcdFx0XHRcdFx0Y29udHJvbHMudXBkYXRlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGZpdHRlZC5vYnNlcnZlZCkge1xuXHRcdFx0XHRcdGZpdHRlZC5lbWl0KHRoaXMuZ2V0U2l6ZSgpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHR9O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnByZXZlbnREcmFnSGlqYWNraW5nKCk7XG5cdFx0dGhpcy5zY2FsZVBvaW50ZXIoKTtcblx0XHR0aGlzLmJlZm9yZVJlbmRlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSBwcmV2ZW50RHJhZ0hpamFja2luZygpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzKCk7XG5cdFx0XHRpZiAoY29udHJvbHMpIHtcblx0XHRcdFx0Y29uc3QgY2FsbGJhY2sgPSAoKSA9PiAodGhpcy5jdXJyZW50LmFuaW1hdGluZyA9IGZhbHNlKTtcblx0XHRcdFx0Y29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignc3RhcnQnLCBjYWxsYmFjayk7XG5cdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFydCcsIGNhbGxiYWNrKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIHNjYWxlUG9pbnRlcigpIHtcblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbb2JzZXJ2ZSwgZml0LCBjbGlwLCBhcGldID0gW1xuXHRcdFx0XHR0aGlzLm9ic2VydmUoKSxcblx0XHRcdFx0dGhpcy5maXQoKSxcblx0XHRcdFx0dGhpcy5jbGlwKCksXG5cdFx0XHRcdHVudHJhY2tlZCh0aGlzLmFwaSksXG5cdFx0XHRcdHRoaXMuY2FtZXJhKCksXG5cdFx0XHRcdHRoaXMuY29udHJvbHMoKSxcblx0XHRcdFx0dGhpcy5zaXplKCksXG5cdFx0XHRdO1xuXG5cdFx0XHRpZiAob2JzZXJ2ZSB8fCBjb3VudCsrID09PSAwKSB7XG5cdFx0XHRcdGFwaS5yZWZyZXNoKCk7XG5cdFx0XHRcdGlmIChmaXQpIGFwaS5maXQoKTtcblx0XHRcdFx0aWYgKGNsaXApIGFwaS5jbGlwKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgZGVsdGEgfSkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgZGFtcGluZywgZXBzIH0sIGNhbWVyYSwgY29udHJvbHMsIGludmFsaWRhdGVdID0gW1xuXHRcdFx0XHR0aGlzLmlucHV0cy5nZXQoKSxcblx0XHRcdFx0dGhpcy5jYW1lcmEoKSxcblx0XHRcdFx0dGhpcy5jb250cm9scygpLFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdF07XG5cblx0XHRcdGlmICh0aGlzLmN1cnJlbnQuYW5pbWF0aW5nKSB7XG5cdFx0XHRcdGRhbXAodGhpcy5jdXJyZW50LmZvY3VzLCB0aGlzLmdvYWwuZm9jdXMsIGRhbXBpbmcsIGRlbHRhKTtcblx0XHRcdFx0ZGFtcCh0aGlzLmN1cnJlbnQuY2FtZXJhLCB0aGlzLmdvYWwuY2FtZXJhLCBkYW1waW5nLCBkZWx0YSk7XG5cdFx0XHRcdHRoaXMuY3VycmVudC56b29tID0gVEhSRUUuTWF0aFV0aWxzLmRhbXAodGhpcy5jdXJyZW50Lnpvb20sIHRoaXMuZ29hbC56b29tLCBkYW1waW5nLCBkZWx0YSk7XG5cdFx0XHRcdGNhbWVyYS5wb3NpdGlvbi5jb3B5KHRoaXMuY3VycmVudC5jYW1lcmEpO1xuXG5cdFx0XHRcdGlmIChpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSkge1xuXHRcdFx0XHRcdGNhbWVyYS56b29tID0gdGhpcy5jdXJyZW50Lnpvb207XG5cdFx0XHRcdFx0Y2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghY29udHJvbHMpIHtcblx0XHRcdFx0XHRjYW1lcmEubG9va0F0KHRoaXMuY3VycmVudC5mb2N1cyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udHJvbHMudGFyZ2V0LmNvcHkodGhpcy5jdXJyZW50LmZvY3VzKTtcblx0XHRcdFx0XHRjb250cm9scy51cGRhdGUoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0aWYgKGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpICYmICEoTWF0aC5hYnModGhpcy5jdXJyZW50Lnpvb20gLSB0aGlzLmdvYWwuem9vbSkgPCBlcHMpKSByZXR1cm47XG5cdFx0XHRcdGlmICghaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkgJiYgIWVxdWFscyh0aGlzLmN1cnJlbnQuY2FtZXJhLCB0aGlzLmdvYWwuY2FtZXJhLCBlcHMpKSByZXR1cm47XG5cdFx0XHRcdGlmIChjb250cm9scyAmJiAhZXF1YWxzKHRoaXMuY3VycmVudC5mb2N1cywgdGhpcy5nb2FsLmZvY3VzLCBlcHMpKSByZXR1cm47XG5cdFx0XHRcdHRoaXMuY3VycmVudC5hbmltYXRpbmcgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, computed, effect } from '@angular/core';
|
|
2
|
-
import { injectBeforeRender, injectNgtStore, signalStore } from 'angular-three';
|
|
3
|
-
import { SimplexNoise } from 'three-stdlib';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NgtsCameraShake {
|
|
6
|
-
set _intensity(intensity) {
|
|
7
|
-
this.inputs.set({ intensity });
|
|
8
|
-
}
|
|
9
|
-
set _decay(decay) {
|
|
10
|
-
this.inputs.set({ decay });
|
|
11
|
-
}
|
|
12
|
-
set _decayRate(decayRate) {
|
|
13
|
-
this.inputs.set({ decayRate });
|
|
14
|
-
}
|
|
15
|
-
set _maxYaw(maxYaw) {
|
|
16
|
-
this.inputs.set({ maxYaw });
|
|
17
|
-
}
|
|
18
|
-
set _maxPitch(maxPitch) {
|
|
19
|
-
this.inputs.set({ maxPitch });
|
|
20
|
-
}
|
|
21
|
-
set _maxRoll(maxRoll) {
|
|
22
|
-
this.inputs.set({ maxRoll });
|
|
23
|
-
}
|
|
24
|
-
set _yawFrequency(yawFrequency) {
|
|
25
|
-
this.inputs.set({ yawFrequency });
|
|
26
|
-
}
|
|
27
|
-
set _pitchFrequency(pitchFrequency) {
|
|
28
|
-
this.inputs.set({ pitchFrequency });
|
|
29
|
-
}
|
|
30
|
-
set _rollFrequency(rollFrequency) {
|
|
31
|
-
this.inputs.set({ rollFrequency });
|
|
32
|
-
}
|
|
33
|
-
constructor() {
|
|
34
|
-
this.inputs = signalStore({
|
|
35
|
-
intensity: 1,
|
|
36
|
-
decayRate: 0.65,
|
|
37
|
-
maxYaw: 0.1,
|
|
38
|
-
maxPitch: 0.1,
|
|
39
|
-
maxRoll: 0.1,
|
|
40
|
-
yawFrequency: 0.1,
|
|
41
|
-
pitchFrequency: 0.1,
|
|
42
|
-
rollFrequency: 0.1,
|
|
43
|
-
});
|
|
44
|
-
this.store = injectNgtStore();
|
|
45
|
-
this.camera = this.store.select('camera');
|
|
46
|
-
this.controls = this.store.select('controls');
|
|
47
|
-
this.initialRotation = this.store.get('camera').rotation.clone();
|
|
48
|
-
this.yawNoise = new SimplexNoise();
|
|
49
|
-
this.rollNoise = new SimplexNoise();
|
|
50
|
-
this.pitchNoise = new SimplexNoise();
|
|
51
|
-
this.intensity = this.inputs.select('intensity');
|
|
52
|
-
this.constrainedIntensity = computed(() => {
|
|
53
|
-
const intensity = this.intensity();
|
|
54
|
-
if (intensity < 0 || intensity > 1) {
|
|
55
|
-
return intensity < 0 ? 0 : 1;
|
|
56
|
-
}
|
|
57
|
-
return intensity;
|
|
58
|
-
});
|
|
59
|
-
this.beforeRender();
|
|
60
|
-
this.setEvents();
|
|
61
|
-
}
|
|
62
|
-
beforeRender() {
|
|
63
|
-
injectBeforeRender(({ clock, delta }) => {
|
|
64
|
-
const [{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate }, intensity, camera,] = [this.inputs.get(), this.constrainedIntensity(), this.camera()];
|
|
65
|
-
const shake = Math.pow(intensity, 2);
|
|
66
|
-
const yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);
|
|
67
|
-
const pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);
|
|
68
|
-
const roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);
|
|
69
|
-
camera.rotation.set(this.initialRotation.x + pitch, this.initialRotation.y + yaw, this.initialRotation.z + roll);
|
|
70
|
-
if (decay && intensity > 0) {
|
|
71
|
-
this.inputs.set((state) => ({ intensity: state.intensity - decayRate * delta }));
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
setEvents() {
|
|
76
|
-
effect((onCleanup) => {
|
|
77
|
-
const [camera, controls] = [this.camera(), this.controls()];
|
|
78
|
-
if (controls) {
|
|
79
|
-
const callback = () => void (this.initialRotation = camera.rotation.clone());
|
|
80
|
-
controls.addEventListener('change', callback);
|
|
81
|
-
callback();
|
|
82
|
-
onCleanup(() => void controls.removeEventListener('change', callback));
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
87
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { _intensity: ["intensity", "_intensity"], _decay: ["decay", "_decay"], _decayRate: ["decayRate", "_decayRate"], _maxYaw: ["maxYaw", "_maxYaw"], _maxPitch: ["maxPitch", "_maxPitch"], _maxRoll: ["maxRoll", "_maxRoll"], _yawFrequency: ["yawFrequency", "_yawFrequency"], _pitchFrequency: ["pitchFrequency", "_pitchFrequency"], _rollFrequency: ["rollFrequency", "_rollFrequency"] }, ngImport: i0 }); }
|
|
88
|
-
}
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsCameraShake, decorators: [{
|
|
90
|
-
type: Directive,
|
|
91
|
-
args: [{
|
|
92
|
-
selector: 'ngts-camera-shake',
|
|
93
|
-
standalone: true,
|
|
94
|
-
}]
|
|
95
|
-
}], ctorParameters: function () { return []; }, propDecorators: { _intensity: [{
|
|
96
|
-
type: Input,
|
|
97
|
-
args: [{ alias: 'intensity' }]
|
|
98
|
-
}], _decay: [{
|
|
99
|
-
type: Input,
|
|
100
|
-
args: [{ alias: 'decay' }]
|
|
101
|
-
}], _decayRate: [{
|
|
102
|
-
type: Input,
|
|
103
|
-
args: [{ alias: 'decayRate' }]
|
|
104
|
-
}], _maxYaw: [{
|
|
105
|
-
type: Input,
|
|
106
|
-
args: [{ alias: 'maxYaw' }]
|
|
107
|
-
}], _maxPitch: [{
|
|
108
|
-
type: Input,
|
|
109
|
-
args: [{ alias: 'maxPitch' }]
|
|
110
|
-
}], _maxRoll: [{
|
|
111
|
-
type: Input,
|
|
112
|
-
args: [{ alias: 'maxRoll' }]
|
|
113
|
-
}], _yawFrequency: [{
|
|
114
|
-
type: Input,
|
|
115
|
-
args: [{ alias: 'yawFrequency' }]
|
|
116
|
-
}], _pitchFrequency: [{
|
|
117
|
-
type: Input,
|
|
118
|
-
args: [{ alias: 'pitchFrequency' }]
|
|
119
|
-
}], _rollFrequency: [{
|
|
120
|
-
type: Input,
|
|
121
|
-
args: [{ alias: 'rollFrequency' }]
|
|
122
|
-
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLXNoYWtlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2NhbWVyYS1zaGFrZS9jYW1lcmEtc2hha2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQStCNUMsTUFBTSxPQUFPLGVBQWU7SUFZM0IsSUFBbUMsVUFBVSxDQUFDLFNBQWlCO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBK0IsTUFBTSxDQUFDLEtBQWM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFtQyxVQUFVLENBQUMsU0FBaUI7UUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFnQyxPQUFPLENBQUMsTUFBYztRQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQWtDLFNBQVMsQ0FBQyxRQUFnQjtRQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQWlDLFFBQVEsQ0FBQyxPQUFlO1FBQ3hELElBQUksQ0FBQyxNQUFNLENB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LENBQUMsQ0FBQztnQkFDOUMsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQ3ZFO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQTFHVyxlQUFlO2tHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBSjNCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzBFQWFtQyxVQUFVO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFJRSxNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJVSxVQUFVO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFJRyxPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJUSxTQUFTO3NCQUExQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFJSyxRQUFRO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFJVyxhQUFhO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtnQkFJUSxlQUFlO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO2dCQUlLLGNBQWM7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgY29tcHV0ZWQsIGVmZmVjdCwgdHlwZSBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0U3RvcmUsIHNpZ25hbFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTaW1wbGV4Tm9pc2UgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG50eXBlIENvbnRyb2xzUHJvdG8gPSB7XG5cdHVwZGF0ZSgpOiB2b2lkO1xuXHR0YXJnZXQ6IFRIUkVFLlZlY3RvcjM7XG5cdGFkZEV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG5cdHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzQ2FtZXJhU2hha2VTdGF0ZSA9IHtcblx0ZGVjYXk/OiBib29sZWFuO1xuXHRpbnRlbnNpdHk6IG51bWJlcjtcblx0ZGVjYXlSYXRlOiBudW1iZXI7XG5cdG1heFlhdzogbnVtYmVyO1xuXHRtYXhQaXRjaDogbnVtYmVyO1xuXHRtYXhSb2xsOiBudW1iZXI7XG5cdHlhd0ZyZXF1ZW5jeTogbnVtYmVyO1xuXHRwaXRjaEZyZXF1ZW5jeTogbnVtYmVyO1xuXHRyb2xsRnJlcXVlbmN5OiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3RzLWNhbWVyYS1zaGFrZSc6IE5ndHNDYW1lcmFTaGFrZVN0YXRlO1xuXHR9XG59XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25ndHMtY2FtZXJhLXNoYWtlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0NhbWVyYVNoYWtlIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzQ2FtZXJhU2hha2VTdGF0ZT4oe1xuXHRcdGludGVuc2l0eTogMSxcblx0XHRkZWNheVJhdGU6IDAuNjUsXG5cdFx0bWF4WWF3OiAwLjEsXG5cdFx0bWF4UGl0Y2g6IDAuMSxcblx0XHRtYXhSb2xsOiAwLjEsXG5cdFx0eWF3RnJlcXVlbmN5OiAwLjEsXG5cdFx0cGl0Y2hGcmVxdWVuY3k6IDAuMSxcblx0XHRyb2xsRnJlcXVlbmN5OiAwLjEsXG5cdH0pO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnaW50ZW5zaXR5JyB9KSBzZXQgX2ludGVuc2l0eShpbnRlbnNpdHk6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGludGVuc2l0eSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGVjYXknIH0pIHNldCBfZGVjYXkoZGVjYXk6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkZWNheSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGVjYXlSYXRlJyB9KSBzZXQgX2RlY2F5UmF0ZShkZWNheVJhdGU6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRlY2F5UmF0ZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbWF4WWF3JyB9KSBzZXQgX21heFlhdyhtYXhZYXc6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG1heFlhdyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbWF4UGl0Y2gnIH0pIHNldCBfbWF4UGl0Y2gobWF4UGl0Y2g6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG1heFBpdGNoIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdtYXhSb2xsJyB9KSBzZXQgX21heFJvbGwobWF4Um9sbDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbWF4Um9sbCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAneWF3RnJlcXVlbmN5JyB9KSBzZXQgX3lhd0ZyZXF1ZW5jeSh5YXdGcmVxdWVuY3k6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHlhd0ZyZXF1ZW5jeSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncGl0Y2hGcmVxdWVuY3knIH0pIHNldCBfcGl0Y2hGcmVxdWVuY3kocGl0Y2hGcmVxdWVuY3k6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHBpdGNoRnJlcXVlbmN5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdyb2xsRnJlcXVlbmN5JyB9KSBzZXQgX3JvbGxGcmVxdWVuY3kocm9sbEZyZXF1ZW5jeTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcm9sbEZyZXF1ZW5jeSB9KTtcblx0fVxuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBjb250cm9scyA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjb250cm9scycpIGFzIHVua25vd24gYXMgU2lnbmFsPENvbnRyb2xzUHJvdG8+O1xuXG5cdHByaXZhdGUgaW5pdGlhbFJvdGF0aW9uID0gdGhpcy5zdG9yZS5nZXQoJ2NhbWVyYScpLnJvdGF0aW9uLmNsb25lKCk7XG5cdHByaXZhdGUgeWF3Tm9pc2UgPSBuZXcgU2ltcGxleE5vaXNlKCk7XG5cdHByaXZhdGUgcm9sbE5vaXNlID0gbmV3IFNpbXBsZXhOb2lzZSgpO1xuXHRwcml2YXRlIHBpdGNoTm9pc2UgPSBuZXcgU2ltcGxleE5vaXNlKCk7XG5cblx0cHJpdmF0ZSBpbnRlbnNpdHkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ludGVuc2l0eScpO1xuXHRwcml2YXRlIGNvbnN0cmFpbmVkSW50ZW5zaXR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGludGVuc2l0eSA9IHRoaXMuaW50ZW5zaXR5KCk7XG5cdFx0aWYgKGludGVuc2l0eSA8IDAgfHwgaW50ZW5zaXR5ID4gMSkge1xuXHRcdFx0cmV0dXJuIGludGVuc2l0eSA8IDAgPyAwIDogMTtcblx0XHR9XG5cdFx0cmV0dXJuIGludGVuc2l0eTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5iZWZvcmVSZW5kZXIoKTtcblx0XHR0aGlzLnNldEV2ZW50cygpO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNsb2NrLCBkZWx0YSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbXG5cdFx0XHRcdHsgbWF4WWF3LCB5YXdGcmVxdWVuY3ksIG1heFBpdGNoLCBwaXRjaEZyZXF1ZW5jeSwgbWF4Um9sbCwgcm9sbEZyZXF1ZW5jeSwgZGVjYXksIGRlY2F5UmF0ZSB9LFxuXHRcdFx0XHRpbnRlbnNpdHksXG5cdFx0XHRcdGNhbWVyYSxcblx0XHRcdF0gPSBbdGhpcy5pbnB1dHMuZ2V0KCksIHRoaXMuY29uc3RyYWluZWRJbnRlbnNpdHkoKSwgdGhpcy5jYW1lcmEoKV07XG5cblx0XHRcdGNvbnN0IHNoYWtlID0gTWF0aC5wb3coaW50ZW5zaXR5LCAyKTtcblx0XHRcdGNvbnN0IHlhdyA9IG1heFlhdyAqIHNoYWtlICogdGhpcy55YXdOb2lzZS5ub2lzZShjbG9jay5lbGFwc2VkVGltZSAqIHlhd0ZyZXF1ZW5jeSwgMSk7XG5cdFx0XHRjb25zdCBwaXRjaCA9IG1heFBpdGNoICogc2hha2UgKiB0aGlzLnBpdGNoTm9pc2Uubm9pc2UoY2xvY2suZWxhcHNlZFRpbWUgKiBwaXRjaEZyZXF1ZW5jeSwgMSk7XG5cdFx0XHRjb25zdCByb2xsID0gbWF4Um9sbCAqIHNoYWtlICogdGhpcy5yb2xsTm9pc2Uubm9pc2UoY2xvY2suZWxhcHNlZFRpbWUgKiByb2xsRnJlcXVlbmN5LCAxKTtcblxuXHRcdFx0Y2FtZXJhLnJvdGF0aW9uLnNldChcblx0XHRcdFx0dGhpcy5pbml0aWFsUm90YXRpb24ueCArIHBpdGNoLFxuXHRcdFx0XHR0aGlzLmluaXRpYWxSb3RhdGlvbi55ICsgeWF3LFxuXHRcdFx0XHR0aGlzLmluaXRpYWxSb3RhdGlvbi56ICsgcm9sbCxcblx0XHRcdCk7XG5cblx0XHRcdGlmIChkZWNheSAmJiBpbnRlbnNpdHkgPiAwKSB7XG5cdFx0XHRcdHRoaXMuaW5wdXRzLnNldCgoc3RhdGUpID0+ICh7IGludGVuc2l0eTogc3RhdGUuaW50ZW5zaXR5IC0gZGVjYXlSYXRlICogZGVsdGEgfSkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRFdmVudHMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtjYW1lcmEsIGNvbnRyb2xzXSA9IFt0aGlzLmNhbWVyYSgpLCB0aGlzLmNvbnRyb2xzKCldO1xuXHRcdFx0aWYgKGNvbnRyb2xzKSB7XG5cdFx0XHRcdGNvbnN0IGNhbGxiYWNrID0gKCkgPT4gdm9pZCAodGhpcy5pbml0aWFsUm90YXRpb24gPSBjYW1lcmEucm90YXRpb24uY2xvbmUoKSk7XG5cdFx0XHRcdGNvbnRyb2xzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGNhbGxiYWNrKTtcblx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0b25DbGVhbnVwKCgpID0+IHZvaWQgY29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2FsbGJhY2spKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|