├── README.md ├── .gitignore ├── package.json ├── index.html ├── patches └── three+0.158.0.patch ├── LICENSE ├── src └── index.js └── yarn.lock /README.md: -------------------------------------------------------------------------------- 1 | # gpu culling 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | dist 4 | 5 | # Editor directories and files 6 | .idea 7 | .vscode 8 | *.suo 9 | *.ntvs* 10 | *.njsproj 11 | *.sln 12 | *.sw? 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "patch-package": "^8.0.0", 4 | "three": "^0.158.0", 5 | "vite": "^5.0.2" 6 | }, 7 | "scripts": { 8 | "postinstall": "patch-package", 9 | "dev": "vite" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /patches/three+0.158.0.patch: -------------------------------------------------------------------------------- 1 | diff --git a/node_modules/three/build/three.module.js b/node_modules/three/build/three.module.js 2 | index 6a6e12a..c359d3b 100644 3 | --- a/node_modules/three/build/three.module.js 4 | +++ b/node_modules/three/build/three.module.js 5 | @@ -28512,6 +28512,8 @@ class WebGLRenderer { 6 | _this.capabilities = capabilities; 7 | _this.extensions = extensions; 8 | _this.properties = properties; 9 | + // https://github.com/mrdoob/three.js/pull/26777 10 | + _this.attributes = attributes; 11 | _this.renderLists = renderLists; 12 | _this.shadowMap = shadowMap; 13 | _this.state = state; 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-2023 Cody Bennett 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import * as THREE from 'three' 2 | import { OrbitControls } from 'three/addons' 3 | 4 | const VARYING_REGEX = /[^\w](?:varying|out)\s+\w+\s+(\w+)\s*;/g 5 | 6 | /** @type {WebGLTransformFeedback | null} */ 7 | let _transformFeedback = null 8 | 9 | /** @type {WeakMap} */ 10 | const _compiled = new WeakMap() 11 | const _camera = new THREE.Camera() 12 | 13 | const DEFAULT_FRAGMENT = new THREE.ShaderMaterial().fragmentShader // default_fragment 14 | 15 | /** 16 | * 17 | * @param {THREE.Mesh} node 18 | */ 19 | THREE.WebGLRenderer.prototype.compute = function (node) { 20 | const skipRaster = node.material.fragmentShader === DEFAULT_FRAGMENT 21 | 22 | /** @type {WebGL2RenderingContext} */ 23 | const gl = this.getContext() 24 | 25 | // Create memoized compute material 26 | let oldMaterial = node.material 27 | let material = _compiled.get(node.material) 28 | if (!material) { 29 | material = node.material.clone() 30 | material.vertexShader = node.material.computeShader 31 | if (skipRaster) material.fragmentShader = 'out lowp vec4 c;void main(){c=vec4(0);}' 32 | material.uniforms = node.material.uniforms 33 | _compiled.set(node.material, material) 34 | } 35 | node.material = material 36 | 37 | // Prime and get compiled program 38 | // NOTE: compile doesn't populate this.attributes 39 | // https://github.com/mrdoob/three.js/pull/26777 40 | this.render(node, _camera) 41 | const materialProperties = this.properties.get(material) 42 | const compiled = materialProperties.currentProgram 43 | const program = compiled.program 44 | 45 | _transformFeedback ??= gl.createTransformFeedback() 46 | gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, _transformFeedback) 47 | 48 | if (!compiled.outputs) { 49 | compiled.outputs = [] 50 | 51 | // Get compiled source with resolved shader chunks 52 | const vertexShader = gl.getShaderSource(compiled.vertexShader) 53 | 54 | // Feedback shader outputs from source 55 | // TODO: interleave attributes for limits 56 | for (const [, output] of vertexShader.matchAll(VARYING_REGEX)) { 57 | const attribute = node.geometry.attributes[output] 58 | const { buffer } = this.attributes.get(attribute) 59 | gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, compiled.outputs.length, buffer) 60 | compiled.outputs.push(output) 61 | } 62 | 63 | gl.transformFeedbackVaryings(program, compiled.outputs, gl.SEPARATE_ATTRIBS) 64 | gl.linkProgram(program) 65 | 66 | const error = gl.getProgramInfoLog(program) 67 | if (error) throw new Error(error) 68 | 69 | // Force reset uniforms after relink 70 | for (const uniform of materialProperties.uniformsList) { 71 | uniform.addr = gl.getUniformLocation(program, uniform.id) 72 | uniform.cache = [] 73 | } 74 | } 75 | 76 | if (!skipRaster) gl.enable(gl.RASTERIZER_DISCARD) 77 | 78 | gl.beginTransformFeedback(gl.TRIANGLES) 79 | this.render(node, _camera) 80 | gl.endTransformFeedback() 81 | 82 | gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null) 83 | if (!skipRaster) gl.disable(gl.RASTERIZER_DISCARD) 84 | node.material = oldMaterial 85 | 86 | // Debug CPU readback 87 | // for (const output of compiled.outputs) { 88 | // const attribute = node.geometry.attributes[output] 89 | // const { buffer } = this.attributes.get(attribute) 90 | 91 | // gl.bindBuffer(gl.ARRAY_BUFFER, buffer) 92 | // gl.getBufferSubData(gl.ARRAY_BUFFER, 0, attribute.array) 93 | // gl.bindBuffer(gl.ARRAY_BUFFER, null) 94 | 95 | // console.log(output, ...Array.from(attribute.array)) 96 | // } 97 | } 98 | 99 | THREE.ShaderMaterial.prototype.computeShader = '' 100 | 101 | const renderer = new THREE.WebGLRenderer({ antialias: true }) 102 | renderer.setSize(window.innerWidth, window.innerHeight) 103 | document.body.appendChild(renderer.domElement) 104 | 105 | const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight) 106 | camera.position.z = 5 107 | 108 | const controls = new OrbitControls(camera, renderer.domElement) 109 | controls.enableDamping = true 110 | 111 | const scene = new THREE.Scene() 112 | 113 | const geometry = new THREE.BufferGeometry() 114 | geometry.setDrawRange(0, 3) 115 | geometry.boundingSphere = new THREE.Sphere().set(new THREE.Vector3(), Infinity) 116 | geometry.attributes = { 117 | radius: new THREE.BufferAttribute(new Float32Array(3), 1), 118 | position: new THREE.BufferAttribute(new Float32Array(9), 3), 119 | // TODO: only highp supported, use uint8 120 | visibility: new THREE.InstancedBufferAttribute(new Uint32Array(3), 1), 121 | } 122 | geometry.attributes.visibility.gpuType = THREE.IntType 123 | 124 | const projectionViewMatrix = new THREE.Matrix4() 125 | 126 | const cullMaterial = new THREE.RawShaderMaterial({ 127 | defines: { 128 | NUM_MIPS: 0, 129 | }, 130 | uniforms: { 131 | projectionViewMatrix: new THREE.Uniform(projectionViewMatrix), 132 | resolution: new THREE.Uniform(new THREE.Vector2()), 133 | mipmaps: new THREE.Uniform(null), 134 | }, 135 | computeShader: /* glsl */ `//#version 300 es 136 | uniform mat4 projectionViewMatrix; 137 | uniform vec2 resolution; 138 | uniform sampler2D[NUM_MIPS] mipmaps; 139 | 140 | in float radius; 141 | in vec3 position; 142 | flat out uint visibility; 143 | 144 | vec4 textureGather(sampler2D tex, vec2 uv, int comp) { 145 | vec2 res = vec2(textureSize(tex, 0)); 146 | ivec2 p = ivec2((uv * res) - 0.5); 147 | return vec4( 148 | texelFetchOffset(tex, p, 0, ivec2(0, 1))[comp], 149 | texelFetchOffset(tex, p, 0, ivec2(1, 1))[comp], 150 | texelFetchOffset(tex, p, 0, ivec2(1, 0))[comp], 151 | texelFetchOffset(tex, p, 0, ivec2(0, 0))[comp] 152 | ); 153 | } 154 | vec4 textureGatherLevel(sampler2D[NUM_MIPS] tex, vec2 uv, int level, int comp) { 155 | // TODO: implement RT mips and TEXTURE_BASE_LEVEL for Hi-Z feedback 156 | if (level < 1) return textureGather(tex[0], uv, comp); 157 | if (level == 1) return textureGather(tex[1], uv, comp); 158 | if (level == 2) return textureGather(tex[2], uv, comp); 159 | if (level == 3) return textureGather(tex[3], uv, comp); 160 | if (level == 4) return textureGather(tex[4], uv, comp); 161 | return textureGather(tex[5], uv, comp); 162 | } 163 | 164 | void main() { 165 | bool visible = true; 166 | 167 | // Frustum cull 168 | if (visible) { 169 | // http://cs.otago.ac.nz/postgrads/alexis/planeExtraction.pdf 170 | mat4 frustum = transpose(projectionViewMatrix); 171 | vec4 planes[] = vec4[]( 172 | frustum[3] - frustum[0], // left (-w < +x) 173 | frustum[3] + frustum[0], // right (+x < +w) 174 | frustum[3] - frustum[1], // bottom (-w < +y) 175 | frustum[3] + frustum[1], // top (+y < +w) 176 | frustum[3] - frustum[2], // near (-w < +z) 177 | frustum[3] + frustum[2] // far (+z < +w) 178 | ); 179 | 180 | for (int i = 0; i < 6; i++) { 181 | float distance = dot(planes[i], vec4(position, 1)); 182 | if (distance < -radius) { 183 | visible = false; 184 | break; 185 | } 186 | } 187 | } 188 | 189 | // Occlusion cull 190 | if (visible) { 191 | // Calculate sphere NDC from projected position 192 | vec4 ndc = projectionViewMatrix * vec4(position.xy, position.z - radius, 1); 193 | ndc.xyz /= ndc.w; 194 | 195 | // Sample screen depth 196 | vec2 uv = (ndc.xy + 1.0) * 0.5; 197 | int mip = int(ceil(log2(radius * resolution))); 198 | vec4 tile = textureGatherLevel(mipmaps, uv, mip, 0); 199 | float depth = max(max(tile.x, tile.y), max(tile.z, tile.w)); 200 | 201 | // Test NDC against screen depth 202 | if (depth < ndc.z + 0.01) visible = false; 203 | } 204 | 205 | // Write visibility 206 | visibility = visible ? 1u : 0u; 207 | } 208 | `, 209 | glslVersion: THREE.GLSL3, 210 | }) 211 | const cullMesh = new THREE.Mesh(geometry, cullMaterial) 212 | 213 | const normalMaterial = new THREE.ShaderMaterial({ 214 | vertexShader: /* glsl */ ` 215 | in uint visibility; 216 | out vec3 vNormal; 217 | 218 | void main() { 219 | vNormal = normalMatrix * normal; 220 | gl_Position = projectionMatrix * modelViewMatrix * vec4(position, visibility); 221 | } 222 | `, 223 | fragmentShader: /* glsl */ ` 224 | in vec3 vNormal; 225 | 226 | void main() { 227 | gl_FragColor = vec4(normalize(vNormal) * 0.5 + 0.5, 1); 228 | } 229 | `, 230 | }) 231 | 232 | const meshGeometry = new THREE.BoxGeometry() 233 | meshGeometry.setAttribute('visibility', geometry.attributes.visibility) 234 | meshGeometry.computeBoundingSphere() 235 | 236 | const cube = new THREE.InstancedMesh(meshGeometry, normalMaterial, 1) 237 | geometry.attributes.radius.array[0] = meshGeometry.boundingSphere.radius 238 | scene.add(cube) 239 | 240 | const plane = new THREE.Mesh(meshGeometry, new THREE.MeshNormalMaterial()) 241 | plane.position.z = 1 242 | plane.scale.set(2, 2, 0.001) 243 | plane.material.transparent = true 244 | plane.material.opacity = 0.2 245 | scene.add(plane) 246 | 247 | const downsampleMaterial = new THREE.ShaderMaterial({ 248 | uniforms: { 249 | tDepth: new THREE.Uniform(null), 250 | }, 251 | vertexShader: /* glsl */ ` 252 | out vec2 vUv; 253 | 254 | void main() { 255 | vUv = vec2(gl_VertexID << 1 & 2, gl_VertexID & 2); 256 | gl_Position = vec4(vUv * 2.0 - 1.0, 0, 1); 257 | } 258 | `, 259 | fragmentShader: /* glsl */ ` 260 | uniform sampler2D tDepth; 261 | in vec2 vUv; 262 | 263 | vec4 textureGather(sampler2D tex, vec2 uv, int comp) { 264 | vec2 res = vec2(textureSize(tex, 0)); 265 | ivec2 p = ivec2((uv * res) - 0.5); 266 | return vec4( 267 | texelFetchOffset(tex, p, 0, ivec2(0, 1))[comp], 268 | texelFetchOffset(tex, p, 0, ivec2(1, 1))[comp], 269 | texelFetchOffset(tex, p, 0, ivec2(1, 0))[comp], 270 | texelFetchOffset(tex, p, 0, ivec2(0, 0))[comp] 271 | ); 272 | } 273 | 274 | void main() { 275 | vec4 tile = textureGather(tDepth, vUv, 0); 276 | float depth = max(max(tile.x, tile.y), max(tile.z, tile.w)); 277 | gl_FragColor = vec4(depth, 0, 0, 1); 278 | } 279 | `, 280 | }) 281 | const downsamplePass = new THREE.Mesh(geometry, downsampleMaterial) 282 | 283 | const depthTarget = new THREE.WebGLRenderTarget(0, 0, { 284 | minFilter: THREE.NearestFilter, 285 | type: THREE.HalfFloatType, 286 | format: THREE.RedFormat, 287 | }) 288 | 289 | let NUM_MIPS = 0 290 | const mipmaps = [depthTarget] 291 | 292 | const onResize = () => { 293 | renderer.setSize(window.innerWidth, window.innerHeight) 294 | renderer.getDrawingBufferSize(cullMaterial.uniforms.resolution.value) 295 | 296 | // TODO: use POT and TEXTURE_BASE_LEVEL 297 | // https://bugs.chromium.org/p/chromium/issues/detail?id=1383129 298 | NUM_MIPS = 1 + Math.min(5, Math.floor(Math.log2(Math.max(window.innerWidth, window.innerHeight)))) 299 | cullMaterial.defines.NUM_MIPS = NUM_MIPS 300 | // cullMaterial.computeShader = cullMaterial.computeShader.replace( 301 | // mipSelectCode, 302 | // (mipSelectCode = /* glsl */ `vec4 tile;${Array.from( 303 | // { length: NUM_MIPS }, 304 | // (_, i) => `if (mip == ${i}) tile = textureGather(mipmaps[${i}], uv, 0);`, 305 | // ).join('\n')}`), 306 | // ) 307 | cullMaterial.dispose() 308 | 309 | cullMaterial.vertexShader.replace() 310 | 311 | for (let i = 0; i < NUM_MIPS; i++) { 312 | mipmaps[i] ??= depthTarget.clone() 313 | mipmaps[i].setSize(window.innerWidth >> i, window.innerHeight >> i) 314 | } 315 | 316 | cullMaterial.uniforms.mipmaps.value = mipmaps.slice(0, NUM_MIPS).map((mipmap) => mipmap.texture) 317 | 318 | camera.aspect = window.innerWidth / window.innerHeight 319 | camera.updateProjectionMatrix() 320 | } 321 | onResize() 322 | window.addEventListener('resize', onResize) 323 | 324 | const depthMaterial = new THREE.ShaderMaterial({ 325 | vertexShader: /* glsl */ ` 326 | void main() { 327 | gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1); 328 | } 329 | `, 330 | fragmentShader: /* glsl */ ` 331 | void main() { 332 | gl_FragColor = vec4(gl_FragCoord.z, 0, 0, 1); 333 | } 334 | `, 335 | }) 336 | 337 | renderer.setAnimationLoop(() => { 338 | controls.update() 339 | 340 | // Create Hi-Z mip-chain 341 | for (let i = 0; i < NUM_MIPS; i++) { 342 | renderer.setRenderTarget(mipmaps[i]) 343 | 344 | if (i === 0) { 345 | // Gather initial depth 346 | scene.overrideMaterial = depthMaterial 347 | renderer.render(scene, camera) 348 | scene.overrideMaterial = null 349 | } else { 350 | // Downsample previous level 351 | downsampleMaterial.uniforms.tDepth.value = mipmaps[i - 1].texture 352 | renderer.render(downsamplePass, camera) 353 | } 354 | } 355 | renderer.setRenderTarget(null) 356 | 357 | // Perform occlusion culling 358 | camera.updateWorldMatrix() 359 | projectionViewMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse) 360 | renderer.compute(cullMesh) 361 | 362 | // Render with culling 363 | renderer.render(scene, camera) 364 | }) 365 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@esbuild/android-arm64@0.19.8": 6 | version "0.19.8" 7 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz#fb7130103835b6d43ea499c3f30cfb2b2ed58456" 8 | integrity sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA== 9 | 10 | "@esbuild/android-arm@0.19.8": 11 | version "0.19.8" 12 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.8.tgz#b46e4d9e984e6d6db6c4224d72c86b7757e35bcb" 13 | integrity sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA== 14 | 15 | "@esbuild/android-x64@0.19.8": 16 | version "0.19.8" 17 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.8.tgz#a13db9441b5a4f4e4fec4a6f8ffacfea07888db7" 18 | integrity sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A== 19 | 20 | "@esbuild/darwin-arm64@0.19.8": 21 | version "0.19.8" 22 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz#49f5718d36541f40dd62bfdf84da9c65168a0fc2" 23 | integrity sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw== 24 | 25 | "@esbuild/darwin-x64@0.19.8": 26 | version "0.19.8" 27 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz#75c5c88371eea4bfc1f9ecfd0e75104c74a481ac" 28 | integrity sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q== 29 | 30 | "@esbuild/freebsd-arm64@0.19.8": 31 | version "0.19.8" 32 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz#9d7259fea4fd2b5f7437b52b542816e89d7c8575" 33 | integrity sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw== 34 | 35 | "@esbuild/freebsd-x64@0.19.8": 36 | version "0.19.8" 37 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz#abac03e1c4c7c75ee8add6d76ec592f46dbb39e3" 38 | integrity sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg== 39 | 40 | "@esbuild/linux-arm64@0.19.8": 41 | version "0.19.8" 42 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz#c577932cf4feeaa43cb9cec27b89cbe0df7d9098" 43 | integrity sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ== 44 | 45 | "@esbuild/linux-arm@0.19.8": 46 | version "0.19.8" 47 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz#d6014d8b98b5cbc96b95dad3d14d75bb364fdc0f" 48 | integrity sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ== 49 | 50 | "@esbuild/linux-ia32@0.19.8": 51 | version "0.19.8" 52 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz#2379a0554307d19ac4a6cdc15b08f0ea28e7a40d" 53 | integrity sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ== 54 | 55 | "@esbuild/linux-loong64@0.19.8": 56 | version "0.19.8" 57 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz#e2a5bbffe15748b49356a6cd7b2d5bf60c5a7123" 58 | integrity sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ== 59 | 60 | "@esbuild/linux-mips64el@0.19.8": 61 | version "0.19.8" 62 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz#1359331e6f6214f26f4b08db9b9df661c57cfa24" 63 | integrity sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q== 64 | 65 | "@esbuild/linux-ppc64@0.19.8": 66 | version "0.19.8" 67 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz#9ba436addc1646dc89dae48c62d3e951ffe70951" 68 | integrity sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg== 69 | 70 | "@esbuild/linux-riscv64@0.19.8": 71 | version "0.19.8" 72 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz#fbcf0c3a0b20f40b5fc31c3b7695f0769f9de66b" 73 | integrity sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg== 74 | 75 | "@esbuild/linux-s390x@0.19.8": 76 | version "0.19.8" 77 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz#989e8a05f7792d139d5564ffa7ff898ac6f20a4a" 78 | integrity sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg== 79 | 80 | "@esbuild/linux-x64@0.19.8": 81 | version "0.19.8" 82 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz#b187295393a59323397fe5ff51e769ec4e72212b" 83 | integrity sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg== 84 | 85 | "@esbuild/netbsd-x64@0.19.8": 86 | version "0.19.8" 87 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz#c1ec0e24ea82313cb1c7bae176bd5acd5bde7137" 88 | integrity sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw== 89 | 90 | "@esbuild/openbsd-x64@0.19.8": 91 | version "0.19.8" 92 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz#0c5b696ac66c6d70cf9ee17073a581a28af9e18d" 93 | integrity sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ== 94 | 95 | "@esbuild/sunos-x64@0.19.8": 96 | version "0.19.8" 97 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz#2a697e1f77926ff09fcc457d8f29916d6cd48fb1" 98 | integrity sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w== 99 | 100 | "@esbuild/win32-arm64@0.19.8": 101 | version "0.19.8" 102 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz#ec029e62a2fca8c071842ecb1bc5c2dd20b066f1" 103 | integrity sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg== 104 | 105 | "@esbuild/win32-ia32@0.19.8": 106 | version "0.19.8" 107 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz#cbb9a3146bde64dc15543e48afe418c7a3214851" 108 | integrity sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw== 109 | 110 | "@esbuild/win32-x64@0.19.8": 111 | version "0.19.8" 112 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz#c8285183dbdb17008578dbacb6e22748709b4822" 113 | integrity sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA== 114 | 115 | "@rollup/rollup-android-arm-eabi@4.6.0": 116 | version "4.6.0" 117 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.0.tgz#c08a454d70605aacad17530a953791ea385e37d5" 118 | integrity sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw== 119 | 120 | "@rollup/rollup-android-arm64@4.6.0": 121 | version "4.6.0" 122 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.0.tgz#e0cf96960405947c1a09a389467e6aa10ae1a226" 123 | integrity sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A== 124 | 125 | "@rollup/rollup-darwin-arm64@4.6.0": 126 | version "4.6.0" 127 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.0.tgz#6d2f53021fbb9fdecf60bfb6fd5d999aef8385e9" 128 | integrity sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg== 129 | 130 | "@rollup/rollup-darwin-x64@4.6.0": 131 | version "4.6.0" 132 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.0.tgz#b7d0a4bbe6fc493efa269a60a66dc070ac10e2bd" 133 | integrity sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q== 134 | 135 | "@rollup/rollup-linux-arm-gnueabihf@4.6.0": 136 | version "4.6.0" 137 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.0.tgz#12fad1802f500a0196ab0bb4dbb776aaabdedcc7" 138 | integrity sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ== 139 | 140 | "@rollup/rollup-linux-arm64-gnu@4.6.0": 141 | version "4.6.0" 142 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.0.tgz#6de1caa2c9952d16dafa21dd26da9562d4ea2112" 143 | integrity sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ== 144 | 145 | "@rollup/rollup-linux-arm64-musl@4.6.0": 146 | version "4.6.0" 147 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.0.tgz#ef9cae3d22c8c44ff4f271e308bf1c013348bdc0" 148 | integrity sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ== 149 | 150 | "@rollup/rollup-linux-x64-gnu@4.6.0": 151 | version "4.6.0" 152 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.0.tgz#e9071050bed7c64a9fd964cde3c8bd139bf8e489" 153 | integrity sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg== 154 | 155 | "@rollup/rollup-linux-x64-musl@4.6.0": 156 | version "4.6.0" 157 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.0.tgz#a4c7f5e0c363b2c34f6a7566b1c9da00bf0b96d0" 158 | integrity sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w== 159 | 160 | "@rollup/rollup-win32-arm64-msvc@4.6.0": 161 | version "4.6.0" 162 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.0.tgz#9a7bfc660ac088d447858fc5223984deb979a55a" 163 | integrity sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng== 164 | 165 | "@rollup/rollup-win32-ia32-msvc@4.6.0": 166 | version "4.6.0" 167 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.0.tgz#7d5fb96e9f0120451da1fece5c74d2bb373f8925" 168 | integrity sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw== 169 | 170 | "@rollup/rollup-win32-x64-msvc@4.6.0": 171 | version "4.6.0" 172 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.0.tgz#15841505c7ec1648020941d04ca0210f88c59e3a" 173 | integrity sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g== 174 | 175 | "@yarnpkg/lockfile@^1.1.0": 176 | version "1.1.0" 177 | resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" 178 | integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== 179 | 180 | ansi-styles@^4.1.0: 181 | version "4.3.0" 182 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 183 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 184 | dependencies: 185 | color-convert "^2.0.1" 186 | 187 | at-least-node@^1.0.0: 188 | version "1.0.0" 189 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" 190 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== 191 | 192 | balanced-match@^1.0.0: 193 | version "1.0.2" 194 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 195 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 196 | 197 | brace-expansion@^1.1.7: 198 | version "1.1.11" 199 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 200 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 201 | dependencies: 202 | balanced-match "^1.0.0" 203 | concat-map "0.0.1" 204 | 205 | braces@^3.0.2: 206 | version "3.0.2" 207 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 208 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 209 | dependencies: 210 | fill-range "^7.0.1" 211 | 212 | call-bind@^1.0.5: 213 | version "1.0.5" 214 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" 215 | integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== 216 | dependencies: 217 | function-bind "^1.1.2" 218 | get-intrinsic "^1.2.1" 219 | set-function-length "^1.1.1" 220 | 221 | chalk@^4.1.2: 222 | version "4.1.2" 223 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 224 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 225 | dependencies: 226 | ansi-styles "^4.1.0" 227 | supports-color "^7.1.0" 228 | 229 | ci-info@^3.7.0: 230 | version "3.9.0" 231 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" 232 | integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== 233 | 234 | color-convert@^2.0.1: 235 | version "2.0.1" 236 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 237 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 238 | dependencies: 239 | color-name "~1.1.4" 240 | 241 | color-name@~1.1.4: 242 | version "1.1.4" 243 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 244 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 245 | 246 | concat-map@0.0.1: 247 | version "0.0.1" 248 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 249 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 250 | 251 | cross-spawn@^7.0.3: 252 | version "7.0.3" 253 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 254 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 255 | dependencies: 256 | path-key "^3.1.0" 257 | shebang-command "^2.0.0" 258 | which "^2.0.1" 259 | 260 | define-data-property@^1.1.1: 261 | version "1.1.1" 262 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" 263 | integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== 264 | dependencies: 265 | get-intrinsic "^1.2.1" 266 | gopd "^1.0.1" 267 | has-property-descriptors "^1.0.0" 268 | 269 | esbuild@^0.19.3: 270 | version "0.19.8" 271 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.8.tgz#ad05b72281d84483fa6b5345bd246c27a207b8f1" 272 | integrity sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w== 273 | optionalDependencies: 274 | "@esbuild/android-arm" "0.19.8" 275 | "@esbuild/android-arm64" "0.19.8" 276 | "@esbuild/android-x64" "0.19.8" 277 | "@esbuild/darwin-arm64" "0.19.8" 278 | "@esbuild/darwin-x64" "0.19.8" 279 | "@esbuild/freebsd-arm64" "0.19.8" 280 | "@esbuild/freebsd-x64" "0.19.8" 281 | "@esbuild/linux-arm" "0.19.8" 282 | "@esbuild/linux-arm64" "0.19.8" 283 | "@esbuild/linux-ia32" "0.19.8" 284 | "@esbuild/linux-loong64" "0.19.8" 285 | "@esbuild/linux-mips64el" "0.19.8" 286 | "@esbuild/linux-ppc64" "0.19.8" 287 | "@esbuild/linux-riscv64" "0.19.8" 288 | "@esbuild/linux-s390x" "0.19.8" 289 | "@esbuild/linux-x64" "0.19.8" 290 | "@esbuild/netbsd-x64" "0.19.8" 291 | "@esbuild/openbsd-x64" "0.19.8" 292 | "@esbuild/sunos-x64" "0.19.8" 293 | "@esbuild/win32-arm64" "0.19.8" 294 | "@esbuild/win32-ia32" "0.19.8" 295 | "@esbuild/win32-x64" "0.19.8" 296 | 297 | fill-range@^7.0.1: 298 | version "7.0.1" 299 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 300 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 301 | dependencies: 302 | to-regex-range "^5.0.1" 303 | 304 | find-yarn-workspace-root@^2.0.0: 305 | version "2.0.0" 306 | resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" 307 | integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== 308 | dependencies: 309 | micromatch "^4.0.2" 310 | 311 | fs-extra@^9.0.0: 312 | version "9.1.0" 313 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" 314 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== 315 | dependencies: 316 | at-least-node "^1.0.0" 317 | graceful-fs "^4.2.0" 318 | jsonfile "^6.0.1" 319 | universalify "^2.0.0" 320 | 321 | fs.realpath@^1.0.0: 322 | version "1.0.0" 323 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 324 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 325 | 326 | fsevents@~2.3.2, fsevents@~2.3.3: 327 | version "2.3.3" 328 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 329 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 330 | 331 | function-bind@^1.1.2: 332 | version "1.1.2" 333 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 334 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 335 | 336 | get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: 337 | version "1.2.2" 338 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" 339 | integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== 340 | dependencies: 341 | function-bind "^1.1.2" 342 | has-proto "^1.0.1" 343 | has-symbols "^1.0.3" 344 | hasown "^2.0.0" 345 | 346 | glob@^7.1.3: 347 | version "7.2.3" 348 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 349 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 350 | dependencies: 351 | fs.realpath "^1.0.0" 352 | inflight "^1.0.4" 353 | inherits "2" 354 | minimatch "^3.1.1" 355 | once "^1.3.0" 356 | path-is-absolute "^1.0.0" 357 | 358 | gopd@^1.0.1: 359 | version "1.0.1" 360 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 361 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 362 | dependencies: 363 | get-intrinsic "^1.1.3" 364 | 365 | graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.2.0: 366 | version "4.2.11" 367 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 368 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 369 | 370 | has-flag@^4.0.0: 371 | version "4.0.0" 372 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 373 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 374 | 375 | has-property-descriptors@^1.0.0: 376 | version "1.0.1" 377 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" 378 | integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== 379 | dependencies: 380 | get-intrinsic "^1.2.2" 381 | 382 | has-proto@^1.0.1: 383 | version "1.0.1" 384 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" 385 | integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== 386 | 387 | has-symbols@^1.0.3: 388 | version "1.0.3" 389 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 390 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 391 | 392 | hasown@^2.0.0: 393 | version "2.0.0" 394 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" 395 | integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== 396 | dependencies: 397 | function-bind "^1.1.2" 398 | 399 | inflight@^1.0.4: 400 | version "1.0.6" 401 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 402 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 403 | dependencies: 404 | once "^1.3.0" 405 | wrappy "1" 406 | 407 | inherits@2: 408 | version "2.0.4" 409 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 410 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 411 | 412 | is-docker@^2.0.0: 413 | version "2.2.1" 414 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" 415 | integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== 416 | 417 | is-number@^7.0.0: 418 | version "7.0.0" 419 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 420 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 421 | 422 | is-wsl@^2.1.1: 423 | version "2.2.0" 424 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" 425 | integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== 426 | dependencies: 427 | is-docker "^2.0.0" 428 | 429 | isarray@^2.0.5: 430 | version "2.0.5" 431 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" 432 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== 433 | 434 | isexe@^2.0.0: 435 | version "2.0.0" 436 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 437 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 438 | 439 | json-stable-stringify@^1.0.2: 440 | version "1.1.0" 441 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz#43d39c7c8da34bfaf785a61a56808b0def9f747d" 442 | integrity sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA== 443 | dependencies: 444 | call-bind "^1.0.5" 445 | isarray "^2.0.5" 446 | jsonify "^0.0.1" 447 | object-keys "^1.1.1" 448 | 449 | jsonfile@^6.0.1: 450 | version "6.1.0" 451 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 452 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 453 | dependencies: 454 | universalify "^2.0.0" 455 | optionalDependencies: 456 | graceful-fs "^4.1.6" 457 | 458 | jsonify@^0.0.1: 459 | version "0.0.1" 460 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" 461 | integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== 462 | 463 | klaw-sync@^6.0.0: 464 | version "6.0.0" 465 | resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" 466 | integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== 467 | dependencies: 468 | graceful-fs "^4.1.11" 469 | 470 | lru-cache@^6.0.0: 471 | version "6.0.0" 472 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 473 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 474 | dependencies: 475 | yallist "^4.0.0" 476 | 477 | micromatch@^4.0.2: 478 | version "4.0.5" 479 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 480 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 481 | dependencies: 482 | braces "^3.0.2" 483 | picomatch "^2.3.1" 484 | 485 | minimatch@^3.1.1: 486 | version "3.1.2" 487 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 488 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 489 | dependencies: 490 | brace-expansion "^1.1.7" 491 | 492 | minimist@^1.2.6: 493 | version "1.2.8" 494 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 495 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 496 | 497 | nanoid@^3.3.6: 498 | version "3.3.7" 499 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" 500 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== 501 | 502 | object-keys@^1.1.1: 503 | version "1.1.1" 504 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 505 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 506 | 507 | once@^1.3.0: 508 | version "1.4.0" 509 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 510 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 511 | dependencies: 512 | wrappy "1" 513 | 514 | open@^7.4.2: 515 | version "7.4.2" 516 | resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" 517 | integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== 518 | dependencies: 519 | is-docker "^2.0.0" 520 | is-wsl "^2.1.1" 521 | 522 | os-tmpdir@~1.0.2: 523 | version "1.0.2" 524 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 525 | integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== 526 | 527 | patch-package@^8.0.0: 528 | version "8.0.0" 529 | resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" 530 | integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== 531 | dependencies: 532 | "@yarnpkg/lockfile" "^1.1.0" 533 | chalk "^4.1.2" 534 | ci-info "^3.7.0" 535 | cross-spawn "^7.0.3" 536 | find-yarn-workspace-root "^2.0.0" 537 | fs-extra "^9.0.0" 538 | json-stable-stringify "^1.0.2" 539 | klaw-sync "^6.0.0" 540 | minimist "^1.2.6" 541 | open "^7.4.2" 542 | rimraf "^2.6.3" 543 | semver "^7.5.3" 544 | slash "^2.0.0" 545 | tmp "^0.0.33" 546 | yaml "^2.2.2" 547 | 548 | path-is-absolute@^1.0.0: 549 | version "1.0.1" 550 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 551 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 552 | 553 | path-key@^3.1.0: 554 | version "3.1.1" 555 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 556 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 557 | 558 | picocolors@^1.0.0: 559 | version "1.0.0" 560 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 561 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 562 | 563 | picomatch@^2.3.1: 564 | version "2.3.1" 565 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 566 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 567 | 568 | postcss@^8.4.31: 569 | version "8.4.31" 570 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" 571 | integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== 572 | dependencies: 573 | nanoid "^3.3.6" 574 | picocolors "^1.0.0" 575 | source-map-js "^1.0.2" 576 | 577 | rimraf@^2.6.3: 578 | version "2.7.1" 579 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 580 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 581 | dependencies: 582 | glob "^7.1.3" 583 | 584 | rollup@^4.2.0: 585 | version "4.6.0" 586 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.6.0.tgz#4f966f6dd3f6bafd01b864d68ba078d308b864fa" 587 | integrity sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w== 588 | optionalDependencies: 589 | "@rollup/rollup-android-arm-eabi" "4.6.0" 590 | "@rollup/rollup-android-arm64" "4.6.0" 591 | "@rollup/rollup-darwin-arm64" "4.6.0" 592 | "@rollup/rollup-darwin-x64" "4.6.0" 593 | "@rollup/rollup-linux-arm-gnueabihf" "4.6.0" 594 | "@rollup/rollup-linux-arm64-gnu" "4.6.0" 595 | "@rollup/rollup-linux-arm64-musl" "4.6.0" 596 | "@rollup/rollup-linux-x64-gnu" "4.6.0" 597 | "@rollup/rollup-linux-x64-musl" "4.6.0" 598 | "@rollup/rollup-win32-arm64-msvc" "4.6.0" 599 | "@rollup/rollup-win32-ia32-msvc" "4.6.0" 600 | "@rollup/rollup-win32-x64-msvc" "4.6.0" 601 | fsevents "~2.3.2" 602 | 603 | semver@^7.5.3: 604 | version "7.5.4" 605 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 606 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 607 | dependencies: 608 | lru-cache "^6.0.0" 609 | 610 | set-function-length@^1.1.1: 611 | version "1.1.1" 612 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" 613 | integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== 614 | dependencies: 615 | define-data-property "^1.1.1" 616 | get-intrinsic "^1.2.1" 617 | gopd "^1.0.1" 618 | has-property-descriptors "^1.0.0" 619 | 620 | shebang-command@^2.0.0: 621 | version "2.0.0" 622 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 623 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 624 | dependencies: 625 | shebang-regex "^3.0.0" 626 | 627 | shebang-regex@^3.0.0: 628 | version "3.0.0" 629 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 630 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 631 | 632 | slash@^2.0.0: 633 | version "2.0.0" 634 | resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" 635 | integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== 636 | 637 | source-map-js@^1.0.2: 638 | version "1.0.2" 639 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 640 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 641 | 642 | supports-color@^7.1.0: 643 | version "7.2.0" 644 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 645 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 646 | dependencies: 647 | has-flag "^4.0.0" 648 | 649 | three@^0.158.0: 650 | version "0.158.0" 651 | resolved "https://registry.yarnpkg.com/three/-/three-0.158.0.tgz#03ddd5b60ce9c31be8fb69f27a6d9efd49908ac3" 652 | integrity sha512-TALj4EOpdDPF1henk2Q+s17K61uEAAWQ7TJB68nr7FKxqwyDr3msOt5IWdbGm4TaWKjrtWS8DJJWe9JnvsWOhQ== 653 | 654 | tmp@^0.0.33: 655 | version "0.0.33" 656 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 657 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 658 | dependencies: 659 | os-tmpdir "~1.0.2" 660 | 661 | to-regex-range@^5.0.1: 662 | version "5.0.1" 663 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 664 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 665 | dependencies: 666 | is-number "^7.0.0" 667 | 668 | universalify@^2.0.0: 669 | version "2.0.1" 670 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" 671 | integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== 672 | 673 | vite@^5.0.2: 674 | version "5.0.2" 675 | resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.2.tgz#3c94627dace83b9bf04b64eaf618038e30fb95c0" 676 | integrity sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g== 677 | dependencies: 678 | esbuild "^0.19.3" 679 | postcss "^8.4.31" 680 | rollup "^4.2.0" 681 | optionalDependencies: 682 | fsevents "~2.3.3" 683 | 684 | which@^2.0.1: 685 | version "2.0.2" 686 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 687 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 688 | dependencies: 689 | isexe "^2.0.0" 690 | 691 | wrappy@1: 692 | version "1.0.2" 693 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 694 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 695 | 696 | yallist@^4.0.0: 697 | version "4.0.0" 698 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 699 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 700 | 701 | yaml@^2.2.2: 702 | version "2.3.4" 703 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" 704 | integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== 705 | --------------------------------------------------------------------------------