angular-three-soba 2.0.0-beta.2 → 2.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/billboard/billboard.d.ts +11 -7
- package/abstractions/detailed/detailed.d.ts +26 -0
- package/abstractions/edges/edges.d.ts +24 -12
- package/abstractions/grid/grid.d.ts +50 -0
- package/abstractions/index.d.ts +2 -7
- package/abstractions/text/text.d.ts +10 -5
- package/abstractions/text-3d/text-3d.d.ts +51 -41
- package/cameras/camera/camera-content.d.ts +1 -1
- package/cameras/camera/camera.d.ts +16 -13
- package/cameras/cube-camera/cube-camera.d.ts +50 -23
- package/cameras/index.d.ts +0 -1
- package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
- package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
- package/controls/orbit-controls/orbit-controls.d.ts +31 -12
- package/esm2022/abstractions/billboard/billboard.mjs +36 -33
- package/esm2022/abstractions/detailed/detailed.mjs +64 -0
- package/esm2022/abstractions/edges/edges.mjs +58 -63
- package/esm2022/abstractions/grid/grid.mjs +180 -0
- package/esm2022/abstractions/index.mjs +3 -8
- package/esm2022/abstractions/text/text.mjs +123 -124
- package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
- package/esm2022/cameras/camera/camera-content.mjs +6 -6
- package/esm2022/cameras/camera/camera.mjs +48 -42
- package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
- package/esm2022/cameras/index.mjs +1 -2
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +105 -85
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +197 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +150 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
- package/esm2022/gizmos/index.mjs +4 -0
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
- package/esm2022/loaders/loader/loader.mjs +92 -87
- package/esm2022/loaders/progress/progress.mjs +29 -29
- package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
- package/esm2022/materials/index.mjs +2 -1
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +102 -99
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
- package/esm2022/materials/point-material/point-material.mjs +50 -0
- package/esm2022/misc/animations/animations.mjs +36 -32
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
- package/esm2022/misc/caustics/caustics.mjs +387 -0
- package/esm2022/misc/decal/decal.mjs +187 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
- package/esm2022/misc/example/example.mjs +160 -0
- package/esm2022/misc/fbo/fbo.mjs +35 -35
- package/esm2022/misc/html/html-wrapper.mjs +478 -0
- package/esm2022/misc/html/html.mjs +304 -0
- package/esm2022/misc/index.mjs +10 -1
- 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 +8 -0
- package/esm2022/performances/instances/instances.mjs +220 -0
- package/esm2022/performances/instances/position-mesh.mjs +52 -0
- package/esm2022/performances/points/points-input.mjs +64 -0
- package/esm2022/performances/points/points.mjs +326 -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/blur-pass/blur-pass.mjs +2 -2
- 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 +1 -1
- package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
- package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
- package/esm2022/shaders/index.mjs +6 -3
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
- package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
- package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
- package/esm2022/staging/backdrop/backdrop.mjs +77 -0
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
- package/esm2022/staging/bounds/bounds.mjs +144 -143
- package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
- package/esm2022/staging/center/center.mjs +129 -112
- package/esm2022/staging/cloud/cloud.mjs +118 -124
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
- package/esm2022/staging/environment/assets.mjs +12 -12
- package/esm2022/staging/environment/environment-cube.mjs +28 -30
- package/esm2022/staging/environment/environment-ground.mjs +17 -19
- package/esm2022/staging/environment/environment-input.mjs +98 -85
- package/esm2022/staging/environment/environment-map.mjs +33 -33
- package/esm2022/staging/environment/environment-portal.mjs +75 -97
- package/esm2022/staging/environment/environment.mjs +34 -51
- package/esm2022/staging/environment/utils.mjs +37 -15
- package/esm2022/staging/float/float.mjs +70 -58
- package/esm2022/staging/index.mjs +7 -3
- 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 +85 -80
- package/esm2022/staging/sparkles/sparkles.mjs +108 -105
- 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 +67 -58
- package/esm2022/staging/spot-light/spot-light.mjs +51 -64
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
- package/esm2022/staging/stage/stage.mjs +305 -290
- package/esm2022/staging/stars/stars.mjs +101 -102
- package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
- package/esm2022/staging/wireframe/wireframe.mjs +228 -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 +514 -1947
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +302 -259
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +104 -83
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +1043 -0
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
- package/fesm2022/angular-three-soba-loaders.mjs +121 -117
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +662 -592
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2214 -105
- 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 +956 -0
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
- package/fesm2022/angular-three-soba-shaders.mjs +549 -252
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2899 -2563
- 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/gizmos/README.md +3 -0
- package/gizmos/gizmo-helper/gizmo-helper.d.ts +69 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
- package/gizmos/index.d.ts +3 -0
- package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
- package/loaders/loader/loader.d.ts +19 -17
- package/loaders/progress/progress.d.ts +1 -1
- package/loaders/texture-loader/texture-loader.d.ts +2 -2
- package/materials/index.d.ts +1 -0
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
- package/materials/point-material/point-material.d.ts +24 -0
- package/metadata.json +1 -0
- package/misc/animations/animations.d.ts +6 -4
- package/misc/caustics/caustics.d.ts +87 -0
- package/misc/decal/decal.d.ts +49 -0
- package/misc/depth-buffer/depth-buffer.d.ts +2 -2
- package/misc/example/example.d.ts +81 -0
- package/misc/fbo/fbo.d.ts +2 -2
- package/misc/html/html-wrapper.d.ts +559 -0
- package/misc/html/html.d.ts +214 -0
- package/misc/index.d.ts +9 -0
- 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 +31 -16
- package/performances/README.md +3 -0
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
- package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
- package/performances/index.d.ts +7 -0
- package/performances/instances/instances.d.ts +79 -0
- package/{performance → performances}/instances/position-mesh.d.ts +1 -1
- 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/grid-material/grid-material.d.ts +37 -0
- package/shaders/index.d.ts +5 -2
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +147 -2
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
- package/shaders/shader-material/shader-material.d.ts +2 -2
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
- package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
- package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
- package/shaders/star-field-material/star-field-material.d.ts +11 -1
- package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
- package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
- package/staging/backdrop/backdrop.d.ts +30 -0
- package/staging/bb-anchor/bb-anchor.d.ts +27 -0
- package/staging/bounds/bounds.d.ts +100 -24
- package/staging/camera-shake/camera-shake.d.ts +30 -19
- package/staging/center/center.d.ts +43 -35
- package/staging/cloud/cloud.d.ts +26 -23
- package/staging/contact-shadows/contact-shadows.d.ts +41 -28
- package/staging/environment/assets.d.ts +9 -9
- package/staging/environment/environment-cube.d.ts +9 -5
- package/staging/environment/environment-ground.d.ts +7 -7
- package/staging/environment/environment-input.d.ts +37 -37
- package/staging/environment/environment-map.d.ts +10 -5
- package/staging/environment/environment-portal.d.ts +10 -5
- package/staging/environment/environment.d.ts +0 -4
- package/staging/environment/utils.d.ts +2 -2
- package/staging/float/float.d.ts +14 -10
- package/staging/index.d.ts +6 -2
- 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 +28 -21
- package/staging/sparkles/sparkles.d.ts +36 -22
- 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 +25 -25
- package/staging/spot-light/spot-light.d.ts +31 -15
- package/staging/spot-light/volumetric-mesh.d.ts +15 -9
- package/staging/stage/stage.d.ts +89 -65
- package/staging/stars/stars.d.ts +28 -17
- 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/catmull-rom-line/catmull-rom-line.d.ts +0 -25
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
- package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
- package/abstractions/line/line-input.d.ts +0 -42
- package/abstractions/line/line.d.ts +0 -35
- package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
- package/esm2022/abstractions/line/line-input.mjs +0 -113
- package/esm2022/abstractions/line/line.mjs +0 -165
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
- package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
- package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
- package/esm2022/performance/detailed/detailed.mjs +0 -61
- package/esm2022/performance/index.mjs +0 -7
- package/esm2022/performance/instances/instance.mjs +0 -48
- package/esm2022/performance/instances/instances.mjs +0 -189
- package/esm2022/performance/instances/position-mesh.mjs +0 -52
- package/esm2022/performance/stats/stats.mjs +0 -79
- package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
- package/esm2022/staging/caustics/caustisc.mjs +0 -384
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
- package/fesm2022/angular-three-soba-performance.mjs +0 -487
- package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
- package/performance/README.md +0 -3
- package/performance/adaptive/adaptive-dpr.d.ts +0 -8
- package/performance/detailed/detailed.d.ts +0 -20
- package/performance/index.d.ts +0 -6
- package/performance/instances/instance.d.ts +0 -9
- package/performance/instances/instances.d.ts +0 -35
- package/performance/stats/stats.d.ts +0 -18
- package/plugin/generators.json +0 -19
- package/plugin/libs/plugin/README.md +0 -11
- 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/staging/caustics/caustisc.d.ts +0 -70
- package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
- /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
|
@@ -1,62 +1,56 @@
|
|
|
1
1
|
import { NgIf } from '@angular/common';
|
|
2
|
-
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect,
|
|
3
|
-
import { extend, getLocalState, injectBeforeRender, injectNgtRef,
|
|
2
|
+
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, Input } from '@angular/core';
|
|
3
|
+
import { extend, getLocalState, injectBeforeRender, injectNgtRef, injectNgtStore, NgtKey, signalStore, } from 'angular-three';
|
|
4
4
|
import { MeshRefractionMaterial } from 'angular-three-soba/shaders';
|
|
5
|
-
import { MeshBVH, SAH } from 'three-mesh-bvh';
|
|
5
|
+
import { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
extend({ MeshRefractionMaterial });
|
|
8
8
|
const isCubeTexture = (def) => def && def.isCubeTexture;
|
|
9
|
-
class NgtsMeshRefractionMaterial
|
|
9
|
+
export class NgtsMeshRefractionMaterial {
|
|
10
10
|
/** Environment map */
|
|
11
|
-
set
|
|
12
|
-
this.set({ envMap });
|
|
11
|
+
set _envMap(envMap) {
|
|
12
|
+
this.inputs.set({ envMap });
|
|
13
13
|
}
|
|
14
14
|
/** Number of ray-cast bounces, it can be expensive to have too many, 2 */
|
|
15
|
-
set
|
|
16
|
-
this.set({ bounces });
|
|
15
|
+
set _bounces(bounces) {
|
|
16
|
+
this.inputs.set({ bounces });
|
|
17
17
|
}
|
|
18
18
|
/** Refraction index, 2.4 */
|
|
19
|
-
set
|
|
20
|
-
this.set({ ior });
|
|
19
|
+
set _ior(ior) {
|
|
20
|
+
this.inputs.set({ ior });
|
|
21
21
|
}
|
|
22
22
|
/** Fresnel (strip light), 0 */
|
|
23
|
-
set
|
|
24
|
-
this.set({ fresnel });
|
|
23
|
+
set _fresnel(fresnel) {
|
|
24
|
+
this.inputs.set({ fresnel });
|
|
25
25
|
}
|
|
26
26
|
/** RGB shift intensity, can be expensive, 0 */
|
|
27
|
-
set
|
|
28
|
-
this.set({ aberrationStrength });
|
|
27
|
+
set _aberrationStrength(aberrationStrength) {
|
|
28
|
+
this.inputs.set({ aberrationStrength });
|
|
29
29
|
}
|
|
30
30
|
/** Color, white */
|
|
31
|
-
set
|
|
32
|
-
this.set({ color });
|
|
31
|
+
set _color(color) {
|
|
32
|
+
this.inputs.set({ color });
|
|
33
33
|
}
|
|
34
34
|
/** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */
|
|
35
|
-
set
|
|
36
|
-
this.set({ fastChroma });
|
|
35
|
+
set _fastChroma(fastChroma) {
|
|
36
|
+
this.inputs.set({ fastChroma });
|
|
37
37
|
}
|
|
38
|
-
#store;
|
|
39
|
-
#size;
|
|
40
|
-
#envMap;
|
|
41
38
|
constructor() {
|
|
42
|
-
|
|
39
|
+
this.inputs = signalStore({ aberrationStrength: 0, fastChroma: true });
|
|
43
40
|
this.materialRef = injectNgtRef();
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
51
|
-
this
|
|
52
|
-
this
|
|
53
|
-
this.#envMap = this.select('envMap');
|
|
41
|
+
this.envMap = this.inputs.select('envMap');
|
|
42
|
+
this.bounces = this.inputs.select('bounces');
|
|
43
|
+
this.ior = this.inputs.select('ior');
|
|
44
|
+
this.fresnel = this.inputs.select('fresnel');
|
|
45
|
+
this.aberrationStrength = this.inputs.select('aberrationStrength');
|
|
46
|
+
this.color = this.inputs.select('color');
|
|
47
|
+
this.fastChroma = this.inputs.select('fastChroma');
|
|
48
|
+
this.store = injectNgtStore();
|
|
49
|
+
this.size = this.store.select('size');
|
|
54
50
|
this.defines = computed(() => {
|
|
55
|
-
const envMap = this
|
|
51
|
+
const [envMap, aberrationStrength, fastChroma] = [this.envMap(), this.aberrationStrength(), this.fastChroma()];
|
|
56
52
|
if (!envMap)
|
|
57
53
|
return null;
|
|
58
|
-
const aberrationStrength = this.refractionAberrationStrength();
|
|
59
|
-
const fastChroma = this.refractionFastChroma();
|
|
60
54
|
const temp = {};
|
|
61
55
|
// Sampler2D and SamplerCube need different defines
|
|
62
56
|
const isCubeMap = isCubeTexture(envMap);
|
|
@@ -78,91 +72,100 @@ class NgtsMeshRefractionMaterial extends NgtSignalStore {
|
|
|
78
72
|
temp['FAST_CHROMA'] = '';
|
|
79
73
|
return temp;
|
|
80
74
|
});
|
|
81
|
-
this.resolution = computed(() => [this
|
|
75
|
+
this.resolution = computed(() => [this.size().width, this.size().height]);
|
|
82
76
|
injectBeforeRender(({ camera }) => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
77
|
+
const material = this.materialRef.nativeElement;
|
|
78
|
+
if (material) {
|
|
79
|
+
material.viewMatrixInverse = camera.matrixWorld;
|
|
80
|
+
material.projectionMatrixInverse = camera.projectionMatrixInverse;
|
|
86
81
|
}
|
|
87
82
|
});
|
|
88
|
-
this
|
|
83
|
+
this.setupGeometry();
|
|
89
84
|
}
|
|
90
|
-
|
|
85
|
+
setupGeometry() {
|
|
91
86
|
effect(() => {
|
|
92
87
|
const material = this.materialRef.nativeElement;
|
|
93
88
|
if (!material)
|
|
94
89
|
return;
|
|
95
|
-
const geometry = getLocalState(material).parent()?.geometry;
|
|
90
|
+
const geometry = getLocalState(material).parent?.()?.geometry;
|
|
96
91
|
if (geometry) {
|
|
97
|
-
material.bvh
|
|
92
|
+
material.bvh = new MeshBVHUniformStruct();
|
|
93
|
+
material.bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { lazyGeneration: false, strategy: SAH }));
|
|
98
94
|
}
|
|
99
95
|
});
|
|
100
96
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsMeshRefractionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsMeshRefractionMaterial, isStandalone: true, selector: "ngts-mesh-refraction-material", inputs: { materialRef: "materialRef", _envMap: ["envMap", "_envMap"], _bounces: ["bounces", "_bounces"], _ior: ["ior", "_ior"], _fresnel: ["fresnel", "_fresnel"], _aberrationStrength: ["aberrationStrength", "_aberrationStrength"], _color: ["color", "_color"], _fastChroma: ["fastChroma", "_fastChroma"] }, ngImport: i0, template: `
|
|
99
|
+
<ngt-mesh-refraction-material
|
|
100
|
+
*ngIf="defines() as defines"
|
|
101
|
+
[key]="defines"
|
|
102
|
+
[ref]="materialRef"
|
|
103
|
+
[defines]="defines"
|
|
104
|
+
[resolution]="resolution()"
|
|
105
|
+
[aberrationStrength]="aberrationStrength()"
|
|
106
|
+
[envMap]="envMap()"
|
|
107
|
+
[bounces]="bounces()"
|
|
108
|
+
[ior]="ior()"
|
|
109
|
+
[fresnel]="fresnel()"
|
|
110
|
+
[color]="color()"
|
|
111
|
+
[fastChroma]="fastChroma()"
|
|
112
|
+
ngtCompound
|
|
113
|
+
attach="material"
|
|
114
|
+
>
|
|
115
|
+
<ng-content />
|
|
116
|
+
</ngt-mesh-refraction-material>
|
|
117
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
121
118
|
}
|
|
122
|
-
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
|
|
124
120
|
type: Component,
|
|
125
121
|
args: [{
|
|
126
122
|
selector: 'ngts-mesh-refraction-material',
|
|
127
123
|
standalone: true,
|
|
128
124
|
template: `
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
125
|
+
<ngt-mesh-refraction-material
|
|
126
|
+
*ngIf="defines() as defines"
|
|
127
|
+
[key]="defines"
|
|
128
|
+
[ref]="materialRef"
|
|
129
|
+
[defines]="defines"
|
|
130
|
+
[resolution]="resolution()"
|
|
131
|
+
[aberrationStrength]="aberrationStrength()"
|
|
132
|
+
[envMap]="envMap()"
|
|
133
|
+
[bounces]="bounces()"
|
|
134
|
+
[ior]="ior()"
|
|
135
|
+
[fresnel]="fresnel()"
|
|
136
|
+
[color]="color()"
|
|
137
|
+
[fastChroma]="fastChroma()"
|
|
138
|
+
ngtCompound
|
|
139
|
+
attach="material"
|
|
140
|
+
>
|
|
141
|
+
<ng-content />
|
|
142
|
+
</ngt-mesh-refraction-material>
|
|
143
|
+
`,
|
|
144
|
+
imports: [NgIf, NgtKey],
|
|
148
145
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
149
146
|
}]
|
|
150
147
|
}], ctorParameters: function () { return []; }, propDecorators: { materialRef: [{
|
|
151
148
|
type: Input
|
|
152
|
-
}],
|
|
149
|
+
}], _envMap: [{
|
|
153
150
|
type: Input,
|
|
154
|
-
args: [{ required: true }]
|
|
155
|
-
}],
|
|
156
|
-
type: Input
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}],
|
|
162
|
-
type: Input
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
151
|
+
args: [{ required: true, alias: 'envMap' }]
|
|
152
|
+
}], _bounces: [{
|
|
153
|
+
type: Input,
|
|
154
|
+
args: [{ alias: 'bounces' }]
|
|
155
|
+
}], _ior: [{
|
|
156
|
+
type: Input,
|
|
157
|
+
args: [{ alias: 'ior' }]
|
|
158
|
+
}], _fresnel: [{
|
|
159
|
+
type: Input,
|
|
160
|
+
args: [{ alias: 'fresnel' }]
|
|
161
|
+
}], _aberrationStrength: [{
|
|
162
|
+
type: Input,
|
|
163
|
+
args: [{ alias: 'aberrationStrength' }]
|
|
164
|
+
}], _color: [{
|
|
165
|
+
type: Input,
|
|
166
|
+
args: [{ alias: 'color' }]
|
|
167
|
+
}], _fastChroma: [{
|
|
168
|
+
type: Input,
|
|
169
|
+
args: [{ alias: 'fastChroma' }]
|
|
167
170
|
}] } });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21hdGVyaWFscy9zcmMvbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsL21lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFOUMsTUFBTSxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0FBbUJuQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQXNDLEVBQTRCLEVBQUUsQ0FDdkYsR0FBRyxJQUFLLEdBQXlCLENBQUMsYUFBYSxDQUFDO0FBRXBELE1BeUJhLDBCQUEyQixTQUFRLGNBQStDO0lBRTNGLHNCQUFzQjtJQUN0QixJQUErQixNQUFNLENBQUMsTUFBeUM7UUFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELDBFQUEwRTtJQUMxRSxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCw0QkFBNEI7SUFDNUIs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SU8sa0JBQWtCO3NCQUE5QixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZWZmZWN0LCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCBOZ3RTaWduYWxTdG9yZSwgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE1lc2hSZWZyYWN0aW9uTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgeyBNZXNoQlZILCBTQUggfSBmcm9tICd0aHJlZS1tZXNoLWJ2aCc7XG5cbmV4dGVuZCh7IE1lc2hSZWZyYWN0aW9uTWF0ZXJpYWwgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c01lc2hSZWZyYWN0aW9uTWF0ZXJpYWxTdGF0ZSB7XG4gICAgLyoqIEVudmlyb25tZW50IG1hcCAqL1xuICAgIGVudk1hcDogVEhSRUUuQ3ViZVRleHR1cmUgfCBUSFJFRS5UZXh0dXJlO1xuICAgIC8qKiBOdW1iZXIgb2YgcmF5LWNhc3QgYm91bmNlcywgaXQgY2FuIGJlIGV4cGVuc2l2ZSB0byBoYXZlIHRvbyBtYW55LCAyICovXG4gICAgYm91bmNlczogbnVtYmVyO1xuICAgIC8qKiBSZWZyYWN0aW9uIGluZGV4LCAyLjQgKi9cbiAgICBpb3I6IG51bWJlcjtcbiAgICAvKiogRnJlc25lbCAoc3RyaXAgbGlnaHQpLCAwICovXG4gICAgZnJlc25lbDogbnVtYmVyO1xuICAgIC8qKiBSR0Igc2hpZnQgaW50ZW5zaXR5LCBjYW4gYmUgZXhwZW5zaXZlLCAwICovXG4gICAgYWJlcnJhdGlvblN0cmVuZ3RoOiBudW1iZXI7XG4gICAgLyoqIENvbG9yLCB3aGl0ZSAqL1xuICAgIGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uO1xuICAgIC8qKiBJZiB0aGlzIGlzIG9uIGl0IHVzZXMgZmV3ZXIgcmF5IGNhc3RzIGZvciB0aGUgUkdCIHNoaWZ0IHNhY3JpZmljaW5nIHBoeXNpY2FsIGFjY3VyYWN5LCB0cnVlICovXG4gICAgZmFzdENocm9tYTogYm9vbGVhbjtcbn1cblxuY29uc3QgaXNDdWJlVGV4dHVyZSA9IChkZWY6IFRIUkVFLkN1YmVUZXh0dXJlIHwgVEhSRUUuVGV4dHVyZSk6IGRlZiBpcyBUSFJFRS5DdWJlVGV4dHVyZSA9PlxuICAgIGRlZiAmJiAoZGVmIGFzIFRIUkVFLkN1YmVUZXh0dXJlKS5pc0N1YmVUZXh0dXJlO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsXG4gICAgICAgICAgICAqbmdJZj1cImRlZmluZXMoKSBhcyBkZWZpbmVzXCJcbiAgICAgICAgICAgIFtyZWZdPVwibWF0ZXJpYWxSZWZcIlxuICAgICAgICAgICAgW2RlZmluZXNdPVwiZGVmaW5lc1wiXG4gICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uKClcIlxuICAgICAgICAgICAgW2FiZXJyYXRpb25TdHJlbmd0aF09XCJyZWZyYWN0aW9uQWJlcnJhdGlvblN0cmVuZ3RoKClcIlxuICAgICAgICAgICAgW2Vudk1hcF09XCJyZWZyYWN0aW9uRW52TWFwKClcIlxuICAgICAgICAgICAgW2JvdW5jZXNdPVwicmVmcmFjdGlvbkJvdW5jZXMoKVwiXG4gICAgICAgICAgICBbaW9yXT1cInJlZnJhY3Rpb25Jb3IoKVwiXG4gICAgICAgICAgICBbZnJlc25lbF09XCJyZWZyYWN0aW9uRnJlc25lbCgpXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJyZWZyYWN0aW9uQ29sb3IoKVwiXG4gICAgICAgICAgICBbZmFzdENocm9tYV09XCJyZWZyYWN0aW9uRmFzdENocm9tYSgpXCJcbiAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgICAgICBhdHRhY2g9XCJtYXRlcmlhbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvbmd0LW1lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ0lmXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNNZXNoUmVmcmFjdGlvbk1hdGVyaWFsIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0c01lc2hSZWZyYWN0aW9uTWF0ZXJpYWxTdGF0ZT4ge1xuICAgIEBJbnB1dCgpIG1hdGVyaWFsUmVmID0gaW5qZWN0Tmd0UmVmPEluc3RhbmNlVHlwZTx0eXBlb2YgTWVzaFJlZnJhY3Rpb25NYXRlcmlhbD4+KCk7XG4gICAgLyoqIEVudmlyb25tZW50IG1hcCAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBlbnZNYXAoZW52TWFwOiBUSFJFRS5DdWJlVGV4dHVyZSB8IFRIUkVFLlRleHR1cmUpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBlbnZNYXAgfSk7XG4gICAgfVxuICAgIC8qKiBOdW1iZXIgb2YgcmF5LWNhc3QgYm91bmNlcywgaXQgY2FuIGJlIGV4cGVuc2l2ZSB0byBoYXZlIHRvbyBtYW55LCAyICovXG4gICAgQElucHV0KCkgc2V0IGJvdW5jZXMoYm91bmNlczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYm91bmNlcyB9KTtcbiAgICB9XG4gICAgLyoqIFJlZnJhY3Rpb24gaW5kZXgsIDIuNCAqL1xuICAgIEBJbnB1dCgpIHNldCBpb3IoaW9yOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBpb3IgfSk7XG4gICAgfVxuICAgIC8qKiBGcmVzbmVsIChzdHJpcCBsaWdodCksIDAgKi9cbiAgICBASW5wdXQoKSBzZXQgZnJlc25lbChmcmVzbmVsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmVzbmVsIH0pO1xuICAgIH1cbiAgICAvKiogUkdCIHNoaWZ0IGludGVuc2l0eSwgY2FuIGJlIGV4cGVuc2l2ZSwgMCAqL1xuICAgIEBJbnB1dCgpIHNldCBhYmVycmF0aW9uU3RyZW5ndGgoYWJlcnJhdGlvblN0cmVuZ3RoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBhYmVycmF0aW9uU3RyZW5ndGggfSk7XG4gICAgfVxuICAgIC8qKiBDb2xvciwgd2hpdGUgKi9cbiAgICBASW5wdXQoKSBzZXQgY29sb3IoY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb2xvciB9KTtcbiAgICB9XG4gICAgLyoqIElmIHRoaXMgaXMgb24gaXQgdXNlcyBmZXdlciByYXkgY2FzdHMgZm9yIHRoZSBSR0Igc2hpZnQgc2FjcmlmaWNpbmcgcGh5c2ljYWwgYWNjdXJhY3ksIHRydWUgKi9cbiAgICBASW5wdXQoKSBzZXQgZmFzdENocm9tYShmYXN0Q2hyb21hOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFzdENocm9tYSB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSByZWZyYWN0aW9uRW52TWFwID0gdGhpcy5zZWxlY3QoJ2Vudk1hcCcpO1xuICAgIHJlYWRvbmx5IHJlZnJhY3Rpb25Cb3VuY2VzID0gdGhpcy5zZWxlY3QoJ2JvdW5jZXMnKTtcbiAgICByZWFkb25seSByZWZyYWN0aW9uSW9yID0gdGhpcy5zZWxlY3QoJ2lvcicpO1xuICAgIHJlYWRvbmx5IHJlZnJhY3Rpb25GcmVzbmVsID0gdGhpcy5zZWxlY3QoJ2ZyZXNuZWwnKTtcbiAgICByZWFkb25seSByZWZyYWN0aW9uQWJlcnJhdGlvblN0cmVuZ3RoID0gdGhpcy5zZWxlY3QoJ2FiZXJyYXRpb25TdHJlbmd0aCcpO1xuICAgIHJlYWRvbmx5IHJlZnJhY3Rpb25Db2xvciA9IHRoaXMuc2VsZWN0KCdjb2xvcicpO1xuICAgIHJlYWRvbmx5IHJlZnJhY3Rpb25GYXN0Q2hyb21hID0gdGhpcy5zZWxlY3QoJ2Zhc3RDaHJvbWEnKTtcblxuICAgIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcmVhZG9ubHkgI3NpemUgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuICAgIHJlYWRvbmx5ICNlbnZNYXAgPSB0aGlzLnNlbGVjdCgnZW52TWFwJyk7XG5cbiAgICByZWFkb25seSBkZWZpbmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbnZNYXAgPSB0aGlzLiNlbnZNYXAoKTtcbiAgICAgICAgaWYgKCFlbnZNYXApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGFiZXJyYXRpb25TdHJlbmd0aCA9IHRoaXMucmVmcmFjdGlvbkFiZXJyYXRpb25TdHJlbmd0aCgpO1xuICAgICAgICBjb25zdCBmYXN0Q2hyb21hID0gdGhpcy5yZWZyYWN0aW9uRmFzdENocm9tYSgpO1xuXG4gICAgICAgIGNvbnN0IHRlbXAgPSB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgICAvLyBTYW1wbGVyMkQgYW5kIFNhbXBsZXJDdWJlIG5lZWQgZGlmZmVyZW50IGRlZmluZXNcbiAgICAgICAgY29uc3QgaXNDdWJlTWFwID0gaXNDdWJlVGV4dHVyZShlbnZNYXApO1xuICAgICAgICBjb25zdCB3ID0gKGlzQ3ViZU1hcCA/IGVudk1hcC5pbWFnZVswXT8ud2lkdGggOiBlbnZNYXAuaW1hZ2Uud2lkdGgpID8/IDEwMjQ7XG4gICAgICAgIGNvbnN0IGN1YmVTaXplID0gdyAvIDQ7XG4gICAgICAgIGNvbnN0IF9sb2RNYXggPSBNYXRoLmZsb29yKE1hdGgubG9nMihjdWJlU2l6ZSkpO1xuICAgICAgICBjb25zdCBfY3ViZVNpemUgPSBNYXRoLnBvdygyLCBfbG9kTWF4KTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSAzICogTWF0aC5tYXgoX2N1YmVTaXplLCAxNiAqIDcpO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSA0ICogX2N1YmVTaXplO1xuICAgICAgICBpZiAoaXNDdWJlTWFwKSB0ZW1wWydFTlZNQVBfVFlQRV9DVUJFTSddID0gJyc7XG4gICAgICAgIHRlbXBbJ0NVQkVVVl9URVhFTF9XSURUSCddID0gYCR7MS4wIC8gd2lkdGh9YDtcbiAgICAgICAgdGVtcFsnQ1VCRVVWX1RFWEVMX0hFSUdIVCddID0gYCR7MS4wIC8gaGVpZ2h0fWA7XG4gICAgICAgIHRlbXBbJ0NVQkVVVl9NQVhfTUlQJ10gPSBgJHtfbG9kTWF4fS4wYDtcbiAgICAgICAgLy8gQWRkIGRlZmluZXMgZnJvbSBjaHJvbWF0aWMgYWJlcnJhdGlvblxuICAgICAgICBpZiAoYWJlcnJhdGlvblN0cmVuZ3RoID4gMCkgdGVtcFsnQ0hST01BVElDX0FCRVJSQVRJT05TJ10gPSAnJztcbiAgICAgICAgaWYgKGZhc3RDaHJvbWEpIHRlbXBbJ0ZBU1RfQ0hST01BJ10gPSAnJztcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfSk7XG4gICAgcmVhZG9ubHkgcmVzb2x1dGlvbiA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLiNzaXplKCkud2lkdGgsIHRoaXMuI3NpemUoKS5oZWlnaHRdKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7IGFiZXJyYXRpb25TdHJlbmd0aDogMCwgZmFzdENocm9tYTogdHJ1ZSB9KTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXRlcmlhbFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgKHRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudCBhcyBhbnkpIS52aWV3TWF0cml4SW52ZXJzZSA9IGNhbWVyYS5tYXRyaXhXb3JsZDtcbiAgICAgICAgICAgICAgICAodGhpcy5tYXRlcmlhbFJlZi5uYXRpdmVFbGVtZW50IGFzIGFueSkhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy4jc2V0dXBHZW9tZXRyeSgpO1xuICAgIH1cblxuICAgICNzZXR1cEdlb21ldHJ5KCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIW1hdGVyaWFsKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IGdldExvY2FsU3RhdGUobWF0ZXJpYWwpLnBhcmVudCgpPy5nZW9tZXRyeTtcbiAgICAgICAgICAgIGlmIChnZW9tZXRyeSkge1xuICAgICAgICAgICAgICAgIChtYXRlcmlhbCBhcyBhbnkpLmJ2aC51cGRhdGVGcm9tKFxuICAgICAgICAgICAgICAgICAgICBuZXcgTWVzaEJWSChnZW9tZXRyeS50b05vbkluZGV4ZWQoKSwgeyBsYXp5R2VuZXJhdGlvbjogZmFsc2UsIHN0cmF0ZWd5OiBTQUggfSBhcyBhbnkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21hdGVyaWFscy9zcmMvbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsL21lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ04sTUFBTSxFQUNOLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGNBQWMsRUFDZCxNQUFNLEVBQ04sV0FBVyxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3BFLE1BQU0sQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQTRCbkMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFzQyxFQUE0QixFQUFFLENBQzFGLEdBQUcsSUFBSyxHQUF5QixDQUFDLGFBQWEsQ0FBQztBQTRCakQsTUFBTSxPQUFPLDBCQUEwQjtJQUl0QyxzQkFBc0I7SUFDdEIsSUFBZ0QsT0FBTyxDQUFDLE1BQXlDO1FBQ2hHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsMEVBQTBFO0lBQzFFLElBQWlDLFFBQVEsQ0FBQyxPQUFlO1FBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJ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QyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJVCxRQUFRO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFJRSxJQUFJO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFJVSxRQUFRO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFJaUIsbUJBQW1CO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFO2dCQUlQLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlXLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBlZmZlY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRleHRlbmQsXG5cdGdldExvY2FsU3RhdGUsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpbmplY3ROZ3RTdG9yZSxcblx0Tmd0S2V5LFxuXHRzaWduYWxTdG9yZSxcblx0dHlwZSBOZ3RTaGFkZXJNYXRlcmlhbCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBNZXNoUmVmcmFjdGlvbk1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgTWVzaEJWSCwgTWVzaEJWSFVuaWZvcm1TdHJ1Y3QsIFNBSCB9IGZyb20gJ3RocmVlLW1lc2gtYnZoJztcbmltcG9ydCB0eXBlIHsgTmd0c01lc2hUcmFubWlzc2lvbk1hdGVyaWFsU3RhdGUgfSBmcm9tICcuLi9tZXNoLXRyYW5zbWlzc2lvbi1tYXRlcmlhbC9tZXNoLXRyYW5zbWlzc2lvbi1tYXRlcmlhbCc7XG5cbmV4dGVuZCh7IE1lc2hSZWZyYWN0aW9uTWF0ZXJpYWwgfSk7XG5cbmV4cG9ydCB0eXBlIE5ndHNNZXNoUmVmcmFjdGlvbk1hdGVyaWFsU3RhdGUgPSB7XG5cdC8qKiBFbnZpcm9ubWVudCBtYXAgKi9cblx0ZW52TWFwOiBUSFJFRS5DdWJlVGV4dHVyZSB8IFRIUkVFLlRleHR1cmU7XG5cdC8qKiBOdW1iZXIgb2YgcmF5LWNhc3QgYm91bmNlcywgaXQgY2FuIGJlIGV4cGVuc2l2ZSB0byBoYXZlIHRvbyBtYW55LCAyICovXG5cdGJvdW5jZXM6IG51bWJlcjtcblx0LyoqIFJlZnJhY3Rpb24gaW5kZXgsIDIuNCAqL1xuXHRpb3I6IG51bWJlcjtcblx0LyoqIEZyZXNuZWwgKHN0cmlwIGxpZ2h0KSwgMCAqL1xuXHRmcmVzbmVsOiBudW1iZXI7XG5cdC8qKiBSR0Igc2hpZnQgaW50ZW5zaXR5LCBjYW4gYmUgZXhwZW5zaXZlLCAwICovXG5cdGFiZXJyYXRpb25TdHJlbmd0aDogbnVtYmVyO1xuXHQvKiogQ29sb3IsIHdoaXRlICovXG5cdGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uO1xuXHQvKiogSWYgdGhpcyBpcyBvbiBpdCB1c2VzIGZld2VyIHJheSBjYXN0cyBmb3IgdGhlIFJHQiBzaGlmdCBzYWNyaWZpY2luZyBwaHlzaWNhbCBhY2N1cmFjeSwgdHJ1ZSAqL1xuXHRmYXN0Q2hyb21hOiBib29sZWFuO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3Qtc2hhZGVyLW1hdGVyaWFsXG5cdFx0ICovXG5cdFx0J25ndHMtbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsJzogTmd0c01lc2hUcmFubWlzc2lvbk1hdGVyaWFsU3RhdGUgJiBOZ3RTaGFkZXJNYXRlcmlhbDtcblx0fVxufVxuXG5jb25zdCBpc0N1YmVUZXh0dXJlID0gKGRlZjogVEhSRUUuQ3ViZVRleHR1cmUgfCBUSFJFRS5UZXh0dXJlKTogZGVmIGlzIFRIUkVFLkN1YmVUZXh0dXJlID0+XG5cdGRlZiAmJiAoZGVmIGFzIFRIUkVFLkN1YmVUZXh0dXJlKS5pc0N1YmVUZXh0dXJlO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLW1lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWxcblx0XHRcdCpuZ0lmPVwiZGVmaW5lcygpIGFzIGRlZmluZXNcIlxuXHRcdFx0W2tleV09XCJkZWZpbmVzXCJcblx0XHRcdFtyZWZdPVwibWF0ZXJpYWxSZWZcIlxuXHRcdFx0W2RlZmluZXNdPVwiZGVmaW5lc1wiXG5cdFx0XHRbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uKClcIlxuXHRcdFx0W2FiZXJyYXRpb25TdHJlbmd0aF09XCJhYmVycmF0aW9uU3RyZW5ndGgoKVwiXG5cdFx0XHRbZW52TWFwXT1cImVudk1hcCgpXCJcblx0XHRcdFtib3VuY2VzXT1cImJvdW5jZXMoKVwiXG5cdFx0XHRbaW9yXT1cImlvcigpXCJcblx0XHRcdFtmcmVzbmVsXT1cImZyZXNuZWwoKVwiXG5cdFx0XHRbY29sb3JdPVwiY29sb3IoKVwiXG5cdFx0XHRbZmFzdENocm9tYV09XCJmYXN0Q2hyb21hKClcIlxuXHRcdFx0bmd0Q29tcG91bmRcblx0XHRcdGF0dGFjaD1cIm1hdGVyaWFsXCJcblx0XHQ+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LW1lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbD5cblx0YCxcblx0aW1wb3J0czogW05nSWYsIE5ndEtleV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c01lc2hSZWZyYWN0aW9uTWF0ZXJpYWwge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNNZXNoUmVmcmFjdGlvbk1hdGVyaWFsU3RhdGU+KHsgYWJlcnJhdGlvblN0cmVuZ3RoOiAwLCBmYXN0Q2hyb21hOiB0cnVlIH0pO1xuXG5cdEBJbnB1dCgpIG1hdGVyaWFsUmVmID0gaW5qZWN0Tmd0UmVmPEluc3RhbmNlVHlwZTx0eXBlb2YgTWVzaFJlZnJhY3Rpb25NYXRlcmlhbD4+KCk7XG5cdC8qKiBFbnZpcm9ubWVudCBtYXAgKi9cblx0QElucHV0KHsgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnZW52TWFwJyB9KSBzZXQgX2Vudk1hcChlbnZNYXA6IFRIUkVFLkN1YmVUZXh0dXJlIHwgVEhSRUUuVGV4dHVyZSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGVudk1hcCB9KTtcblx0fVxuXHQvKiogTnVtYmVyIG9mIHJheS1jYXN0IGJvdW5jZXMsIGl0IGNhbiBiZSBleHBlbnNpdmUgdG8gaGF2ZSB0b28gbWFueSwgMiAqL1xuXHRASW5wdXQoeyBhbGlhczogJ2JvdW5jZXMnIH0pIHNldCBfYm91bmNlcyhib3VuY2VzOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBib3VuY2VzIH0pO1xuXHR9XG5cdC8qKiBSZWZyYWN0aW9uIGluZGV4LCAyLjQgKi9cblx0QElucHV0KHsgYWxpYXM6ICdpb3InIH0pIHNldCBfaW9yKGlvcjogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgaW9yIH0pO1xuXHR9XG5cdC8qKiBGcmVzbmVsIChzdHJpcCBsaWdodCksIDAgKi9cblx0QElucHV0KHsgYWxpYXM6ICdmcmVzbmVsJyB9KSBzZXQgX2ZyZXNuZWwoZnJlc25lbDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZnJlc25lbCB9KTtcblx0fVxuXHQvKiogUkdCIHNoaWZ0IGludGVuc2l0eSwgY2FuIGJlIGV4cGVuc2l2ZSwgMCAqL1xuXHRASW5wdXQoeyBhbGlhczogJ2FiZXJyYXRpb25TdHJlbmd0aCcgfSkgc2V0IF9hYmVycmF0aW9uU3RyZW5ndGgoYWJlcnJhdGlvblN0cmVuZ3RoOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhYmVycmF0aW9uU3RyZW5ndGggfSk7XG5cdH1cblx0LyoqIENvbG9yLCB3aGl0ZSAqL1xuXHRASW5wdXQoeyBhbGlhczogJ2NvbG9yJyB9KSBzZXQgX2NvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblx0LyoqIElmIHRoaXMgaXMgb24gaXQgdXNlcyBmZXdlciByYXkgY2FzdHMgZm9yIHRoZSBSR0Igc2hpZnQgc2FjcmlmaWNpbmcgcGh5c2ljYWwgYWNjdXJhY3ksIHRydWUgKi9cblx0QElucHV0KHsgYWxpYXM6ICdmYXN0Q2hyb21hJyB9KSBzZXQgX2Zhc3RDaHJvbWEoZmFzdENocm9tYTogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZhc3RDaHJvbWEgfSk7XG5cdH1cblxuXHRlbnZNYXAgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2Vudk1hcCcpO1xuXHRib3VuY2VzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdib3VuY2VzJyk7XG5cdGlvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnaW9yJyk7XG5cdGZyZXNuZWwgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZyZXNuZWwnKTtcblx0YWJlcnJhdGlvblN0cmVuZ3RoID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdhYmVycmF0aW9uU3RyZW5ndGgnKTtcblx0Y29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yJyk7XG5cdGZhc3RDaHJvbWEgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2Zhc3RDaHJvbWEnKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRkZWZpbmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtlbnZNYXAsIGFiZXJyYXRpb25TdHJlbmd0aCwgZmFzdENocm9tYV0gPSBbdGhpcy5lbnZNYXAoKSwgdGhpcy5hYmVycmF0aW9uU3RyZW5ndGgoKSwgdGhpcy5mYXN0Q2hyb21hKCldO1xuXHRcdGlmICghZW52TWFwKSByZXR1cm4gbnVsbDtcblxuXHRcdGNvbnN0IHRlbXAgPSB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXHRcdC8vIFNhbXBsZXIyRCBhbmQgU2FtcGxlckN1YmUgbmVlZCBkaWZmZXJlbnQgZGVmaW5lc1xuXHRcdGNvbnN0IGlzQ3ViZU1hcCA9IGlzQ3ViZVRleHR1cmUoZW52TWFwKTtcblx0XHRjb25zdCB3ID0gKGlzQ3ViZU1hcCA/IGVudk1hcC5pbWFnZVswXT8ud2lkdGggOiBlbnZNYXAuaW1hZ2Uud2lkdGgpID8/IDEwMjQ7XG5cdFx0Y29uc3QgY3ViZVNpemUgPSB3IC8gNDtcblx0XHRjb25zdCBfbG9kTWF4ID0gTWF0aC5mbG9vcihNYXRoLmxvZzIoY3ViZVNpemUpKTtcblx0XHRjb25zdCBfY3ViZVNpemUgPSBNYXRoLnBvdygyLCBfbG9kTWF4KTtcblx0XHRjb25zdCB3aWR0aCA9IDMgKiBNYXRoLm1heChfY3ViZVNpemUsIDE2ICogNyk7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gNCAqIF9jdWJlU2l6ZTtcblx0XHRpZiAoaXNDdWJlTWFwKSB0ZW1wWydFTlZNQVBfVFlQRV9DVUJFTSddID0gJyc7XG5cdFx0dGVtcFsnQ1VCRVVWX1RFWEVMX1dJRFRIJ10gPSBgJHsxLjAgLyB3aWR0aH1gO1xuXHRcdHRlbXBbJ0NVQkVVVl9URVhFTF9IRUlHSFQnXSA9IGAkezEuMCAvIGhlaWdodH1gO1xuXHRcdHRlbXBbJ0NVQkVVVl9NQVhfTUlQJ10gPSBgJHtfbG9kTWF4fS4wYDtcblx0XHQvLyBBZGQgZGVmaW5lcyBmcm9tIGNocm9tYXRpYyBhYmVycmF0aW9uXG5cdFx0aWYgKGFiZXJyYXRpb25TdHJlbmd0aCA+IDApIHRlbXBbJ0NIUk9NQVRJQ19BQkVSUkFUSU9OUyddID0gJyc7XG5cdFx0aWYgKGZhc3RDaHJvbWEpIHRlbXBbJ0ZBU1RfQ0hST01BJ10gPSAnJztcblx0XHRyZXR1cm4gdGVtcDtcblx0fSk7XG5cdHJlc29sdXRpb24gPSBjb21wdXRlZCgoKSA9PiBbdGhpcy5zaXplKCkud2lkdGgsIHRoaXMuc2l6ZSgpLmhlaWdodF0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjYW1lcmEgfSkgPT4ge1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAobWF0ZXJpYWwpIHtcblx0XHRcdFx0KG1hdGVyaWFsIGFzIGFueSkudmlld01hdHJpeEludmVyc2UgPSBjYW1lcmEubWF0cml4V29ybGQ7XG5cdFx0XHRcdChtYXRlcmlhbCBhcyBhbnkpLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuc2V0dXBHZW9tZXRyeSgpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXR1cEdlb21ldHJ5KCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghbWF0ZXJpYWwpIHJldHVybjtcblx0XHRcdGNvbnN0IGdlb21ldHJ5ID0gZ2V0TG9jYWxTdGF0ZShtYXRlcmlhbCkucGFyZW50Py4oKT8uZ2VvbWV0cnk7XG5cdFx0XHRpZiAoZ2VvbWV0cnkpIHtcblx0XHRcdFx0KG1hdGVyaWFsIGFzIGFueSkuYnZoID0gbmV3IE1lc2hCVkhVbmlmb3JtU3RydWN0KCk7XG5cdFx0XHRcdChtYXRlcmlhbCBhcyBhbnkpLmJ2aC51cGRhdGVGcm9tKFxuXHRcdFx0XHRcdG5ldyBNZXNoQlZIKGdlb21ldHJ5LmNsb25lKCkudG9Ob25JbmRleGVkKCksIHsgbGF6eUdlbmVyYXRpb246IGZhbHNlLCBzdHJhdGVneTogU0FIIH0gYXMgYW55KSxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|