├── .eslintrc.json ├── .github ├── eslint.json └── workflows │ └── node.js.yml ├── .gitignore ├── LICENSE ├── README.md ├── img ├── axis.png ├── brush.png ├── dots.png └── transition.png ├── package.json ├── rollup.config.js ├── src ├── constant.js ├── event.js ├── index.js ├── noevent.js ├── transform.js └── zoom.js ├── test ├── .eslintrc.json ├── jsdom.js ├── transform-test.js ├── zoom-callback-test.js ├── zoom-events-test.js └── zoom-test.js └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "parserOptions": { 4 | "sourceType": "module", 5 | "ecmaVersion": 8 6 | }, 7 | "env": { 8 | "browser": true, 9 | "node": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.github/eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "problemMatcher": [ 3 | { 4 | "owner": "eslint-compact", 5 | "pattern": [ 6 | { 7 | "regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s(Error|Warning|Info)\\s-\\s(.+)\\s\\((.+)\\)$", 8 | "file": 1, 9 | "line": 2, 10 | "column": 3, 11 | "severity": 4, 12 | "message": 5, 13 | "code": 6 14 | } 15 | ] 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 2 | 3 | name: Node.js CI 4 | 5 | on: 6 | push: 7 | branches: [ main ] 8 | pull_request: 9 | branches: [ main ] 10 | 11 | jobs: 12 | build: 13 | 14 | runs-on: ubuntu-latest 15 | 16 | strategy: 17 | matrix: 18 | node-version: [14.x] 19 | 20 | steps: 21 | - uses: actions/checkout@v2 22 | - name: Use Node.js ${{ matrix.node-version }} 23 | uses: actions/setup-node@v1 24 | with: 25 | node-version: ${{ matrix.node-version }} 26 | - run: yarn --frozen-lockfile 27 | - run: | 28 | echo ::add-matcher::.github/eslint.json 29 | yarn run eslint src test --format=compact 30 | - run: yarn test 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.sublime-workspace 2 | .DS_Store 3 | dist/ 4 | node_modules 5 | npm-debug.log 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2010-2021 Mike Bostock 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any purpose 4 | with or without fee is hereby granted, provided that the above copyright notice 5 | and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 8 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 9 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 10 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 11 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 12 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 13 | THIS SOFTWARE. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # d3-zoom 2 | 3 | 4 | 5 | The zoom behavior implemented by d3-zoom is a convenient but flexible abstraction for enabling pan-and-zoom on [selections](https://github.com/d3/d3-selection). It is agnostic about the DOM, so you can use it with SVG, HTML or Canvas. 6 | 7 | ## Resources 8 | 9 | - [Documentation](https://d3js.org/d3-zoom) 10 | - [Examples](https://observablehq.com/collection/@d3/d3-zoom) 11 | - [Releases](https://github.com/d3/d3-zoom/releases) 12 | - [Getting help](https://d3js.org/community) 13 | -------------------------------------------------------------------------------- /img/axis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d3/d3-zoom/c8df708b78b46553bc4a0fbf1baf4ffc10cef8bd/img/axis.png -------------------------------------------------------------------------------- /img/brush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d3/d3-zoom/c8df708b78b46553bc4a0fbf1baf4ffc10cef8bd/img/brush.png -------------------------------------------------------------------------------- /img/dots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d3/d3-zoom/c8df708b78b46553bc4a0fbf1baf4ffc10cef8bd/img/dots.png -------------------------------------------------------------------------------- /img/transition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d3/d3-zoom/c8df708b78b46553bc4a0fbf1baf4ffc10cef8bd/img/transition.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "d3-zoom", 3 | "version": "3.0.0", 4 | "description": "Pan and zoom SVG, HTML or Canvas using mouse or touch input.", 5 | "homepage": "https://d3js.org/d3-zoom/", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/d3/d3-zoom.git" 9 | }, 10 | "keywords": [ 11 | "d3", 12 | "d3-module", 13 | "zoom", 14 | "behavior", 15 | "interaction" 16 | ], 17 | "license": "ISC", 18 | "author": { 19 | "name": "Mike Bostock", 20 | "url": "https://bost.ocks.org/mike" 21 | }, 22 | "type": "module", 23 | "files": [ 24 | "dist/**/*.js", 25 | "src/**/*.js" 26 | ], 27 | "module": "src/index.js", 28 | "main": "src/index.js", 29 | "jsdelivr": "dist/d3-zoom.min.js", 30 | "unpkg": "dist/d3-zoom.min.js", 31 | "exports": { 32 | "umd": "./dist/d3-zoom.min.js", 33 | "default": "./src/index.js" 34 | }, 35 | "dependencies": { 36 | "d3-dispatch": "1 - 3", 37 | "d3-drag": "2 - 3", 38 | "d3-interpolate": "1 - 3", 39 | "d3-selection": "2 - 3", 40 | "d3-transition": "2 - 3" 41 | }, 42 | "devDependencies": { 43 | "eslint": "7", 44 | "jsdom": "16", 45 | "mocha": "9", 46 | "rollup": "2", 47 | "rollup-plugin-terser": "7" 48 | }, 49 | "scripts": { 50 | "test": "mocha 'test/**/*-test.js' && eslint src test", 51 | "prepublishOnly": "rm -rf dist && yarn test && rollup -c && git push", 52 | "postpublish": "git push --tags && cd ../d3.github.com && git pull && cp ../${npm_package_name}/dist/${npm_package_name}.js ${npm_package_name}.v${npm_package_version%%.*}.js && cp ../${npm_package_name}/dist/${npm_package_name}.min.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git add ${npm_package_name}.v${npm_package_version%%.*}.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git commit -m \"${npm_package_name} ${npm_package_version}\" && git push && cd -" 53 | }, 54 | "engines": { 55 | "node": ">=12" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import {readFileSync} from "fs"; 2 | import {terser} from "rollup-plugin-terser"; 3 | import * as meta from "./package.json"; 4 | 5 | // Extract copyrights from the LICENSE. 6 | const copyright = readFileSync("./LICENSE", "utf-8") 7 | .split(/\n/g) 8 | .filter(line => /^Copyright\s+/.test(line)) 9 | .map(line => line.replace(/^Copyright\s+/, "")) 10 | .join(", "); 11 | 12 | const config = { 13 | input: "src/index.js", 14 | external: Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)), 15 | output: { 16 | file: `dist/${meta.name}.js`, 17 | name: "d3", 18 | format: "umd", 19 | indent: false, 20 | extend: true, 21 | banner: `// ${meta.homepage} v${meta.version} Copyright ${copyright}`, 22 | globals: Object.assign({}, ...Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)).map(key => ({[key]: "d3"}))) 23 | }, 24 | plugins: [] 25 | }; 26 | 27 | export default [ 28 | config, 29 | { 30 | ...config, 31 | output: { 32 | ...config.output, 33 | file: `dist/${meta.name}.min.js` 34 | }, 35 | plugins: [ 36 | ...config.plugins, 37 | terser({ 38 | output: { 39 | preamble: config.output.banner 40 | } 41 | }) 42 | ] 43 | } 44 | ]; 45 | -------------------------------------------------------------------------------- /src/constant.js: -------------------------------------------------------------------------------- 1 | export default x => () => x; 2 | -------------------------------------------------------------------------------- /src/event.js: -------------------------------------------------------------------------------- 1 | export default function ZoomEvent(type, { 2 | sourceEvent, 3 | target, 4 | transform, 5 | dispatch 6 | }) { 7 | Object.defineProperties(this, { 8 | type: {value: type, enumerable: true, configurable: true}, 9 | sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, 10 | target: {value: target, enumerable: true, configurable: true}, 11 | transform: {value: transform, enumerable: true, configurable: true}, 12 | _: {value: dispatch} 13 | }); 14 | } 15 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | export {default as zoom} from "./zoom.js"; 2 | export {default as zoomTransform, identity as zoomIdentity, Transform as ZoomTransform} from "./transform.js"; 3 | -------------------------------------------------------------------------------- /src/noevent.js: -------------------------------------------------------------------------------- 1 | export function nopropagation(event) { 2 | event.stopImmediatePropagation(); 3 | } 4 | 5 | export default function(event) { 6 | event.preventDefault(); 7 | event.stopImmediatePropagation(); 8 | } 9 | -------------------------------------------------------------------------------- /src/transform.js: -------------------------------------------------------------------------------- 1 | export function Transform(k, x, y) { 2 | this.k = k; 3 | this.x = x; 4 | this.y = y; 5 | } 6 | 7 | Transform.prototype = { 8 | constructor: Transform, 9 | scale: function(k) { 10 | return k === 1 ? this : new Transform(this.k * k, this.x, this.y); 11 | }, 12 | translate: function(x, y) { 13 | return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); 14 | }, 15 | apply: function(point) { 16 | return [point[0] * this.k + this.x, point[1] * this.k + this.y]; 17 | }, 18 | applyX: function(x) { 19 | return x * this.k + this.x; 20 | }, 21 | applyY: function(y) { 22 | return y * this.k + this.y; 23 | }, 24 | invert: function(location) { 25 | return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; 26 | }, 27 | invertX: function(x) { 28 | return (x - this.x) / this.k; 29 | }, 30 | invertY: function(y) { 31 | return (y - this.y) / this.k; 32 | }, 33 | rescaleX: function(x) { 34 | return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); 35 | }, 36 | rescaleY: function(y) { 37 | return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); 38 | }, 39 | toString: function() { 40 | return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; 41 | } 42 | }; 43 | 44 | export var identity = new Transform(1, 0, 0); 45 | 46 | transform.prototype = Transform.prototype; 47 | 48 | export default function transform(node) { 49 | while (!node.__zoom) if (!(node = node.parentNode)) return identity; 50 | return node.__zoom; 51 | } 52 | -------------------------------------------------------------------------------- /src/zoom.js: -------------------------------------------------------------------------------- 1 | import {dispatch} from "d3-dispatch"; 2 | import {dragDisable, dragEnable} from "d3-drag"; 3 | import {interpolateZoom} from "d3-interpolate"; 4 | import {select, pointer} from "d3-selection"; 5 | import {interrupt} from "d3-transition"; 6 | import constant from "./constant.js"; 7 | import ZoomEvent from "./event.js"; 8 | import {Transform, identity} from "./transform.js"; 9 | import noevent, {nopropagation} from "./noevent.js"; 10 | 11 | // Ignore right-click, since that should open the context menu. 12 | // except for pinch-to-zoom, which is sent as a wheel+ctrlKey event 13 | function defaultFilter(event) { 14 | return (!event.ctrlKey || event.type === 'wheel') && !event.button; 15 | } 16 | 17 | function defaultExtent() { 18 | var e = this; 19 | if (e instanceof SVGElement) { 20 | e = e.ownerSVGElement || e; 21 | if (e.hasAttribute("viewBox")) { 22 | e = e.viewBox.baseVal; 23 | return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; 24 | } 25 | return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; 26 | } 27 | return [[0, 0], [e.clientWidth, e.clientHeight]]; 28 | } 29 | 30 | function defaultTransform() { 31 | return this.__zoom || identity; 32 | } 33 | 34 | function defaultWheelDelta(event) { 35 | return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1); 36 | } 37 | 38 | function defaultTouchable() { 39 | return navigator.maxTouchPoints || ("ontouchstart" in this); 40 | } 41 | 42 | function defaultConstrain(transform, extent, translateExtent) { 43 | var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], 44 | dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], 45 | dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], 46 | dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; 47 | return transform.translate( 48 | dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), 49 | dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) 50 | ); 51 | } 52 | 53 | export default function() { 54 | var filter = defaultFilter, 55 | extent = defaultExtent, 56 | constrain = defaultConstrain, 57 | wheelDelta = defaultWheelDelta, 58 | touchable = defaultTouchable, 59 | scaleExtent = [0, Infinity], 60 | translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], 61 | duration = 250, 62 | interpolate = interpolateZoom, 63 | listeners = dispatch("start", "zoom", "end"), 64 | touchstarting, 65 | touchfirst, 66 | touchending, 67 | touchDelay = 500, 68 | wheelDelay = 150, 69 | clickDistance2 = 0, 70 | tapDistance = 10; 71 | 72 | function zoom(selection) { 73 | selection 74 | .property("__zoom", defaultTransform) 75 | .on("wheel.zoom", wheeled, {passive: false}) 76 | .on("mousedown.zoom", mousedowned) 77 | .on("dblclick.zoom", dblclicked) 78 | .filter(touchable) 79 | .on("touchstart.zoom", touchstarted) 80 | .on("touchmove.zoom", touchmoved) 81 | .on("touchend.zoom touchcancel.zoom", touchended) 82 | .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); 83 | } 84 | 85 | zoom.transform = function(collection, transform, point, event) { 86 | var selection = collection.selection ? collection.selection() : collection; 87 | selection.property("__zoom", defaultTransform); 88 | if (collection !== selection) { 89 | schedule(collection, transform, point, event); 90 | } else { 91 | selection.interrupt().each(function() { 92 | gesture(this, arguments) 93 | .event(event) 94 | .start() 95 | .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) 96 | .end(); 97 | }); 98 | } 99 | }; 100 | 101 | zoom.scaleBy = function(selection, k, p, event) { 102 | zoom.scaleTo(selection, function() { 103 | var k0 = this.__zoom.k, 104 | k1 = typeof k === "function" ? k.apply(this, arguments) : k; 105 | return k0 * k1; 106 | }, p, event); 107 | }; 108 | 109 | zoom.scaleTo = function(selection, k, p, event) { 110 | zoom.transform(selection, function() { 111 | var e = extent.apply(this, arguments), 112 | t0 = this.__zoom, 113 | p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, 114 | p1 = t0.invert(p0), 115 | k1 = typeof k === "function" ? k.apply(this, arguments) : k; 116 | return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); 117 | }, p, event); 118 | }; 119 | 120 | zoom.translateBy = function(selection, x, y, event) { 121 | zoom.transform(selection, function() { 122 | return constrain(this.__zoom.translate( 123 | typeof x === "function" ? x.apply(this, arguments) : x, 124 | typeof y === "function" ? y.apply(this, arguments) : y 125 | ), extent.apply(this, arguments), translateExtent); 126 | }, null, event); 127 | }; 128 | 129 | zoom.translateTo = function(selection, x, y, p, event) { 130 | zoom.transform(selection, function() { 131 | var e = extent.apply(this, arguments), 132 | t = this.__zoom, 133 | p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; 134 | return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate( 135 | typeof x === "function" ? -x.apply(this, arguments) : -x, 136 | typeof y === "function" ? -y.apply(this, arguments) : -y 137 | ), e, translateExtent); 138 | }, p, event); 139 | }; 140 | 141 | function scale(transform, k) { 142 | k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); 143 | return k === transform.k ? transform : new Transform(k, transform.x, transform.y); 144 | } 145 | 146 | function translate(transform, p0, p1) { 147 | var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; 148 | return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); 149 | } 150 | 151 | function centroid(extent) { 152 | return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; 153 | } 154 | 155 | function schedule(transition, transform, point, event) { 156 | transition 157 | .on("start.zoom", function() { gesture(this, arguments).event(event).start(); }) 158 | .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).event(event).end(); }) 159 | .tween("zoom", function() { 160 | var that = this, 161 | args = arguments, 162 | g = gesture(that, args).event(event), 163 | e = extent.apply(that, args), 164 | p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, 165 | w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), 166 | a = that.__zoom, 167 | b = typeof transform === "function" ? transform.apply(that, args) : transform, 168 | i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); 169 | return function(t) { 170 | if (t === 1) t = b; // Avoid rounding error on end. 171 | else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } 172 | g.zoom(null, t); 173 | }; 174 | }); 175 | } 176 | 177 | function gesture(that, args, clean) { 178 | return (!clean && that.__zooming) || new Gesture(that, args); 179 | } 180 | 181 | function Gesture(that, args) { 182 | this.that = that; 183 | this.args = args; 184 | this.active = 0; 185 | this.sourceEvent = null; 186 | this.extent = extent.apply(that, args); 187 | this.taps = 0; 188 | } 189 | 190 | Gesture.prototype = { 191 | event: function(event) { 192 | if (event) this.sourceEvent = event; 193 | return this; 194 | }, 195 | start: function() { 196 | if (++this.active === 1) { 197 | this.that.__zooming = this; 198 | this.emit("start"); 199 | } 200 | return this; 201 | }, 202 | zoom: function(key, transform) { 203 | if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); 204 | if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); 205 | if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); 206 | this.that.__zoom = transform; 207 | this.emit("zoom"); 208 | return this; 209 | }, 210 | end: function() { 211 | if (--this.active === 0) { 212 | delete this.that.__zooming; 213 | this.emit("end"); 214 | } 215 | return this; 216 | }, 217 | emit: function(type) { 218 | var d = select(this.that).datum(); 219 | listeners.call( 220 | type, 221 | this.that, 222 | new ZoomEvent(type, { 223 | sourceEvent: this.sourceEvent, 224 | target: zoom, 225 | type, 226 | transform: this.that.__zoom, 227 | dispatch: listeners 228 | }), 229 | d 230 | ); 231 | } 232 | }; 233 | 234 | function wheeled(event, ...args) { 235 | if (!filter.apply(this, arguments)) return; 236 | var g = gesture(this, args).event(event), 237 | t = this.__zoom, 238 | k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), 239 | p = pointer(event); 240 | 241 | // If the mouse is in the same location as before, reuse it. 242 | // If there were recent wheel events, reset the wheel idle timeout. 243 | if (g.wheel) { 244 | if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { 245 | g.mouse[1] = t.invert(g.mouse[0] = p); 246 | } 247 | clearTimeout(g.wheel); 248 | } 249 | 250 | // If this wheel event won’t trigger a transform change, ignore it. 251 | else if (t.k === k) return; 252 | 253 | // Otherwise, capture the mouse point and location at the start. 254 | else { 255 | g.mouse = [p, t.invert(p)]; 256 | interrupt(this); 257 | g.start(); 258 | } 259 | 260 | noevent(event); 261 | g.wheel = setTimeout(wheelidled, wheelDelay); 262 | g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); 263 | 264 | function wheelidled() { 265 | g.wheel = null; 266 | g.end(); 267 | } 268 | } 269 | 270 | function mousedowned(event, ...args) { 271 | if (touchending || !filter.apply(this, arguments)) return; 272 | var currentTarget = event.currentTarget, 273 | g = gesture(this, args, true).event(event), 274 | v = select(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), 275 | p = pointer(event, currentTarget), 276 | x0 = event.clientX, 277 | y0 = event.clientY; 278 | 279 | dragDisable(event.view); 280 | nopropagation(event); 281 | g.mouse = [p, this.__zoom.invert(p)]; 282 | interrupt(this); 283 | g.start(); 284 | 285 | function mousemoved(event) { 286 | noevent(event); 287 | if (!g.moved) { 288 | var dx = event.clientX - x0, dy = event.clientY - y0; 289 | g.moved = dx * dx + dy * dy > clickDistance2; 290 | } 291 | g.event(event) 292 | .zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent)); 293 | } 294 | 295 | function mouseupped(event) { 296 | v.on("mousemove.zoom mouseup.zoom", null); 297 | dragEnable(event.view, g.moved); 298 | noevent(event); 299 | g.event(event).end(); 300 | } 301 | } 302 | 303 | function dblclicked(event, ...args) { 304 | if (!filter.apply(this, arguments)) return; 305 | var t0 = this.__zoom, 306 | p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this), 307 | p1 = t0.invert(p0), 308 | k1 = t0.k * (event.shiftKey ? 0.5 : 2), 309 | t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent); 310 | 311 | noevent(event); 312 | if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event); 313 | else select(this).call(zoom.transform, t1, p0, event); 314 | } 315 | 316 | function touchstarted(event, ...args) { 317 | if (!filter.apply(this, arguments)) return; 318 | var touches = event.touches, 319 | n = touches.length, 320 | g = gesture(this, args, event.changedTouches.length === n).event(event), 321 | started, i, t, p; 322 | 323 | nopropagation(event); 324 | for (i = 0; i < n; ++i) { 325 | t = touches[i], p = pointer(t, this); 326 | p = [p, this.__zoom.invert(p), t.identifier]; 327 | if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; 328 | else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; 329 | } 330 | 331 | if (touchstarting) touchstarting = clearTimeout(touchstarting); 332 | 333 | if (started) { 334 | if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); 335 | interrupt(this); 336 | g.start(); 337 | } 338 | } 339 | 340 | function touchmoved(event, ...args) { 341 | if (!this.__zooming) return; 342 | var g = gesture(this, args).event(event), 343 | touches = event.changedTouches, 344 | n = touches.length, i, t, p, l; 345 | 346 | noevent(event); 347 | for (i = 0; i < n; ++i) { 348 | t = touches[i], p = pointer(t, this); 349 | if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; 350 | else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; 351 | } 352 | t = g.that.__zoom; 353 | if (g.touch1) { 354 | var p0 = g.touch0[0], l0 = g.touch0[1], 355 | p1 = g.touch1[0], l1 = g.touch1[1], 356 | dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, 357 | dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; 358 | t = scale(t, Math.sqrt(dp / dl)); 359 | p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; 360 | l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; 361 | } 362 | else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; 363 | else return; 364 | 365 | g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); 366 | } 367 | 368 | function touchended(event, ...args) { 369 | if (!this.__zooming) return; 370 | var g = gesture(this, args).event(event), 371 | touches = event.changedTouches, 372 | n = touches.length, i, t; 373 | 374 | nopropagation(event); 375 | if (touchending) clearTimeout(touchending); 376 | touchending = setTimeout(function() { touchending = null; }, touchDelay); 377 | for (i = 0; i < n; ++i) { 378 | t = touches[i]; 379 | if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; 380 | else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; 381 | } 382 | if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; 383 | if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); 384 | else { 385 | g.end(); 386 | // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. 387 | if (g.taps === 2) { 388 | t = pointer(t, this); 389 | if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) { 390 | var p = select(this).on("dblclick.zoom"); 391 | if (p) p.apply(this, arguments); 392 | } 393 | } 394 | } 395 | } 396 | 397 | zoom.wheelDelta = function(_) { 398 | return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant(+_), zoom) : wheelDelta; 399 | }; 400 | 401 | zoom.filter = function(_) { 402 | return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), zoom) : filter; 403 | }; 404 | 405 | zoom.touchable = function(_) { 406 | return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), zoom) : touchable; 407 | }; 408 | 409 | zoom.extent = function(_) { 410 | return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; 411 | }; 412 | 413 | zoom.scaleExtent = function(_) { 414 | return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; 415 | }; 416 | 417 | zoom.translateExtent = function(_) { 418 | return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; 419 | }; 420 | 421 | zoom.constrain = function(_) { 422 | return arguments.length ? (constrain = _, zoom) : constrain; 423 | }; 424 | 425 | zoom.duration = function(_) { 426 | return arguments.length ? (duration = +_, zoom) : duration; 427 | }; 428 | 429 | zoom.interpolate = function(_) { 430 | return arguments.length ? (interpolate = _, zoom) : interpolate; 431 | }; 432 | 433 | zoom.on = function() { 434 | var value = listeners.on.apply(listeners, arguments); 435 | return value === listeners ? zoom : value; 436 | }; 437 | 438 | zoom.clickDistance = function(_) { 439 | return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); 440 | }; 441 | 442 | zoom.tapDistance = function(_) { 443 | return arguments.length ? (tapDistance = +_, zoom) : tapDistance; 444 | }; 445 | 446 | return zoom; 447 | } 448 | -------------------------------------------------------------------------------- /test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "parserOptions": { 4 | "sourceType": "module", 5 | "ecmaVersion": 8 6 | }, 7 | "env": { 8 | "browser": true, 9 | "node": true, 10 | "mocha": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/jsdom.js: -------------------------------------------------------------------------------- 1 | import {JSDOM} from "jsdom"; 2 | 3 | export default function jsdomit(description, run) { 4 | it(description, async () => { 5 | try { 6 | const window = new JSDOM("").window; 7 | global.document = window.document; 8 | global.navigator = window.navigator; 9 | global.Node = window.Node; 10 | global.NodeList = window.NodeList; 11 | global.HTMLCollection = window.HTMLCollection; 12 | global.SVGElement = window.SVGElement; 13 | return await run(); 14 | } finally { 15 | delete global.document; 16 | delete global.navigator; 17 | delete global.Node; 18 | delete global.NodeList; 19 | delete global.HTMLCollection; 20 | delete global.SVGElement; 21 | } 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /test/transform-test.js: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import {zoomIdentity, ZoomTransform} from "../src/index.js"; 3 | 4 | it("zoomIdentity transform contains k = 1, x = y = 0", () => { 5 | assert.deepStrictEqual(zoomIdentity, new ZoomTransform(1, 0, 0)); 6 | }); 7 | 8 | it("transform.scale(k) returns a new transform scaled with k", () => { 9 | const transform = zoomIdentity.scale(2.5); 10 | assert.deepStrictEqual(transform.scale(2), new ZoomTransform(5, 0, 0)); 11 | }); 12 | 13 | it("transform.translate(x, y) returns a new transform translated with x and y", () => { 14 | const transform = zoomIdentity.translate(2, 3); 15 | assert.deepStrictEqual(transform.translate(-4, 4), new ZoomTransform(1, -2, 7)); 16 | assert.deepStrictEqual(transform.scale(2).translate(-4, 4), new ZoomTransform(2, -6, 11)); 17 | }); 18 | 19 | it("transform.apply([x, y]) returns the transformation of the specified point", () => { 20 | assert.deepStrictEqual(zoomIdentity.translate(2, 3).scale(2).apply([4, 5]), [10, 13]); 21 | }); 22 | 23 | it("transform.applyX(x) returns the transformation of the specified x-coordinate", () => { 24 | assert.deepStrictEqual(zoomIdentity.translate(2, 0).scale(2).applyX(4), 10); 25 | }); 26 | 27 | it("transform.applyY(y) returns the transformation of the specified y-coordinate", () => { 28 | assert.deepStrictEqual(zoomIdentity.translate(0, 3).scale(2).applyY(5), 13); 29 | }); 30 | 31 | it("transform.invert([x, y]) returns the inverse transformation of the specified point", () => { 32 | assert.deepStrictEqual(zoomIdentity.translate(2, 3).scale(2).invert([4, 5]), [1, 1]); 33 | }); 34 | 35 | it("transform.invertX(x) returns the inverse transformation of the specified x-coordinate", () => { 36 | assert.deepStrictEqual(zoomIdentity.translate(2, 0).scale(2).invertX(4), 1); 37 | }); 38 | 39 | it("transform.invertY(y) returns the inverse transformation of the specified y-coordinate", () => { 40 | assert.deepStrictEqual(zoomIdentity.translate(0, 3).scale(2).invertY(5), 1); 41 | }); 42 | 43 | // transform.rescaleX(x) 44 | 45 | // transform.rescaleY(y) 46 | 47 | it("transform.toString() returns a string representing the SVG transform", () => { 48 | assert.strictEqual(zoomIdentity.toString(), "translate(0,0) scale(1)"); 49 | }); 50 | -------------------------------------------------------------------------------- /test/zoom-callback-test.js: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import {select} from "d3-selection"; 3 | import {zoom, zoomIdentity} from "../src/index.js"; 4 | import ZoomEvent from "../src/event.js"; 5 | import it from "./jsdom.js"; 6 | 7 | it("zoom.on('zoom') callback", () => { 8 | const div = select(document.body).append("div").datum("hello"); 9 | const z = zoom(); 10 | div.call(z); 11 | let a; 12 | z.on("zoom", function(event, d) { a = {event, d, that: this}; }); 13 | div.call(z.transform, zoomIdentity); 14 | const event = new ZoomEvent("zoom", {sourceEvent: null, target: z, transform: zoomIdentity}); 15 | assert.deepStrictEqual(a, {event, d: "hello", that: div.node()}); 16 | a = {}; 17 | z.on("zoom", null); 18 | assert.deepStrictEqual(a, {}); 19 | }); 20 | 21 | it("zoom.on('start') callback", () => { 22 | const div = select(document.body).append("div").datum("hello"); 23 | const z = zoom(); 24 | div.call(z); 25 | let a; 26 | z.on("start", function(event, d) { a = {event, d, that: this}; }); 27 | div.call(z.transform, zoomIdentity); 28 | const event = new ZoomEvent("start", {sourceEvent: null, target: z, transform: zoomIdentity}); 29 | assert.deepStrictEqual(a, {event, d: "hello", that: div.node()}); 30 | a = {}; 31 | z.on("start", null); 32 | assert.deepStrictEqual(a, {}); 33 | }); 34 | 35 | it("zoom.on('end') callback", () => { 36 | const div = select(document.body).append("div").datum("hello"); 37 | const z = zoom(); 38 | div.call(z); 39 | let a; 40 | z.on("end", function(event, d) { a = {event, d, that: this}; }); 41 | div.call(z.transform, zoomIdentity); 42 | const event = new ZoomEvent("end", {sourceEvent: null, target: z, transform: zoomIdentity}); 43 | assert.deepStrictEqual(a, {event, d: "hello", that: div.node()}); 44 | a = {}; 45 | z.on("end", null); 46 | assert.deepStrictEqual(a, {}); 47 | }); 48 | 49 | it("zoom.on('start zoom end') callback order", () => { 50 | const div = select(document.body).append("div").datum("hello"); 51 | const z = zoom(); 52 | div.call(z); 53 | let a = []; 54 | z.on("start zoom end", function(event) { a.push(event.type); }); 55 | div.call(z.transform, zoomIdentity); 56 | assert.deepStrictEqual(a, ["start", "zoom", "end"]); 57 | z.on("start zoom end", null); 58 | }); 59 | -------------------------------------------------------------------------------- /test/zoom-events-test.js: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import {zoom, zoomIdentity} from "../src/index.js"; 3 | import {select} from "d3-selection"; 4 | import it from "./jsdom.js"; 5 | 6 | it("zoom.filter receives (event, d) and filters", () => { 7 | const div = select(document.body).append("div").datum("hello"); 8 | const z = zoom(); 9 | div.call(z); 10 | div.call(z.transform, zoomIdentity); 11 | z.filter(); 12 | const event = {bubbles: true, cancelable: true, detail: {type: "fake"}}; 13 | let a, b; 14 | z.on("zoom", function() { b = arguments; }).filter(function() { a = arguments; }); 15 | div.dispatch("dblclick", event); 16 | assert.strictEqual(a[0].detail.type, "fake"); 17 | assert.strictEqual(a[1], "hello"); 18 | assert.strictEqual(b, undefined); // our fake dblclick was rejected 19 | // temporary: avoid a crash due to starting a transition 20 | z.duration(0); 21 | z.filter(() => true); 22 | div.dispatch("dblclick", event); 23 | assert(b !== undefined); // our fake dblclick was accepted 24 | div.interrupt(); 25 | }); 26 | 27 | it("zoom.extent receives (d)", () => { 28 | const div = select(document.body).append("div").datum("hello"); 29 | const z = zoom(); 30 | div.call(z); 31 | div.call(z.transform, zoomIdentity); 32 | const extent = z.extent(); 33 | const event = {bubbles: true, cancelable: true, detail: {type: "fake"}}; 34 | let a; 35 | z.extent(function() { 36 | a = arguments; 37 | a[-1] = this; 38 | return extent.apply(this, arguments); 39 | }); 40 | div.dispatch("dblclick", event); 41 | assert.strictEqual(a[0], "hello") 42 | assert.strictEqual(a[-1], div.node()); 43 | div.interrupt(); 44 | }); 45 | -------------------------------------------------------------------------------- /test/zoom-test.js: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import {select} from "d3-selection"; 3 | import {zoom, zoomIdentity, zoomTransform, ZoomTransform} from "../src/index.js"; 4 | import it from "./jsdom.js"; 5 | 6 | it("zoom initiates a zooming behavior", () => { 7 | const div = select(document.body).append("div").datum("hello"); 8 | const z = zoom(); 9 | div.call(z); 10 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(1, 0, 0)); 11 | div.call(z.transform, zoomIdentity.scale(2).translate(1,-3)); 12 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(2, 2, -6)); 13 | }); 14 | 15 | it("zoomTransform returns the node’s current transform", () => { 16 | const div = select(document.body).append("div").datum("hello"); 17 | const z = zoom(); 18 | div.call(z); 19 | assert.deepStrictEqual(zoomTransform(div.node()), new ZoomTransform(1, 0, 0)); 20 | div.call(z.translateBy, 10, 10); 21 | assert.deepStrictEqual(zoomTransform(div.node()), new ZoomTransform(1, 10, 10)); 22 | assert.deepStrictEqual(zoomTransform(div.append("span").node()), new ZoomTransform(1, 10, 10)); // or an ancestor's… 23 | assert.deepStrictEqual(zoomTransform(document.body), zoomIdentity); // or zoomIdentity 24 | }); 25 | 26 | it("zoom.scaleBy zooms", () => { 27 | const div = select(document.body).append("div").datum("hello"); 28 | const z = zoom(); 29 | div.call(z); 30 | div.call(z.scaleBy, 2, [0, 0]); 31 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(2, 0, 0)); 32 | div.call(z.scaleBy, 2, [2, -2]); 33 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(4, -2, 2)); 34 | div.call(z.scaleBy, 1/4, [2, -2]); 35 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(1, 1, -1)); 36 | }); 37 | 38 | it("zoom.scaleTo zooms", () => { 39 | const div = select(document.body).append("div").datum("hello"); 40 | const z = zoom(); 41 | div.call(z); 42 | div.call(z.scaleTo, 2); 43 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(2, 0, 0)); 44 | div.call(z.scaleTo, 2); 45 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(2, 0, 0)); 46 | div.call(z.scaleTo, 1); 47 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(1, 0, 0)); 48 | }); 49 | 50 | it("zoom.translateBy translates", () => { 51 | const div = select(document.body).append("div").datum("hello"); 52 | const z = zoom(); 53 | div.call(z); 54 | div.call(z.translateBy, 10, 10); 55 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(1, 10, 10)); 56 | div.call(z.scaleBy, 2); 57 | div.call(z.translateBy, -10, -10); 58 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(2, 0, 0)); 59 | }); 60 | 61 | it("zoom.scaleBy arguments can be functions passed (datum, index)", () => { 62 | const div = select(document.body).append("div").datum("hello"); 63 | const z = zoom(); 64 | div.call(z); 65 | let a, b, c, d; 66 | div.call( 67 | z.scaleBy, 68 | function() { 69 | a = arguments; 70 | b = this; 71 | return 2; 72 | }, 73 | function() { 74 | c = arguments; 75 | d = this; 76 | return [0, 0]; 77 | } 78 | ); 79 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(2, 0, 0)); 80 | assert.deepStrictEqual(a[0], "hello"); 81 | assert.deepStrictEqual(a[1], 0); 82 | assert.deepStrictEqual(b, div.node()); 83 | assert.deepStrictEqual(c[0], "hello"); 84 | assert.deepStrictEqual(c[1], 0); 85 | assert.deepStrictEqual(d, div.node()); 86 | }); 87 | 88 | it("zoom.scaleTo arguments can be functions passed (datum, index)", () => { 89 | const div = select(document.body).append("div").datum("hello"); 90 | const z = zoom(); 91 | div.call(z); 92 | let a, b, c, d; 93 | div.call( 94 | z.scaleTo, 95 | function() { 96 | a = arguments; 97 | b = this; 98 | return 2; 99 | }, 100 | function() { 101 | c = arguments; 102 | d = this; 103 | return [0, 0]; 104 | } 105 | ); 106 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(2, 0, 0)); 107 | assert.deepStrictEqual(a[0], "hello"); 108 | assert.deepStrictEqual(a[1], 0); 109 | assert.deepStrictEqual(b, div.node()); 110 | assert.deepStrictEqual(c[0], "hello"); 111 | assert.deepStrictEqual(c[1], 0); 112 | assert.deepStrictEqual(d, div.node()); 113 | }); 114 | 115 | it("zoom.translateBy arguments can be functions passed (datum, index)", () => { 116 | const div = select(document.body).append("div").datum("hello"); 117 | const z = zoom(); 118 | div.call(z); 119 | let a, b, c, d; 120 | div.call( 121 | z.translateBy, 122 | function() { 123 | a = arguments; 124 | b = this; 125 | return 2; 126 | }, 127 | function() { 128 | c = arguments; 129 | d = this; 130 | return 3; 131 | } 132 | ); 133 | assert.deepStrictEqual(div.node().__zoom, new ZoomTransform(1, 2, 3)); 134 | assert.deepStrictEqual(a[0], "hello"); 135 | assert.deepStrictEqual(a[1], 0); 136 | assert.deepStrictEqual(b, div.node()); 137 | assert.deepStrictEqual(c[0], "hello"); 138 | assert.deepStrictEqual(c[1], 0); 139 | assert.deepStrictEqual(d, div.node()); 140 | }); 141 | 142 | it("zoom.constrain receives (transform, extent, translateExtent)", () => { 143 | const div = select(document.body).append("div").datum("hello"); 144 | const z = zoom(); 145 | div.call(z); 146 | const constrain = z.constrain(); 147 | let a, b; 148 | z.constrain(function() { 149 | a = arguments; 150 | return b = constrain.apply(this, arguments); 151 | }); 152 | div.call(z.translateBy, 10, 10); 153 | assert.deepStrictEqual(a[0], b); 154 | assert.deepStrictEqual(a[0], new ZoomTransform(1, 10, 10)); 155 | assert.deepStrictEqual(a[1], [ [ 0, 0 ], [ 0, 0 ] ]); 156 | assert.strictEqual(a[2][0][0], -Infinity); 157 | z.constrain(constrain); 158 | }); 159 | -------------------------------------------------------------------------------- /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/code-frame@^7.10.4": 13 | version "7.14.5" 14 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 15 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 16 | dependencies: 17 | "@babel/highlight" "^7.14.5" 18 | 19 | "@babel/helper-validator-identifier@^7.14.5": 20 | version "7.14.5" 21 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" 22 | integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== 23 | 24 | "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": 25 | version "7.14.5" 26 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 27 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 28 | dependencies: 29 | "@babel/helper-validator-identifier" "^7.14.5" 30 | chalk "^2.0.0" 31 | js-tokens "^4.0.0" 32 | 33 | "@eslint/eslintrc@^0.4.2": 34 | version "0.4.2" 35 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" 36 | integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== 37 | dependencies: 38 | ajv "^6.12.4" 39 | debug "^4.1.1" 40 | espree "^7.3.0" 41 | globals "^13.9.0" 42 | ignore "^4.0.6" 43 | import-fresh "^3.2.1" 44 | js-yaml "^3.13.1" 45 | minimatch "^3.0.4" 46 | strip-json-comments "^3.1.1" 47 | 48 | "@tootallnate/once@1": 49 | version "1.1.2" 50 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 51 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 52 | 53 | "@types/node@*": 54 | version "15.12.2" 55 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" 56 | integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== 57 | 58 | "@ungap/promise-all-settled@1.1.2": 59 | version "1.1.2" 60 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 61 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 62 | 63 | abab@^2.0.3, abab@^2.0.5: 64 | version "2.0.5" 65 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" 66 | integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== 67 | 68 | acorn-globals@^6.0.0: 69 | version "6.0.0" 70 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" 71 | integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== 72 | dependencies: 73 | acorn "^7.1.1" 74 | acorn-walk "^7.1.1" 75 | 76 | acorn-jsx@^5.3.1: 77 | version "5.3.1" 78 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 79 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 80 | 81 | acorn-walk@^7.1.1: 82 | version "7.2.0" 83 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 84 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 85 | 86 | acorn@^7.1.1, acorn@^7.4.0: 87 | version "7.4.1" 88 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 89 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 90 | 91 | acorn@^8.2.4: 92 | version "8.3.0" 93 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88" 94 | integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== 95 | 96 | agent-base@6: 97 | version "6.0.2" 98 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 99 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 100 | dependencies: 101 | debug "4" 102 | 103 | ajv@^6.10.0, ajv@^6.12.4: 104 | version "6.12.6" 105 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 106 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 107 | dependencies: 108 | fast-deep-equal "^3.1.1" 109 | fast-json-stable-stringify "^2.0.0" 110 | json-schema-traverse "^0.4.1" 111 | uri-js "^4.2.2" 112 | 113 | ajv@^8.0.1: 114 | version "8.6.0" 115 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" 116 | integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== 117 | dependencies: 118 | fast-deep-equal "^3.1.1" 119 | json-schema-traverse "^1.0.0" 120 | require-from-string "^2.0.2" 121 | uri-js "^4.2.2" 122 | 123 | ansi-colors@4.1.1, ansi-colors@^4.1.1: 124 | version "4.1.1" 125 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 126 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 127 | 128 | ansi-regex@^3.0.0: 129 | version "3.0.0" 130 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 131 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 132 | 133 | ansi-regex@^5.0.0: 134 | version "5.0.0" 135 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 136 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 137 | 138 | ansi-styles@^3.2.1: 139 | version "3.2.1" 140 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 141 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 142 | dependencies: 143 | color-convert "^1.9.0" 144 | 145 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 146 | version "4.3.0" 147 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 148 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 149 | dependencies: 150 | color-convert "^2.0.1" 151 | 152 | anymatch@~3.1.1: 153 | version "3.1.2" 154 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 155 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 156 | dependencies: 157 | normalize-path "^3.0.0" 158 | picomatch "^2.0.4" 159 | 160 | argparse@^1.0.7: 161 | version "1.0.10" 162 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 163 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 164 | dependencies: 165 | sprintf-js "~1.0.2" 166 | 167 | argparse@^2.0.1: 168 | version "2.0.1" 169 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 170 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 171 | 172 | astral-regex@^2.0.0: 173 | version "2.0.0" 174 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 175 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 176 | 177 | asynckit@^0.4.0: 178 | version "0.4.0" 179 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 180 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 181 | 182 | balanced-match@^1.0.0: 183 | version "1.0.2" 184 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 185 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 186 | 187 | binary-extensions@^2.0.0: 188 | version "2.2.0" 189 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 190 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 191 | 192 | brace-expansion@^1.1.7: 193 | version "1.1.11" 194 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 195 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 196 | dependencies: 197 | balanced-match "^1.0.0" 198 | concat-map "0.0.1" 199 | 200 | braces@~3.0.2: 201 | version "3.0.2" 202 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 203 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 204 | dependencies: 205 | fill-range "^7.0.1" 206 | 207 | browser-process-hrtime@^1.0.0: 208 | version "1.0.0" 209 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 210 | integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 211 | 212 | browser-stdout@1.3.1: 213 | version "1.3.1" 214 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 215 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 216 | 217 | buffer-from@^1.0.0: 218 | version "1.1.1" 219 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 220 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 221 | 222 | callsites@^3.0.0: 223 | version "3.1.0" 224 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 225 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 226 | 227 | camelcase@^6.0.0: 228 | version "6.2.0" 229 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 230 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 231 | 232 | chalk@^2.0.0: 233 | version "2.4.2" 234 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 235 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 236 | dependencies: 237 | ansi-styles "^3.2.1" 238 | escape-string-regexp "^1.0.5" 239 | supports-color "^5.3.0" 240 | 241 | chalk@^4.0.0, chalk@^4.1.0: 242 | version "4.1.1" 243 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" 244 | integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== 245 | dependencies: 246 | ansi-styles "^4.1.0" 247 | supports-color "^7.1.0" 248 | 249 | chokidar@3.5.1: 250 | version "3.5.1" 251 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 252 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 253 | dependencies: 254 | anymatch "~3.1.1" 255 | braces "~3.0.2" 256 | glob-parent "~5.1.0" 257 | is-binary-path "~2.1.0" 258 | is-glob "~4.0.1" 259 | normalize-path "~3.0.0" 260 | readdirp "~3.5.0" 261 | optionalDependencies: 262 | fsevents "~2.3.1" 263 | 264 | cliui@^7.0.2: 265 | version "7.0.4" 266 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 267 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 268 | dependencies: 269 | string-width "^4.2.0" 270 | strip-ansi "^6.0.0" 271 | wrap-ansi "^7.0.0" 272 | 273 | color-convert@^1.9.0: 274 | version "1.9.3" 275 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 276 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 277 | dependencies: 278 | color-name "1.1.3" 279 | 280 | color-convert@^2.0.1: 281 | version "2.0.1" 282 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 283 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 284 | dependencies: 285 | color-name "~1.1.4" 286 | 287 | color-name@1.1.3: 288 | version "1.1.3" 289 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 290 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 291 | 292 | color-name@~1.1.4: 293 | version "1.1.4" 294 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 295 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 296 | 297 | combined-stream@^1.0.8: 298 | version "1.0.8" 299 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 300 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 301 | dependencies: 302 | delayed-stream "~1.0.0" 303 | 304 | commander@^2.20.0: 305 | version "2.20.3" 306 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 307 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 308 | 309 | concat-map@0.0.1: 310 | version "0.0.1" 311 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 312 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 313 | 314 | cross-spawn@^7.0.2: 315 | version "7.0.3" 316 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 317 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 318 | dependencies: 319 | path-key "^3.1.0" 320 | shebang-command "^2.0.0" 321 | which "^2.0.1" 322 | 323 | cssom@^0.4.4: 324 | version "0.4.4" 325 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" 326 | integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== 327 | 328 | cssom@~0.3.6: 329 | version "0.3.8" 330 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 331 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 332 | 333 | cssstyle@^2.3.0: 334 | version "2.3.0" 335 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 336 | integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 337 | dependencies: 338 | cssom "~0.3.6" 339 | 340 | "d3-color@1 - 3": 341 | version "3.0.1" 342 | resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.0.1.tgz#03316e595955d1fcd39d9f3610ad41bb90194d0a" 343 | integrity sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw== 344 | 345 | "d3-dispatch@1 - 3": 346 | version "3.0.1" 347 | resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" 348 | integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== 349 | 350 | "d3-drag@2 - 3": 351 | version "3.0.0" 352 | resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" 353 | integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== 354 | dependencies: 355 | d3-dispatch "1 - 3" 356 | d3-selection "3" 357 | 358 | "d3-ease@1 - 3": 359 | version "3.0.1" 360 | resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" 361 | integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== 362 | 363 | "d3-interpolate@1 - 3": 364 | version "3.0.1" 365 | resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" 366 | integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== 367 | dependencies: 368 | d3-color "1 - 3" 369 | 370 | "d3-selection@2 - 3", d3-selection@3: 371 | version "3.0.0" 372 | resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" 373 | integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== 374 | 375 | "d3-timer@1 - 3": 376 | version "3.0.1" 377 | resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" 378 | integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== 379 | 380 | "d3-transition@2 - 3": 381 | version "3.0.1" 382 | resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" 383 | integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== 384 | dependencies: 385 | d3-color "1 - 3" 386 | d3-dispatch "1 - 3" 387 | d3-ease "1 - 3" 388 | d3-interpolate "1 - 3" 389 | d3-timer "1 - 3" 390 | 391 | data-urls@^2.0.0: 392 | version "2.0.0" 393 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" 394 | integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== 395 | dependencies: 396 | abab "^2.0.3" 397 | whatwg-mimetype "^2.3.0" 398 | whatwg-url "^8.0.0" 399 | 400 | debug@4, debug@4.3.1, debug@^4.0.1, debug@^4.1.1: 401 | version "4.3.1" 402 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 403 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 404 | dependencies: 405 | ms "2.1.2" 406 | 407 | decamelize@^4.0.0: 408 | version "4.0.0" 409 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 410 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 411 | 412 | decimal.js@^10.2.1: 413 | version "10.2.1" 414 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" 415 | integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== 416 | 417 | deep-is@^0.1.3, deep-is@~0.1.3: 418 | version "0.1.3" 419 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 420 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 421 | 422 | delayed-stream@~1.0.0: 423 | version "1.0.0" 424 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 425 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 426 | 427 | diff@5.0.0: 428 | version "5.0.0" 429 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 430 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 431 | 432 | doctrine@^3.0.0: 433 | version "3.0.0" 434 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 435 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 436 | dependencies: 437 | esutils "^2.0.2" 438 | 439 | domexception@^2.0.1: 440 | version "2.0.1" 441 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" 442 | integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== 443 | dependencies: 444 | webidl-conversions "^5.0.0" 445 | 446 | emoji-regex@^8.0.0: 447 | version "8.0.0" 448 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 449 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 450 | 451 | enquirer@^2.3.5: 452 | version "2.3.6" 453 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 454 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 455 | dependencies: 456 | ansi-colors "^4.1.1" 457 | 458 | escalade@^3.1.1: 459 | version "3.1.1" 460 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 461 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 462 | 463 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: 464 | version "4.0.0" 465 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 466 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 467 | 468 | escape-string-regexp@^1.0.5: 469 | version "1.0.5" 470 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 471 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 472 | 473 | escodegen@^2.0.0: 474 | version "2.0.0" 475 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" 476 | integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== 477 | dependencies: 478 | esprima "^4.0.1" 479 | estraverse "^5.2.0" 480 | esutils "^2.0.2" 481 | optionator "^0.8.1" 482 | optionalDependencies: 483 | source-map "~0.6.1" 484 | 485 | eslint-scope@^5.1.1: 486 | version "5.1.1" 487 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 488 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 489 | dependencies: 490 | esrecurse "^4.3.0" 491 | estraverse "^4.1.1" 492 | 493 | eslint-utils@^2.1.0: 494 | version "2.1.0" 495 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 496 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 497 | dependencies: 498 | eslint-visitor-keys "^1.1.0" 499 | 500 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 501 | version "1.3.0" 502 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 503 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 504 | 505 | eslint-visitor-keys@^2.0.0: 506 | version "2.1.0" 507 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 508 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 509 | 510 | eslint@7: 511 | version "7.28.0" 512 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820" 513 | integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== 514 | dependencies: 515 | "@babel/code-frame" "7.12.11" 516 | "@eslint/eslintrc" "^0.4.2" 517 | ajv "^6.10.0" 518 | chalk "^4.0.0" 519 | cross-spawn "^7.0.2" 520 | debug "^4.0.1" 521 | doctrine "^3.0.0" 522 | enquirer "^2.3.5" 523 | escape-string-regexp "^4.0.0" 524 | eslint-scope "^5.1.1" 525 | eslint-utils "^2.1.0" 526 | eslint-visitor-keys "^2.0.0" 527 | espree "^7.3.1" 528 | esquery "^1.4.0" 529 | esutils "^2.0.2" 530 | fast-deep-equal "^3.1.3" 531 | file-entry-cache "^6.0.1" 532 | functional-red-black-tree "^1.0.1" 533 | glob-parent "^5.1.2" 534 | globals "^13.6.0" 535 | ignore "^4.0.6" 536 | import-fresh "^3.0.0" 537 | imurmurhash "^0.1.4" 538 | is-glob "^4.0.0" 539 | js-yaml "^3.13.1" 540 | json-stable-stringify-without-jsonify "^1.0.1" 541 | levn "^0.4.1" 542 | lodash.merge "^4.6.2" 543 | minimatch "^3.0.4" 544 | natural-compare "^1.4.0" 545 | optionator "^0.9.1" 546 | progress "^2.0.0" 547 | regexpp "^3.1.0" 548 | semver "^7.2.1" 549 | strip-ansi "^6.0.0" 550 | strip-json-comments "^3.1.0" 551 | table "^6.0.9" 552 | text-table "^0.2.0" 553 | v8-compile-cache "^2.0.3" 554 | 555 | espree@^7.3.0, espree@^7.3.1: 556 | version "7.3.1" 557 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 558 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 559 | dependencies: 560 | acorn "^7.4.0" 561 | acorn-jsx "^5.3.1" 562 | eslint-visitor-keys "^1.3.0" 563 | 564 | esprima@^4.0.0, esprima@^4.0.1: 565 | version "4.0.1" 566 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 567 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 568 | 569 | esquery@^1.4.0: 570 | version "1.4.0" 571 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 572 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 573 | dependencies: 574 | estraverse "^5.1.0" 575 | 576 | esrecurse@^4.3.0: 577 | version "4.3.0" 578 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 579 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 580 | dependencies: 581 | estraverse "^5.2.0" 582 | 583 | estraverse@^4.1.1: 584 | version "4.3.0" 585 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 586 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 587 | 588 | estraverse@^5.1.0, estraverse@^5.2.0: 589 | version "5.2.0" 590 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 591 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 592 | 593 | esutils@^2.0.2: 594 | version "2.0.3" 595 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 596 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 597 | 598 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 599 | version "3.1.3" 600 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 601 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 602 | 603 | fast-json-stable-stringify@^2.0.0: 604 | version "2.1.0" 605 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 606 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 607 | 608 | fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: 609 | version "2.0.6" 610 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 611 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 612 | 613 | file-entry-cache@^6.0.1: 614 | version "6.0.1" 615 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 616 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 617 | dependencies: 618 | flat-cache "^3.0.4" 619 | 620 | fill-range@^7.0.1: 621 | version "7.0.1" 622 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 623 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 624 | dependencies: 625 | to-regex-range "^5.0.1" 626 | 627 | find-up@5.0.0: 628 | version "5.0.0" 629 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 630 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 631 | dependencies: 632 | locate-path "^6.0.0" 633 | path-exists "^4.0.0" 634 | 635 | flat-cache@^3.0.4: 636 | version "3.0.4" 637 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 638 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 639 | dependencies: 640 | flatted "^3.1.0" 641 | rimraf "^3.0.2" 642 | 643 | flat@^5.0.2: 644 | version "5.0.2" 645 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 646 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 647 | 648 | flatted@^3.1.0: 649 | version "3.1.1" 650 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" 651 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== 652 | 653 | form-data@^3.0.0: 654 | version "3.0.1" 655 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 656 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 657 | dependencies: 658 | asynckit "^0.4.0" 659 | combined-stream "^1.0.8" 660 | mime-types "^2.1.12" 661 | 662 | fs.realpath@^1.0.0: 663 | version "1.0.0" 664 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 665 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 666 | 667 | fsevents@~2.3.1: 668 | version "2.3.2" 669 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 670 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 671 | 672 | functional-red-black-tree@^1.0.1: 673 | version "1.0.1" 674 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 675 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 676 | 677 | get-caller-file@^2.0.5: 678 | version "2.0.5" 679 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 680 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 681 | 682 | glob-parent@^5.1.2, glob-parent@~5.1.0: 683 | version "5.1.2" 684 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 685 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 686 | dependencies: 687 | is-glob "^4.0.1" 688 | 689 | glob@7.1.7, glob@^7.1.3: 690 | version "7.1.7" 691 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 692 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 693 | dependencies: 694 | fs.realpath "^1.0.0" 695 | inflight "^1.0.4" 696 | inherits "2" 697 | minimatch "^3.0.4" 698 | once "^1.3.0" 699 | path-is-absolute "^1.0.0" 700 | 701 | globals@^13.6.0, globals@^13.9.0: 702 | version "13.9.0" 703 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" 704 | integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== 705 | dependencies: 706 | type-fest "^0.20.2" 707 | 708 | growl@1.10.5: 709 | version "1.10.5" 710 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 711 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 712 | 713 | has-flag@^3.0.0: 714 | version "3.0.0" 715 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 716 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 717 | 718 | has-flag@^4.0.0: 719 | version "4.0.0" 720 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 721 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 722 | 723 | he@1.2.0: 724 | version "1.2.0" 725 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 726 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 727 | 728 | html-encoding-sniffer@^2.0.1: 729 | version "2.0.1" 730 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" 731 | integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== 732 | dependencies: 733 | whatwg-encoding "^1.0.5" 734 | 735 | http-proxy-agent@^4.0.1: 736 | version "4.0.1" 737 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 738 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 739 | dependencies: 740 | "@tootallnate/once" "1" 741 | agent-base "6" 742 | debug "4" 743 | 744 | https-proxy-agent@^5.0.0: 745 | version "5.0.0" 746 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 747 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 748 | dependencies: 749 | agent-base "6" 750 | debug "4" 751 | 752 | iconv-lite@0.4.24: 753 | version "0.4.24" 754 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 755 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 756 | dependencies: 757 | safer-buffer ">= 2.1.2 < 3" 758 | 759 | ignore@^4.0.6: 760 | version "4.0.6" 761 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 762 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 763 | 764 | import-fresh@^3.0.0, import-fresh@^3.2.1: 765 | version "3.3.0" 766 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 767 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 768 | dependencies: 769 | parent-module "^1.0.0" 770 | resolve-from "^4.0.0" 771 | 772 | imurmurhash@^0.1.4: 773 | version "0.1.4" 774 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 775 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 776 | 777 | inflight@^1.0.4: 778 | version "1.0.6" 779 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 780 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 781 | dependencies: 782 | once "^1.3.0" 783 | wrappy "1" 784 | 785 | inherits@2: 786 | version "2.0.4" 787 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 788 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 789 | 790 | is-binary-path@~2.1.0: 791 | version "2.1.0" 792 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 793 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 794 | dependencies: 795 | binary-extensions "^2.0.0" 796 | 797 | is-extglob@^2.1.1: 798 | version "2.1.1" 799 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 800 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 801 | 802 | is-fullwidth-code-point@^2.0.0: 803 | version "2.0.0" 804 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 805 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 806 | 807 | is-fullwidth-code-point@^3.0.0: 808 | version "3.0.0" 809 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 810 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 811 | 812 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 813 | version "4.0.1" 814 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 815 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 816 | dependencies: 817 | is-extglob "^2.1.1" 818 | 819 | is-number@^7.0.0: 820 | version "7.0.0" 821 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 822 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 823 | 824 | is-plain-obj@^2.1.0: 825 | version "2.1.0" 826 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 827 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 828 | 829 | is-potential-custom-element-name@^1.0.1: 830 | version "1.0.1" 831 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 832 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 833 | 834 | is-unicode-supported@^0.1.0: 835 | version "0.1.0" 836 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 837 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 838 | 839 | isexe@^2.0.0: 840 | version "2.0.0" 841 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 842 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 843 | 844 | jest-worker@^26.2.1: 845 | version "26.6.2" 846 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" 847 | integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== 848 | dependencies: 849 | "@types/node" "*" 850 | merge-stream "^2.0.0" 851 | supports-color "^7.0.0" 852 | 853 | js-tokens@^4.0.0: 854 | version "4.0.0" 855 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 856 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 857 | 858 | js-yaml@4.1.0: 859 | version "4.1.0" 860 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 861 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 862 | dependencies: 863 | argparse "^2.0.1" 864 | 865 | js-yaml@^3.13.1: 866 | version "3.14.1" 867 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 868 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 869 | dependencies: 870 | argparse "^1.0.7" 871 | esprima "^4.0.0" 872 | 873 | jsdom@16: 874 | version "16.6.0" 875 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" 876 | integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== 877 | dependencies: 878 | abab "^2.0.5" 879 | acorn "^8.2.4" 880 | acorn-globals "^6.0.0" 881 | cssom "^0.4.4" 882 | cssstyle "^2.3.0" 883 | data-urls "^2.0.0" 884 | decimal.js "^10.2.1" 885 | domexception "^2.0.1" 886 | escodegen "^2.0.0" 887 | form-data "^3.0.0" 888 | html-encoding-sniffer "^2.0.1" 889 | http-proxy-agent "^4.0.1" 890 | https-proxy-agent "^5.0.0" 891 | is-potential-custom-element-name "^1.0.1" 892 | nwsapi "^2.2.0" 893 | parse5 "6.0.1" 894 | saxes "^5.0.1" 895 | symbol-tree "^3.2.4" 896 | tough-cookie "^4.0.0" 897 | w3c-hr-time "^1.0.2" 898 | w3c-xmlserializer "^2.0.0" 899 | webidl-conversions "^6.1.0" 900 | whatwg-encoding "^1.0.5" 901 | whatwg-mimetype "^2.3.0" 902 | whatwg-url "^8.5.0" 903 | ws "^7.4.5" 904 | xml-name-validator "^3.0.0" 905 | 906 | json-schema-traverse@^0.4.1: 907 | version "0.4.1" 908 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 909 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 910 | 911 | json-schema-traverse@^1.0.0: 912 | version "1.0.0" 913 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 914 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 915 | 916 | json-stable-stringify-without-jsonify@^1.0.1: 917 | version "1.0.1" 918 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 919 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 920 | 921 | levn@^0.4.1: 922 | version "0.4.1" 923 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 924 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 925 | dependencies: 926 | prelude-ls "^1.2.1" 927 | type-check "~0.4.0" 928 | 929 | levn@~0.3.0: 930 | version "0.3.0" 931 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 932 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 933 | dependencies: 934 | prelude-ls "~1.1.2" 935 | type-check "~0.3.2" 936 | 937 | locate-path@^6.0.0: 938 | version "6.0.0" 939 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 940 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 941 | dependencies: 942 | p-locate "^5.0.0" 943 | 944 | lodash.clonedeep@^4.5.0: 945 | version "4.5.0" 946 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 947 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 948 | 949 | lodash.merge@^4.6.2: 950 | version "4.6.2" 951 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 952 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 953 | 954 | lodash.truncate@^4.4.2: 955 | version "4.4.2" 956 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 957 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 958 | 959 | lodash@^4.7.0: 960 | version "4.17.21" 961 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 962 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 963 | 964 | log-symbols@4.1.0: 965 | version "4.1.0" 966 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 967 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 968 | dependencies: 969 | chalk "^4.1.0" 970 | is-unicode-supported "^0.1.0" 971 | 972 | lru-cache@^6.0.0: 973 | version "6.0.0" 974 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 975 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 976 | dependencies: 977 | yallist "^4.0.0" 978 | 979 | merge-stream@^2.0.0: 980 | version "2.0.0" 981 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 982 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 983 | 984 | mime-db@1.48.0: 985 | version "1.48.0" 986 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" 987 | integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== 988 | 989 | mime-types@^2.1.12: 990 | version "2.1.31" 991 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" 992 | integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== 993 | dependencies: 994 | mime-db "1.48.0" 995 | 996 | minimatch@3.0.4, minimatch@^3.0.4: 997 | version "3.0.4" 998 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 999 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1000 | dependencies: 1001 | brace-expansion "^1.1.7" 1002 | 1003 | mocha@9: 1004 | version "9.0.0" 1005 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.0.tgz#67ce848170cb6426f9e84c57e38376dc9017bab4" 1006 | integrity sha512-GRGG/q9bIaUkHJB9NL+KZNjDhMBHB30zW3bZW9qOiYr+QChyLjPzswaxFWkI1q6lGlSL28EQYzAi2vKWNkPx+g== 1007 | dependencies: 1008 | "@ungap/promise-all-settled" "1.1.2" 1009 | ansi-colors "4.1.1" 1010 | browser-stdout "1.3.1" 1011 | chokidar "3.5.1" 1012 | debug "4.3.1" 1013 | diff "5.0.0" 1014 | escape-string-regexp "4.0.0" 1015 | find-up "5.0.0" 1016 | glob "7.1.7" 1017 | growl "1.10.5" 1018 | he "1.2.0" 1019 | js-yaml "4.1.0" 1020 | log-symbols "4.1.0" 1021 | minimatch "3.0.4" 1022 | ms "2.1.3" 1023 | nanoid "3.1.23" 1024 | serialize-javascript "5.0.1" 1025 | strip-json-comments "3.1.1" 1026 | supports-color "8.1.1" 1027 | which "2.0.2" 1028 | wide-align "1.1.3" 1029 | workerpool "6.1.4" 1030 | yargs "16.2.0" 1031 | yargs-parser "20.2.4" 1032 | yargs-unparser "2.0.0" 1033 | 1034 | ms@2.1.2: 1035 | version "2.1.2" 1036 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1037 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1038 | 1039 | ms@2.1.3: 1040 | version "2.1.3" 1041 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1042 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1043 | 1044 | nanoid@3.1.23: 1045 | version "3.1.23" 1046 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" 1047 | integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== 1048 | 1049 | natural-compare@^1.4.0: 1050 | version "1.4.0" 1051 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1052 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1053 | 1054 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1055 | version "3.0.0" 1056 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1057 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1058 | 1059 | nwsapi@^2.2.0: 1060 | version "2.2.0" 1061 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 1062 | integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 1063 | 1064 | once@^1.3.0: 1065 | version "1.4.0" 1066 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1067 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1068 | dependencies: 1069 | wrappy "1" 1070 | 1071 | optionator@^0.8.1: 1072 | version "0.8.3" 1073 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 1074 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 1075 | dependencies: 1076 | deep-is "~0.1.3" 1077 | fast-levenshtein "~2.0.6" 1078 | levn "~0.3.0" 1079 | prelude-ls "~1.1.2" 1080 | type-check "~0.3.2" 1081 | word-wrap "~1.2.3" 1082 | 1083 | optionator@^0.9.1: 1084 | version "0.9.1" 1085 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1086 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1087 | dependencies: 1088 | deep-is "^0.1.3" 1089 | fast-levenshtein "^2.0.6" 1090 | levn "^0.4.1" 1091 | prelude-ls "^1.2.1" 1092 | type-check "^0.4.0" 1093 | word-wrap "^1.2.3" 1094 | 1095 | p-limit@^3.0.2: 1096 | version "3.1.0" 1097 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1098 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1099 | dependencies: 1100 | yocto-queue "^0.1.0" 1101 | 1102 | p-locate@^5.0.0: 1103 | version "5.0.0" 1104 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1105 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1106 | dependencies: 1107 | p-limit "^3.0.2" 1108 | 1109 | parent-module@^1.0.0: 1110 | version "1.0.1" 1111 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1112 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1113 | dependencies: 1114 | callsites "^3.0.0" 1115 | 1116 | parse5@6.0.1: 1117 | version "6.0.1" 1118 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 1119 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 1120 | 1121 | path-exists@^4.0.0: 1122 | version "4.0.0" 1123 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1124 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1125 | 1126 | path-is-absolute@^1.0.0: 1127 | version "1.0.1" 1128 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1129 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1130 | 1131 | path-key@^3.1.0: 1132 | version "3.1.1" 1133 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1134 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1135 | 1136 | picomatch@^2.0.4, picomatch@^2.2.1: 1137 | version "2.3.0" 1138 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1139 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1140 | 1141 | prelude-ls@^1.2.1: 1142 | version "1.2.1" 1143 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1144 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1145 | 1146 | prelude-ls@~1.1.2: 1147 | version "1.1.2" 1148 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1149 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1150 | 1151 | progress@^2.0.0: 1152 | version "2.0.3" 1153 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1154 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1155 | 1156 | psl@^1.1.33: 1157 | version "1.8.0" 1158 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 1159 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 1160 | 1161 | punycode@^2.1.0, punycode@^2.1.1: 1162 | version "2.1.1" 1163 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1164 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1165 | 1166 | randombytes@^2.1.0: 1167 | version "2.1.0" 1168 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1169 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1170 | dependencies: 1171 | safe-buffer "^5.1.0" 1172 | 1173 | readdirp@~3.5.0: 1174 | version "3.5.0" 1175 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1176 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1177 | dependencies: 1178 | picomatch "^2.2.1" 1179 | 1180 | regexpp@^3.1.0: 1181 | version "3.1.0" 1182 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1183 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1184 | 1185 | require-directory@^2.1.1: 1186 | version "2.1.1" 1187 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1188 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1189 | 1190 | require-from-string@^2.0.2: 1191 | version "2.0.2" 1192 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1193 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1194 | 1195 | resolve-from@^4.0.0: 1196 | version "4.0.0" 1197 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1198 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1199 | 1200 | rimraf@^3.0.2: 1201 | version "3.0.2" 1202 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1203 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1204 | dependencies: 1205 | glob "^7.1.3" 1206 | 1207 | rollup-plugin-terser@7: 1208 | version "7.0.2" 1209 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" 1210 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== 1211 | dependencies: 1212 | "@babel/code-frame" "^7.10.4" 1213 | jest-worker "^26.2.1" 1214 | serialize-javascript "^4.0.0" 1215 | terser "^5.0.0" 1216 | 1217 | rollup@2: 1218 | version "2.51.1" 1219 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.51.1.tgz#87bcd4095fe79b14c9bec0edc7ffa44e4827f793" 1220 | integrity sha512-8xfDbAtBleXotb6qKEHWuo/jkn94a9dVqGc7Rwl3sqspCVlnCfbRek7ldhCARSi7h32H0xR4QThm1t9zHN+3uw== 1221 | optionalDependencies: 1222 | fsevents "~2.3.1" 1223 | 1224 | safe-buffer@^5.1.0: 1225 | version "5.2.1" 1226 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1227 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1228 | 1229 | "safer-buffer@>= 2.1.2 < 3": 1230 | version "2.1.2" 1231 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1232 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1233 | 1234 | saxes@^5.0.1: 1235 | version "5.0.1" 1236 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 1237 | integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== 1238 | dependencies: 1239 | xmlchars "^2.2.0" 1240 | 1241 | semver@^7.2.1: 1242 | version "7.3.5" 1243 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 1244 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1245 | dependencies: 1246 | lru-cache "^6.0.0" 1247 | 1248 | serialize-javascript@5.0.1: 1249 | version "5.0.1" 1250 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" 1251 | integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== 1252 | dependencies: 1253 | randombytes "^2.1.0" 1254 | 1255 | serialize-javascript@^4.0.0: 1256 | version "4.0.0" 1257 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" 1258 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== 1259 | dependencies: 1260 | randombytes "^2.1.0" 1261 | 1262 | shebang-command@^2.0.0: 1263 | version "2.0.0" 1264 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1265 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1266 | dependencies: 1267 | shebang-regex "^3.0.0" 1268 | 1269 | shebang-regex@^3.0.0: 1270 | version "3.0.0" 1271 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1272 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1273 | 1274 | slice-ansi@^4.0.0: 1275 | version "4.0.0" 1276 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1277 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1278 | dependencies: 1279 | ansi-styles "^4.0.0" 1280 | astral-regex "^2.0.0" 1281 | is-fullwidth-code-point "^3.0.0" 1282 | 1283 | source-map-support@~0.5.19: 1284 | version "0.5.19" 1285 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1286 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1287 | dependencies: 1288 | buffer-from "^1.0.0" 1289 | source-map "^0.6.0" 1290 | 1291 | source-map@^0.6.0, source-map@~0.6.1: 1292 | version "0.6.1" 1293 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1294 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1295 | 1296 | source-map@~0.7.2: 1297 | version "0.7.3" 1298 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 1299 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 1300 | 1301 | sprintf-js@~1.0.2: 1302 | version "1.0.3" 1303 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1304 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1305 | 1306 | "string-width@^1.0.2 || 2": 1307 | version "2.1.1" 1308 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1309 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1310 | dependencies: 1311 | is-fullwidth-code-point "^2.0.0" 1312 | strip-ansi "^4.0.0" 1313 | 1314 | string-width@^4.1.0, string-width@^4.2.0: 1315 | version "4.2.2" 1316 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 1317 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 1318 | dependencies: 1319 | emoji-regex "^8.0.0" 1320 | is-fullwidth-code-point "^3.0.0" 1321 | strip-ansi "^6.0.0" 1322 | 1323 | strip-ansi@^4.0.0: 1324 | version "4.0.0" 1325 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1326 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1327 | dependencies: 1328 | ansi-regex "^3.0.0" 1329 | 1330 | strip-ansi@^6.0.0: 1331 | version "6.0.0" 1332 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1333 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1334 | dependencies: 1335 | ansi-regex "^5.0.0" 1336 | 1337 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1338 | version "3.1.1" 1339 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1340 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1341 | 1342 | supports-color@8.1.1: 1343 | version "8.1.1" 1344 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1345 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1346 | dependencies: 1347 | has-flag "^4.0.0" 1348 | 1349 | supports-color@^5.3.0: 1350 | version "5.5.0" 1351 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1352 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1353 | dependencies: 1354 | has-flag "^3.0.0" 1355 | 1356 | supports-color@^7.0.0, supports-color@^7.1.0: 1357 | version "7.2.0" 1358 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1359 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1360 | dependencies: 1361 | has-flag "^4.0.0" 1362 | 1363 | symbol-tree@^3.2.4: 1364 | version "3.2.4" 1365 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 1366 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 1367 | 1368 | table@^6.0.9: 1369 | version "6.7.1" 1370 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" 1371 | integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== 1372 | dependencies: 1373 | ajv "^8.0.1" 1374 | lodash.clonedeep "^4.5.0" 1375 | lodash.truncate "^4.4.2" 1376 | slice-ansi "^4.0.0" 1377 | string-width "^4.2.0" 1378 | strip-ansi "^6.0.0" 1379 | 1380 | terser@^5.0.0: 1381 | version "5.7.0" 1382 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" 1383 | integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== 1384 | dependencies: 1385 | commander "^2.20.0" 1386 | source-map "~0.7.2" 1387 | source-map-support "~0.5.19" 1388 | 1389 | text-table@^0.2.0: 1390 | version "0.2.0" 1391 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1392 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1393 | 1394 | to-regex-range@^5.0.1: 1395 | version "5.0.1" 1396 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1397 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1398 | dependencies: 1399 | is-number "^7.0.0" 1400 | 1401 | tough-cookie@^4.0.0: 1402 | version "4.0.0" 1403 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" 1404 | integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== 1405 | dependencies: 1406 | psl "^1.1.33" 1407 | punycode "^2.1.1" 1408 | universalify "^0.1.2" 1409 | 1410 | tr46@^2.1.0: 1411 | version "2.1.0" 1412 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" 1413 | integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== 1414 | dependencies: 1415 | punycode "^2.1.1" 1416 | 1417 | type-check@^0.4.0, type-check@~0.4.0: 1418 | version "0.4.0" 1419 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1420 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1421 | dependencies: 1422 | prelude-ls "^1.2.1" 1423 | 1424 | type-check@~0.3.2: 1425 | version "0.3.2" 1426 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1427 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1428 | dependencies: 1429 | prelude-ls "~1.1.2" 1430 | 1431 | type-fest@^0.20.2: 1432 | version "0.20.2" 1433 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1434 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1435 | 1436 | universalify@^0.1.2: 1437 | version "0.1.2" 1438 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1439 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1440 | 1441 | uri-js@^4.2.2: 1442 | version "4.4.1" 1443 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1444 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1445 | dependencies: 1446 | punycode "^2.1.0" 1447 | 1448 | v8-compile-cache@^2.0.3: 1449 | version "2.3.0" 1450 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1451 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1452 | 1453 | w3c-hr-time@^1.0.2: 1454 | version "1.0.2" 1455 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" 1456 | integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== 1457 | dependencies: 1458 | browser-process-hrtime "^1.0.0" 1459 | 1460 | w3c-xmlserializer@^2.0.0: 1461 | version "2.0.0" 1462 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" 1463 | integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== 1464 | dependencies: 1465 | xml-name-validator "^3.0.0" 1466 | 1467 | webidl-conversions@^5.0.0: 1468 | version "5.0.0" 1469 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 1470 | integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 1471 | 1472 | webidl-conversions@^6.1.0: 1473 | version "6.1.0" 1474 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 1475 | integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== 1476 | 1477 | whatwg-encoding@^1.0.5: 1478 | version "1.0.5" 1479 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 1480 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== 1481 | dependencies: 1482 | iconv-lite "0.4.24" 1483 | 1484 | whatwg-mimetype@^2.3.0: 1485 | version "2.3.0" 1486 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 1487 | integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== 1488 | 1489 | whatwg-url@^8.0.0, whatwg-url@^8.5.0: 1490 | version "8.6.0" 1491 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.6.0.tgz#27c0205a4902084b872aecb97cf0f2a7a3011f4c" 1492 | integrity sha512-os0KkeeqUOl7ccdDT1qqUcS4KH4tcBTSKK5Nl5WKb2lyxInIZ/CpjkqKa1Ss12mjfdcRX9mHmPPs7/SxG1Hbdw== 1493 | dependencies: 1494 | lodash "^4.7.0" 1495 | tr46 "^2.1.0" 1496 | webidl-conversions "^6.1.0" 1497 | 1498 | which@2.0.2, which@^2.0.1: 1499 | version "2.0.2" 1500 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1501 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1502 | dependencies: 1503 | isexe "^2.0.0" 1504 | 1505 | wide-align@1.1.3: 1506 | version "1.1.3" 1507 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1508 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1509 | dependencies: 1510 | string-width "^1.0.2 || 2" 1511 | 1512 | word-wrap@^1.2.3, word-wrap@~1.2.3: 1513 | version "1.2.3" 1514 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1515 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1516 | 1517 | workerpool@6.1.4: 1518 | version "6.1.4" 1519 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.4.tgz#6a972b6df82e38d50248ee2820aa98e2d0ad3090" 1520 | integrity sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g== 1521 | 1522 | wrap-ansi@^7.0.0: 1523 | version "7.0.0" 1524 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1525 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1526 | dependencies: 1527 | ansi-styles "^4.0.0" 1528 | string-width "^4.1.0" 1529 | strip-ansi "^6.0.0" 1530 | 1531 | wrappy@1: 1532 | version "1.0.2" 1533 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1534 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1535 | 1536 | ws@^7.4.5: 1537 | version "7.4.6" 1538 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" 1539 | integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== 1540 | 1541 | xml-name-validator@^3.0.0: 1542 | version "3.0.0" 1543 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 1544 | integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== 1545 | 1546 | xmlchars@^2.2.0: 1547 | version "2.2.0" 1548 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 1549 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 1550 | 1551 | y18n@^5.0.5: 1552 | version "5.0.8" 1553 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1554 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1555 | 1556 | yallist@^4.0.0: 1557 | version "4.0.0" 1558 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1559 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1560 | 1561 | yargs-parser@20.2.4: 1562 | version "20.2.4" 1563 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1564 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1565 | 1566 | yargs-parser@^20.2.2: 1567 | version "20.2.7" 1568 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" 1569 | integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== 1570 | 1571 | yargs-unparser@2.0.0: 1572 | version "2.0.0" 1573 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1574 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1575 | dependencies: 1576 | camelcase "^6.0.0" 1577 | decamelize "^4.0.0" 1578 | flat "^5.0.2" 1579 | is-plain-obj "^2.1.0" 1580 | 1581 | yargs@16.2.0: 1582 | version "16.2.0" 1583 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1584 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1585 | dependencies: 1586 | cliui "^7.0.2" 1587 | escalade "^3.1.1" 1588 | get-caller-file "^2.0.5" 1589 | require-directory "^2.1.1" 1590 | string-width "^4.2.0" 1591 | y18n "^5.0.5" 1592 | yargs-parser "^20.2.2" 1593 | 1594 | yocto-queue@^0.1.0: 1595 | version "0.1.0" 1596 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1597 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1598 | --------------------------------------------------------------------------------