├── .gitignore ├── Dockerfile ├── README.md ├── next.config.js ├── now.json ├── package.json ├── pages └── index.js ├── rustLoader.js ├── screenshot.png ├── src ├── BlobCanvas.js ├── BlobSVG.js ├── SoftBody.js └── physics.rs └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .next 2 | node_modules 3 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:9.2 2 | 3 | # Nightly Rust with wasm32-unknown-unknown and wasm-gc 4 | ENV RUSTUP_HOME=/usr/local/rustup \ 5 | CARGO_HOME=/usr/local/cargo \ 6 | PATH=/usr/local/cargo/bin:$PATH 7 | 8 | RUN set -eux; \ 9 | \ 10 | dpkgArch="$(dpkg --print-architecture)"; \ 11 | case "${dpkgArch##*-}" in \ 12 | amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='5a38dbaf7ab2e4335a3dfc42698a5b15e7167c93b0b06fc95f53c1da6379bf1a' ;; \ 13 | armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='f7ffec8a9cfe3096d535576e79cbd501766fda3769e9ed755cf1f18d7a3ba49c' ;; \ 14 | arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='bc513fbd0d221166d3aa612907016d417f8642448d1727c1446876ec9326ab2c' ;; \ 15 | i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='82b7ca05ce20e7b8f8dff4a406ef3610d21feb1476fa6fd8959355ac11474ce5' ;; \ 16 | *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ 17 | esac; \ 18 | \ 19 | url="https://static.rust-lang.org/rustup/archive/1.7.0/${rustArch}/rustup-init"; \ 20 | wget "$url"; \ 21 | echo "${rustupSha256} *rustup-init" | sha256sum -c -; \ 22 | chmod +x rustup-init; \ 23 | ./rustup-init -y --no-modify-path --default-toolchain nightly; \ 24 | rm rustup-init; \ 25 | chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \ 26 | rustup --version; \ 27 | cargo --version; \ 28 | rustc --version; \ 29 | rustup target add wasm32-unknown-unknown --toolchain nightly && \ 30 | cargo install --git https://github.com/alexcrichton/wasm-gc 31 | 32 | WORKDIR /app 33 | ADD . /app 34 | RUN yarn && /app/node_modules/.bin/next build 35 | EXPOSE 3000 36 | CMD /app/node_modules/.bin/next start 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Blob, a softbody physics simulation in Rust + WASM 2 | 3 | [View Demo Here](https://blob.gkaemmer.com) 4 | 5 | 6 | 7 | Blob is simulated by calls to WASM. The coordinates and velocities of each vertex are shared between Rust and Javascript. Every frame, the physics code is run 40 times, and the positions of each vertex are sampled for rendering. 8 | 9 | Rendering is done with a few SVG polygons in React. 10 | 11 | The site uses Next.js and doesn't really need to, but it really cuts down boilerplate. 12 | 13 | ### `rustLoader.js` 14 | 15 | SoftBody.js `require()`s the rust source code directly, and the import is managed by a webpack loader that runs the rust compiler (to the `wasm32-unknown-unknown` target). It grabs the WASM byte code and creates Javascript glue code automatically. 16 | 17 | ### Sharing data with WASM 18 | 19 | For a blob with 50 sides, the shared data is a Float64Array with 250 (50 * 5) numbers in it. In rust, this memory is passed in as a `*mut Vertex`, and turned into a `&mut [Vertex]` with `slice::from_raw_parts_mut`. Then, the `init` and `step` functions can edit the data freely. 20 | 21 | The javascript must know how that array is structured. To make interaction and rendering easier, the coordinates are copied every frame: 22 | ```js 23 | for (let i = 0; i < this.vertexCount; i++) { 24 | // Vertex is stored as five floats at vertexData[i * 5]; 25 | this.vertices[i].x = this.vertexData[i * 5 + 0]; 26 | this.vertices[i].y = this.vertexData[i * 5 + 1]; 27 | } 28 | ``` 29 | 30 | From there, Javascript can handle the rendering and events, while Rust handles all the number crunching. 31 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | module.exports = { 4 | webpack: config => { 5 | config.module.rules.push({ 6 | test: /\.rs$/, 7 | use: { 8 | loader: "rust-loader" 9 | } 10 | }) 11 | 12 | config.resolveLoader = config.resolveLoader || {}; 13 | config.resolveLoader.alias = config.resolveLoader.alias || {}; 14 | config.resolveLoader.alias["rust-loader"] = path.join(__dirname, './rustLoader'); 15 | 16 | return config; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /now.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "docker", 3 | "alias": ["softbody.now.sh", "blob.gkaemmer.com"] 4 | } 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "next start" 4 | }, 5 | "dependencies": { 6 | "gyronorm": "^2.0.6", 7 | "next": "^10.1.3", 8 | "react": "^17.0.2", 9 | "react-dom": "^17.0.2" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /pages/index.js: -------------------------------------------------------------------------------- 1 | import SoftBody from "../src/SoftBody"; 2 | import Head from "next/head"; 3 | 4 | // Bootleg feature detection 5 | const innerWidth = process.browser ? window.innerWidth : 401; 6 | 7 | export default () => ( 8 |
9 | 10 | The Blob 11 | 12 | 13 | 18 | 19 |
20 | ); 21 | -------------------------------------------------------------------------------- /rustLoader.js: -------------------------------------------------------------------------------- 1 | const child_process = require("child_process"); 2 | const fs = require("fs"); 3 | const path = require("path"); 4 | 5 | // Loader for rust files, compiles them and exports a function "prepare", which 6 | // resolves to a Wasm instance 7 | module.exports = function(source) { 8 | const callback = this.async(); 9 | 10 | const wasmFile = __dirname + "/out.wasm"; // can be anywhere writable 11 | const wasmFileTemp = __dirname + "/out-temp.wasm"; // can be anywhere writable 12 | 13 | const cmd = `rustc +nightly --crate-type=cdylib --target=wasm32-unknown-unknown -O ${ 14 | this.resourcePath 15 | } -o ${wasmFileTemp} && wasm-gc ${wasmFileTemp} ${wasmFile}`; 16 | const self = this; 17 | child_process.exec(cmd, {}, function(error, stdout, stderr) { 18 | if (error) 19 | return callback(error, null); 20 | 21 | const content = fs.readFileSync(wasmFile); 22 | const content64 = content.toString("base64"); 23 | 24 | const code = `module.exports = (function(data) { 25 | return { 26 | prepare: function(options) { 27 | if (!options) options = {}; 28 | const bytes = new Buffer(data, 'base64'); 29 | return WebAssembly.compile(bytes) 30 | .then(function(wasmModule) { 31 | return WebAssembly.instantiate(wasmModule, options); 32 | }); 33 | } 34 | } 35 | })("${content64}")`; 36 | 37 | fs.unlinkSync(wasmFile); 38 | fs.unlinkSync(wasmFileTemp); 39 | 40 | return callback(null, code); 41 | }); 42 | }; 43 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gkaemmer/rust-wasm-blob/2ff7a7740066b54bc41a750ac46622ac3f5df334/screenshot.png -------------------------------------------------------------------------------- /src/BlobCanvas.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | function isInside(body, x, y) { 4 | const dx = body.centerX - x; 5 | const dy = body.centerY - y; 6 | return dx * dx + dy * dy < body.radius * body.radius; 7 | } 8 | 9 | let ratio = 1, windowSize = {width: 800, height: 600}; 10 | 11 | function sx(x) { 12 | return (x + windowSize.width / 2) * ratio; 13 | } 14 | 15 | function sy(y) { 16 | return (y + windowSize.height / 2) * ratio; 17 | } 18 | 19 | export default class BlobSVG extends React.Component { 20 | tryDragStart = e => { 21 | e.preventDefault(); 22 | if ( 23 | isInside( 24 | this.props.body, 25 | e.clientX - windowSize.width / 2, 26 | e.clientY - windowSize.height / 2 27 | ) 28 | ) { 29 | this.props.onDragStart(e); 30 | } 31 | }; 32 | 33 | draw = () => { 34 | const { body } = this.props; 35 | const { vertices } = body; 36 | this.ctx.fillStyle = "rgba(255, 255, 255, 0.5)"; 37 | this.ctx.fillRect( 38 | 0, 39 | 0, 40 | windowSize.width * ratio, 41 | windowSize.height * ratio 42 | ); 43 | this.ctx.fillStyle = "#f43"; 44 | this.ctx.beginPath(); 45 | this.ctx.moveTo(sx(vertices[0].x), sy(vertices[0].y)); 46 | for (let vertex of vertices) { 47 | this.ctx.lineTo(sx(vertex.x), sy(vertex.y)); 48 | } 49 | this.ctx.fill(); 50 | 51 | const eyeVertex1 = 0; 52 | const eyeVertex2 = Math.floor(2 * body.vertexCount / 3); 53 | const mouthVertex = Math.floor(body.vertexCount / 3); 54 | this.ctx.fillStyle = "#333"; 55 | // Eyes 56 | this.ctx.beginPath(); 57 | this.ctx.arc( 58 | sx((vertices[eyeVertex1].x + body.centerX * 2) / 3), 59 | sy((vertices[eyeVertex1].y + body.centerY * 2) / 3), 60 | body.radius / 8 * ratio, 61 | 0, 62 | Math.PI * 2, 63 | false 64 | ); 65 | this.ctx.fill(); 66 | this.ctx.beginPath(); 67 | this.ctx.arc( 68 | sx((vertices[eyeVertex2].x + body.centerX * 2) / 3), 69 | sy((vertices[eyeVertex2].y + body.centerY * 2) / 3), 70 | body.radius / 8 * ratio, 71 | 0, 72 | Math.PI * 2, 73 | false 74 | ); 75 | this.ctx.fill(); 76 | // Mouth 77 | this.ctx.beginPath(); 78 | this.ctx.arc( 79 | sx((vertices[mouthVertex].x * 2 + body.centerX * 3) / 5), 80 | sy((vertices[mouthVertex].y * 2 + body.centerY * 3) / 5), 81 | body.radius / 4 * ratio, 82 | 0, 83 | Math.PI * 2, 84 | false 85 | ); 86 | this.ctx.fill(); 87 | 88 | if (!this.unmount) 89 | requestAnimationFrame(this.draw); 90 | }; 91 | 92 | handleResize = () => { 93 | windowSize.width = window.innerWidth; 94 | windowSize.height = window.innerHeight; 95 | const devicePixelRatio = window.devicePixelRatio || 1; 96 | const backingStoreRatio = 97 | this.ctx.webkitBackingStorePixelRatio || 98 | this.ctx.mozBackingStorePixelRatio || 99 | this.ctx.msBackingStorePixelRatio || 100 | this.ctx.oBackingStorePixelRatio || 101 | this.ctx.backingStorePixelRatio || 102 | 1; 103 | ratio = devicePixelRatio / backingStoreRatio; 104 | this.forceUpdate(); 105 | } 106 | 107 | componentDidMount() { 108 | this.ctx = this.canvas.getContext("2d"); 109 | window.addEventListener("resize", this.handleResize); 110 | this.handleResize(); 111 | requestAnimationFrame(this.draw); 112 | } 113 | 114 | componentWillUnmount() { 115 | window.removeEventListener("resize", this.handleResize); 116 | this.unmount = true; 117 | } 118 | 119 | render() { 120 | return ( 121 | (this.canvas = canvas)} 132 | /> 133 | ); 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /src/BlobSVG.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default class BlobSVG extends React.Component { 4 | preventDefault = e => e.preventDefault(); 5 | 6 | draw = () => { 7 | if (this.unmount) return; 8 | this.forceUpdate(); 9 | requestAnimationFrame(this.draw); 10 | } 11 | 12 | componentDidMount() { 13 | requestAnimationFrame(this.draw); 14 | } 15 | 16 | componentWillUnmount() { 17 | this.unmount = true; 18 | } 19 | 20 | render() { 21 | const { body, onDragStart } = this.props; 22 | const vertices = body.vertices; 23 | const eyeVertex1 = 0; 24 | const eyeVertex2 = Math.floor(2 * body.vertexCount / 3); 25 | const mouthVertex = Math.floor(body.vertexCount / 3); 26 | return ( 27 | 37 | 38 | `${v.x} ${v.y}`).join(" ")} 40 | stroke="transparent" 41 | fill="#fd4" 42 | /> 43 | {/* Eyes */} 44 | 50 | 56 | {/* Mouth */} 57 | 63 | 64 | 65 | ); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/SoftBody.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import BlobSVG from "./BlobSVG"; 3 | import BlobCanvas from "./BlobCanvas"; 4 | 5 | // Only require physics and gyronorm in the browser 6 | let physicsWasm, GyroNorm; 7 | if (process.browser) { 8 | physicsWasm = require("./physics.rs"); 9 | GyroNorm = require("../node_modules/gyronorm/dist/gyronorm.complete.min"); 10 | } 11 | 12 | // Calculate physics many times per frame, to help with stability 13 | let stepsPerFrame = 40; 14 | let vertexCount = 50; 15 | let radius = 100; 16 | 17 | // Because -2 % n = -2, rather than n - 2 18 | function modulo(n, m) { 19 | return (n % m + m) % m; 20 | } 21 | 22 | class Body { 23 | constructor(vertexCount, radius) { 24 | this.vertexCount = vertexCount; 25 | this.radius = radius; 26 | this.prepare(); 27 | } 28 | 29 | async prepare() { 30 | const instance = await physicsWasm.prepare({ 31 | env: { 32 | log: console.log.bind(console), 33 | cos: Math.cos, 34 | sin: Math.sin 35 | } 36 | }); 37 | this.module = {}; 38 | this.module.alloc = instance.exports.alloc; 39 | this.module.dealloc = instance.exports.dealloc; 40 | this.module.step = instance.exports.step; 41 | this.module.init = instance.exports.init; 42 | this.instance = instance; 43 | this.reset(); 44 | if (this.onReady) this.onReady(); 45 | } 46 | 47 | reset() { 48 | this.vertices = []; 49 | this.isMouseDown = false; 50 | this.mouseX = 0; 51 | this.mouseY = 0; 52 | this.gravX = 0; 53 | this.gravY = 1; 54 | this.centerX = 0; 55 | this.centerY = 0; 56 | this.keys = { left: false, right: false, up: false, down: false }; 57 | for (let i = 0; i < vertexCount; i++) this.vertices.push({ x: 0, y: 0 }); 58 | if (this.vertexData) this.teardown(); 59 | this.pointer = this.module.alloc(this.vertexCount); 60 | 61 | // This array is shared with WASM 62 | this.vertexData = new Float64Array( 63 | this.instance.exports.memory.buffer, 64 | this.pointer, 65 | this.vertexCount * 5 66 | ); 67 | this.module.init(this.pointer, this.vertexCount, this.radius); 68 | this.isPrepared = true; 69 | } 70 | 71 | handleDrag(clientX, clientY) { 72 | this.mouseX = clientX - window.innerWidth / 2; 73 | this.mouseY = clientY - window.innerHeight / 2; 74 | if (!this.isMouseDown) { 75 | // Calculate drag lengths 76 | for (let i = 0; i < this.vertexCount; i++) { 77 | const dx = this.mouseX - this.vertexData[i * 5 + 0]; 78 | const dy = this.mouseY - this.vertexData[i * 5 + 1]; 79 | const d = Math.sqrt(dx * dx + dy * dy); 80 | this.vertexData[i * 5 + 4] = d; 81 | } 82 | this.isMouseDown = true; 83 | } 84 | } 85 | 86 | stopDrag() { 87 | this.isMouseDown = false; 88 | // Reset drag lengths to radius 89 | for (let i = 0; i < this.vertexCount; i++) { 90 | this.vertexData[i * 5 + 4] = this.radius; 91 | } 92 | } 93 | 94 | update() { 95 | const width = window.innerWidth; 96 | const height = window.innerHeight; 97 | const { isDragging, dragX, dragY } = this; 98 | 99 | if (!this.isPrepared) return; 100 | 101 | for (let i = 0; i < stepsPerFrame; i++) { 102 | // Calculate many times per frame 103 | this.module.step( 104 | this.pointer, 105 | this.vertexCount, 106 | this.radius, 107 | width, 108 | height, 109 | this.gravX, 110 | this.gravY, 111 | this.vx, 112 | this.vy, 113 | this.isMouseDown, 114 | this.mouseX, 115 | this.mouseY, 116 | 1.0 / stepsPerFrame 117 | ); 118 | } 119 | this.centerX = 0; 120 | this.centerY = 0; 121 | for (let i = 0; i < this.vertexCount; i++) { 122 | // Grab vertex data from shared memory 123 | this.vertices[i].x = this.vertexData[i * 5 + 0]; 124 | this.vertices[i].y = this.vertexData[i * 5 + 1]; 125 | if (isNaN(this.vertices[i].x)) return this.reset(); // It blew up, reset 126 | this.centerX += this.vertices[i].x; 127 | this.centerY += this.vertices[i].y; 128 | } 129 | this.centerX /= this.vertexCount; 130 | this.centerY /= this.vertexCount; 131 | } 132 | 133 | teardown() { 134 | this.module.dealloc(this.pointer, this.vertexCount * 5); 135 | } 136 | 137 | get vx() { 138 | let vx = 0; 139 | if (this.keys.left) vx -= 1; 140 | if (this.keys.right) vx += 1; 141 | return vx; 142 | } 143 | 144 | get vy() { 145 | let vy = 0; 146 | if (this.keys.up) vy -= 1; 147 | if (this.keys.down) vy += 1; 148 | return vy; 149 | } 150 | } 151 | 152 | let origin = { 153 | x: 0, 154 | y: 0 155 | }; 156 | 157 | export default class SoftBody extends React.Component { 158 | state = { 159 | render: "svg" 160 | }; 161 | 162 | update = () => { 163 | this.body.update(); 164 | requestAnimationFrame(this.update); 165 | }; 166 | 167 | startDrag = e => { 168 | e.preventDefault(); 169 | let moveHandler, endHandler, moveEvent, endEvent; 170 | if (e.touches) { 171 | // Use touch events 172 | moveHandler = e => { 173 | this.body.handleDrag(e.touches[0].clientX, e.touches[0].clientY); 174 | }; 175 | moveEvent = "touchmove"; 176 | endEvent = "touchend"; 177 | } else { 178 | moveHandler = e => { 179 | this.body.handleDrag(e.clientX, e.clientY); 180 | }; 181 | moveEvent = "mousemove"; 182 | endEvent = "mouseup"; 183 | } 184 | moveHandler(e); 185 | window.addEventListener(moveEvent, moveHandler); 186 | window.addEventListener( 187 | endEvent, 188 | (endHandler = e => { 189 | this.body.stopDrag(); 190 | window.removeEventListener(moveEvent, moveHandler); 191 | window.removeEventListener(endEvent, endHandler); 192 | }) 193 | ); 194 | }; 195 | 196 | handleDeviceOrientation = data => { 197 | if (!data.do.alpha) return; 198 | // This took a lot of guess and check 199 | const yaw = -data.do.gamma * Math.PI / 180; 200 | const pitch = data.do.alpha * Math.PI / 180; 201 | const roll = data.do.beta * Math.PI / 180; 202 | const { cos, sin } = Math; 203 | 204 | const x = -cos(yaw) * sin(pitch) * sin(roll) - sin(yaw) * cos(roll); 205 | const y = cos(yaw) * sin(roll); 206 | // const z = -sin(yaw)*sin(pitch)*sin(roll)+cos(yaw)*cos(roll); 207 | 208 | this.body.gravX = 3 * x; 209 | this.body.gravY = 3 * y; 210 | }; 211 | 212 | handleKey = e => { 213 | const val = e.type === "keydown" ? true : false; 214 | if (e.code === "ArrowLeft") this.body.keys.left = val; 215 | if (e.code === "ArrowRight") this.body.keys.right = val; 216 | if (e.code === "ArrowUp") this.body.keys.up = val; 217 | if (e.code === "ArrowDown") this.body.keys.down = val; 218 | }; 219 | 220 | componentDidMount() { 221 | this.body = new Body(vertexCount, radius); 222 | this.body.onReady = () => this.forceUpdate(); 223 | document.addEventListener("keydown", this.handleKey); 224 | document.addEventListener("keyup", this.handleKey); 225 | const gn = new GyroNorm(); 226 | gn.init().then(() => gn.start(this.handleDeviceOrientation)); 227 | requestAnimationFrame(this.update); 228 | } 229 | 230 | componentWillUnmount() { 231 | this.body.teardown(); 232 | } 233 | 234 | preventDefault = e => e.preventDefault(); 235 | 236 | render() { 237 | if (!this.body || !this.body.vertices) return null; 238 | 239 | const Blob = this.state.render === "canvas" ? BlobCanvas : BlobSVG; 240 | return ( 241 |
242 | 258 |
259 | {innerWidth > 400 && ( 260 | 261 | Arrow keys to move
262 |
263 | )} 264 | Drag to throw
265 | Render using:{" "} 266 | {this.state.render === "canvas" ? ( 267 | Canvas (current) 268 | ) : ( 269 | { 272 | e.preventDefault(); 273 | this.setState({ render: "canvas" }); 274 | }} 275 | > 276 | Canvas 277 | 278 | )} 279 | {" | "} 280 | {this.state.render === "svg" ? ( 281 | SVG (current) 282 | ) : ( 283 | { 286 | e.preventDefault(); 287 | this.setState({ render: "svg" }); 288 | }} 289 | > 290 | SVG 291 | 292 | )} 293 |
294 | 295 |
296 | ); 297 | } 298 | } 299 | -------------------------------------------------------------------------------- /src/physics.rs: -------------------------------------------------------------------------------- 1 | use std::mem; 2 | use std::slice; 3 | use std::os::raw::c_void; 4 | 5 | #[no_mangle] 6 | #[derive(Clone, Copy)] 7 | pub struct Vertex { 8 | x: f64, 9 | y: f64, 10 | vx: f64, 11 | vy: f64, 12 | drag_length: f64 13 | } 14 | 15 | fn modulo(n: i32, m: i32) -> usize { 16 | return (((n % m) + m) % m) as usize; 17 | } 18 | 19 | fn cap(x: f64, cap: f64) -> f64 { 20 | if x > cap { return cap; } 21 | if x < -cap { return -cap; } 22 | return x; 23 | } 24 | 25 | extern "C" { 26 | fn log(x: f64); 27 | } 28 | 29 | // Credit to https://www.hellorust.com/demos/canvas/index.html 30 | 31 | // We need to provide an (empty) main function, 32 | // as the target currently is compiled as a binary. 33 | fn main() {} 34 | 35 | // In order to work with the memory we expose (de)allocation methods 36 | #[no_mangle] 37 | pub extern "C" fn alloc(count: usize) -> *mut c_void { 38 | let mut buf = Vec::with_capacity(count * mem::size_of::()); 39 | let ptr = buf.as_mut_ptr(); 40 | mem::forget(buf); 41 | return ptr as *mut c_void; 42 | } 43 | 44 | #[no_mangle] 45 | pub extern "C" fn dealloc(ptr: *mut c_void, cap: usize) { 46 | unsafe { 47 | let _buf = Vec::from_raw_parts(ptr, 0, cap); 48 | } 49 | } 50 | 51 | #[no_mangle] 52 | pub fn init(pointer: *mut Vertex, count: usize, radius: f64) { 53 | let byte_size = count * mem::size_of::(); 54 | let data: &mut [Vertex] = unsafe { slice::from_raw_parts_mut(pointer, byte_size) }; 55 | for i in 0..count { 56 | data[i] = Vertex { 57 | x: radius * (i as f64 / count as f64 * 6.28318).cos(), 58 | y: radius * (i as f64 / count as f64 * 6.28318).sin(), 59 | vx: 0.0, 60 | vy: 0.0, 61 | drag_length: radius 62 | } 63 | } 64 | } 65 | 66 | const GRAVITY: f64 = 1.5; 67 | const DRAG_TENSION: f64 = 14.0; 68 | const TENSION: f64 = 60.0; 69 | const PRESSURE: f64 = 15.0; 70 | const FRICTION: f64 = 1.5; 71 | const BODY_DECAY: f64 = 0.03; 72 | const VERTEX_DECAY: f64 = 0.4; 73 | const BOUNCE: f64 = 0.2; 74 | const ACCERATION: f64 = 150.0; 75 | 76 | // Use semi-implicit Euler method to sum forces on each vertex 77 | #[no_mangle] 78 | pub fn step( 79 | pointer: *mut Vertex, 80 | count: i32, 81 | radius: f64, 82 | width: f64, 83 | height: f64, 84 | gravx: f64, 85 | gravy: f64, // yum 86 | drivex: f64, 87 | drivey: f64, 88 | drag: bool, 89 | dragx: f64, 90 | dragy: f64, 91 | time: f64 92 | ) { 93 | let byte_size = count as usize * mem::size_of::(); 94 | let vertices: &mut [Vertex] = unsafe { slice::from_raw_parts_mut(pointer, byte_size) }; 95 | 96 | let mut avgx = 0.0; 97 | let mut avgy = 0.0; 98 | let mut avgvx = 0.0; 99 | let mut avgvy = 0.0; 100 | let mut avg_drag_length = 0.0; 101 | let mut area = 0.0; 102 | 103 | let resting_edge_length = radius * 6.28318 / count as f64; 104 | let resting_area = radius * radius * 3.14159; 105 | 106 | for i in 0..count { 107 | let vertex = vertices[i as usize]; 108 | let next = vertices[modulo(i + 1, count)]; 109 | area += vertex.x * next.y - vertex.y * next.x; 110 | avgx += vertex.x; 111 | avgy += vertex.y; 112 | avgvx += vertex.vx; 113 | avgvy += vertex.vy; 114 | avg_drag_length += vertex.drag_length; 115 | } 116 | 117 | area /= 2.0; 118 | 119 | avgx /= count as f64; 120 | avgy /= count as f64; 121 | avgvx /= count as f64; 122 | avgvy /= count as f64; 123 | avg_drag_length /= count as f64; 124 | 125 | for i in 0..count { 126 | let last = vertices[modulo((i - 1), count)]; 127 | let mut vertex = vertices[i as usize]; 128 | let next = vertices[modulo((i + 1), count)]; 129 | 130 | let mut ax = 0.0; 131 | let mut ay = 0.0; 132 | 133 | // Pull vertex towards its neighbors 134 | { 135 | let dx = last.x - vertex.x; 136 | let dy = last.y - vertex.y; 137 | let d2 = dx * dx + dy * dy; 138 | let d = d2.sqrt(); 139 | if d > resting_edge_length { 140 | ax += (dx / d) * TENSION * (d - resting_edge_length); 141 | ay += (dy / d) * TENSION * (d - resting_edge_length); 142 | } 143 | } 144 | { 145 | let dx = next.x - vertex.x; 146 | let dy = next.y - vertex.y; 147 | let d2 = dx * dx + dy * dy; 148 | let d = d2.sqrt(); 149 | if d > resting_edge_length { 150 | ax += (dx / d) * TENSION * (d - resting_edge_length); 151 | ay += (dy / d) * TENSION * (d - resting_edge_length); 152 | } 153 | } 154 | 155 | // Push vertex out, normal to the edge 156 | // To do this, calculate average position of neighboring vertices 157 | { 158 | let mut lastx = 0.0; 159 | let mut lasty = 0.0; 160 | let mut nextx = 0.0; 161 | let mut nexty = 0.0; 162 | for j in 1..4 { 163 | // previous few vertices 164 | lastx += vertices[modulo(i - j, count)].x; 165 | lasty += vertices[modulo(i - j, count)].y; 166 | } 167 | for j in 1..4 { 168 | // next few vertices 169 | nextx += vertices[modulo(i + j, count)].x; 170 | nexty += vertices[modulo(i + j, count)].y; 171 | } 172 | let dx = (nextx - lastx) / 3.0; 173 | let dy = (nexty - lasty) / 3.0; 174 | let d2 = dx * dx + dy * dy; 175 | let d = d2.sqrt(); 176 | if area < resting_area { 177 | ax += (dy / d) * PRESSURE * (resting_area / area); 178 | ay += (-dx / d) * PRESSURE * (resting_area / area); 179 | } 180 | } 181 | 182 | // Pull vertex toward mouse, as though attracted to mouse by gravity 183 | if drag { 184 | let dx = dragx - vertex.x; 185 | let dy = dragy - vertex.y; 186 | let d2 = dx * dx + dy * dy; 187 | let d = d2.sqrt(); 188 | if d > vertex.drag_length { 189 | ax += (dx / d) * DRAG_TENSION * (d - vertex.drag_length) * time; 190 | ay += (dy / d) * DRAG_TENSION * (d - vertex.drag_length) * time; 191 | } 192 | } 193 | 194 | // Apply user movement 195 | { 196 | ax += drivex * ACCERATION * time; 197 | ay += drivey * ACCERATION * time; 198 | } 199 | 200 | vertex.vx += cap(ax * time, 10.0); 201 | vertex.vy += cap(ay * time, 10.0); 202 | 203 | // Decay movement relative to body 204 | let relvx = vertex.vx - avgvx; 205 | let relvy = vertex.vy - avgvy; 206 | vertex.vx -= relvx * VERTEX_DECAY * time; 207 | vertex.vy -= relvy * VERTEX_DECAY * time; 208 | 209 | // Decay body movement 210 | vertex.vx -= avgvx * BODY_DECAY * time; 211 | vertex.vy -= avgvy * BODY_DECAY * time; 212 | vertex.vx += GRAVITY * gravx * time; 213 | vertex.vy += GRAVITY * gravy * time; 214 | vertices[i as usize] = vertex; 215 | } 216 | 217 | for i in 0..(count as usize) { 218 | let vertex = &mut vertices[i]; 219 | 220 | vertex.x += vertex.vx * time; 221 | vertex.y += vertex.vy * time; 222 | } 223 | 224 | // Collision detection 225 | for i in 0..(count as usize) { 226 | let vertex = &mut vertices[i]; 227 | let ybound = height / 2.0; 228 | let xbound = width / 2.0; 229 | if vertex.y > ybound { 230 | vertex.y = ybound; 231 | vertex.vy = -vertex.vy * BOUNCE; 232 | vertex.vx -= vertex.vx * FRICTION * time; 233 | } 234 | 235 | if vertex.y < -ybound { 236 | vertex.y = -ybound; 237 | vertex.vy = -vertex.vy * BOUNCE; 238 | vertex.vx -= vertex.vx * FRICTION * time; 239 | } 240 | 241 | if vertex.x > xbound { 242 | vertex.x = xbound; 243 | vertex.vx = -vertex.vx * BOUNCE; 244 | vertex.vy -= vertex.vy * FRICTION * time; 245 | } 246 | 247 | if vertex.x < -xbound { 248 | vertex.x = -xbound; 249 | vertex.vx = -vertex.vx * BOUNCE; 250 | vertex.vy -= vertex.vy * FRICTION * time; 251 | } 252 | } 253 | } 254 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.12.11": 13 | version "7.12.11" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.13.10" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" 20 | integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.12.11" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@babel/runtime@7.12.5": 27 | version "7.12.5" 28 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" 29 | integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== 30 | dependencies: 31 | regenerator-runtime "^0.13.4" 32 | 33 | "@babel/types@7.8.3": 34 | version "7.8.3" 35 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" 36 | integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== 37 | dependencies: 38 | esutils "^2.0.2" 39 | lodash "^4.17.13" 40 | to-fast-properties "^2.0.0" 41 | 42 | "@hapi/accept@5.0.1": 43 | version "5.0.1" 44 | resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10" 45 | integrity sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q== 46 | dependencies: 47 | "@hapi/boom" "9.x.x" 48 | "@hapi/hoek" "9.x.x" 49 | 50 | "@hapi/boom@9.x.x": 51 | version "9.1.2" 52 | resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.2.tgz#48bd41d67437164a2d636e3b5bc954f8c8dc5e38" 53 | integrity sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q== 54 | dependencies: 55 | "@hapi/hoek" "9.x.x" 56 | 57 | "@hapi/hoek@9.x.x": 58 | version "9.1.1" 59 | resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" 60 | integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw== 61 | 62 | "@next/env@10.1.3": 63 | version "10.1.3" 64 | resolved "https://registry.yarnpkg.com/@next/env/-/env-10.1.3.tgz#29e5d62919b4a7b1859f8d36169848dc3f5ddebe" 65 | integrity sha512-q7z7NvmRs66lCQmVJtKjDxVtMTjSwP6ExVzaH46pbTH60MHgzEJ9H4jXrFLTihPmCIvpAv6Ai04jbS8dcg1ZMQ== 66 | 67 | "@next/polyfill-module@10.1.3": 68 | version "10.1.3" 69 | resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.1.3.tgz#beafe89bc4235d436fa0ed02c9d2a5d311fb0238" 70 | integrity sha512-1DtUVcuoBJAn5IrxIZQjUG1KTPkiXMYloykPSkRxawimgvG9dRj2kscU+4KGNSFxHoxW9c68VRCb+7MDz5aGGw== 71 | 72 | "@next/react-dev-overlay@10.1.3": 73 | version "10.1.3" 74 | resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.1.3.tgz#ee1c6033b29be9b383e061bd9705021d131ea445" 75 | integrity sha512-vIgUah3bR9+MKzwU1Ni5ONfYM0VdI42i7jZ+Ei1c0wjwkG9anVnDqhSQ3mVg62GP2nt7ExaaFyf9THbsw5KYXg== 76 | dependencies: 77 | "@babel/code-frame" "7.12.11" 78 | anser "1.4.9" 79 | chalk "4.0.0" 80 | classnames "2.2.6" 81 | css.escape "1.5.1" 82 | data-uri-to-buffer "3.0.1" 83 | platform "1.3.6" 84 | shell-quote "1.7.2" 85 | source-map "0.8.0-beta.0" 86 | stacktrace-parser "0.1.10" 87 | strip-ansi "6.0.0" 88 | 89 | "@next/react-refresh-utils@10.1.3": 90 | version "10.1.3" 91 | resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.1.3.tgz#65b3e1b9846c02452787fde1d54ad9c54b506dbd" 92 | integrity sha512-P4GJZuLKfD/o42JvGZ/xP4Hxg68vd3NeZxOLqIuQKFjjaYgC2IrO+lE5PTwGmRkytjfprJC+9j7Jss/xQAS6QA== 93 | 94 | "@opentelemetry/api@0.14.0": 95 | version "0.14.0" 96 | resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae" 97 | integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ== 98 | dependencies: 99 | "@opentelemetry/context-base" "^0.14.0" 100 | 101 | "@opentelemetry/context-base@^0.14.0": 102 | version "0.14.0" 103 | resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001" 104 | integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw== 105 | 106 | "@types/node@*": 107 | version "14.14.37" 108 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" 109 | integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== 110 | 111 | anser@1.4.9: 112 | version "1.4.9" 113 | resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760" 114 | integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA== 115 | 116 | ansi-regex@^5.0.0: 117 | version "5.0.0" 118 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 119 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 120 | 121 | ansi-styles@^3.2.1: 122 | version "3.2.1" 123 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 124 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 125 | dependencies: 126 | color-convert "^1.9.0" 127 | 128 | ansi-styles@^4.1.0: 129 | version "4.3.0" 130 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 131 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 132 | dependencies: 133 | color-convert "^2.0.1" 134 | 135 | anymatch@~3.1.1: 136 | version "3.1.1" 137 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 138 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 139 | dependencies: 140 | normalize-path "^3.0.0" 141 | picomatch "^2.0.4" 142 | 143 | array-filter@^1.0.0: 144 | version "1.0.0" 145 | resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" 146 | integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= 147 | 148 | asn1.js@^4.0.0: 149 | version "4.9.2" 150 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" 151 | integrity sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg== 152 | dependencies: 153 | bn.js "^4.0.0" 154 | inherits "^2.0.1" 155 | minimalistic-assert "^1.0.0" 156 | 157 | assert@2.0.0: 158 | version "2.0.0" 159 | resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" 160 | integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== 161 | dependencies: 162 | es6-object-assign "^1.1.0" 163 | is-nan "^1.2.1" 164 | object-is "^1.0.1" 165 | util "^0.12.0" 166 | 167 | assert@^1.1.1: 168 | version "1.4.1" 169 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 170 | integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= 171 | dependencies: 172 | util "0.10.3" 173 | 174 | ast-types@0.13.2: 175 | version "0.13.2" 176 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" 177 | integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== 178 | 179 | available-typed-arrays@^1.0.2: 180 | version "1.0.2" 181 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" 182 | integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== 183 | dependencies: 184 | array-filter "^1.0.0" 185 | 186 | babel-plugin-syntax-jsx@6.18.0: 187 | version "6.18.0" 188 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" 189 | integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= 190 | 191 | base64-js@^1.0.2: 192 | version "1.2.1" 193 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" 194 | integrity sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw== 195 | 196 | big.js@^5.2.2: 197 | version "5.2.2" 198 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" 199 | integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== 200 | 201 | binary-extensions@^2.0.0: 202 | version "2.2.0" 203 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 204 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 205 | 206 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 207 | version "4.11.8" 208 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" 209 | integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== 210 | 211 | braces@~3.0.2: 212 | version "3.0.2" 213 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 214 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 215 | dependencies: 216 | fill-range "^7.0.1" 217 | 218 | brorand@^1.0.1: 219 | version "1.1.0" 220 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 221 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 222 | 223 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 224 | version "1.1.1" 225 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" 226 | integrity sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg== 227 | dependencies: 228 | buffer-xor "^1.0.3" 229 | cipher-base "^1.0.0" 230 | create-hash "^1.1.0" 231 | evp_bytestokey "^1.0.3" 232 | inherits "^2.0.1" 233 | safe-buffer "^5.0.1" 234 | 235 | browserify-cipher@^1.0.0: 236 | version "1.0.0" 237 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" 238 | integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo= 239 | dependencies: 240 | browserify-aes "^1.0.4" 241 | browserify-des "^1.0.0" 242 | evp_bytestokey "^1.0.0" 243 | 244 | browserify-des@^1.0.0: 245 | version "1.0.0" 246 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" 247 | integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0= 248 | dependencies: 249 | cipher-base "^1.0.1" 250 | des.js "^1.0.0" 251 | inherits "^2.0.1" 252 | 253 | browserify-rsa@^4.0.0: 254 | version "4.0.1" 255 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 256 | integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= 257 | dependencies: 258 | bn.js "^4.1.0" 259 | randombytes "^2.0.1" 260 | 261 | browserify-sign@^4.0.0: 262 | version "4.0.4" 263 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" 264 | integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= 265 | dependencies: 266 | bn.js "^4.1.1" 267 | browserify-rsa "^4.0.0" 268 | create-hash "^1.1.0" 269 | create-hmac "^1.1.2" 270 | elliptic "^6.0.0" 271 | inherits "^2.0.1" 272 | parse-asn1 "^5.0.0" 273 | 274 | browserify-zlib@0.2.0, browserify-zlib@^0.2.0: 275 | version "0.2.0" 276 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 277 | integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 278 | dependencies: 279 | pako "~1.0.5" 280 | 281 | browserslist@4.16.1: 282 | version "4.16.1" 283 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" 284 | integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== 285 | dependencies: 286 | caniuse-lite "^1.0.30001173" 287 | colorette "^1.2.1" 288 | electron-to-chromium "^1.3.634" 289 | escalade "^3.1.1" 290 | node-releases "^1.1.69" 291 | 292 | buffer-xor@^1.0.3: 293 | version "1.0.3" 294 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 295 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 296 | 297 | buffer@5.6.0: 298 | version "5.6.0" 299 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" 300 | integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== 301 | dependencies: 302 | base64-js "^1.0.2" 303 | ieee754 "^1.1.4" 304 | 305 | buffer@^4.3.0: 306 | version "4.9.1" 307 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 308 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 309 | dependencies: 310 | base64-js "^1.0.2" 311 | ieee754 "^1.1.4" 312 | isarray "^1.0.0" 313 | 314 | builtin-status-codes@^3.0.0: 315 | version "3.0.0" 316 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 317 | integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= 318 | 319 | bytes@3.1.0: 320 | version "3.1.0" 321 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 322 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 323 | 324 | call-bind@^1.0.0, call-bind@^1.0.2: 325 | version "1.0.2" 326 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 327 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 328 | dependencies: 329 | function-bind "^1.1.1" 330 | get-intrinsic "^1.0.2" 331 | 332 | caniuse-lite@^1.0.30001173, caniuse-lite@^1.0.30001179: 333 | version "1.0.30001205" 334 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz#d79bf6a6fb13196b4bb46e5143a22ca0242e0ef8" 335 | integrity sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og== 336 | 337 | chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.2: 338 | version "2.4.2" 339 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 340 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 341 | dependencies: 342 | ansi-styles "^3.2.1" 343 | escape-string-regexp "^1.0.5" 344 | supports-color "^5.3.0" 345 | 346 | chalk@4.0.0: 347 | version "4.0.0" 348 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" 349 | integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== 350 | dependencies: 351 | ansi-styles "^4.1.0" 352 | supports-color "^7.1.0" 353 | 354 | chokidar@3.5.1: 355 | version "3.5.1" 356 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 357 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 358 | dependencies: 359 | anymatch "~3.1.1" 360 | braces "~3.0.2" 361 | glob-parent "~5.1.0" 362 | is-binary-path "~2.1.0" 363 | is-glob "~4.0.1" 364 | normalize-path "~3.0.0" 365 | readdirp "~3.5.0" 366 | optionalDependencies: 367 | fsevents "~2.3.1" 368 | 369 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 370 | version "1.0.4" 371 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 372 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 373 | dependencies: 374 | inherits "^2.0.1" 375 | safe-buffer "^5.0.1" 376 | 377 | classnames@2.2.6: 378 | version "2.2.6" 379 | resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" 380 | integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== 381 | 382 | color-convert@^1.9.0: 383 | version "1.9.1" 384 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 385 | integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ== 386 | dependencies: 387 | color-name "^1.1.1" 388 | 389 | color-convert@^2.0.1: 390 | version "2.0.1" 391 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 392 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 393 | dependencies: 394 | color-name "~1.1.4" 395 | 396 | color-name@^1.1.1: 397 | version "1.1.3" 398 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 399 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 400 | 401 | color-name@~1.1.4: 402 | version "1.1.4" 403 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 404 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 405 | 406 | colorette@^1.2.1: 407 | version "1.2.2" 408 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" 409 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== 410 | 411 | commondir@^1.0.1: 412 | version "1.0.1" 413 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 414 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 415 | 416 | console-browserify@^1.1.0: 417 | version "1.1.0" 418 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 419 | integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= 420 | dependencies: 421 | date-now "^0.1.4" 422 | 423 | constants-browserify@1.0.0, constants-browserify@^1.0.0: 424 | version "1.0.0" 425 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 426 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 427 | 428 | convert-source-map@1.7.0: 429 | version "1.7.0" 430 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 431 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 432 | dependencies: 433 | safe-buffer "~5.1.1" 434 | 435 | core-util-is@~1.0.0: 436 | version "1.0.2" 437 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 438 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 439 | 440 | create-ecdh@^4.0.0: 441 | version "4.0.0" 442 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" 443 | integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30= 444 | dependencies: 445 | bn.js "^4.1.0" 446 | elliptic "^6.0.0" 447 | 448 | create-hash@^1.1.0, create-hash@^1.1.2: 449 | version "1.1.3" 450 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" 451 | integrity sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0= 452 | dependencies: 453 | cipher-base "^1.0.1" 454 | inherits "^2.0.1" 455 | ripemd160 "^2.0.0" 456 | sha.js "^2.4.0" 457 | 458 | create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: 459 | version "1.1.6" 460 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" 461 | integrity sha1-rLniIaThe9sHbpBlfEK5PjcmzwY= 462 | dependencies: 463 | cipher-base "^1.0.3" 464 | create-hash "^1.1.0" 465 | inherits "^2.0.1" 466 | ripemd160 "^2.0.0" 467 | safe-buffer "^5.0.1" 468 | sha.js "^2.4.8" 469 | 470 | crypto-browserify@3.12.0, crypto-browserify@^3.11.0: 471 | version "3.12.0" 472 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 473 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 474 | dependencies: 475 | browserify-cipher "^1.0.0" 476 | browserify-sign "^4.0.0" 477 | create-ecdh "^4.0.0" 478 | create-hash "^1.1.0" 479 | create-hmac "^1.1.0" 480 | diffie-hellman "^5.0.0" 481 | inherits "^2.0.1" 482 | pbkdf2 "^3.0.3" 483 | public-encrypt "^4.0.0" 484 | randombytes "^2.0.0" 485 | randomfill "^1.0.3" 486 | 487 | css.escape@1.5.1: 488 | version "1.5.1" 489 | resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" 490 | integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= 491 | 492 | cssnano-preset-simple@1.2.2: 493 | version "1.2.2" 494 | resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.2.tgz#c631bf79ffec7fdfc4069e2f2da3ca67d99d8413" 495 | integrity sha512-gtvrcRSGtP3hA/wS8mFVinFnQdEsEpm3v4I/s/KmNjpdWaThV/4E5EojAzFXxyT5OCSRPLlHR9iQexAqKHlhGQ== 496 | dependencies: 497 | caniuse-lite "^1.0.30001179" 498 | postcss "^7.0.32" 499 | 500 | cssnano-simple@1.2.2: 501 | version "1.2.2" 502 | resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.2.tgz#72c2c3970e67123c3b4130894a30dc1050267007" 503 | integrity sha512-4slyYc1w4JhSbhVX5xi9G0aQ42JnRyPg+7l7cqoNyoIDzfWx40Rq3JQZnoAWDu60A4AvKVp9ln/YSUOdhDX68g== 504 | dependencies: 505 | cssnano-preset-simple "1.2.2" 506 | postcss "^7.0.32" 507 | 508 | data-uri-to-buffer@3.0.1: 509 | version "3.0.1" 510 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" 511 | integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== 512 | 513 | date-now@^0.1.4: 514 | version "0.1.4" 515 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 516 | integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= 517 | 518 | debug@2: 519 | version "2.6.9" 520 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 521 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 522 | dependencies: 523 | ms "2.0.0" 524 | 525 | define-properties@^1.1.3: 526 | version "1.1.3" 527 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 528 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 529 | dependencies: 530 | object-keys "^1.0.12" 531 | 532 | depd@~1.1.2: 533 | version "1.1.2" 534 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 535 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 536 | 537 | des.js@^1.0.0: 538 | version "1.0.0" 539 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 540 | integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= 541 | dependencies: 542 | inherits "^2.0.1" 543 | minimalistic-assert "^1.0.0" 544 | 545 | diffie-hellman@^5.0.0: 546 | version "5.0.2" 547 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" 548 | integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4= 549 | dependencies: 550 | bn.js "^4.1.0" 551 | miller-rabin "^4.0.0" 552 | randombytes "^2.0.0" 553 | 554 | domain-browser@4.19.0: 555 | version "4.19.0" 556 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1" 557 | integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ== 558 | 559 | domain-browser@^1.1.1: 560 | version "1.1.7" 561 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" 562 | integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw= 563 | 564 | electron-to-chromium@^1.3.634: 565 | version "1.3.707" 566 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz#71386d0ceca6727835c33ba31f507f6824d18c35" 567 | integrity sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA== 568 | 569 | elliptic@^6.0.0: 570 | version "6.4.0" 571 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" 572 | integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= 573 | dependencies: 574 | bn.js "^4.4.0" 575 | brorand "^1.0.1" 576 | hash.js "^1.0.0" 577 | hmac-drbg "^1.0.0" 578 | inherits "^2.0.1" 579 | minimalistic-assert "^1.0.0" 580 | minimalistic-crypto-utils "^1.0.0" 581 | 582 | emojis-list@^2.0.0: 583 | version "2.1.0" 584 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 585 | integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= 586 | 587 | encoding@0.1.13: 588 | version "0.1.13" 589 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" 590 | integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== 591 | dependencies: 592 | iconv-lite "^0.6.2" 593 | 594 | es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: 595 | version "1.18.0" 596 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" 597 | integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== 598 | dependencies: 599 | call-bind "^1.0.2" 600 | es-to-primitive "^1.2.1" 601 | function-bind "^1.1.1" 602 | get-intrinsic "^1.1.1" 603 | has "^1.0.3" 604 | has-symbols "^1.0.2" 605 | is-callable "^1.2.3" 606 | is-negative-zero "^2.0.1" 607 | is-regex "^1.1.2" 608 | is-string "^1.0.5" 609 | object-inspect "^1.9.0" 610 | object-keys "^1.1.1" 611 | object.assign "^4.1.2" 612 | string.prototype.trimend "^1.0.4" 613 | string.prototype.trimstart "^1.0.4" 614 | unbox-primitive "^1.0.0" 615 | 616 | es-to-primitive@^1.2.1: 617 | version "1.2.1" 618 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 619 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 620 | dependencies: 621 | is-callable "^1.1.4" 622 | is-date-object "^1.0.1" 623 | is-symbol "^1.0.2" 624 | 625 | es6-object-assign@^1.1.0: 626 | version "1.1.0" 627 | resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" 628 | integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= 629 | 630 | escalade@^3.1.1: 631 | version "3.1.1" 632 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 633 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 634 | 635 | escape-string-regexp@^1.0.5: 636 | version "1.0.5" 637 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 638 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 639 | 640 | esutils@^2.0.2: 641 | version "2.0.2" 642 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 643 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 644 | 645 | etag@1.8.1: 646 | version "1.8.1" 647 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 648 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 649 | 650 | events@^3.0.0: 651 | version "3.3.0" 652 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 653 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 654 | 655 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 656 | version "1.0.3" 657 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 658 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 659 | dependencies: 660 | md5.js "^1.3.4" 661 | safe-buffer "^5.1.1" 662 | 663 | fill-range@^7.0.1: 664 | version "7.0.1" 665 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 666 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 667 | dependencies: 668 | to-regex-range "^5.0.1" 669 | 670 | find-cache-dir@3.3.1: 671 | version "3.3.1" 672 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" 673 | integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== 674 | dependencies: 675 | commondir "^1.0.1" 676 | make-dir "^3.0.2" 677 | pkg-dir "^4.1.0" 678 | 679 | find-up@^4.0.0: 680 | version "4.1.0" 681 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 682 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 683 | dependencies: 684 | locate-path "^5.0.0" 685 | path-exists "^4.0.0" 686 | 687 | foreach@^2.0.5: 688 | version "2.0.5" 689 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 690 | integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= 691 | 692 | fsevents@~2.3.1: 693 | version "2.3.2" 694 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 695 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 696 | 697 | function-bind@^1.1.1: 698 | version "1.1.1" 699 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 700 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 701 | 702 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: 703 | version "1.1.1" 704 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 705 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 706 | dependencies: 707 | function-bind "^1.1.1" 708 | has "^1.0.3" 709 | has-symbols "^1.0.1" 710 | 711 | get-orientation@1.1.2: 712 | version "1.1.2" 713 | resolved "https://registry.yarnpkg.com/get-orientation/-/get-orientation-1.1.2.tgz#20507928951814f8a91ded0a0e67b29dfab98947" 714 | integrity sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ== 715 | dependencies: 716 | stream-parser "^0.3.1" 717 | 718 | glob-parent@~5.1.0: 719 | version "5.1.2" 720 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 721 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 722 | dependencies: 723 | is-glob "^4.0.1" 724 | 725 | glob-to-regexp@^0.4.1: 726 | version "0.4.1" 727 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 728 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 729 | 730 | graceful-fs@^4.1.2: 731 | version "4.1.11" 732 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 733 | integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= 734 | 735 | gyronorm@^2.0.6: 736 | version "2.0.6" 737 | resolved "https://registry.yarnpkg.com/gyronorm/-/gyronorm-2.0.6.tgz#c3dbcaa0109087fea75378f78538befdcd53cee2" 738 | integrity sha1-w9vKoBCQh/6nU3j3hTi+/c1TzuI= 739 | 740 | has-bigints@^1.0.1: 741 | version "1.0.1" 742 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 743 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 744 | 745 | has-flag@^3.0.0: 746 | version "3.0.0" 747 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 748 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 749 | 750 | has-flag@^4.0.0: 751 | version "4.0.0" 752 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 753 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 754 | 755 | has-symbols@^1.0.1, has-symbols@^1.0.2: 756 | version "1.0.2" 757 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 758 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 759 | 760 | has@^1.0.3: 761 | version "1.0.3" 762 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 763 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 764 | dependencies: 765 | function-bind "^1.1.1" 766 | 767 | hash-base@^2.0.0: 768 | version "2.0.2" 769 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" 770 | integrity sha1-ZuodhW206KVHDK32/OI65SRO8uE= 771 | dependencies: 772 | inherits "^2.0.1" 773 | 774 | hash-base@^3.0.0: 775 | version "3.0.4" 776 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" 777 | integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= 778 | dependencies: 779 | inherits "^2.0.1" 780 | safe-buffer "^5.0.1" 781 | 782 | hash.js@^1.0.0, hash.js@^1.0.3: 783 | version "1.1.3" 784 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" 785 | integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== 786 | dependencies: 787 | inherits "^2.0.3" 788 | minimalistic-assert "^1.0.0" 789 | 790 | he@1.2.0: 791 | version "1.2.0" 792 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 793 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 794 | 795 | hmac-drbg@^1.0.0: 796 | version "1.0.1" 797 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 798 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 799 | dependencies: 800 | hash.js "^1.0.3" 801 | minimalistic-assert "^1.0.0" 802 | minimalistic-crypto-utils "^1.0.1" 803 | 804 | http-errors@1.7.3: 805 | version "1.7.3" 806 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 807 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 808 | dependencies: 809 | depd "~1.1.2" 810 | inherits "2.0.4" 811 | setprototypeof "1.1.1" 812 | statuses ">= 1.5.0 < 2" 813 | toidentifier "1.0.0" 814 | 815 | https-browserify@1.0.0, https-browserify@^1.0.0: 816 | version "1.0.0" 817 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 818 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 819 | 820 | iconv-lite@0.4.24: 821 | version "0.4.24" 822 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 823 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 824 | dependencies: 825 | safer-buffer ">= 2.1.2 < 3" 826 | 827 | iconv-lite@^0.6.2: 828 | version "0.6.2" 829 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" 830 | integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== 831 | dependencies: 832 | safer-buffer ">= 2.1.2 < 3.0.0" 833 | 834 | ieee754@^1.1.4: 835 | version "1.1.8" 836 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 837 | integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q= 838 | 839 | inherits@2.0.1: 840 | version "2.0.1" 841 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 842 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 843 | 844 | inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: 845 | version "2.0.3" 846 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 847 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 848 | 849 | inherits@2.0.4, inherits@^2.0.4, inherits@~2.0.4: 850 | version "2.0.4" 851 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 852 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 853 | 854 | is-arguments@^1.0.4: 855 | version "1.1.0" 856 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" 857 | integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== 858 | dependencies: 859 | call-bind "^1.0.0" 860 | 861 | is-bigint@^1.0.1: 862 | version "1.0.1" 863 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" 864 | integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== 865 | 866 | is-binary-path@~2.1.0: 867 | version "2.1.0" 868 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 869 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 870 | dependencies: 871 | binary-extensions "^2.0.0" 872 | 873 | is-boolean-object@^1.1.0: 874 | version "1.1.0" 875 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" 876 | integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== 877 | dependencies: 878 | call-bind "^1.0.0" 879 | 880 | is-callable@^1.1.4, is-callable@^1.2.3: 881 | version "1.2.3" 882 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" 883 | integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== 884 | 885 | is-date-object@^1.0.1: 886 | version "1.0.2" 887 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 888 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 889 | 890 | is-extglob@^2.1.1: 891 | version "2.1.1" 892 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 893 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 894 | 895 | is-generator-function@^1.0.7: 896 | version "1.0.8" 897 | resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" 898 | integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== 899 | 900 | is-glob@^4.0.1, is-glob@~4.0.1: 901 | version "4.0.1" 902 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 903 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 904 | dependencies: 905 | is-extglob "^2.1.1" 906 | 907 | is-nan@^1.2.1: 908 | version "1.3.2" 909 | resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" 910 | integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== 911 | dependencies: 912 | call-bind "^1.0.0" 913 | define-properties "^1.1.3" 914 | 915 | is-negative-zero@^2.0.1: 916 | version "2.0.1" 917 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" 918 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== 919 | 920 | is-number-object@^1.0.4: 921 | version "1.0.4" 922 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" 923 | integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== 924 | 925 | is-number@^7.0.0: 926 | version "7.0.0" 927 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 928 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 929 | 930 | is-regex@^1.1.2: 931 | version "1.1.2" 932 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" 933 | integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== 934 | dependencies: 935 | call-bind "^1.0.2" 936 | has-symbols "^1.0.1" 937 | 938 | is-string@^1.0.5: 939 | version "1.0.5" 940 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 941 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 942 | 943 | is-symbol@^1.0.2, is-symbol@^1.0.3: 944 | version "1.0.3" 945 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 946 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 947 | dependencies: 948 | has-symbols "^1.0.1" 949 | 950 | is-typed-array@^1.1.3: 951 | version "1.1.5" 952 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" 953 | integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== 954 | dependencies: 955 | available-typed-arrays "^1.0.2" 956 | call-bind "^1.0.2" 957 | es-abstract "^1.18.0-next.2" 958 | foreach "^2.0.5" 959 | has-symbols "^1.0.1" 960 | 961 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 962 | version "1.0.0" 963 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 964 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 965 | 966 | isobject@^2.0.0: 967 | version "2.1.0" 968 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 969 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 970 | dependencies: 971 | isarray "1.0.0" 972 | 973 | jest-worker@27.0.0-next.5: 974 | version "27.0.0-next.5" 975 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.5.tgz#5985ee29b12a4e191f4aae4bb73b97971d86ec28" 976 | integrity sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g== 977 | dependencies: 978 | "@types/node" "*" 979 | merge-stream "^2.0.0" 980 | supports-color "^8.0.0" 981 | 982 | js-tokens@^3.0.0: 983 | version "3.0.2" 984 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 985 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 986 | 987 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 988 | version "4.0.0" 989 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 990 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 991 | 992 | json5@^1.0.1: 993 | version "1.0.1" 994 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 995 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 996 | dependencies: 997 | minimist "^1.2.0" 998 | 999 | line-column@^1.0.2: 1000 | version "1.0.2" 1001 | resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" 1002 | integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= 1003 | dependencies: 1004 | isarray "^1.0.0" 1005 | isobject "^2.0.0" 1006 | 1007 | loader-utils@1.2.3: 1008 | version "1.2.3" 1009 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" 1010 | integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== 1011 | dependencies: 1012 | big.js "^5.2.2" 1013 | emojis-list "^2.0.0" 1014 | json5 "^1.0.1" 1015 | 1016 | locate-path@^5.0.0: 1017 | version "5.0.0" 1018 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1019 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1020 | dependencies: 1021 | p-locate "^4.1.0" 1022 | 1023 | lodash.sortby@^4.7.0: 1024 | version "4.7.0" 1025 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 1026 | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 1027 | 1028 | lodash@^4.17.13: 1029 | version "4.17.21" 1030 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1031 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1032 | 1033 | loose-envify@^1.1.0: 1034 | version "1.3.1" 1035 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 1036 | integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg= 1037 | dependencies: 1038 | js-tokens "^3.0.0" 1039 | 1040 | loose-envify@^1.4.0: 1041 | version "1.4.0" 1042 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1043 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1044 | dependencies: 1045 | js-tokens "^3.0.0 || ^4.0.0" 1046 | 1047 | make-dir@^3.0.2: 1048 | version "3.1.0" 1049 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1050 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1051 | dependencies: 1052 | semver "^6.0.0" 1053 | 1054 | md5.js@^1.3.4: 1055 | version "1.3.4" 1056 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" 1057 | integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= 1058 | dependencies: 1059 | hash-base "^3.0.0" 1060 | inherits "^2.0.1" 1061 | 1062 | merge-stream@^2.0.0: 1063 | version "2.0.0" 1064 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1065 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1066 | 1067 | miller-rabin@^4.0.0: 1068 | version "4.0.1" 1069 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 1070 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 1071 | dependencies: 1072 | bn.js "^4.0.0" 1073 | brorand "^1.0.1" 1074 | 1075 | minimalistic-assert@^1.0.0: 1076 | version "1.0.0" 1077 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" 1078 | integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M= 1079 | 1080 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 1081 | version "1.0.1" 1082 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 1083 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 1084 | 1085 | minimist@^1.2.0: 1086 | version "1.2.0" 1087 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1088 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1089 | 1090 | ms@2.0.0: 1091 | version "2.0.0" 1092 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1093 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1094 | 1095 | nanoid@^3.1.16: 1096 | version "3.1.22" 1097 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" 1098 | integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== 1099 | 1100 | native-url@0.3.4: 1101 | version "0.3.4" 1102 | resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8" 1103 | integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA== 1104 | dependencies: 1105 | querystring "^0.2.0" 1106 | 1107 | next@^10.1.3: 1108 | version "10.1.3" 1109 | resolved "https://registry.yarnpkg.com/next/-/next-10.1.3.tgz#e26e8371343a42bc2ba9be5cb253a7d324d03673" 1110 | integrity sha512-8Jf38F+s0YcXXkJGF5iUxOqSmbHrey0fX5Epc43L0uwDKmN2jK9vhc2ihCwXC1pmu8d2m/8wfTiXRJKGti55yw== 1111 | dependencies: 1112 | "@babel/runtime" "7.12.5" 1113 | "@hapi/accept" "5.0.1" 1114 | "@next/env" "10.1.3" 1115 | "@next/polyfill-module" "10.1.3" 1116 | "@next/react-dev-overlay" "10.1.3" 1117 | "@next/react-refresh-utils" "10.1.3" 1118 | "@opentelemetry/api" "0.14.0" 1119 | assert "2.0.0" 1120 | ast-types "0.13.2" 1121 | browserify-zlib "0.2.0" 1122 | browserslist "4.16.1" 1123 | buffer "5.6.0" 1124 | caniuse-lite "^1.0.30001179" 1125 | chalk "2.4.2" 1126 | chokidar "3.5.1" 1127 | constants-browserify "1.0.0" 1128 | crypto-browserify "3.12.0" 1129 | cssnano-simple "1.2.2" 1130 | domain-browser "4.19.0" 1131 | encoding "0.1.13" 1132 | etag "1.8.1" 1133 | find-cache-dir "3.3.1" 1134 | get-orientation "1.1.2" 1135 | https-browserify "1.0.0" 1136 | jest-worker "27.0.0-next.5" 1137 | native-url "0.3.4" 1138 | node-fetch "2.6.1" 1139 | node-html-parser "1.4.9" 1140 | node-libs-browser "^2.2.1" 1141 | os-browserify "0.3.0" 1142 | p-limit "3.1.0" 1143 | path-browserify "1.0.1" 1144 | pnp-webpack-plugin "1.6.4" 1145 | postcss "8.1.7" 1146 | process "0.11.10" 1147 | prop-types "15.7.2" 1148 | querystring-es3 "0.2.1" 1149 | raw-body "2.4.1" 1150 | react-is "16.13.1" 1151 | react-refresh "0.8.3" 1152 | stream-browserify "3.0.0" 1153 | stream-http "3.1.1" 1154 | string_decoder "1.3.0" 1155 | styled-jsx "3.3.2" 1156 | timers-browserify "2.0.12" 1157 | tty-browserify "0.0.1" 1158 | use-subscription "1.5.1" 1159 | util "0.12.3" 1160 | vm-browserify "1.1.2" 1161 | watchpack "2.1.1" 1162 | 1163 | node-fetch@2.6.1: 1164 | version "2.6.1" 1165 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 1166 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 1167 | 1168 | node-html-parser@1.4.9: 1169 | version "1.4.9" 1170 | resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" 1171 | integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw== 1172 | dependencies: 1173 | he "1.2.0" 1174 | 1175 | node-libs-browser@^2.2.1: 1176 | version "2.2.1" 1177 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" 1178 | integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== 1179 | dependencies: 1180 | assert "^1.1.1" 1181 | browserify-zlib "^0.2.0" 1182 | buffer "^4.3.0" 1183 | console-browserify "^1.1.0" 1184 | constants-browserify "^1.0.0" 1185 | crypto-browserify "^3.11.0" 1186 | domain-browser "^1.1.1" 1187 | events "^3.0.0" 1188 | https-browserify "^1.0.0" 1189 | os-browserify "^0.3.0" 1190 | path-browserify "0.0.1" 1191 | process "^0.11.10" 1192 | punycode "^1.2.4" 1193 | querystring-es3 "^0.2.0" 1194 | readable-stream "^2.3.3" 1195 | stream-browserify "^2.0.1" 1196 | stream-http "^2.7.2" 1197 | string_decoder "^1.0.0" 1198 | timers-browserify "^2.0.4" 1199 | tty-browserify "0.0.0" 1200 | url "^0.11.0" 1201 | util "^0.11.0" 1202 | vm-browserify "^1.0.1" 1203 | 1204 | node-releases@^1.1.69: 1205 | version "1.1.71" 1206 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" 1207 | integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== 1208 | 1209 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1210 | version "3.0.0" 1211 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1212 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1213 | 1214 | object-assign@^4.1.1: 1215 | version "4.1.1" 1216 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1217 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1218 | 1219 | object-inspect@^1.9.0: 1220 | version "1.9.0" 1221 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" 1222 | integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== 1223 | 1224 | object-is@^1.0.1: 1225 | version "1.1.5" 1226 | resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" 1227 | integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== 1228 | dependencies: 1229 | call-bind "^1.0.2" 1230 | define-properties "^1.1.3" 1231 | 1232 | object-keys@^1.0.12, object-keys@^1.1.1: 1233 | version "1.1.1" 1234 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1235 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1236 | 1237 | object.assign@^4.1.2: 1238 | version "4.1.2" 1239 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1240 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1241 | dependencies: 1242 | call-bind "^1.0.0" 1243 | define-properties "^1.1.3" 1244 | has-symbols "^1.0.1" 1245 | object-keys "^1.1.1" 1246 | 1247 | os-browserify@0.3.0, os-browserify@^0.3.0: 1248 | version "0.3.0" 1249 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 1250 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 1251 | 1252 | p-limit@3.1.0: 1253 | version "3.1.0" 1254 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1255 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1256 | dependencies: 1257 | yocto-queue "^0.1.0" 1258 | 1259 | p-limit@^2.2.0: 1260 | version "2.3.0" 1261 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1262 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1263 | dependencies: 1264 | p-try "^2.0.0" 1265 | 1266 | p-locate@^4.1.0: 1267 | version "4.1.0" 1268 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1269 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1270 | dependencies: 1271 | p-limit "^2.2.0" 1272 | 1273 | p-try@^2.0.0: 1274 | version "2.2.0" 1275 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1276 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1277 | 1278 | pako@~1.0.5: 1279 | version "1.0.6" 1280 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" 1281 | integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== 1282 | 1283 | parse-asn1@^5.0.0: 1284 | version "5.1.0" 1285 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" 1286 | integrity sha1-N8T5t+06tlx0gXtfJICTf7+XxxI= 1287 | dependencies: 1288 | asn1.js "^4.0.0" 1289 | browserify-aes "^1.0.0" 1290 | create-hash "^1.1.0" 1291 | evp_bytestokey "^1.0.0" 1292 | pbkdf2 "^3.0.3" 1293 | 1294 | path-browserify@0.0.1: 1295 | version "0.0.1" 1296 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" 1297 | integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== 1298 | 1299 | path-browserify@1.0.1: 1300 | version "1.0.1" 1301 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" 1302 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== 1303 | 1304 | path-exists@^4.0.0: 1305 | version "4.0.0" 1306 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1307 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1308 | 1309 | pbkdf2@^3.0.3: 1310 | version "3.0.14" 1311 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" 1312 | integrity sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA== 1313 | dependencies: 1314 | create-hash "^1.1.2" 1315 | create-hmac "^1.1.4" 1316 | ripemd160 "^2.0.1" 1317 | safe-buffer "^5.0.1" 1318 | sha.js "^2.4.8" 1319 | 1320 | picomatch@^2.0.4, picomatch@^2.2.1: 1321 | version "2.2.2" 1322 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1323 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1324 | 1325 | pkg-dir@^4.1.0: 1326 | version "4.2.0" 1327 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1328 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1329 | dependencies: 1330 | find-up "^4.0.0" 1331 | 1332 | platform@1.3.6: 1333 | version "1.3.6" 1334 | resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" 1335 | integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== 1336 | 1337 | pnp-webpack-plugin@1.6.4: 1338 | version "1.6.4" 1339 | resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" 1340 | integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== 1341 | dependencies: 1342 | ts-pnp "^1.1.6" 1343 | 1344 | postcss@8.1.7: 1345 | version "8.1.7" 1346 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.7.tgz#ff6a82691bd861f3354fd9b17b2332f88171233f" 1347 | integrity sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ== 1348 | dependencies: 1349 | colorette "^1.2.1" 1350 | line-column "^1.0.2" 1351 | nanoid "^3.1.16" 1352 | source-map "^0.6.1" 1353 | 1354 | postcss@^7.0.32: 1355 | version "7.0.35" 1356 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" 1357 | integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== 1358 | dependencies: 1359 | chalk "^2.4.2" 1360 | source-map "^0.6.1" 1361 | supports-color "^6.1.0" 1362 | 1363 | process-nextick-args@~1.0.6: 1364 | version "1.0.7" 1365 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1366 | integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= 1367 | 1368 | process@0.11.10, process@^0.11.10: 1369 | version "0.11.10" 1370 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1371 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 1372 | 1373 | prop-types@15.7.2: 1374 | version "15.7.2" 1375 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 1376 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 1377 | dependencies: 1378 | loose-envify "^1.4.0" 1379 | object-assign "^4.1.1" 1380 | react-is "^16.8.1" 1381 | 1382 | public-encrypt@^4.0.0: 1383 | version "4.0.0" 1384 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" 1385 | integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY= 1386 | dependencies: 1387 | bn.js "^4.1.0" 1388 | browserify-rsa "^4.0.0" 1389 | create-hash "^1.1.0" 1390 | parse-asn1 "^5.0.0" 1391 | randombytes "^2.0.1" 1392 | 1393 | punycode@1.3.2, punycode@^1.2.4: 1394 | version "1.3.2" 1395 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1396 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1397 | 1398 | punycode@^2.1.0: 1399 | version "2.1.1" 1400 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1401 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1402 | 1403 | querystring-es3@0.2.1, querystring-es3@^0.2.0: 1404 | version "0.2.1" 1405 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1406 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 1407 | 1408 | querystring@0.2.0, querystring@^0.2.0: 1409 | version "0.2.0" 1410 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1411 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1412 | 1413 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 1414 | version "2.0.5" 1415 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" 1416 | integrity sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg== 1417 | dependencies: 1418 | safe-buffer "^5.1.0" 1419 | 1420 | randomfill@^1.0.3: 1421 | version "1.0.3" 1422 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" 1423 | integrity sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ== 1424 | dependencies: 1425 | randombytes "^2.0.5" 1426 | safe-buffer "^5.1.0" 1427 | 1428 | raw-body@2.4.1: 1429 | version "2.4.1" 1430 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" 1431 | integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== 1432 | dependencies: 1433 | bytes "3.1.0" 1434 | http-errors "1.7.3" 1435 | iconv-lite "0.4.24" 1436 | unpipe "1.0.0" 1437 | 1438 | react-dom@^17.0.2: 1439 | version "17.0.2" 1440 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 1441 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 1442 | dependencies: 1443 | loose-envify "^1.1.0" 1444 | object-assign "^4.1.1" 1445 | scheduler "^0.20.2" 1446 | 1447 | react-is@16.13.1, react-is@^16.8.1: 1448 | version "16.13.1" 1449 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1450 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1451 | 1452 | react-refresh@0.8.3: 1453 | version "0.8.3" 1454 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" 1455 | integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== 1456 | 1457 | react@^17.0.2: 1458 | version "17.0.2" 1459 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 1460 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 1461 | dependencies: 1462 | loose-envify "^1.1.0" 1463 | object-assign "^4.1.1" 1464 | 1465 | readable-stream@^2.0.2, readable-stream@^2.2.6, readable-stream@^2.3.3: 1466 | version "2.3.3" 1467 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 1468 | integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== 1469 | dependencies: 1470 | core-util-is "~1.0.0" 1471 | inherits "~2.0.3" 1472 | isarray "~1.0.0" 1473 | process-nextick-args "~1.0.6" 1474 | safe-buffer "~5.1.1" 1475 | string_decoder "~1.0.3" 1476 | util-deprecate "~1.0.1" 1477 | 1478 | readable-stream@^3.5.0, readable-stream@^3.6.0: 1479 | version "3.6.0" 1480 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1481 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1482 | dependencies: 1483 | inherits "^2.0.3" 1484 | string_decoder "^1.1.1" 1485 | util-deprecate "^1.0.1" 1486 | 1487 | readdirp@~3.5.0: 1488 | version "3.5.0" 1489 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1490 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1491 | dependencies: 1492 | picomatch "^2.2.1" 1493 | 1494 | regenerator-runtime@^0.13.4: 1495 | version "0.13.7" 1496 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" 1497 | integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== 1498 | 1499 | ripemd160@^2.0.0, ripemd160@^2.0.1: 1500 | version "2.0.1" 1501 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" 1502 | integrity sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc= 1503 | dependencies: 1504 | hash-base "^2.0.0" 1505 | inherits "^2.0.1" 1506 | 1507 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1508 | version "5.1.1" 1509 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 1510 | integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== 1511 | 1512 | safe-buffer@^5.1.2, safe-buffer@~5.2.0: 1513 | version "5.2.1" 1514 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1515 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1516 | 1517 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 1518 | version "2.1.2" 1519 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1520 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1521 | 1522 | scheduler@^0.20.2: 1523 | version "0.20.2" 1524 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 1525 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 1526 | dependencies: 1527 | loose-envify "^1.1.0" 1528 | object-assign "^4.1.1" 1529 | 1530 | semver@^6.0.0: 1531 | version "6.3.0" 1532 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1533 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1534 | 1535 | setimmediate@^1.0.4: 1536 | version "1.0.5" 1537 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1538 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 1539 | 1540 | setprototypeof@1.1.1: 1541 | version "1.1.1" 1542 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1543 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1544 | 1545 | sha.js@^2.4.0, sha.js@^2.4.8: 1546 | version "2.4.9" 1547 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" 1548 | integrity sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A== 1549 | dependencies: 1550 | inherits "^2.0.1" 1551 | safe-buffer "^5.0.1" 1552 | 1553 | shell-quote@1.7.2: 1554 | version "1.7.2" 1555 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 1556 | integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 1557 | 1558 | source-map@0.7.3: 1559 | version "0.7.3" 1560 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 1561 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 1562 | 1563 | source-map@0.8.0-beta.0: 1564 | version "0.8.0-beta.0" 1565 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" 1566 | integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== 1567 | dependencies: 1568 | whatwg-url "^7.0.0" 1569 | 1570 | source-map@^0.6.1: 1571 | version "0.6.1" 1572 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1573 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1574 | 1575 | stacktrace-parser@0.1.10: 1576 | version "0.1.10" 1577 | resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" 1578 | integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== 1579 | dependencies: 1580 | type-fest "^0.7.1" 1581 | 1582 | "statuses@>= 1.5.0 < 2": 1583 | version "1.5.0" 1584 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1585 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1586 | 1587 | stream-browserify@3.0.0: 1588 | version "3.0.0" 1589 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" 1590 | integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== 1591 | dependencies: 1592 | inherits "~2.0.4" 1593 | readable-stream "^3.5.0" 1594 | 1595 | stream-browserify@^2.0.1: 1596 | version "2.0.1" 1597 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 1598 | integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= 1599 | dependencies: 1600 | inherits "~2.0.1" 1601 | readable-stream "^2.0.2" 1602 | 1603 | stream-http@3.1.1: 1604 | version "3.1.1" 1605 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564" 1606 | integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg== 1607 | dependencies: 1608 | builtin-status-codes "^3.0.0" 1609 | inherits "^2.0.4" 1610 | readable-stream "^3.6.0" 1611 | xtend "^4.0.2" 1612 | 1613 | stream-http@^2.7.2: 1614 | version "2.7.2" 1615 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" 1616 | integrity sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw== 1617 | dependencies: 1618 | builtin-status-codes "^3.0.0" 1619 | inherits "^2.0.1" 1620 | readable-stream "^2.2.6" 1621 | to-arraybuffer "^1.0.0" 1622 | xtend "^4.0.0" 1623 | 1624 | stream-parser@^0.3.1: 1625 | version "0.3.1" 1626 | resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" 1627 | integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M= 1628 | dependencies: 1629 | debug "2" 1630 | 1631 | string-hash@1.1.3: 1632 | version "1.1.3" 1633 | resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" 1634 | integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= 1635 | 1636 | string.prototype.trimend@^1.0.4: 1637 | version "1.0.4" 1638 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 1639 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 1640 | dependencies: 1641 | call-bind "^1.0.2" 1642 | define-properties "^1.1.3" 1643 | 1644 | string.prototype.trimstart@^1.0.4: 1645 | version "1.0.4" 1646 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 1647 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 1648 | dependencies: 1649 | call-bind "^1.0.2" 1650 | define-properties "^1.1.3" 1651 | 1652 | string_decoder@1.3.0, string_decoder@^1.1.1: 1653 | version "1.3.0" 1654 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1655 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1656 | dependencies: 1657 | safe-buffer "~5.2.0" 1658 | 1659 | string_decoder@^1.0.0, string_decoder@~1.0.3: 1660 | version "1.0.3" 1661 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 1662 | integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== 1663 | dependencies: 1664 | safe-buffer "~5.1.0" 1665 | 1666 | strip-ansi@6.0.0: 1667 | version "6.0.0" 1668 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1669 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1670 | dependencies: 1671 | ansi-regex "^5.0.0" 1672 | 1673 | styled-jsx@3.3.2: 1674 | version "3.3.2" 1675 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018" 1676 | integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g== 1677 | dependencies: 1678 | "@babel/types" "7.8.3" 1679 | babel-plugin-syntax-jsx "6.18.0" 1680 | convert-source-map "1.7.0" 1681 | loader-utils "1.2.3" 1682 | source-map "0.7.3" 1683 | string-hash "1.1.3" 1684 | stylis "3.5.4" 1685 | stylis-rule-sheet "0.0.10" 1686 | 1687 | stylis-rule-sheet@0.0.10: 1688 | version "0.0.10" 1689 | resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" 1690 | integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== 1691 | 1692 | stylis@3.5.4: 1693 | version "3.5.4" 1694 | resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" 1695 | integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== 1696 | 1697 | supports-color@^5.3.0: 1698 | version "5.5.0" 1699 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1700 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1701 | dependencies: 1702 | has-flag "^3.0.0" 1703 | 1704 | supports-color@^6.1.0: 1705 | version "6.1.0" 1706 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 1707 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 1708 | dependencies: 1709 | has-flag "^3.0.0" 1710 | 1711 | supports-color@^7.1.0: 1712 | version "7.2.0" 1713 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1714 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1715 | dependencies: 1716 | has-flag "^4.0.0" 1717 | 1718 | supports-color@^8.0.0: 1719 | version "8.1.1" 1720 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1721 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1722 | dependencies: 1723 | has-flag "^4.0.0" 1724 | 1725 | timers-browserify@2.0.12: 1726 | version "2.0.12" 1727 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" 1728 | integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== 1729 | dependencies: 1730 | setimmediate "^1.0.4" 1731 | 1732 | timers-browserify@^2.0.4: 1733 | version "2.0.4" 1734 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" 1735 | integrity sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg== 1736 | dependencies: 1737 | setimmediate "^1.0.4" 1738 | 1739 | to-arraybuffer@^1.0.0: 1740 | version "1.0.1" 1741 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 1742 | integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= 1743 | 1744 | to-fast-properties@^2.0.0: 1745 | version "2.0.0" 1746 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1747 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1748 | 1749 | to-regex-range@^5.0.1: 1750 | version "5.0.1" 1751 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1752 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1753 | dependencies: 1754 | is-number "^7.0.0" 1755 | 1756 | toidentifier@1.0.0: 1757 | version "1.0.0" 1758 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1759 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1760 | 1761 | tr46@^1.0.1: 1762 | version "1.0.1" 1763 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" 1764 | integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= 1765 | dependencies: 1766 | punycode "^2.1.0" 1767 | 1768 | ts-pnp@^1.1.6: 1769 | version "1.2.0" 1770 | resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" 1771 | integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== 1772 | 1773 | tty-browserify@0.0.0: 1774 | version "0.0.0" 1775 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 1776 | integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= 1777 | 1778 | tty-browserify@0.0.1: 1779 | version "0.0.1" 1780 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" 1781 | integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== 1782 | 1783 | type-fest@^0.7.1: 1784 | version "0.7.1" 1785 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" 1786 | integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== 1787 | 1788 | unbox-primitive@^1.0.0: 1789 | version "1.0.1" 1790 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 1791 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 1792 | dependencies: 1793 | function-bind "^1.1.1" 1794 | has-bigints "^1.0.1" 1795 | has-symbols "^1.0.2" 1796 | which-boxed-primitive "^1.0.2" 1797 | 1798 | unpipe@1.0.0: 1799 | version "1.0.0" 1800 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1801 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1802 | 1803 | url@^0.11.0: 1804 | version "0.11.0" 1805 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 1806 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 1807 | dependencies: 1808 | punycode "1.3.2" 1809 | querystring "0.2.0" 1810 | 1811 | use-subscription@1.5.1: 1812 | version "1.5.1" 1813 | resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" 1814 | integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== 1815 | dependencies: 1816 | object-assign "^4.1.1" 1817 | 1818 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1819 | version "1.0.2" 1820 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1821 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1822 | 1823 | util@0.10.3: 1824 | version "0.10.3" 1825 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 1826 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 1827 | dependencies: 1828 | inherits "2.0.1" 1829 | 1830 | util@0.12.3, util@^0.12.0: 1831 | version "0.12.3" 1832 | resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" 1833 | integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== 1834 | dependencies: 1835 | inherits "^2.0.3" 1836 | is-arguments "^1.0.4" 1837 | is-generator-function "^1.0.7" 1838 | is-typed-array "^1.1.3" 1839 | safe-buffer "^5.1.2" 1840 | which-typed-array "^1.1.2" 1841 | 1842 | util@^0.11.0: 1843 | version "0.11.1" 1844 | resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" 1845 | integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== 1846 | dependencies: 1847 | inherits "2.0.3" 1848 | 1849 | vm-browserify@1.1.2, vm-browserify@^1.0.1: 1850 | version "1.1.2" 1851 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" 1852 | integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== 1853 | 1854 | watchpack@2.1.1: 1855 | version "2.1.1" 1856 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" 1857 | integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== 1858 | dependencies: 1859 | glob-to-regexp "^0.4.1" 1860 | graceful-fs "^4.1.2" 1861 | 1862 | webidl-conversions@^4.0.2: 1863 | version "4.0.2" 1864 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" 1865 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== 1866 | 1867 | whatwg-url@^7.0.0: 1868 | version "7.1.0" 1869 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" 1870 | integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== 1871 | dependencies: 1872 | lodash.sortby "^4.7.0" 1873 | tr46 "^1.0.1" 1874 | webidl-conversions "^4.0.2" 1875 | 1876 | which-boxed-primitive@^1.0.2: 1877 | version "1.0.2" 1878 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1879 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1880 | dependencies: 1881 | is-bigint "^1.0.1" 1882 | is-boolean-object "^1.1.0" 1883 | is-number-object "^1.0.4" 1884 | is-string "^1.0.5" 1885 | is-symbol "^1.0.3" 1886 | 1887 | which-typed-array@^1.1.2: 1888 | version "1.1.4" 1889 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" 1890 | integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== 1891 | dependencies: 1892 | available-typed-arrays "^1.0.2" 1893 | call-bind "^1.0.0" 1894 | es-abstract "^1.18.0-next.1" 1895 | foreach "^2.0.5" 1896 | function-bind "^1.1.1" 1897 | has-symbols "^1.0.1" 1898 | is-typed-array "^1.1.3" 1899 | 1900 | xtend@^4.0.0: 1901 | version "4.0.1" 1902 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1903 | integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 1904 | 1905 | xtend@^4.0.2: 1906 | version "4.0.2" 1907 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1908 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1909 | 1910 | yocto-queue@^0.1.0: 1911 | version "0.1.0" 1912 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1913 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1914 | --------------------------------------------------------------------------------