diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..849ddff3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +dist/ diff --git a/.eslintrc b/.eslintrc index 6417a84e..46cb5198 100644 --- a/.eslintrc +++ b/.eslintrc @@ -4,10 +4,7 @@ "es6": true, "node": true }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended" - ], + "extends": ["eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "prettier", "plugin:prettier/recommended"], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" @@ -17,28 +14,22 @@ "ecmaVersion": 2018, "sourceType": "module" }, - "plugins": [ - "@typescript-eslint" - ], + "plugins": ["@typescript-eslint"], "rules": { - "no-console": ["error", { "allow": ["warn"] }], - "no-unused-vars": 0, - "@typescript-eslint/no-unused-vars": "error", - "indent": [ - "error", - 2 - ], - "linebreak-style": [ + "prettier/prettier": ["error"], + "no-console": [ "error", - "unix" + { + "allow": ["warn"] + } ], - "quotes": [ - "error", - "single" - ], - "semi": [ + "no-unused-vars": 0, + "@typescript-eslint/no-unused-vars": [ "error", - "never" + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_" + } ] } -} \ No newline at end of file +} diff --git a/.gitignore b/.gitignore index a7b1bc36..64f5062e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules/ dist/ .cache/ -.vscode \ No newline at end of file +.vscode +.parcel-cache \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..d18a113b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +dist +docs +package-lock.json \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..f4b22ef9 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,26 @@ +{ + "tabWidth": 2, + "printWidth": 140, + "semi": false, + "useTabs": false, + "singleQuote": true, + "bracketSameLine": true, + "jsxSingleQuote": true, + "endOfLine": "lf", + "trailingComma": "none", + "parser": "typescript", + "overrides": [ + { + "files": ["*.json", "*rc"], + "options": { "parser": "json" } + }, + { + "files": "*.md", + "options": { "parser": "markdown" } + }, + { + "files": "*.html", + "options": { "parser": "html" } + } + ] +} diff --git a/README.md b/README.md index 788bc60d..781fad72 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,21 @@ # Trellis + [![npm version](https://badge.fury.io/js/%40sayari%2Ftrellis.svg)](https://badge.fury.io/js/%40sayari%2Ftrellis) A highly performant network visualization library with a simple, declarative API, plugable renderers, and bindings for different frameworks and use cases ## Installation + if using npm + ```bash npm install @sayari/trellis ``` or alternatively import via HTML + ```html - + ``` ## Examples @@ -24,6 +28,7 @@ or alternatively import via HTML - [React Selection Multiselect Tool](https://codesandbox.io/s/trellis-react-and-selection-example-68dg5?file=/src/Graph.js) ## Modules + - renderers - WebGL - png/jpg @@ -37,18 +42,23 @@ or alternatively import via HTML - native ## Philosophy + Trellis decouples graph rendering from graph layout computations, and decouples both from framework-specific bindings. Additionally, the Trellis renderer is mostly stateless, leaving questions of state management to the application and allowing for simple customization of library behavior. This means integrating any of Trellis modules with an existing application should be relatively straightforward. Similar to rendering libraries like React, Trellis focuses on performant rendering and graph-based computations, while remaining agnostic about where and how state is managed. Moreover, by splitting responsibilities into separate modules, if existing modules don't fit your needs, you can always roll your own, while still benefiting from the remaining modules that are helpful. ## See Also + - Sigma js ### Development + ```bash npm run dev ``` ### Deployment + prerelease + ```bash npm run build @@ -62,6 +72,7 @@ npm publish dist/ --tag next ``` release + ```bash npm run build diff --git a/data/tmp-data.ts b/data/tmp-data.ts index 46bf99e6..3735ca59 100755 --- a/data/tmp-data.ts +++ b/data/tmp-data.ts @@ -1,4522 +1,4529 @@ export default { - "nodes": { - "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "id": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "type": "company", - "label": "南昌海兴城市桥梁有限公司", - "degreeMap": { - "has_shareholder": 2, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 11, - "total": 13 + nodes: { + '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + id: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + type: 'company', + label: '南昌海兴城市桥梁有限公司', + degreeMap: { + has_shareholder: 2, + has_legal_representative: 1, + has_manager: 1, + has_director: 11, + total: 13 } }, - "c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d": { - "id": "c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d", - "type": "person", - "label": "谭勇", - "degreeMap": { - "director_of": 1, - "total": 1 + c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d: { + id: 'c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d', + type: 'person', + label: '谭勇', + degreeMap: { + director_of: 1, + total: 1 } }, - "055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3": { - "id": "055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3", - "type": "person", - "label": "周志强", - "degreeMap": { - "director_of": 2, - "total": 2 + '055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3': { + id: '055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3', + type: 'person', + label: '周志强', + degreeMap: { + director_of: 2, + total: 2 } }, - "907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0": { - "id": "907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0", - "type": "person", - "label": "刘建平", - "degreeMap": { - "director_of": 1, - "total": 1 + '907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0': { + id: '907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0', + type: 'person', + label: '刘建平', + degreeMap: { + director_of: 1, + total: 1 } }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63": { - "id": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "type": "person", - "label": "吴明清", - "degreeMap": { - "manager_of": 1, - "legal_representative_of": 5, - "director_of": 8, - "total": 8 + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63': { + id: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + type: 'person', + label: '吴明清', + degreeMap: { + manager_of: 1, + legal_representative_of: 5, + director_of: 8, + total: 8 } }, - "c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9": { - "id": "c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9", - "type": "person", - "label": "程海兵", - "degreeMap": { - "director_of": 1, - "total": 1 + c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9: { + id: 'c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9', + type: 'person', + label: '程海兵', + degreeMap: { + director_of: 1, + total: 1 } }, - "cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933": { - "id": "cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933", - "type": "person", - "label": "康苏斌", - "degreeMap": { - "director_of": 1, - "total": 1 + cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933: { + id: 'cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933', + type: 'person', + label: '康苏斌', + degreeMap: { + director_of: 1, + total: 1 } }, - "0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b": { - "id": "0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b", - "type": "person", - "label": "万莉", - "degreeMap": { - "director_of": 1, - "total": 1 + '0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b': { + id: '0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b', + type: 'person', + label: '万莉', + degreeMap: { + director_of: 1, + total: 1 } }, - "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502": { - "id": "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502", - "type": "person", - "label": "代辉宇", - "degreeMap": { - "director_of": 3, - "supervisor_of": 1, - "total": 4 + '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502': { + id: '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502', + type: 'person', + label: '代辉宇', + degreeMap: { + director_of: 3, + supervisor_of: 1, + total: 4 } }, - "a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711": { - "id": "a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711", - "type": "person", - "label": "傅建国", - "degreeMap": { - "director_of": 1, - "total": 1 + a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711: { + id: 'a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711', + type: 'person', + label: '傅建国', + degreeMap: { + director_of: 1, + total: 1 } }, - "284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08": { - "id": "284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08", - "type": "person", - "label": "郭爱东", - "degreeMap": { - "director_of": 2, - "total": 2 + '284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08': { + id: '284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08', + type: 'person', + label: '郭爱东', + degreeMap: { + director_of: 2, + total: 2 } }, - "3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947": { - "id": "3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947", - "type": "person", - "label": "涂建华", - "degreeMap": { - "manager_of": 1, - "director_of": 1, - "total": 1 + '3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947': { + id: '3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947', + type: 'person', + label: '涂建华', + degreeMap: { + manager_of: 1, + director_of: 1, + total: 1 } }, - "2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f": { - "id": "2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f", - "type": "company", - "label": "香港中海基建有限公司", - "degreeMap": { - "shareholder_of": 3, - "total": 3 + '2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f': { + id: '2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f', + type: 'company', + label: '香港中海基建有限公司', + degreeMap: { + shareholder_of: 3, + total: 3 } }, - "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089": { - "id": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "type": "company", - "label": "南昌大桥有限责任公司", - "degreeMap": { - "has_supervisor": 3, - "shareholder_of": 5, - "has_shareholder": 1, - "has_legal_representative": 1, - "has_director": 3, - "total": 12 + '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089': { + id: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + type: 'company', + label: '南昌大桥有限责任公司', + degreeMap: { + has_supervisor: 3, + shareholder_of: 5, + has_shareholder: 1, + has_legal_representative: 1, + has_director: 3, + total: 12 } }, - "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4": { - "id": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "type": "company", - "label": "深圳海丰德投资有限公司", - "degreeMap": { - "has_supervisor": 1, - "shareholder_of": 6, - "has_shareholder": 1, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 3, - "total": 11 + '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4': { + id: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + type: 'company', + label: '深圳海丰德投资有限公司', + degreeMap: { + has_supervisor: 1, + shareholder_of: 6, + has_shareholder: 1, + has_legal_representative: 1, + has_manager: 1, + has_director: 3, + total: 11 } }, - "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "id": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "type": "company", - "label": "深圳市中海投资有限公司", - "degreeMap": { - "has_supervisor": 1, - "shareholder_of": 4, - "has_shareholder": 1, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 3, - "total": 8 + eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160: { + id: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + type: 'company', + label: '深圳市中海投资有限公司', + degreeMap: { + has_supervisor: 1, + shareholder_of: 4, + has_shareholder: 1, + has_legal_representative: 1, + has_manager: 1, + has_director: 3, + total: 8 } }, - "0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9": { - "id": "0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9", - "type": "company", - "label": "沈阳皇姑热电有限公司", - "degreeMap": { - "has_supervisor": 1, - "shareholder_of": 2, - "has_shareholder": 3, - "has_legal_representative": 3, - "has_manager": 1, - "has_director": 6, - "has_branch": 2, - "total": 14 + '0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9': { + id: '0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9', + type: 'company', + label: '沈阳皇姑热电有限公司', + degreeMap: { + has_supervisor: 1, + shareholder_of: 2, + has_shareholder: 3, + has_legal_representative: 3, + has_manager: 1, + has_director: 6, + has_branch: 2, + total: 14 } }, - "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41": { - "id": "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41", - "type": "person", - "label": "包俊", - "degreeMap": { - "director_of": 5, - "total": 5 + d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41: { + id: 'd3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41', + type: 'person', + label: '包俊', + degreeMap: { + director_of: 5, + total: 5 } }, - "3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d": { - "id": "3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d", - "type": "person", - "label": "苑新成", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d': { + id: '3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d', + type: 'person', + label: '苑新成', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "id": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "type": "company", - "label": "南京长江第二大桥有限责任公司", - "degreeMap": { - "has_supervisor": 5, - "shareholder_of": 2, - "has_shareholder": 2, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 14, - "has_branch": 1, - "total": 24 + '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + id: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + type: 'company', + label: '南京长江第二大桥有限责任公司', + degreeMap: { + has_supervisor: 5, + shareholder_of: 2, + has_shareholder: 2, + has_legal_representative: 1, + has_manager: 1, + has_director: 14, + has_branch: 1, + total: 24 } }, - "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "id": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "type": "company", - "label": "中海创业投资(深圳)有限公司", - "degreeMap": { - "shareholder_of": 3, - "has_shareholder": 2, - "has_legal_representative": 2, - "has_manager": 1, - "has_director": 4, - "total": 9 + '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': { + id: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + type: 'company', + label: '中海创业投资(深圳)有限公司', + degreeMap: { + shareholder_of: 3, + has_shareholder: 2, + has_legal_representative: 2, + has_manager: 1, + has_director: 4, + total: 9 } }, - "5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7": { - "id": "5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7", - "type": "company", - "label": "广州蒙特利实业有限公司(移市工商局)", - "degreeMap": { - "has_legal_representative": 1, - "has_shareholder": 2, - "total": 3 + '5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7': { + id: '5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7', + type: 'company', + label: '广州蒙特利实业有限公司(移市工商局)', + degreeMap: { + has_legal_representative: 1, + has_shareholder: 2, + total: 3 } }, - "56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4": { - "id": "56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4", - "type": "company", - "label": "广州蒙特利实业有限公司", - "degreeMap": { - "has_legal_representative": 1, - "has_shareholder": 3, - "total": 4 + '56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4': { + id: '56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4', + type: 'company', + label: '广州蒙特利实业有限公司', + degreeMap: { + has_legal_representative: 1, + has_shareholder: 3, + total: 4 } }, - "378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7": { - "id": "378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7", - "type": "person", - "label": "郭汝基", - "degreeMap": { - "legal_representative_of": 1, - "total": 1 + '378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7': { + id: '378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7', + type: 'person', + label: '郭汝基', + degreeMap: { + legal_representative_of: 1, + total: 1 } }, - "0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e": { - "id": "0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e", - "type": "company", - "label": "广州科技金融创新投资控股有限公司", - "degreeMap": { - "has_supervisor": 9, - "shareholder_of": 103, - "has_shareholder": 3, - "legal_representative_of": 3, - "has_legal_representative": 4, - "has_manager": 2, - "has_director": 19, - "total": 133 + '0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e': { + id: '0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e', + type: 'company', + label: '广州科技金融创新投资控股有限公司', + degreeMap: { + has_supervisor: 9, + shareholder_of: 103, + has_shareholder: 3, + legal_representative_of: 3, + has_legal_representative: 4, + has_manager: 2, + has_director: 19, + total: 133 } }, - "f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46": { - "id": "f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46", - "type": "company", - "label": "中国海外科技控股有限公司", - "degreeMap": { - "shareholder_of": 1, - "total": 1 + f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46: { + id: 'f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46', + type: 'company', + label: '中国海外科技控股有限公司', + degreeMap: { + shareholder_of: 1, + total: 1 } }, - "75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8": { - "id": "75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8", - "type": "person", - "label": "周勇", - "degreeMap": { - "manager_of": 1, - "legal_representative_of": 1, - "director_of": 1, - "total": 1 + '75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8': { + id: '75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8', + type: 'person', + label: '周勇', + degreeMap: { + manager_of: 1, + legal_representative_of: 1, + director_of: 1, + total: 1 } }, - "f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29": { - "id": "f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29", - "type": "person", - "label": "吴明清", - "degreeMap": { - "legal_representative_of": 1, - "total": 1 + f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29: { + id: 'f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29', + type: 'person', + label: '吴明清', + degreeMap: { + legal_representative_of: 1, + total: 1 } }, - "2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c": { - "id": "2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c", - "type": "person", - "label": "周文斌", - "degreeMap": { - "director_of": 2, - "total": 2 + '2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c': { + id: '2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c', + type: 'person', + label: '周文斌', + degreeMap: { + director_of: 2, + total: 2 } }, - "3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9": { - "id": "3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9", - "type": "person", - "label": "田树臣", - "degreeMap": { - "manager_of": 1, - "legal_representative_of": 3, - "director_of": 3, - "total": 5 + '3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9': { + id: '3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9', + type: 'person', + label: '田树臣', + degreeMap: { + manager_of: 1, + legal_representative_of: 3, + director_of: 3, + total: 5 } }, - "6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6": { - "id": "6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6", - "type": "person", - "label": "郭汝基", - "degreeMap": { - "legal_representative_of": 1, - "total": 1 + '6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6': { + id: '6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6', + type: 'person', + label: '郭汝基', + degreeMap: { + legal_representative_of: 1, + total: 1 } }, - "0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82": { - "id": "0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82", - "type": "person", - "label": "张映芳", - "degreeMap": { - "director_of": 4, - "legal_representative_of": 2, - "total": 4 + '0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82': { + id: '0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82', + type: 'person', + label: '张映芳', + degreeMap: { + director_of: 4, + legal_representative_of: 2, + total: 4 } }, - "d4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71": { - "id": "d4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71", - "type": "person", - "label": "高升", - "degreeMap": { - "director_of": 1, - "total": 1 + d4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71: { + id: 'd4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71', + type: 'person', + label: '高升', + degreeMap: { + director_of: 1, + total: 1 } }, - "3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a": { - "id": "3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a", - "type": "person", - "label": "童义和", - "degreeMap": { - "director_of": 1, - "total": 1 + '3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a': { + id: '3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a', + type: 'person', + label: '童义和', + degreeMap: { + director_of: 1, + total: 1 } }, - "78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11": { - "id": "78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11", - "type": "person", - "label": "冯宝椿", - "degreeMap": { - "director_of": 1, - "total": 1 + '78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11': { + id: '78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11', + type: 'person', + label: '冯宝椿', + degreeMap: { + director_of: 1, + total: 1 } }, - "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062": { - "id": "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062", - "type": "person", - "label": "丁来喜", - "degreeMap": { - "manager_of": 1, - "director_of": 2, - "total": 2 + d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062: { + id: 'd194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062', + type: 'person', + label: '丁来喜', + degreeMap: { + manager_of: 1, + director_of: 2, + total: 2 } }, - "b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52": { - "id": "b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52", - "type": "person", - "label": "周三亚", - "degreeMap": { - "director_of": 1, - "total": 1 + b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52: { + id: 'b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52', + type: 'person', + label: '周三亚', + degreeMap: { + director_of: 1, + total: 1 } }, - "8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c": { - "id": "8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c", - "type": "person", - "label": "张海峰", - "degreeMap": { - "director_of": 1, - "total": 1 + '8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c': { + id: '8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c', + type: 'person', + label: '张海峰', + degreeMap: { + director_of: 1, + total: 1 } }, - "f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7": { - "id": "f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7", - "type": "person", - "label": "仲爱兵", - "degreeMap": { - "director_of": 1, - "total": 1 + f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7: { + id: 'f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7', + type: 'person', + label: '仲爱兵', + degreeMap: { + director_of: 1, + total: 1 } }, - "0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9": { - "id": "0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9", - "type": "person", - "label": "王和平", - "degreeMap": { - "director_of": 1, - "total": 1 + '0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9': { + id: '0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9', + type: 'person', + label: '王和平', + degreeMap: { + director_of: 1, + total: 1 } }, - "b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d": { - "id": "b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d", - "type": "person", - "label": "唐中", - "degreeMap": { - "director_of": 1, - "total": 1 + b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d: { + id: 'b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d', + type: 'person', + label: '唐中', + degreeMap: { + director_of: 1, + total: 1 } }, - "7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107": { - "id": "7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107", - "type": "person", - "label": "张海峰", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107': { + id: '7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107', + type: 'person', + label: '张海峰', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4": { - "id": "3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4", - "type": "person", - "label": "童义和", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4': { + id: '3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4', + type: 'person', + label: '童义和', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822": { - "id": "e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822", - "type": "person", - "label": "王洵", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822: { + id: 'e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822', + type: 'person', + label: '王洵', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b": { - "id": "6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b", - "type": "person", - "label": "曹建霞", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b': { + id: '6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b', + type: 'person', + label: '曹建霞', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a": { - "id": "5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a", - "type": "person", - "label": "严冬", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a': { + id: '5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a', + type: 'person', + label: '严冬', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "id": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "type": "company", - "label": "南京市交通建设投资控股(集团)有限责任公司", - "degreeMap": { - "has_supervisor": 5, - "shareholder_of": 23, - "has_shareholder": 1, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 8, - "total": 37 + f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75: { + id: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + type: 'company', + label: '南京市交通建设投资控股(集团)有限责任公司', + degreeMap: { + has_supervisor: 5, + shareholder_of: 23, + has_shareholder: 1, + has_legal_representative: 1, + has_manager: 1, + has_director: 8, + total: 37 } }, - "a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d": { - "id": "a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d", - "type": "company", - "label": "南京长江二桥物贸实业有限公司", - "degreeMap": { - "has_shareholder": 2, - "has_legal_representative": 3, - "has_manager": 1, - "has_director": 3, - "total": 8 + a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d: { + id: 'a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d', + type: 'company', + label: '南京长江二桥物贸实业有限公司', + degreeMap: { + has_shareholder: 2, + has_legal_representative: 3, + has_manager: 1, + has_director: 3, + total: 8 } }, - "f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e": { - "id": "f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e", - "type": "company", - "label": "南京二桥旅游开发有限责任公司", - "degreeMap": { - "has_supervisor": 1, - "has_shareholder": 1, - "has_legal_representative": 3, - "has_manager": 1, - "has_director": 2, - "total": 5 + f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e: { + id: 'f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e', + type: 'company', + label: '南京二桥旅游开发有限责任公司', + degreeMap: { + has_supervisor: 1, + has_shareholder: 1, + has_legal_representative: 3, + has_manager: 1, + has_director: 2, + total: 5 } }, - "1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8": { - "id": "1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8", - "type": "person", - "label": "高升", - "degreeMap": { - "manager_of": 1, - "total": 1 + '1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8': { + id: '1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8', + type: 'person', + label: '高升', + degreeMap: { + manager_of: 1, + total: 1 } }, - "52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c": { - "id": "52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c", - "type": "person", - "label": "曾祥", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c': { + id: '52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c', + type: 'person', + label: '曾祥', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4": { - "id": "a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4", - "type": "company", - "label": "莱州中海运输有限公司", - "degreeMap": { - "has_legal_representative": 1, - "has_shareholder": 1, - "total": 2 + a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4: { + id: 'a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4', + type: 'company', + label: '莱州中海运输有限公司', + degreeMap: { + has_legal_representative: 1, + has_shareholder: 1, + total: 2 } }, - "5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164": { - "id": "5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164", - "type": "company", - "label": "深圳路安特沥青高新技术有限公司", - "degreeMap": { - "shareholder_of": 7, - "has_shareholder": 7, - "has_legal_representative": 3, - "has_manager": 2, - "has_director": 6, - "has_branch": 2, - "total": 23 + '5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164': { + id: '5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164', + type: 'company', + label: '深圳路安特沥青高新技术有限公司', + degreeMap: { + shareholder_of: 7, + has_shareholder: 7, + has_legal_representative: 3, + has_manager: 2, + has_director: 6, + has_branch: 2, + total: 23 } }, - "844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f": { - "id": "844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f", - "type": "company", - "label": "山东中海金仓矿业有限公司", - "degreeMap": { - "has_legal_representative": 1, - "has_shareholder": 1, - "total": 2 + '844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f': { + id: '844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f', + type: 'company', + label: '山东中海金仓矿业有限公司', + degreeMap: { + has_legal_representative: 1, + has_shareholder: 1, + total: 2 } }, - "1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5": { - "id": "1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5", - "type": "company", - "label": "沈阳皇姑热电供暖有限公司", - "degreeMap": { - "has_legal_representative": 1, - "has_shareholder": 1, - "total": 2 + '1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5': { + id: '1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5', + type: 'company', + label: '沈阳皇姑热电供暖有限公司', + degreeMap: { + has_legal_representative: 1, + has_shareholder: 1, + total: 2 } }, - "31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77": { - "id": "31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77", - "type": "company", - "label": "中建国际投资(中国)有限公司", - "degreeMap": { - "has_supervisor": 2, - "shareholder_of": 104, - "has_shareholder": 38, - "has_legal_representative": 2, - "has_manager": 4, - "has_director": 18, - "has_branch": 22, - "total": 149 + '31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77': { + id: '31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77', + type: 'company', + label: '中建国际投资(中国)有限公司', + degreeMap: { + has_supervisor: 2, + shareholder_of: 104, + has_shareholder: 38, + has_legal_representative: 2, + has_manager: 4, + has_director: 18, + has_branch: 22, + total: 149 } }, - "33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24": { - "id": "33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24", - "type": "person", - "label": "邓鹏飞", - "degreeMap": { - "legal_representative_of": 1, - "total": 1 + '33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24': { + id: '33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24', + type: 'person', + label: '邓鹏飞', + degreeMap: { + legal_representative_of: 1, + total: 1 } }, - "546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918": { - "id": "546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918", - "type": "person", - "label": "王旭", - "degreeMap": { - "director_of": 1, - "total": 1 + '546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918': { + id: '546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918', + type: 'person', + label: '王旭', + degreeMap: { + director_of: 1, + total: 1 } }, - "e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba": { - "id": "e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba", - "type": "person", - "label": "涂建华", - "degreeMap": { - "director_of": 1, - "legal_representative_of": 1, - "total": 1 + e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba: { + id: 'e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba', + type: 'person', + label: '涂建华', + degreeMap: { + director_of: 1, + legal_representative_of: 1, + total: 1 } }, - "1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3": { - "id": "1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3", - "type": "person", - "label": "陈小燕", - "degreeMap": { - "director_of": 1, - "total": 1 + '1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3': { + id: '1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3', + type: 'person', + label: '陈小燕', + degreeMap: { + director_of: 1, + total: 1 } }, - "282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314": { - "id": "282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314", - "type": "person", - "label": "杜人骞", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314': { + id: '282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314', + type: 'person', + label: '杜人骞', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875": { - "id": "af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875", - "type": "person", - "label": "程海兵", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875: { + id: 'af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875', + type: 'person', + label: '程海兵', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12": { - "id": "6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12", - "type": "person", - "label": "周庆之", - "degreeMap": { - "supervisor_of": 1, - "total": 1 + '6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12': { + id: '6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12', + type: 'person', + label: '周庆之', + degreeMap: { + supervisor_of: 1, + total: 1 } }, - "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821": { - "id": "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821", - "type": "person", - "label": "乔海滨", - "degreeMap": { - "manager_of": 1, - "legal_representative_of": 1, - "director_of": 3, - "total": 3 + '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821': { + id: '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821', + type: 'person', + label: '乔海滨', + degreeMap: { + manager_of: 1, + legal_representative_of: 1, + director_of: 3, + total: 3 } }, - "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7": { - "id": "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7", - "type": "person", - "label": "陈红", - "degreeMap": { - "director_of": 5, - "total": 5 + '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7': { + id: '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7', + type: 'person', + label: '陈红', + degreeMap: { + director_of: 5, + total: 5 } }, - "c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09": { - "id": "c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09", - "type": "person", - "label": "陈军", - "degreeMap": { - "director_of": 1, - "total": 1 + c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09: { + id: 'c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09', + type: 'person', + label: '陈军', + degreeMap: { + director_of: 1, + total: 1 } }, - "059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2": { - "id": "059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2", - "type": "person", - "label": "乔德义", - "degreeMap": { - "director_of": 1, - "total": 1 + '059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2': { + id: '059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2', + type: 'person', + label: '乔德义', + degreeMap: { + director_of: 1, + total: 1 } }, - "390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef": { - "id": "390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef", - "type": "person", - "label": "张金发", - "degreeMap": { - "director_of": 2, - "total": 2 + '390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef': { + id: '390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef', + type: 'person', + label: '张金发', + degreeMap: { + director_of: 2, + total: 2 } }, - "43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045": { - "id": "43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045", - "type": "person", - "label": "盛钧", - "degreeMap": { - "director_of": 2, - "total": 2 + '43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045': { + id: '43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045', + type: 'person', + label: '盛钧', + degreeMap: { + director_of: 2, + total: 2 } }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082": { - "id": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "type": "company", - "label": "南京公路发展(集团)有限公司", - "degreeMap": { - "has_supervisor": 2, - "shareholder_of": 16, - "has_shareholder": 1, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 4, - "total": 23 + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082': { + id: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + type: 'company', + label: '南京公路发展(集团)有限公司', + degreeMap: { + has_supervisor: 2, + shareholder_of: 16, + has_shareholder: 1, + has_legal_representative: 1, + has_manager: 1, + has_director: 4, + total: 23 } }, - "b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519": { - "id": "b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519", - "type": "company", - "label": "南京长江第四大桥有限责任公司", - "degreeMap": { - "has_supervisor": 2, - "has_shareholder": 1, - "has_legal_representative": 1, - "linked_to": 1, - "has_manager": 1, - "has_director": 4, - "total": 7 + b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519: { + id: 'b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519', + type: 'company', + label: '南京长江第四大桥有限责任公司', + degreeMap: { + has_supervisor: 2, + has_shareholder: 1, + has_legal_representative: 1, + linked_to: 1, + has_manager: 1, + has_director: 4, + total: 7 } }, - "687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3": { - "id": "687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3", - "type": "company", - "label": "南京绕越高速公路东北段有限责任公司", - "degreeMap": { - "has_supervisor": 2, - "has_shareholder": 1, - "has_legal_representative": 1, - "linked_to": 1, - "has_manager": 1, - "has_director": 4, - "total": 7 + '687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3': { + id: '687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3', + type: 'company', + label: '南京绕越高速公路东北段有限责任公司', + degreeMap: { + has_supervisor: 2, + has_shareholder: 1, + has_legal_representative: 1, + linked_to: 1, + has_manager: 1, + has_director: 4, + total: 7 } }, - "7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01": { - "id": "7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01", - "type": "company", - "label": "南京绕越高速公路东南段有限责任公司", - "degreeMap": { - "has_supervisor": 1, - "shareholder_of": 1, - "has_shareholder": 1, - "has_legal_representative": 1, - "linked_to": 1, - "has_manager": 1, - "has_director": 5, - "total": 8 + '7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01': { + id: '7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01', + type: 'company', + label: '南京绕越高速公路东南段有限责任公司', + degreeMap: { + has_supervisor: 1, + shareholder_of: 1, + has_shareholder: 1, + has_legal_representative: 1, + linked_to: 1, + has_manager: 1, + has_director: 5, + total: 8 } }, - "e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32": { - "id": "e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32", - "type": "company", - "label": "南京长江第三大桥有限责任公司", - "degreeMap": { - "has_supervisor": 5, - "shareholder_of": 1, - "has_shareholder": 4, - "has_legal_representative": 1, - "linked_to": 2, - "has_manager": 1, - "has_director": 11, - "total": 23 + e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32: { + id: 'e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32', + type: 'company', + label: '南京长江第三大桥有限责任公司', + degreeMap: { + has_supervisor: 5, + shareholder_of: 1, + has_shareholder: 4, + has_legal_representative: 1, + linked_to: 2, + has_manager: 1, + has_director: 11, + total: 23 } }, - "5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f": { - "id": "5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f", - "type": "company", - "label": "南京铁路建设投资有限责任公司", - "degreeMap": { - "has_supervisor": 3, - "shareholder_of": 7, - "has_shareholder": 2, - "has_legal_representative": 1, - "linked_to": 3, - "has_manager": 1, - "has_director": 8, - "has_branch": 1, - "total": 24 + '5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f': { + id: '5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f', + type: 'company', + label: '南京铁路建设投资有限责任公司', + degreeMap: { + has_supervisor: 3, + shareholder_of: 7, + has_shareholder: 2, + has_legal_representative: 1, + linked_to: 3, + has_manager: 1, + has_director: 8, + has_branch: 1, + total: 24 } }, - "b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c": { - "id": "b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c", - "type": "company", - "label": "京沪高速铁路股份有限公司", - "degreeMap": { - "has_associate": 1, - "has_supervisor": 10, - "has_shareholder": 12, - "has_legal_representative": 4, - "has_manager": 1, - "has_director": 40, - "total": 64 + b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c: { + id: 'b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c', + type: 'company', + label: '京沪高速铁路股份有限公司', + degreeMap: { + has_associate: 1, + has_supervisor: 10, + has_shareholder: 12, + has_legal_representative: 4, + has_manager: 1, + has_director: 40, + total: 64 } }, - "6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98": { - "id": "6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98", - "type": "company", - "label": "南京地铁集团有限公司", - "degreeMap": { - "has_supervisor": 6, - "shareholder_of": 14, - "has_shareholder": 4, - "has_legal_representative": 1, - "linked_to": 4, - "has_manager": 1, - "has_director": 8, - "has_branch": 1, - "total": 37 + '6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98': { + id: '6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98', + type: 'company', + label: '南京地铁集团有限公司', + degreeMap: { + has_supervisor: 6, + shareholder_of: 14, + has_shareholder: 4, + has_legal_representative: 1, + linked_to: 4, + has_manager: 1, + has_director: 8, + has_branch: 1, + total: 37 } }, - "42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b": { - "id": "42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b", - "type": "person", - "label": "吴国富", - "degreeMap": { - "director_of": 5, - "total": 5 + '42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b': { + id: '42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b', + type: 'person', + label: '吴国富', + degreeMap: { + director_of: 5, + total: 5 } }, - "3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c": { - "id": "3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c", - "type": "person", - "label": "沈晓东", - "degreeMap": { - "linked_to": 3, - "supervisor_of": 1, - "manager_of": 4, - "legal_representative_of": 4, - "director_of": 8, - "total": 9 + '3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c': { + id: '3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c', + type: 'person', + label: '沈晓东', + degreeMap: { + linked_to: 3, + supervisor_of: 1, + manager_of: 4, + legal_representative_of: 4, + director_of: 8, + total: 9 } }, - "c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436": { - "id": "c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436", - "type": "person", - "label": "徐小琴", - "degreeMap": { - "director_of": 1, - "total": 1 + c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436: { + id: 'c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436', + type: 'person', + label: '徐小琴', + degreeMap: { + director_of: 1, + total: 1 } }, - "4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c": { - "id": "4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c", - "type": "company", - "label": "江苏宁扬高速公路有限公司", - "degreeMap": { - "has_supervisor": 1, - "has_shareholder": 3, - "has_legal_representative": 1, - "linked_to": 4, - "has_manager": 1, - "has_director": 8, - "has_branch": 1, - "total": 16 + '4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c': { + id: '4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c', + type: 'company', + label: '江苏宁扬高速公路有限公司', + degreeMap: { + has_supervisor: 1, + has_shareholder: 3, + has_legal_representative: 1, + linked_to: 4, + has_manager: 1, + has_director: 8, + has_branch: 1, + total: 16 } }, - "93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999": { - "id": "93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999", - "type": "company", - "label": "南京雍六高速公路有限责任公司", - "degreeMap": { - "has_supervisor": 4, - "has_shareholder": 2, - "has_legal_representative": 2, - "linked_to": 3, - "has_director": 9, - "total": 18 + '93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999': { + id: '93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999', + type: 'company', + label: '南京雍六高速公路有限责任公司', + degreeMap: { + has_supervisor: 4, + has_shareholder: 2, + has_legal_representative: 2, + linked_to: 3, + has_director: 9, + total: 18 } }, - "78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba": { - "id": "78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba", - "type": "company", - "label": "南京交通产业集团有限责任公司", - "degreeMap": { - "has_supervisor": 1, - "shareholder_of": 18, - "has_shareholder": 2, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 1, - "has_branch": 1, - "total": 23 + '78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba': { + id: '78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba', + type: 'company', + label: '南京交通产业集团有限责任公司', + degreeMap: { + has_supervisor: 1, + shareholder_of: 18, + has_shareholder: 2, + has_legal_representative: 1, + has_manager: 1, + has_director: 1, + has_branch: 1, + total: 23 } }, - "8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3": { - "id": "8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3", - "type": "company", - "label": "江苏宁杭高速公路有限公司", - "degreeMap": { - "has_supervisor": 2, - "shareholder_of": 7, - "has_shareholder": 4, - "has_legal_representative": 1, - "linked_to": 3, - "has_manager": 1, - "has_director": 10, - "has_branch": 5, - "total": 31 + '8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3': { + id: '8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3', + type: 'company', + label: '江苏宁杭高速公路有限公司', + degreeMap: { + has_supervisor: 2, + shareholder_of: 7, + has_shareholder: 4, + has_legal_representative: 1, + linked_to: 3, + has_manager: 1, + has_director: 10, + has_branch: 5, + total: 31 } }, - "b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0": { - "id": "b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0", - "type": "company", - "label": "江苏溧芜高速公路有限公司", - "degreeMap": { - "has_supervisor": 1, - "has_shareholder": 2, - "has_legal_representative": 1, - "linked_to": 3, - "has_manager": 1, - "has_director": 6, - "total": 11 + b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0: { + id: 'b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0', + type: 'company', + label: '江苏溧芜高速公路有限公司', + degreeMap: { + has_supervisor: 1, + has_shareholder: 2, + has_legal_representative: 1, + linked_to: 3, + has_manager: 1, + has_director: 6, + total: 11 } }, - "b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b": { - "id": "b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b", - "type": "company", - "label": "南京林通园林建设工程有限公司", - "degreeMap": { - "has_supervisor": 2, - "has_shareholder": 4, - "has_legal_representative": 2, - "has_manager": 1, - "has_director": 10, - "total": 16 + b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b: { + id: 'b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b', + type: 'company', + label: '南京林通园林建设工程有限公司', + degreeMap: { + has_supervisor: 2, + has_shareholder: 4, + has_legal_representative: 2, + has_manager: 1, + has_director: 10, + total: 16 } }, - "8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3": { - "id": "8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3", - "type": "company", - "label": "江苏溧高高速公路有限公司", - "degreeMap": { - "has_supervisor": 2, - "has_shareholder": 3, - "has_legal_representative": 1, - "has_manager": 1, - "has_director": 8, - "total": 13 + '8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3': { + id: '8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3', + type: 'company', + label: '江苏溧高高速公路有限公司', + degreeMap: { + has_supervisor: 2, + has_shareholder: 3, + has_legal_representative: 1, + has_manager: 1, + has_director: 8, + total: 13 } }, - "b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901": { - "id": "b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901", - "type": "company", - "label": "江苏溧马高速公路有限责任公司", - "degreeMap": { - "has_supervisor": 1, - "has_shareholder": 2, - "has_legal_representative": 1, - "linked_to": 2, - "has_manager": 1, - "has_director": 6, - "total": 11 + b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901: { + id: 'b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901', + type: 'company', + label: '江苏溧马高速公路有限责任公司', + degreeMap: { + has_supervisor: 1, + has_shareholder: 2, + has_legal_representative: 1, + linked_to: 2, + has_manager: 1, + has_director: 6, + total: 11 } }, - "c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475": { - "id": "c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475", - "type": "company", - "label": "南京交通建设(集团)传媒广告有限公司", - "degreeMap": { - "has_supervisor": 6, - "has_shareholder": 32, - "has_legal_representative": 2, - "has_manager": 2, - "has_director": 10, - "total": 41 + c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475: { + id: 'c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475', + type: 'company', + label: '南京交通建设(集团)传媒广告有限公司', + degreeMap: { + has_supervisor: 6, + has_shareholder: 32, + has_legal_representative: 2, + has_manager: 2, + has_director: 10, + total: 41 } }, - "ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e": { - "id": "ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e", - "type": "company", - "label": "南京宁马高速公路有限责任公司", - "degreeMap": { - "has_supervisor": 1, - "has_shareholder": 2, - "has_legal_representative": 1, - "linked_to": 3, - "has_manager": 1, - "has_director": 3, - "total": 10 + ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e: { + id: 'ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e', + type: 'company', + label: '南京宁马高速公路有限责任公司', + degreeMap: { + has_supervisor: 1, + has_shareholder: 2, + has_legal_representative: 1, + linked_to: 3, + has_manager: 1, + has_director: 3, + total: 10 } }, - "257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a": { - "id": "257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a", - "type": "company", - "label": "南京绕城高速公路有限责任公司", - "degreeMap": { - "has_supervisor": 1, - "has_shareholder": 2, - "has_legal_representative": 1, - "linked_to": 3, - "has_director": 4, - "has_branch": 1, - "total": 11 + '257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a': { + id: '257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a', + type: 'company', + label: '南京绕城高速公路有限责任公司', + degreeMap: { + has_supervisor: 1, + has_shareholder: 2, + has_legal_representative: 1, + linked_to: 3, + has_director: 4, + has_branch: 1, + total: 11 } }, - "ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313": { - "id": "ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313", - "type": "company", - "label": "南京交通建设(集团)传媒广告有限公司", - "degreeMap": { - "has_legal_representative": 1, - "has_shareholder": 1, - "total": 2 + ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313: { + id: 'ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313', + type: 'company', + label: '南京交通建设(集团)传媒广告有限公司', + degreeMap: { + has_legal_representative: 1, + has_shareholder: 1, + total: 2 } }, - "1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523": { - "id": "1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523", - "type": "company", - "label": "南京远洋运输股份有限公司", - "degreeMap": { - "has_supervisor": 1, - "shareholder_of": 6, - "has_shareholder": 2, - "has_legal_representative": 1, - "linked_to": 2, - "has_manager": 1, - "has_director": 7, - "has_branch": 2, - "total": 21 + '1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523': { + id: '1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523', + type: 'company', + label: '南京远洋运输股份有限公司', + degreeMap: { + has_supervisor: 1, + shareholder_of: 6, + has_shareholder: 2, + has_legal_representative: 1, + linked_to: 2, + has_manager: 1, + has_director: 7, + has_branch: 2, + total: 21 } } }, - "edges": { - "c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + edges: { + 'c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: 'c2ae9c381d24a3f3fc1bf18450bcd2154760ee2ed6ecf654ef9d5d7d', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + '055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + '907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '907069b0c7c0363850703039eab1d266e98ca03b07e09269ce8abde0', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": { - "position": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: { + position: [ { - "value": "Chairman of the Board of Directors/Executive Director" + value: 'Chairman of the Board of Directors/Executive Director' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": { - "position": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: { + position: [ { - "value": "Chairman of the Board of Directors/Executive Director" + value: 'Chairman of the Board of Directors/Executive Director' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + 'c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: 'c15744294cb7ae023754580a3be089d899b758c2ad5fba399a85b3c9', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} } ] }, - "cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + 'cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: 'cab79f56658e61df5daf51a546d9d63205ba3d128d466ba139c39933', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} } ] }, - "0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + '0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '0bd9cbd2b7d5feb86cea22e2c05c1fa5d7a56fe3c5d0be39a544af7b', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} } ] }, - "a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + 'a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: 'a5655e30073ac6faf7e9e98c8886893f71e2468f309154e75bb95711', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} } ] }, - "284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + '284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "director_of", - "qualifier": [ + '3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947|director_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'director_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947|manager_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "manager_of", - "qualifier": [ + '3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947|manager_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '3934e15d560dabf08d5de865d0fdfd2f0007302b2c46e1e2ad88d947', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'manager_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": { - "position": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: { + position: [ { - "value": "General Manager" + value: 'General Manager' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": { - "position": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: { + position: [ { - "value": "General Manager" + value: 'General Manager' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + position: [ { - "value": "总经理" + value: '总经理' } ] } } ] }, - "2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f|shareholder_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "shareholder_of", - "qualifier": [ + '2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f|shareholder_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '2f1ee17d109b74c16ee5162286472c1b74dd07171c1b383c28bd211f', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + shares: [ { - "monetary_value": 110480000, - "currency": "CNY" + monetary_value: 110480000, + currency: 'CNY' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: { + shares: [ { - "monetary_value": 13358699.999999998, - "currency": "USD", - "percentage": 55.24 + monetary_value: 13358699.999999998, + currency: 'USD', + percentage: 55.24 } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180434.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180434.html/1555350199630', + props: { + shares: [ { - "monetary_value": 110480000, - "currency": "CNY" + monetary_value: 110480000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + shares: [ { - "date": "2003-03-29", - "monetary_value": 11048, - "percentage": 55.24, - "type": "Registered Capital" + date: '2003-03-29', + monetary_value: 11048, + percentage: 55.24, + type: 'Registered Capital' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: { + shares: [ { - "monetary_value": 13358689, - "currency": "USD", - "percentage": 55.24 + monetary_value: 13358689, + currency: 'USD', + percentage: 55.24 } ] } } ] }, - "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089|shareholder_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "shareholder_of", - "qualifier": [ + '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089|shareholder_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': { + source: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: { + shares: [ { - "date": "2007-05-14", - "monetary_value": 8952, - "percentage": 44.76, - "type": "Registered Capital" + date: '2007-05-14', + monetary_value: 8952, + percentage: 44.76, + type: 'Registered Capital' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: { + shares: [ { - "monetary_value": 10824311, - "currency": "USD", - "percentage": 44.76 + monetary_value: 10824311, + currency: 'USD', + percentage: 44.76 } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: { + shares: [ { - "monetary_value": 10824300, - "currency": "USD", - "percentage": 44.76 + monetary_value: 10824300, + currency: 'USD', + percentage: 44.76 } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: { + shares: [ { - "monetary_value": 89520000, - "currency": "CNY" + monetary_value: 89520000, + currency: 'CNY' } ] } } ] }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|legal_representative_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136", - "field": "legal_representative_of", - "qualifier": [ - { - "record": "b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539", - "props": {} - }, - { - "record": "b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539", - "props": {} - }, - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630", - "props": {} - }, - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901", - "props": {} - }, - { - "record": "b6382672c6741fe1bca28d2668c1732b/220790/1560351943539", - "props": {} - }, - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/517180434.html/1555350199630", - "props": {} - } - ] - }, - "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|director_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4": { - "source": "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502", - "target": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "field": "director_of", - "qualifier": [ - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630", - "props": { - "position": [ - { - "value": "董事" - } - ] - } - }, - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": { - "position": [ - { - "value": "董事" + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|legal_representative_of|45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136': + { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: '45ae43e9d3c7bc818bc3741ca775ce80c3265e404055f7894fc26136', + field: 'legal_representative_of', + qualifier: [ + { + record: 'b6382672c6741fe1bca28d2668c1732b/1287868/1560351943539', + props: {} + }, + { + record: 'b6382672c6741fe1bca28d2668c1732b/1102612/1560351943539', + props: {} + }, + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180497.html/1555350199630', + props: {} + }, + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_eb38db3630b63fed1e96072d443d0469.html/1553604848901', + props: {} + }, + { + record: 'b6382672c6741fe1bca28d2668c1732b/220790/1560351943539', + props: {} + }, + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/517180434.html/1555350199630', + props: {} + } + ] + }, + '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|director_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4': { + source: '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502', + target: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + field: 'director_of', + qualifier: [ + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630', + props: { + position: [ + { + value: '董事' + } + ] + } + }, + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: { + position: [ + { + value: '董事' } ] } } ] }, - "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|director_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "source": "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502", - "target": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "field": "director_of", - "qualifier": [ + '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|director_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160': { + source: '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502', + target: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|supervisor_of|0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9": { - "source": "8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502", - "target": "0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9", - "field": "supervisor_of", - "qualifier": [ + '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502|supervisor_of|0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9': { + source: '8d1b252fe9cfae8665cd94e5f0441a15818bc464aa251bcb801eb502', + target: '0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9', + field: 'supervisor_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/1001881/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1001881/1560351943539', + props: {} }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1333988/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1333988/1560351943539', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_d90e60494b759443e485dc3f50c13158.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_d90e60494b759443e485dc3f50c13158.shtml/1553604848901', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "field": "director_of", - "qualifier": [ + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160': { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41|director_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "source": "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41", - "target": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "field": "director_of", - "qualifier": [ + 'd3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41|director_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160': { + source: 'd3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41', + target: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|manager_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "field": "manager_of", - "qualifier": [ + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|manager_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160': { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + field: 'manager_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: { + position: [ { - "value": "总经理" + value: '总经理' } ] } } ] }, - "3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d|supervisor_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "source": "3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d", - "target": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "field": "supervisor_of", - "qualifier": [ + '3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d|supervisor_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160': { + source: '3be28baf643effa0689c2af6a7e89c8b4b4e9553c58c01588814622d', + target: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + field: 'supervisor_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "shareholder_of", - "qualifier": [ + 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'shareholder_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "shares": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + shares: [ { - "monetary_value": 390000000 + monetary_value: 390000000 } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: { + shares: [ { - "monetary_value": 390000000, - "currency": "CNY" + monetary_value: 390000000, + currency: 'CNY' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + shares: [ { - "monetary_value": 390000000, - "currency": "CNY" + monetary_value: 390000000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + shares: [ { - "monetary_value": 390000000, - "currency": "CNY", - "percentage": 65, - "type": "Registered Capital" + monetary_value: 390000000, + currency: 'CNY', + percentage: 65, + type: 'Registered Capital' }, { - "date": "2005", - "monetary_value": 390000000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2005', + monetary_value: 390000000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: {} } ] }, - "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "shareholder_of", - "qualifier": [ + 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': { + source: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'shareholder_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/128590/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/128590/1560351943539', + props: {} } ] }, - "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7": { - "source": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "target": "5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7", - "field": "shareholder_of", - "qualifier": [ + 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7': { + source: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + target: '5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: {} } ] }, - "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4": { - "source": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "target": "56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4", - "field": "shareholder_of", - "qualifier": [ + 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160|shareholder_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4': { + source: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + target: '56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": {} + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: {} } ] }, - "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468|shareholder_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "source": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "target": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "field": "shareholder_of", - "qualifier": [ + '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468|shareholder_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160': { + source: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + target: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: { + shares: [ { - "monetary_value": 50000, - "percentage": 100, - "type": "Registered Capital" + monetary_value: 50000, + percentage: 100, + type: 'Registered Capital' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: { + shares: [ { - "monetary_value": 500000000, - "currency": "CNY" + monetary_value: 500000000, + currency: 'CNY' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: { + shares: [ { - "monetary_value": 500000000, - "currency": "CNY" + monetary_value: 500000000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": {} - } - ] - }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|legal_representative_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160", - "field": "legal_representative_of", - "qualifier": [ - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": {} - }, - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": {} - }, - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": {} - }, - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": {} - } - ] - }, - "378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7|legal_representative_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4": { - "source": "378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7", - "target": "56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4", - "field": "legal_representative_of", - "qualifier": [ - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/633709961.html/1555350199630", - "props": {} - }, - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630", - "props": {} - }, - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/15806119.html/1555350199630", - "props": {} - }, - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: {} } ] }, - "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468|shareholder_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4": { - "source": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "target": "56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4", - "field": "shareholder_of", - "qualifier": [ - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": { - "shares": [ - { - "monetary_value": 200000, - "currency": "CNY" + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|legal_representative_of|eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160': + { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: 'eee08d86959367a05c9b844e972e75bc465e5c78d52da82e8d873160', + field: 'legal_representative_of', + qualifier: [ + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: {} + }, + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: {} + }, + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: {} + }, + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: {} + } + ] + }, + '378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7|legal_representative_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4': + { + source: '378e4ff20b1422deefc4c5d9cfa1131ce42d3bf05e4982f31c4f40b7', + target: '56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4', + field: 'legal_representative_of', + qualifier: [ + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/633709961.html/1555350199630', + props: {} + }, + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948138.html/1555350199630', + props: {} + }, + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/15806119.html/1555350199630', + props: {} + }, + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: {} + } + ] + }, + '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468|shareholder_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4': { + source: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + target: '56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4', + field: 'shareholder_of', + qualifier: [ + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: { + shares: [ + { + monetary_value: 200000, + currency: 'CNY' } ] } } ] }, - "0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e|shareholder_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4": { - "source": "0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e", - "target": "56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4", - "field": "shareholder_of", - "qualifier": [ + '0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e|shareholder_of|56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4': { + source: '0c6920e7728deafba647521b03601fc4a7db26c70fcea41bf2ba098e', + target: '56262bdafae11299d56a46cbff2f1f2bf32d3980611637f367cbf3a4', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/15806119.html/1555350199630", - "props": {} + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/15806119.html/1555350199630', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/633709961.html/1555350199630", - "props": {} + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/633709961.html/1555350199630', + props: {} } ] }, - "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468|shareholder_of|5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7": { - "source": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "target": "5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7", - "field": "shareholder_of", - "qualifier": [ + '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468|shareholder_of|5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7': { + source: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + target: '5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: {} } ] }, - "f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46|shareholder_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "shareholder_of", - "qualifier": [ + 'f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46|shareholder_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': { + source: 'f7c720f203727456f247001d624e02687701c1df64480cf3ca8e9a46', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: { + shares: [ { - "monetary_value": 29800000, - "currency": "CNY" + monetary_value: 29800000, + currency: 'CNY' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1215159/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1215159/1560351943539', + props: { + shares: [ { - "monetary_value": 29800000, - "currency": "USD", - "percentage": 100 + monetary_value: 29800000, + currency: 'USD', + percentage: 100 } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: { + shares: [ { - "monetary_value": 29800000, - "currency": "CNY", - "percentage": 100, - "type": "Registered Capital" + monetary_value: 29800000, + currency: 'CNY', + percentage: 100, + type: 'Registered Capital' } ] } } ] }, - "75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8|legal_representative_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "legal_representative_of", - "qualifier": [ - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": {} - }, - { - "record": "b6382672c6741fe1bca28d2668c1732b/1485095/1560351943539", - "props": {} - }, - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": {} - }, - { - "record": "b6382672c6741fe1bca28d2668c1732b/128590/1560351943539", - "props": {} - } - ] - }, - "f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29|legal_representative_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "legal_representative_of", - "qualifier": [ - { - "record": "b6382672c6741fe1bca28d2668c1732b/1215159/1560351943539", - "props": {} - } - ] - }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "director_of", - "qualifier": [ - { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": { - "position": [ - { - "value": "董事" - } - ] - } - }, - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": { - "position": [ - { - "value": "董事" + '75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8|legal_representative_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': + { + source: '75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'legal_representative_of', + qualifier: [ + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: {} + }, + { + record: 'b6382672c6741fe1bca28d2668c1732b/1485095/1560351943539', + props: {} + }, + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: {} + }, + { + record: 'b6382672c6741fe1bca28d2668c1732b/128590/1560351943539', + props: {} + } + ] + }, + 'f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29|legal_representative_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': + { + source: 'f8b7eac301feedb8304ad829b9c4d8491cc92139a171298bd9393c29', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'legal_representative_of', + qualifier: [ + { + record: 'b6382672c6741fe1bca28d2668c1732b/1215159/1560351943539', + props: {} + } + ] + }, + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'director_of', + qualifier: [ + { + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: { + position: [ + { + value: '董事' + } + ] + } + }, + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: { + position: [ + { + value: '董事' } ] } } ] }, - "75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "director_of", - "qualifier": [ + '75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': { + source: '75163b87a46515a9700f69f789f62b39b70ed37ebecf1df23b4107b8', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1215159/1560351943539", - "props": { - "position": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1215159/1560351943539', + props: { + position: [ { - "value": "Chairman of the Board of Directors/Executive Director" + value: 'Chairman of the Board of Directors/Executive Director' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1485095/1560351943539", - "props": { - "position": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1485095/1560351943539', + props: { + position: [ { - "value": "Chairman of the Board of Directors/Executive Director" + value: 'Chairman of the Board of Directors/Executive Director' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "director_of", - "qualifier": [ + '2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': { + source: '2eaeb29e256352458e85983c49c684bdabd79f3e4de5abeae5ad940c', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468": { - "source": "3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9", - "target": "1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468", - "field": "director_of", - "qualifier": [ + '3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9|director_of|1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468': { + source: '3517eb01ebcc84dbcf7518f7a926bc34473652ce27588c7f044c37b9', + target: '1d3230c14493d42fbc98b4d9a9b21a79d10dee69d0b10797b6652468', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325948139.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6|legal_representative_of|5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7": { - "source": "6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6", - "target": "5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7", - "field": "legal_representative_of", - "qualifier": [ - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901", - "props": {} - }, - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901", - "props": {} - } - ] - }, - "0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6|legal_representative_of|5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7': + { + source: '6ad06a49ec6dfa187a0dfa042134255e2ad75b73a874a469c7983fb6', + target: '5895c964c318b44ef25a2638de6e21514bceaebb4eaa1b0fce383ac7', + field: 'legal_representative_of', + qualifier: [ + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e3cd7ce8b7c77e7dba780401b3e30864.html/1553604848901', + props: {} + }, + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_b98de9d5e8af79defe0b7439e9bce56f.shtml/1553604848901', + props: {} + } + ] + }, + '0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "副董事长" + value: '副董事长' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "副董事长" + value: '副董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "副董事长" + value: '副董事长' } ] } } ] }, - "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + 'd3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'd3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '284b4c6c25c237ff20f25f4faf640a0e8725991a7ca7e79088e85c08', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '055b24635ae3480a50beb68bf2dd9d1403d0b5f5cf098e6d68c71fc3', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "d4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "d4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + 'd4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'd4e764b951a0bf760220d8279bc053a10806a96bee86a8b0814a9d71', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '3c3f3d8afedac5c3bec84d1da4f4e333b39940aae326443561c9677a', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } } ] }, - "78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '78e3f38a39316c7113cc6bb7ce2f286dcc8635fb3b916bb56bf89d11', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + 'd194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'd194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + 'b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'b4adb4ab9d7d9e2523122d21b3158ff16348edaff0e1c3b1e4873b52', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "副董事长兼总经理" + value: '副董事长兼总经理' } ] } } ] }, - "8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '8ae16b78fcbdc5cda7c9cef5f49387f39281360f1882b7e8c59ac74c', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "职工监事" + value: '职工监事' } ] } } ] }, - "f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + 'f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'f9e115504c12a22cc115d1ad3523684dd1d7abd539933659ce9dc6e7', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + '0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '0240bdeac56e04167526049aa2f935b59df9147f72fe9165d1ebdab9', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "director_of", - "qualifier": [ + 'b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d|director_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'b5af7f17cc59e8fda0d08925a29ce45e1c7f606fcc4970c47417b72d', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062|manager_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "manager_of", - "qualifier": [ + 'd194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062|manager_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'd194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'manager_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "总经理" + value: '总经理' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "总经理" + value: '总经理' } ] } } ] }, - "7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "supervisor_of", - "qualifier": [ + '7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '7381fc8f7d9bf263775123668ddebbdcd2ea517caab8d3c2f1e02107', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'supervisor_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "职工监事" + value: '职工监事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "职工监事" + value: '职工监事' } ] } } ] }, - "3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "supervisor_of", - "qualifier": [ + '3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '3a012da12465a5a06bb3b20d9bb4152f3f4993b69729d5034cc224b4', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'supervisor_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } } ] }, - "e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "supervisor_of", - "qualifier": [ + 'e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'e4e8c9f2e6adbfc7052f7027ef50bce74c98bafa4498fbaefded2822', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'supervisor_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "supervisor_of", - "qualifier": [ + '6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '6a3715f55e759ec8fbc6cc7f06b4e87b684ce781e20cc53964451e3b', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'supervisor_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } } ] }, - "5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "supervisor_of", - "qualifier": [ + '5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a|supervisor_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: '5f8b77c3b606e1e95333ab12f639a89b350450cf5ada58115724c55a', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'supervisor_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75|shareholder_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203": { - "source": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "target": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "field": "shareholder_of", - "qualifier": [ + 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75|shareholder_of|0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203': { + source: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + target: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + shares: [ { - "monetary_value": 210000000, - "currency": "CNY" + monetary_value: 210000000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: { + shares: [ { - "monetary_value": 210000000, - "currency": "CNY", - "percentage": 35, - "type": "Registered Capital" + monetary_value: 210000000, + currency: 'CNY', + percentage: 35, + type: 'Registered Capital' }, { - "date": "2005", - "monetary_value": 210000000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2005', + monetary_value: 210000000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791", - "props": { - "shares": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570640961f98cc250f8b467a/1557503792791', + props: { + shares: [ { - "monetary_value": 210000000 + monetary_value: 210000000 } ] } } ] }, - "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203|shareholder_of|a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d": { - "source": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "target": "a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d", - "field": "shareholder_of", - "qualifier": [ + '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203|shareholder_of|a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d': { + source: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + target: 'a3313907435933447552ad4a49cb840bb65831759efac9cab1829b0d', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2547442037.html/1555350199630", - "props": {} + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2547442037.html/1555350199630', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": {} + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: {} } ] }, - "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203|shareholder_of|f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e": { - "source": "0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203", - "target": "f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e", - "field": "shareholder_of", - "qualifier": [ + '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203|shareholder_of|f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e': { + source: '0476e96bdeaf383dd3b3859e8029540e15f8863f6770be270943b203', + target: 'f9832bd9bdf09a6203c0e88690d5b8953f60936c5df9a3baf208805e', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2351957259.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2351957259.html/1555350199630', + props: { + shares: [ { - "monetary_value": 2000000, - "currency": "CNY" + monetary_value: 2000000, + currency: 'CNY' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349173087.html/1555350199630', + props: { + shares: [ { - "monetary_value": 2000000, - "currency": "CNY" + monetary_value: 2000000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_1f4734f3c6ce2588531e3b87f82ad579.shtml/1553604848901', + props: {} }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS5707a2371f98cccc548b47f0/1557503792791", - "props": {} + record: 'b7a263906abfe4058a21f63ae9a911e0/GS5707a2371f98cccc548b47f0/1557503792791', + props: {} } ] }, - "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41|director_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4": { - "source": "d3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41", - "target": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "field": "director_of", - "qualifier": [ + 'd3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41|director_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4': { + source: 'd3e78101c19c54391ba2148193761e2bcb755d929e9a866804863e41', + target: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4": { - "source": "46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63", - "target": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "field": "director_of", - "qualifier": [ + '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63|director_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4': { + source: '46908aff3ce5681f73433c75e2606455f983158269c73bc5aa5b4f63', + target: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8|manager_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4": { - "source": "1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8", - "target": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "field": "manager_of", - "qualifier": [ + '1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8|manager_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4': { + source: '1058f9d6bb25ccc9eb6098163ac480499c7bc259c51a0a442fde77f8', + target: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + field: 'manager_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: { + position: [ { - "value": "总经理" + value: '总经理' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630', + props: { + position: [ { - "value": "总经理" + value: '总经理' } ] } } ] }, - "52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c|supervisor_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4": { - "source": "52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c", - "target": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "field": "supervisor_of", - "qualifier": [ + '52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c|supervisor_of|31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4': { + source: '52343f2ec93701a221fa481a35e3bc25fe7c4d93a2db0a723266351c', + target: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + field: 'supervisor_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4": { - "source": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "target": "a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4", - "field": "shareholder_of", - "qualifier": [ + '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4': { + source: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + target: 'a667b33a0f562afc4a94dc188256fc166adac36a4cf45799a2e69fe4', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: {} } ] }, - "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164": { - "source": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "target": "5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164", - "field": "shareholder_of", - "qualifier": [ + '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164': { + source: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + target: '5894c92660f8686d80df3a80b27915daf1fb1927452c64ae5c488164', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630', + props: { + shares: [ { - "monetary_value": 16412000, - "currency": "CNY" + monetary_value: 16412000, + currency: 'CNY' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1484473/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1484473/1560351943539', + props: { + shares: [ { - "monetary_value": 16062000, - "currency": "USD", - "percentage": 80.31 + monetary_value: 16062000, + currency: 'USD', + percentage: 80.31 } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1212369/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1212369/1560351943539', + props: { + shares: [ { - "monetary_value": 16062000, - "currency": "USD", - "percentage": 80.31 + monetary_value: 16062000, + currency: 'USD', + percentage: 80.31 } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/101260832.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/101260832.html/1555350199630', + props: { + shares: [ { - "monetary_value": 16412000, - "currency": "CNY" + monetary_value: 16412000, + currency: 'CNY' } ] } } ] }, - "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9": { - "source": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "target": "0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9", - "field": "shareholder_of", - "qualifier": [ + '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9': { + source: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + target: '0edb337d5e87f0c0f8d0137fb2c0ef7479b052dfef4c83d6cffd53d9', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_d90e60494b759443e485dc3f50c13158.shtml/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_d90e60494b759443e485dc3f50c13158.shtml/1553604848901', + props: { + shares: [ { - "monetary_value": 2100000, - "currency": "CNY", - "percentage": 0.31, - "type": "Registered Capital" + monetary_value: 2100000, + currency: 'CNY', + percentage: 0.31, + type: 'Registered Capital' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1333988/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1333988/1560351943539', + props: { + shares: [ { - "monetary_value": 314527.5, - "currency": "USD", - "percentage": 0.31 + monetary_value: 314527.5, + currency: 'USD', + percentage: 0.31 } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1001881/1560351943539", - "props": { - "shares": [ + record: 'b6382672c6741fe1bca28d2668c1732b/1001881/1560351943539', + props: { + shares: [ { - "monetary_value": 339300, - "currency": "USD", - "percentage": 0.31 + monetary_value: 339300, + currency: 'USD', + percentage: 0.31 } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1512740530.html/1555350199630', + props: { + shares: [ { - "monetary_value": 2100000, - "currency": "CNY" + monetary_value: 2100000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: {} } ] }, - "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f": { - "source": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "target": "844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f", - "field": "shareholder_of", - "qualifier": [ + '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f': { + source: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + target: '844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: {} } ] }, - "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5": { - "source": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "target": "1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5", - "field": "shareholder_of", - "qualifier": [ + '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5': { + source: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + target: '1430296aee08d62ef2e86e0bf343f8def1496711f3b5bd40fa9511c5', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: {} } ] }, - "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77": { - "source": "31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4", - "target": "31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77", - "field": "shareholder_of", - "qualifier": [ + '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4|shareholder_of|31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77': { + source: '31956eccb516368e52469106aa22c622e9adaea68647cde05673f5a4', + target: '31c62a567282f77177627bbafea7222dfa300075d23eb8e89cfadf77', + field: 'shareholder_of', + qualifier: [ { - "record": "b6382672c6741fe1bca28d2668c1732b/213034/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/213034/1560351943539', + props: {} } ] }, - "33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24|legal_representative_of|844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f": { - "source": "33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24", - "target": "844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f", - "field": "legal_representative_of", - "qualifier": [ - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901", - "props": {} - } - ] - }, - "546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918|director_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089": { - "source": "546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918", - "target": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "field": "director_of", - "qualifier": [ + '33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24|legal_representative_of|844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f': + { + source: '33f523f8c6a9684cd9e0526081aba3ffb980b6d6d7ccbb057a6b9a24', + target: '844bc6b464d6bfcbeb3a6a07aeacc243a0d7d93b156165746780152f', + field: 'legal_representative_of', + qualifier: [ + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_a48330d321ee5a9bacf2e2ea86ccbc0c.shtml/1553604848901', + props: {} + } + ] + }, + '546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918|director_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089': { + source: '546d17775ec8d3725e0551233454354db020508a9ed40eb0691b4918', + target: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba|director_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089": { - "source": "e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba", - "target": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "field": "director_of", - "qualifier": [ + 'e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba|director_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089': { + source: 'e8fe54e0887aaa694a8b5f0be03c6237dc871b4654b1bc4aec0b5eba', + target: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791', + props: { + position: [ { - "value": "董事长兼总经理" + value: '董事长兼总经理' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3|director_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089": { - "source": "1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3", - "target": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "field": "director_of", - "qualifier": [ + '1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3|director_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089': { + source: '1b959b4f308dc0a7ee414dd6552049f2b51ea8157e8eb381365904e3', + target: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314|supervisor_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089": { - "source": "282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314", - "target": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "field": "supervisor_of", - "qualifier": [ + '282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314|supervisor_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089': { + source: '282f323a3c39e58448da9084b42c2aa522cbb66c67f751c6e60ff314', + target: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + field: 'supervisor_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875|supervisor_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089": { - "source": "af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875", - "target": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "field": "supervisor_of", - "qualifier": [ + 'af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875|supervisor_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089': { + source: 'af9071bfb35eb5d6ca3c0a82ac11fefc2e9cbc6d3fc47d95a5aeb875', + target: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + field: 'supervisor_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12|supervisor_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089": { - "source": "6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12", - "target": "86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089", - "field": "supervisor_of", - "qualifier": [ + '6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12|supervisor_of|86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089': { + source: '6edef4fa2e154ccbbe61603b8a02f2c65921c4b4a7f156a892816e12', + target: '86ea8175c0e217003c089f9e70bd682d50b6c2e9b6f0aa0c70ca5089', + field: 'supervisor_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/193820311.html/1555350199630', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57077a351f98cc44698b4648/1557503792791', + props: { + position: [ { - "value": "监事" + value: '监事' } ] } } ] }, - "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791', + props: { + position: [ { - "value": "董事兼总经理" + value: '董事兼总经理' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "董事兼总经理" + value: '董事兼总经理' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + '0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: '0fab39be0ce58c4b841ea1bbfc8a791c5393ae9f806c3103292e6d82', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + 'c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: 'c1a97e2bf64e05e70d2154c4dcc25cabca6a9ae08e353b8f7615cf09', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "职工监事" + value: '职工监事' } ] } } ] }, - "059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + '059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: '059ad163fb56cec96effea68b780141880bbaf5fd0aa3b3b1df66cc2', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + '390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: '390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } } ] }, - "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "d194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + 'd194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: 'd194ad0686fb52d547d5c5ac7a0e54e5735791786953eeb444170062', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "职工监事" + value: '职工监事' } ] } } ] }, - "43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "director_of", - "qualifier": [ + '43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045|director_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: '43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_0029771fb2211b1908effd3e475d96ad.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57082e781f98cce4508b48f9/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082": { - "source": "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7", - "target": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "field": "director_of", - "qualifier": [ + '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082': { + source: '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7', + target: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519": { - "source": "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7", - "target": "b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519", - "field": "director_of", - "qualifier": [ + '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519': { + source: '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7', + target: 'b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "0918940de8ba7498874d381238325ecd/8579818.html/1555448593289", - "props": { - "position": [ + record: '0918940de8ba7498874d381238325ecd/8579818.html/1555448593289', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3": { - "source": "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7", - "target": "687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3", - "field": "director_of", - "qualifier": [ + '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3': { + source: '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7', + target: '687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_52c2a4cf973872710d2917203ec6c2c6.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_52c2a4cf973872710d2917203ec6c2c6.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2341182783.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2341182783.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01": { - "source": "74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7", - "target": "7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01", - "field": "director_of", - "qualifier": [ + '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7|director_of|7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01': { + source: '74da694725784f21ab8f6e3622b1d6d0416bf4a5e92d0e7436f876e7', + target: '7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_5ad873f1d8516efac9c8d118b852d046.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_5ad873f1d8516efac9c8d118b852d046.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "0918940de8ba7498874d381238325ecd/8368113.html/1555448593289", - "props": { - "position": [ + record: '0918940de8ba7498874d381238325ecd/8368113.html/1555448593289', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2319981269.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2319981269.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045|director_of|e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32": { - "source": "43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045", - "target": "e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32", - "field": "director_of", - "qualifier": [ + '43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045|director_of|e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32': { + source: '43c3e2410caf5785ef9ea37e1a1c9fd4ce36b5a860a42e7b43ee2045', + target: 'e07ff2b8588695219acf6e899e807a858eaa518203335d61040f6f32', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_9baab02145dda0d381f1f75e17fefcc1.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_9baab02145dda0d381f1f75e17fefcc1.html/1553604848901', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_9baab02145dda0d381f1f75e17fefcc1.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_9baab02145dda0d381f1f75e17fefcc1.shtml/1553604848901', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } } ] }, - "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|manager_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75": { - "source": "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821", - "target": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "field": "manager_of", - "qualifier": [ + '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|manager_of|f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75': { + source: '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821', + target: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + field: 'manager_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/18695104.html/1555350199630', + props: { + position: [ { - "value": "总经理" + value: '总经理' } ] } } ] }, - "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|director_of|5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f": { - "source": "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821", - "target": "5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f", - "field": "director_of", - "qualifier": [ + '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|director_of|5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f': { + source: '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821', + target: '5fd5fa1ddac4d71d2d9668ed163e2029c22ab00ff8aa88808b42239f', + field: 'director_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/22198144.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/22198144.html/1555350199630', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570808a31f98cc54698b45e0/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570808a31f98cc54698b45e0/1557503792791', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e48342bbd3361eddd9e7ea1a36242b91.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e48342bbd3361eddd9e7ea1a36242b91.html/1553604848901', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|director_of|b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c": { - "source": "2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821", - "target": "b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c", - "field": "director_of", - "qualifier": [ + '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821|director_of|b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c': { + source: '2fc5f705c81395bc686e3e56b626a609ad5ab74631a25917a207b821', + target: 'b6f2c5320b5b8b328be8298e0c967bba0b5dcbf3372a913ee709335c', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS570960eb1f98cc15338b466a/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS570960eb1f98cc15338b466a/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b6382672c6741fe1bca28d2668c1732b/1151228/1560351943539", - "props": {} + record: 'b6382672c6741fe1bca28d2668c1732b/1151228/1560351943539', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/22197816.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/22197816.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_e938a7b9aa9d2c01b109ac50af8b0493.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_e938a7b9aa9d2c01b109ac50af8b0493.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef|director_of|6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98": { - "source": "390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef", - "target": "6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98", - "field": "director_of", - "qualifier": [ + '390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef|director_of|6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98': { + source: '390a5fd293fc7e9837d7651f6ec22844d08484bfd2ff5be9f51982ef', + target: '6151feabc29c4b481306c595c0581ab8b3895d49a1d08d6a0df5db98', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_5a0449ba826188e1a1eb4c1b4739e817.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_5a0449ba826188e1a1eb4c1b4739e817.html/1553604848901', + props: { + position: [ { - "value": "监事主席" + value: '监事主席' } ] } } ] }, - "42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519": { - "source": "42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b", - "target": "b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519", - "field": "director_of", - "qualifier": [ + '42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519': { + source: '42c514eb2737eeba8b164b1db747ddcac0beb23d600f577e9445846b', + target: 'b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "0918940de8ba7498874d381238325ecd/8579818.html/1555448593289", - "props": { - "position": [ + record: '0918940de8ba7498874d381238325ecd/8579818.html/1555448593289', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519": { - "source": "3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c", - "target": "b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519", - "field": "director_of", - "qualifier": [ + '3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519': { + source: '3e98bafa859109c18550d6f4514e82265272e1284fe56aa952ecfe0c', + target: 'b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519', + field: 'director_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630", - "props": { - "position": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "0918940de8ba7498874d381238325ecd/8579818.html/1555448593289", - "props": { - "position": [ + record: '0918940de8ba7498874d381238325ecd/8579818.html/1555448593289', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901", - "props": { - "position": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791', + props: { + position: [ { - "value": "董事" + value: '董事' } ] } } ] }, - "c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519": { - "source": "c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436", - "target": "b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519", - "field": "director_of", - "qualifier": [ + 'c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436|director_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519': { + source: 'c4e7d19799a5afbbc8ea786ee2d0e339e3f0a84cba30fb08329e8436', + target: 'b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519', + field: 'director_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791", - "props": { - "position": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791', + props: { + position: [ { - "value": "董事长" + value: '董事长' } ] } } ] }, - "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75|shareholder_of|161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082": { - "source": "f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75", - "target": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "field": "shareholder_of", - "qualifier": [ - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": { - "shares": [ - { - "date": "2012-09-17", - "monetary_value": 5696500000, - "currency": "CNY", - "percentage": 100, - "type": "Registered Capital" + 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75|shareholder_of|161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082': { + source: 'f8751c385fb8cf3a47b13507418825cd9ad49e4c22fd6d7fe0560a75', + target: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + field: 'shareholder_of', + qualifier: [ + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: { + shares: [ + { + date: '2012-09-17', + monetary_value: 5696500000, + currency: 'CNY', + percentage: 100, + type: 'Registered Capital' }, { - "date": "2001", - "monetary_value": 589500000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2001', + monetary_value: 589500000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630', + props: { + shares: [ { - "monetary_value": 5696500000, - "currency": "CNY" + monetary_value: 5696500000, + currency: 'CNY' } ] } }, { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS5707fe541f98ccc0478b4882/1557503792791", - "props": {} + record: 'b7a263906abfe4058a21f63ae9a911e0/GS5707fe541f98ccc0478b4882/1557503792791', + props: {} } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '7bf5dd83d85189caaea8a3d86bca0f80263a53b2c31569904e946c01', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2319981269.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2319981269.html/1555350199630', + props: { + shares: [ { - "monetary_value": 2243000000, - "currency": "CNY" + monetary_value: 2243000000, + currency: 'CNY' } ] } }, { - "record": "0918940de8ba7498874d381238325ecd/8368113.html/1555448593289", - "props": {} + record: '0918940de8ba7498874d381238325ecd/8368113.html/1555448593289', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630', + props: { + shares: [ { - "monetary_value": 2243000000, - "currency": "CNY" + monetary_value: 2243000000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_5ad873f1d8516efac9c8d118b852d046.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_5ad873f1d8516efac9c8d118b852d046.html/1553604848901', + props: { + shares: [ { - "date": "2011-10-24", - "monetary_value": 2243000000, - "currency": "CNY", - "percentage": 100, - "type": "Registered Capital" + date: '2011-10-24', + monetary_value: 2243000000, + currency: 'CNY', + percentage: 100, + type: 'Registered Capital' }, { - "date": "2011", - "monetary_value": 1313000000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2011', + monetary_value: 1313000000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '4a162e943b76d4999e6d8d66fcbb0674fff747c7dcd7861d0f882d9c', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "0918940de8ba7498874d381238325ecd/8488635.html/1555448593289", - "props": {} + record: '0918940de8ba7498874d381238325ecd/8488635.html/1555448593289', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_4aaa3011004f784062226c016fa0ac1c.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_4aaa3011004f784062226c016fa0ac1c.html/1553604848901', + props: { + shares: [ { - "date": "2011-08-18", - "monetary_value": 78810000, - "currency": "CNY", - "percentage": 3.28, - "type": "Registered Capital" + date: '2011-08-18', + monetary_value: 78810000, + currency: 'CNY', + percentage: 3.28, + type: 'Registered Capital' }, { - "date": "2010", - "monetary_value": 17800000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2010', + monetary_value: 17800000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '93dc8b9191f4d98fc61a62f764386f1777c30027e237ceaee28fe999', + field: 'shareholder_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57070f861f98cca2568b45e5/1557503792791", - "props": { - "shares": [ + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57070f861f98cca2568b45e5/1557503792791', + props: { + shares: [ { - "monetary_value": 149340000 + monetary_value: 149340000 } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2323588336.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2323588336.html/1555350199630', + props: { + shares: [ { - "monetary_value": 149340000, - "currency": "CNY" + monetary_value: 149340000, + currency: 'CNY' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '78d6b69158b9ff4936512629bd8092ee9976f854079202e679a7bfba', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/1143494669.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/1143494669.html/1555350199630', + props: { + shares: [ { - "monetary_value": 12000000, - "currency": "CNY" + monetary_value: 12000000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_cb0411bfb2a9b4700e63c3e47c3832cc.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_cb0411bfb2a9b4700e63c3e47c3832cc.html/1553604848901', + props: { + shares: [ { - "date": "2005", - "monetary_value": 12000000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2005', + monetary_value: 12000000, + currency: 'CNY', + type: 'Paid-in Capital' }, { - "date": "2005-01-21", - "monetary_value": 450320000, - "currency": "CNY", - "percentage": 26, - "type": "Registered Capital" + date: '2005-01-21', + monetary_value: 450320000, + currency: 'CNY', + percentage: 26, + type: 'Registered Capital' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3", - "field": "shareholder_of", - "qualifier": [ - { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_52c2a4cf973872710d2917203ec6c2c6.html/1553604848901", - "props": { - "shares": [ - { - "date": "2012-11-21", - "monetary_value": 860000000, - "currency": "CNY", - "percentage": 100, - "type": "Registered Capital" + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '687230e4b77793b25ad8b7b4b09bb0bdeae21e628ffa2a8b6f1671e3', + field: 'shareholder_of', + qualifier: [ + { + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_52c2a4cf973872710d2917203ec6c2c6.html/1553604848901', + props: { + shares: [ + { + date: '2012-11-21', + monetary_value: 860000000, + currency: 'CNY', + percentage: 100, + type: 'Registered Capital' }, { - "date": "2012", - "monetary_value": 150000000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2012', + monetary_value: 150000000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/796830962.html/1555350199630', + props: { + shares: [ { - "monetary_value": 860000000, - "currency": "CNY" + monetary_value: 860000000, + currency: 'CNY' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2341182783.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2341182783.html/1555350199630', + props: { + shares: [ { - "monetary_value": 860000000, - "currency": "CNY" + monetary_value: 860000000, + currency: 'CNY' } ] } }, { - "record": "0918940de8ba7498874d381238325ecd/8162861.html/1555448593289", - "props": {} + record: '0918940de8ba7498874d381238325ecd/8162861.html/1555448593289', + props: {} } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '8c96cc2f0cd5d3f8def60d54e4e478fddbb73ca77fd0bacb8e0355f3', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_48f8cfd7aee07030fb147ff59f04c15c.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_48f8cfd7aee07030fb147ff59f04c15c.html/1553604848901', + props: { + shares: [ { - "date": "2002", - "monetary_value": 215500000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2002', + monetary_value: 215500000, + currency: 'CNY', + type: 'Paid-in Capital' }, { - "monetary_value": 215500000, - "currency": "CNY", - "percentage": 10, - "type": "Registered Capital" + monetary_value: 215500000, + currency: 'CNY', + percentage: 10, + type: 'Registered Capital' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2325740029.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2325740029.html/1555350199630', + props: { + shares: [ { - "monetary_value": 215500000, - "currency": "CNY" + monetary_value: 215500000, + currency: 'CNY' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: 'b0a3f22329f436248d4c0f59070631be419a47388d3929b113c007a0', + field: 'shareholder_of', + qualifier: [ { - "record": "0918940de8ba7498874d381238325ecd/8304221.html/1555448593289", - "props": {} + record: '0918940de8ba7498874d381238325ecd/8304221.html/1555448593289', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_62cf644ae4eb8d61de989ecfd9237250.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_62cf644ae4eb8d61de989ecfd9237250.html/1553604848901', + props: { + shares: [ { - "monetary_value": 22970, - "percentage": 30, - "type": "Registered Capital" + monetary_value: 22970, + percentage: 30, + type: 'Registered Capital' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349446626.html/1555350199630", - "props": {} + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349446626.html/1555350199630', + props: {} } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: 'b31c563f58ca29847387933fd913ae9026c7a92d5388ae83be306519', + field: 'shareholder_of', + qualifier: [ { - "record": "b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791", - "props": {} + record: 'b7a263906abfe4058a21f63ae9a911e0/GS57068e221f98cc0b368b46d8/1557503792791', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.shtml/1553604848901', + props: { + shares: [ { - "date": "2013-05-29", - "monetary_value": 2684000000, - "currency": "CNY", - "percentage": 100, - "type": "Registered Capital" + date: '2013-05-29', + monetary_value: 2684000000, + currency: 'CNY', + percentage: 100, + type: 'Registered Capital' }, { - "date": "2013", - "monetary_value": 2684000000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2013', + monetary_value: 2684000000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_f78bfeee634cdbc27cd48f280e02ffbd.html/1553604848901', + props: { + shares: [ { - "date": "2013-05-29", - "monetary_value": 2684000000, - "currency": "CNY", - "percentage": 100, - "type": "Registered Capital" + date: '2013-05-29', + monetary_value: 2684000000, + currency: 'CNY', + percentage: 100, + type: 'Registered Capital' }, { - "date": "2013", - "monetary_value": 2684000000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2013', + monetary_value: 2684000000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2350725319.html/1555350199630', + props: { + shares: [ { - "monetary_value": 2684000000, - "currency": "CNY" + monetary_value: 2684000000, + currency: 'CNY' } ] } }, { - "record": "0918940de8ba7498874d381238325ecd/8579818.html/1555448593289", - "props": {} + record: '0918940de8ba7498874d381238325ecd/8579818.html/1555448593289', + props: {} } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: 'b961454d6ffa9c52054632560c5e7ba49e7e5bf5a1ffe2fa6c21d02b', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_c554706f25a0963b23bb35f68a0a60b3.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_c554706f25a0963b23bb35f68a0a60b3.html/1553604848901', + props: { + shares: [ { - "monetary_value": 6000000, - "currency": "CNY", - "percentage": 60, - "type": "Registered Capital" + monetary_value: 6000000, + currency: 'CNY', + percentage: 60, + type: 'Registered Capital' }, { - "monetary_value": 6000000, - "currency": "CNY", - "type": "Paid-in Capital" + monetary_value: 6000000, + currency: 'CNY', + type: 'Paid-in Capital' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '8631557859819354a62a69ef561e3efa0581b753142b175401b4b6a3', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_cef0efd3398c39bb4fd6330d71414a7e.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_cef0efd3398c39bb4fd6330d71414a7e.html/1553604848901', + props: { + shares: [ { - "monetary_value": 16459, - "percentage": 17.42, - "type": "Registered Capital" + monetary_value: 16459, + percentage: 17.42, + type: 'Registered Capital' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_cef0efd3398c39bb4fd6330d71414a7e.shtml/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_cef0efd3398c39bb4fd6330d71414a7e.shtml/1553604848901', + props: { + shares: [ { - "monetary_value": 164590000, - "currency": "CNY", - "percentage": 17.42, - "type": "Registered Capital" + monetary_value: 164590000, + currency: 'CNY', + percentage: 17.42, + type: 'Registered Capital' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: 'b44331f347f1161d6d385cb45f9163f7f79328a996a056734b94c901', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_62e8110f293836de20ad37d3a6afb61e.html/1553604848901", - "props": { - "shares": [ + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_62e8110f293836de20ad37d3a6afb61e.html/1553604848901', + props: { + shares: [ { - "date": "2010", - "monetary_value": 74790000, - "currency": "CNY", - "type": "Paid-in Capital" + date: '2010', + monetary_value: 74790000, + currency: 'CNY', + type: 'Paid-in Capital' }, { - "date": "2010-04-12", - "monetary_value": 312260000, - "currency": "CNY", - "percentage": 34.93, - "type": "Registered Capital" + date: '2010-04-12', + monetary_value: 312260000, + currency: 'CNY', + percentage: 34.93, + type: 'Registered Capital' } ] } }, { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} }, { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2349446914.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2349446914.html/1555350199630', + props: { + shares: [ { - "monetary_value": 312215000, - "currency": "CNY" + monetary_value: 312215000, + currency: 'CNY' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: 'c2a803c8af6a225a203d74777734586e90d6db805e96e80de89b7475', + field: 'shareholder_of', + qualifier: [ { - "record": "0918940de8ba7498874d381238325ecd/7943683.html/1555448593289", - "props": {} + record: '0918940de8ba7498874d381238325ecd/7943683.html/1555448593289', + props: {} } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: 'ac20badb59f0abac064dc963d662e203930f063849544fc0f7755c8e', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2313210570.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2313210570.html/1555350199630', + props: { + shares: [ { - "monetary_value": 116150000, - "currency": "CNY" + monetary_value: 116150000, + currency: 'CNY' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '257f81b0706d62349b9203bdb1225a400f5a0645448bf9780420d44a', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/2323589009.html/1555350199630", - "props": { - "shares": [ + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/2323589009.html/1555350199630', + props: { + shares: [ { - "monetary_value": 224010000, - "currency": "CNY" + monetary_value: 224010000, + currency: 'CNY' } ] } } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: 'ddc60c0bbf9252a3951d1e7858b75257127e88c9ebabd09ed5283313', + field: 'shareholder_of', + qualifier: [ { - "record": "bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901", - "props": {} + record: 'bc5bfbbd56e094337aa743fa721a48cc/firm_61ff5dfc1f3e1246baadbbd0856f312a.html/1553604848901', + props: {} } ] }, - "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523": { - "source": "161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082", - "target": "1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523", - "field": "shareholder_of", - "qualifier": [ + '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082|shareholder_of|1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523': { + source: '161de77ecaf39e4dffa6281850f45fc476f5025f6f71773c526ea082', + target: '1f1b892fe0a85dfc98c7ca404c8492cf476cdb76b82da43115118523', + field: 'shareholder_of', + qualifier: [ { - "record": "fcfa3d1c6b5f9744188fc01d0999fb76/80567176.html/1555350199630", - "props": {} + record: 'fcfa3d1c6b5f9744188fc01d0999fb76/80567176.html/1555350199630', + props: {} } ] } } -} \ No newline at end of file +} diff --git a/docs-src/data.ts b/docs-src/data.ts index e20125a6..2bfdb34a 100644 --- a/docs-src/data.ts +++ b/docs-src/data.ts @@ -1 +1,1547 @@ -export default [{"roots":[2],"nodes":[[0,167.72104636169402,-207.7276952656924],[1,-15.46306638358638,-136.53613543566118],[2,12.803691913485798,-575.2068406888288],[3,32.847340891315156,195.09628369267128],[4,-4.607706955470989,-319.0007289817301],[5,-309.79128956143137,-146.65185360558016],[6,-133.2777650291415,8.134826654542367],[7,-558.0243608163536,-182.00377250600016],[8,-407.05963848842316,-312.93276982662314],[9,-757.3918475429156,-217.5934882231816],[10,-303.5313606440518,494.66140652647624],[11,-14.167209997961272,360.50649096578536],[12,162.44687378306924,400.2250137454427],[13,195.48693550201284,295.92591197317404],[14,-200.18088118586627,204.63387801823347],[15,66.16798905729031,503.71491789219704],[16,229.295987826078,525.229751303872],[17,-129.9539235487878,101.1611782908746],[18,403.7602069091975,162.37233190485958],[19,532.1286509548048,318.646523348587],[20,585.0036177106648,61.68151872090988],[21,612.6664258501326,193.77580438417743],[22,460.60920940432857,-30.797457344056166],[23,608.630377671933,125.72158592840378],[24,584.9130396568573,259.1426040541351],[25,537.2037441592671,7.315157929079533],[26,-86.32905952507748,537.0448807218161],[27,429.1625091241353,721.9492962348982],[28,186.48192661957725,719.5789403640877],[29,116.6374189003526,675.3186717025194],[30,-358.2479269398747,692.5180976542912],[31,-140.70762138115543,587.1326422836535],[32,599.8298913158488,829.6011364079188],[33,477.07545959341235,914.5772327837194],[34,-406.853154221346,164.2276557370461],[35,209.1822227299616,596.486142816424],[36,352.4959654956592,471.0596230012676],[37,-24.38434212895891,560.4746651459843],[38,-225.1478889445018,339.1177948404569],[39,-488.34198800266444,590.3667877249661],[40,-437.26921589165676,653.1109700676932],[41,-510.6191789563829,513.8407181979637],[42,-498.12986374770077,429.226580097986],[43,-132.26495798646582,-700.3622949640079],[44,-264.90709294511987,-837.2245699637447],[45,195.22116210286765,-497.1580445031528],[46,54.00345093452741,-774.3458379707296],[47,208.4928417784296,-646.0107156898673],[48,-179.71315613184038,-595.6143033306406],[49,123.49725981944282,-749.5844590668071],[50,218.16204823050032,-575.9538921416527],[51,-32.52818201210661,-766.9083117672797],[52,175.63708086379006,-705.0586418953845],[53,-154.18158760445388,-486.1675451524723],[54,-451.5195593511334,-907.3310871228836],[55,-286.18999972999757,-1034.9540712523105],[56,-462.35652807041004,-799.7031906629434],[57,-388.2737551822471,-993.3087518864593],[58,-176.17009217798085,-1015.4409031125884]],"edges":[["1",2,43],["2",2,44],["3",2,45],["4",2,46],["5",2,47],["6",2,1],["19",1,3],["20",1,3],["21",1,4],["22",1,0],["23",1,0],["24",1,5],["25",3,10],["26",3,11],["27",3,12],["28",12,3],["29",3,13],["30",13,3],["31",14,3],["32",3,14],["33",6,3],["34",3,15],["35",3,16],["36",35,12],["37",36,12],["38",29,12],["40",34,14],["41",34,14],["42",6,5],["43",7,5],["44",8,5],["56",11,10],["59",37,11],["60",31,11],["61",31,10],["62",7,9],["63",26,16],["64",16,13],["65",27,16],["66",16,27],["67",16,28],["68",29,16],["69",32,27],["70",32,27],["71",33,27],["72",15,28],["73",29,15],["76",44,54],["77",55,44],["78",56,44],["79",56,44],["80",57,44],["81",58,44],["89",17,3],["90",11,12],["91",16,12],["92",10,39],["93",10,40],["94",10,41],["96",10,42],["97",10,30],["98",10,38],["99",10,26],["100",10,26],["111",31,15],["133",2,48],["134",2,49],["135",2,50],["136",2,51],["137",2,52],["138",2,53],["139",11,15],["140",11,18],["142",11,38],["143",11,16],["144",11,13],["145",11,14],["146",3,18],["147",19,18],["148",19,18],["149",20,18],["150",21,18],["151",22,18],["152",21,18],["153",22,18],["154",23,18],["155",24,18],["156",25,18],["157",22,18]]},{"roots":[2],"nodes":[[0,215.45175107325585,26.71586150599214],[1,29.58133869124958,77.13776993981516],[2,196.37456148484037,-449.0872947730194],[3,-44.33613536157846,446.06736048005666],[4,-94.52241478382683,-69.80377596377164],[5,-263.51437911358425,42.909394771634446],[6,-170.05080503029262,250.90057124569717],[7,-469.1743926238866,-56.62206444317837],[8,-93.0960008550333,77.16172145953959],[9,-630.0280347324175,-167.85537581731674],[10,-332.24471691187756,816.9131584430698],[11,-95.68380014629749,609.0798947541977],[12,80.84257804077987,660.8205344645327],[13,114.79742437152183,559.0932478468833],[14,-375.4082055775735,381.11605475783983],[15,6.509288550154733,752.2876125983524],[16,170.85117991674144,798.5017419677168],[17,-228.31381251892296,399.3875019016546],[18,366.23471835505114,502.2790786316326],[19,475.74046496189095,675.5892518432885],[20,567.637457824146,446.0665017772265],[21,569.6216315580004,572.7003729126745],[22,467.72753152409507,329.2176553977259],[23,576.7548417625477,509.8783551501],[24,532.4593598621225,627.4529287571337],[25,533.9812121414792,384.45824813353306],[26,-116.8193825635757,914.7068646798282],[27,381.7904183293979,1003.1787803049873],[28,119.94560823958889,983.7601712110107],[29,49.654691392461004,932.7791361934693],[30,-355.2423498950982,1020.3197243219716],[31,-158.93940985627384,830.4898303555931],[32,567.4379743408273,1093.268432292875],[33,470.18499161618513,1183.1482024468355],[34,-889.7510859527961,112.87998456106632],[35,-578.294221110845,374.32292291511556],[36,-1112.3520007451941,-60.629005537476296],[37,-881.1189657973954,-74.48440338871288],[38,-1047.0182452118645,25.644415743126284],[39,-1283.6988639300155,-168.8521583891371],[40,-1375.3936718627406,-16.786849973048238],[41,-1135.0679737133346,-254.99663419322502],[42,-1042.6598429953515,-259.8517286101027],[43,-1224.2228417482033,-258.0883231781057],[44,-1389.0195515766745,172.18779626645986],[45,-1534.422236979785,-124.8601260569877],[46,-1534.2258236252833,87.76293536723767],[47,136.71992444440488,855.7846394201147],[48,268.4071113181607,734.1664070045248],[49,-236.7469356203077,735.7501048903397],[50,-312.9050041654951,625.618315743539],[51,-502.78734784951723,934.0833519653593],[52,-441.7720632527818,991.7883597437803],[53,-534.9423970330132,857.1938631749126],[54,-529.8107182618362,766.5747936960702],[55,775.1445956423936,-616.7583014233294],[56,0.6658682409382449,-417.5487641006146],[57,-156.43035505159287,-771.8020531937121],[58,380.1233267910755,-401.7657598767047],[59,33.639353664603725,-568.2232393682073],[60,235.54872683775437,-644.8391407504084],[61,44.90382998730693,-330.9121257745525],[62,89.29929443411467,-620.4966511662319],[63,317.7525735597637,-595.8525529577748],[64,0.860203160067491,-498.05451283052207],[65,158.4551292314752,-647.8064507987972],[66,198.60169324539072,-260.8057814892629],[67,-341.49072530265596,-862.0852236545044],[68,-221.11597823500512,-967.3976484779417],[69,-362.1980540000457,-773.8239589168255],[70,-293.0303157395337,-927.9130113481433],[71,-131.09177656741778,-973.058849017838],[72,611.5300642657996,-558.4801758993892],[73,967.1582386735323,-693.629613856519],[74,839.4458727330817,-421.8834412365479],[75,714.5217665740162,-955.9866521344375],[76,979.0877028047901,-559.0420167973672],[77,757.2274937430104,-418.36028276289164],[78,857.2973258441156,-799.4885774710193],[79,947.1837864184909,-501.80235562965805],[80,753.0168454242894,-807.8268566861983],[81,980.6078752796893,-625.5079847863651],[82,902.1771606664835,-453.8821433919127],[83,924.4155474758683,-753.7943151138023],[84,802.435597024264,-1135.4244262435723],[85,586.2958563464142,-783.4691835300341],[86,675.3839459766889,-1152.4905935816926],[87,574.8000442258798,-1100.8442348235212],[88,512.6655686339873,-618.125617310287]],"edges":[["0",2,55],["1",2,56],["2",2,57],["3",2,58],["4",2,59],["5",2,60],["6",2,1],["7",55,72],["8",55,73],["9",55,74],["10",55,75],["11",84,75],["12",84,75],["13",85,75],["14",86,75],["15",87,75],["16",85,72],["17",85,72],["18",85,88],["19",1,3],["20",1,3],["21",1,4],["22",1,0],["23",1,0],["24",1,5],["25",3,10],["26",3,11],["27",3,12],["28",12,3],["29",3,13],["30",13,3],["31",14,3],["32",3,14],["33",6,3],["34",3,15],["35",3,16],["36",47,12],["37",48,12],["38",29,12],["39",34,14],["40",35,14],["41",35,14],["42",6,5],["43",7,5],["44",8,5],["45",36,34],["46",36,34],["47",36,34],["48",37,34],["49",38,34],["50",36,39],["51",36,40],["52",36,39],["53",36,41],["54",36,42],["55",36,43],["56",11,10],["59",49,11],["60",31,11],["61",31,10],["62",7,9],["63",26,16],["64",16,13],["65",27,16],["66",16,27],["67",16,28],["68",29,16],["69",32,27],["70",32,27],["71",33,27],["72",15,28],["73",29,15],["76",57,67],["77",68,57],["78",69,57],["79",69,57],["80",70,57],["81",71,57],["82",36,42],["83",42,43],["84",40,39],["85",44,40],["86",45,40],["87",40,46],["88",40,46],["89",17,3],["90",11,12],["91",16,12],["92",10,51],["93",10,52],["94",10,53],["96",10,54],["97",10,30],["98",10,50],["99",10,26],["100",10,26],["111",31,15],["118",76,55],["119",76,55],["120",76,55],["121",55,77],["122",55,77],["123",78,55],["124",55,78],["125",55,79],["126",55,72],["127",73,55],["128",74,55],["129",80,55],["130",81,55],["131",55,82],["132",83,55],["133",2,61],["134",2,62],["135",2,63],["136",2,64],["137",2,65],["138",2,66],["139",11,15],["140",11,18],["142",11,50],["143",11,16],["144",11,13],["145",11,14],["146",3,18],["147",19,18],["148",19,18],["149",20,18],["150",21,18],["151",22,18],["152",21,18],["153",22,18],["154",23,18],["155",24,18],["156",25,18],["157",22,18]]},{"roots":[2],"nodes":[[0,233.7022477498847,-454.59650491778575],[1,324.748044129521,-282.49054249460414],[2,335.88161982789467,-869.2907080710337],[3,326.0986130583235,156.52794620865885],[4,152.7300402633379,-378.7693898085594],[5,94.32391763033745,-231.90148035596482],[6,244.21928252640944,-50.87565195460029],[7,-115.3050083154925,-336.1438280281784],[8,280.2877282886571,-208.56779230223296],[9,-290.52158529045875,-430.3681683983745],[10,-103.2205126447811,463.15830364320465],[11,265.71229394069087,457.1038001938242],[12,439.6523231520605,399.2061477180681],[13,465.18417926950804,312.808515620205],[14,-10.71312339697304,38.76463806332332],[15,459.57797028143943,476.4909419068801],[16,551.5297975001623,557.6023428506336],[17,174.3181607518551,248.33638571553618],[18,743.1950051722011,253.23860114995992],[19,900.8795179107341,390.0582975109733],[20,909.3137103686616,131.2994302908232],[21,957.5780325268548,258.4928313112434],[22,752.5456756230957,57.37582575444566],[23,943.2514887310101,192.57502966592946],[24,940.1851938648964,325.17127679446],[25,848.0820494321712,81.7213501082269],[26,159.59298247938926,503.97550681469596],[27,755.7973407148045,807.4514173088011],[28,713.7756623726601,582.7233221843998],[29,437.01092458415474,745.8092644575536],[30,166.68630067202355,804.3146957947014],[31,287.25091439496174,883.118003690516],[32,134.24951237457475,1186.8945919089022],[33,-11.394878185335447,1336.989083318247],[34,162.86440514546368,1387.791619290047],[35,64.34638221325365,1378.352958470074],[36,-54.52608380158726,1260.811261569419],[37,-28.666576508659094,673.5748407781929],[38,16.26405984925956,936.2614190605328],[39,141.82257801163283,595.16348120442],[40,116.18511624807712,997.5715661766153],[41,-26.284435150623935,840.3747249003461],[42,916.3065642282462,944.8045805442017],[43,817.269546538869,1005.3152540075943],[44,-695.4982971708978,-470.3563687926702],[45,-190.72947287526117,-61.020338213274464],[46,-966.6560711513413,-656.32361503526],[47,-695.2789760209006,-666.9790303007251],[48,-799.3085218675159,-633.8913846297285],[49,-1178.6041720530218,-681.8864246092722],[50,-1220.1235763840507,-514.5515555475413],[51,-1086.6100365076434,-815.5966851666716],[52,-1013.6821807343009,-872.0221621285215],[53,-1169.4799695426,-776.8615546255003],[54,-1039.8499631975906,-504.22698602274954],[55,-1337.090687399752,-363.1550178293125],[56,-1131.9155964037618,-349.42118503786236],[57,339.2160819607482,565.9129436884933],[58,511.1884521348195,598.3730549973868],[59,397.1202368557457,607.2969052457271],[60,68.00698597344694,371.6693329535133],[61,-291.90820543439116,400.20927607133916],[62,-412.8584749361372,572.838363028762],[63,-245.53912949032457,319.2875661777855],[64,-672.2663584750309,551.6448593575175],[65,-163.08374115073534,274.1734451574828],[66,-857.6576644661523,457.3776666723125],[67,-733.4713347164874,366.055228058043],[68,-786.291986959178,706.4840478385266],[69,-974.9695233136962,790.0798045778638],[70,-868.6864634438047,531.3827251606493],[71,-537.8044350446917,793.5401422534312],[72,-856.8178054885337,618.5994681117058],[73,-905.2584386499376,306.4882214536686],[74,-1018.782249819129,140.54617890362456],[75,-1095.2666398777146,233.0136752121978],[76,-466.51986691473803,979.4722860010445],[77,-559.5005240170766,993.2760369146254],[78,-389.0727240277773,919.1824376462508],[79,-997.4605801012863,1090.218573133665],[80,-1282.8987619880734,784.3067907648234],[81,-1378.4785198678624,614.4307487184786],[82,-1476.8598855025025,816.8943599490177],[83,-1456.6218217483593,693.8360281112311],[84,-873.5758664710296,1249.7082303355583],[85,-1030.8539473291446,1287.2034606140896],[86,-822.6629027186182,1177.18786072456],[87,-945.2912603879566,1286.2432646843456],[88,-1123.318891461193,1239.3302505306772],[89,957.8568377220191,-841.4020979405959],[90,134.29658252202782,-918.8660919456792],[91,-24.679299174615995,-1245.3646633918013],[92,480.44850183788924,-998.3388924272715],[93,196.26976338963144,-1026.3794488863725],[94,362.72574759130686,-1077.3928530901499],[95,132.24265622507764,-850.1306812756302],[96,246.8824902093347,-1059.2577135259694],[97,422.84572210204215,-1053.0719116237176],[98,157.12860771128226,-978.0847052183498],[99,303.1704168834132,-1077.1211817721485],[100,165.09955624621935,-773.0046002312355],[101,-203.90021754175828,-1350.988887639169],[102,-77.37335374142287,-1446.0377165155185],[103,-231.9777009201632,-1267.8453001445175],[104,-151.52991896284823,-1411.742534961607],[105,13.081521152628113,-1445.9971775107547],[106,849.5307567903341,-670.8242971257571],[107,1159.6081391054138,-899.4815244013197],[108,1025.201003348417,-647.210637769846],[109,807.9953071409321,-1005.91102721844],[110,1161.8639959838304,-771.8855157117009],[111,948.7115873271932,-643.0353613927242],[112,1072.476901653455,-1012.2204352172103],[113,1127.681511363471,-721.2487836111455],[114,991.3051939141711,-1038.1773293535155],[115,1165.2713135329655,-834.8910224263259],[116,1084.4190820970127,-677.0569322838776],[117,1125.8686138075072,-960.0379016485231],[118,843.4438436470734,-1203.7605461081953],[119,693.7930173478641,-766.8836633365528],[120,703.7652416006332,-1169.9222667116353],[121,652.8870889869919,-911.4853180423877],[122,545.1003677612161,-643.0348254441968]],"edges":[["0",2,89],["1",2,90],["2",2,91],["3",2,92],["4",2,93],["5",2,94],["6",2,1],["7",89,106],["8",89,107],["9",89,108],["10",89,109],["11",118,109],["12",118,109],["13",119,109],["14",120,109],["15",121,109],["16",119,106],["17",119,106],["18",119,122],["19",1,3],["20",1,3],["21",1,4],["22",1,0],["23",1,0],["24",1,5],["25",3,10],["26",3,11],["27",3,12],["28",12,3],["29",3,13],["30",13,3],["31",14,3],["32",3,14],["33",6,3],["34",3,15],["35",3,16],["36",57,12],["37",58,12],["38",29,12],["39",44,14],["40",45,14],["41",45,14],["42",6,5],["43",7,5],["44",8,5],["45",46,44],["46",46,44],["47",46,44],["48",47,44],["49",48,44],["50",46,49],["51",46,50],["52",46,49],["53",46,51],["54",46,52],["55",46,53],["56",11,10],["57",30,11],["58",11,30],["59",59,11],["60",39,11],["61",39,10],["62",7,9],["63",26,16],["64",16,13],["65",27,16],["66",16,27],["67",16,28],["68",29,16],["69",42,27],["70",42,27],["71",43,27],["72",15,28],["73",29,15],["74",29,30],["75",29,31],["76",91,101],["77",102,91],["78",103,91],["79",103,91],["80",104,91],["81",105,91],["82",46,52],["83",52,53],["84",50,49],["85",54,50],["86",55,50],["87",50,56],["88",50,56],["89",17,3],["90",11,12],["91",16,12],["92",10,61],["93",10,62],["94",10,63],["95",10,64],["96",10,65],["97",10,37],["98",10,60],["99",10,26],["100",10,26],["101",66,64],["102",62,64],["103",67,64],["104",67,64],["105",68,64],["106",69,64],["107",70,64],["108",71,64],["109",72,64],["110",73,64],["111",39,15],["112",71,62],["113",71,76],["114",77,71],["115",77,71],["116",78,71],["117",71,78],["118",110,89],["119",110,89],["120",110,89],["121",89,111],["122",89,111],["123",112,89],["124",89,112],["125",89,113],["126",89,106],["127",107,89],["128",108,89],["129",114,89],["130",115,89],["131",89,116],["132",117,89],["133",2,95],["134",2,96],["135",2,97],["136",2,98],["137",2,99],["138",2,100],["139",11,15],["140",11,18],["141",11,31],["142",11,60],["143",11,16],["144",11,13],["145",11,14],["146",3,18],["147",19,18],["148",19,18],["149",20,18],["150",21,18],["151",22,18],["152",21,18],["153",22,18],["154",23,18],["155",24,18],["156",25,18],["157",22,18],["158",37,30],["159",30,31],["160",30,32],["161",38,30],["162",39,30],["163",40,30],["164",41,30],["165",31,32],["166",33,32],["167",33,32],["168",34,32],["169",35,32],["170",36,32],["171",34,32],["172",79,69],["173",80,69],["174",80,81],["175",80,82],["176",80,83],["177",80,82],["178",80,82],["179",66,73],["180",74,73],["181",75,73],["182",79,84],["183",79,85],["184",79,86],["185",79,87],["186",79,88]]},{"roots":[2],"nodes":[[0,1716.2499999999995,480],[1,1308.75,240],[2,0,0],[3,86.25,480],[4,901.2499999999998,480],[5,2531.25,480],[6,881.25,720],[7,2471.25,720],[8,2591.25,720],[9,2471.25,960],[10,-1698.75,720],[11,-168.75,720],[12,311.25,720],[13,521.25,720],[14,731.25,720],[15,1031.25,720],[16,1271.25,720],[17,1571.25,720],[18,1871.25,720],[19,1511.25,960],[20,1631.25,960],[21,1751.25,960],[22,1871.25,960],[23,1991.25,960],[24,2111.25,960],[25,2231.25,960],[26,-948.75,960],[27,1271.25,960],[28,1031.25,960],[29,431.25,960],[30,-288.75,960],[31,-48.75,960],[32,-468.75,1200],[33,-648.75,1440],[34,-528.75,1440],[35,-408.75,1440],[36,-288.75,1440],[37,-1188.75,960],[38,-348.75,1200],[39,-2448.75,960],[40,-228.75,1200],[41,-108.75,1200],[42,1211.25,1200],[43,1331.25,1200],[44,671.25,960],[45,791.25,960],[46,551.25,1200],[47,671.25,1200],[48,791.25,1200],[49,311.25,1440],[50,431.25,1440],[51,551.25,1440],[52,671.25,1440],[53,791.25,1440],[54,311.25,1680],[55,431.25,1680],[56,551.25,1680],[57,191.25,960],[58,311.25,960],[59,-168.75,960],[60,-1068.75,960],[61,-2328.75,960],[62,-2208.75,960],[63,-1818.75,960],[64,-1428.75,960],[65,-1308.75,960],[66,-1908.75,1200],[67,-1788.75,1200],[68,-1668.75,1200],[69,-1548.75,1200],[70,-1348.7499999999998,1200],[71,-2208.75,1200],[72,-1148.75,1200],[73,-948.75,1200],[74,-1008.75,1440],[75,-888.75,1440],[76,-2328.75,1440],[77,-2208.75,1440],[78,-2088.75,1440],[79,-1848.75,1440],[80,-1248.75,1440],[81,-1368.75,1680],[82,-1248.75,1680],[83,-1128.75,1680],[84,-2088.75,1680],[85,-1968.75,1680],[86,-1848.75,1680],[87,-1728.75,1680],[88,-1608.75,1680],[89,-2028.75,240],[90,-1376.2499999999998,240],[91,-723.75,240],[92,-215.625,240],[93,292.5,240],[94,800.625,240],[95,1428.75,240],[96,1548.75,240],[97,1668.75,240],[98,1788.75,240],[99,1908.75,240],[100,2028.75,240],[101,-963.7499999999998,480],[102,-843.7499999999998,480],[103,-723.7499999999998,480],[104,-603.7499999999998,480],[105,-483.7499999999998,480],[106,-2688.75,480],[107,-2568.75,480],[108,-2448.75,480],[109,-2328.75,480],[110,-2208.75,480],[111,-2088.75,480],[112,-1968.75,480],[113,-1848.75,480],[114,-1728.75,480],[115,-1608.75,480],[116,-1488.75,480],[117,-1368.75,480],[118,-2448.75,720],[119,-2688.75,720],[120,-2328.75,720],[121,-2208.75,720],[122,-2688.75,960]],"edges":[["0",2,89],["1",2,90],["2",2,91],["3",2,92],["4",2,93],["5",2,94],["6",2,1],["7",89,106],["8",89,107],["9",89,108],["10",89,109],["11",118,109],["12",118,109],["13",119,109],["14",120,109],["15",121,109],["16",119,106],["17",119,106],["18",119,122],["19",1,3],["20",1,3],["21",1,4],["22",1,0],["23",1,0],["24",1,5],["25",3,10],["26",3,11],["27",3,12],["28",12,3],["29",3,13],["30",13,3],["31",14,3],["32",3,14],["33",6,3],["34",3,15],["35",3,16],["36",57,12],["37",58,12],["38",29,12],["39",44,14],["40",45,14],["41",45,14],["42",6,5],["43",7,5],["44",8,5],["45",46,44],["46",46,44],["47",46,44],["48",47,44],["49",48,44],["50",46,49],["51",46,50],["52",46,49],["53",46,51],["54",46,52],["55",46,53],["56",11,10],["57",30,11],["58",11,30],["59",59,11],["60",39,11],["61",39,10],["62",7,9],["63",26,16],["64",16,13],["65",27,16],["66",16,27],["67",16,28],["68",29,16],["69",42,27],["70",42,27],["71",43,27],["72",15,28],["73",29,15],["74",29,30],["75",29,31],["76",91,101],["77",102,91],["78",103,91],["79",103,91],["80",104,91],["81",105,91],["82",46,52],["83",52,53],["84",50,49],["85",54,50],["86",55,50],["87",50,56],["88",50,56],["89",17,3],["90",11,12],["91",16,12],["92",10,61],["93",10,62],["94",10,63],["95",10,64],["96",10,65],["97",10,37],["98",10,60],["99",10,26],["100",10,26],["101",66,64],["102",62,64],["103",67,64],["104",67,64],["105",68,64],["106",69,64],["107",70,64],["108",71,64],["109",72,64],["110",73,64],["111",39,15],["112",71,62],["113",71,76],["114",77,71],["115",77,71],["116",78,71],["117",71,78],["118",110,89],["119",110,89],["120",110,89],["121",89,111],["122",89,111],["123",112,89],["124",89,112],["125",89,113],["126",89,106],["127",107,89],["128",108,89],["129",114,89],["130",115,89],["131",89,116],["132",117,89],["133",2,95],["134",2,96],["135",2,97],["136",2,98],["137",2,99],["138",2,100],["139",11,15],["140",11,18],["141",11,31],["142",11,60],["143",11,16],["144",11,13],["145",11,14],["146",3,18],["147",19,18],["148",19,18],["149",20,18],["150",21,18],["151",22,18],["152",21,18],["153",22,18],["154",23,18],["155",24,18],["156",25,18],["157",22,18],["158",37,30],["159",30,31],["160",30,32],["161",38,30],["162",39,30],["163",40,30],["164",41,30],["165",31,32],["166",33,32],["167",33,32],["168",34,32],["169",35,32],["170",36,32],["171",34,32],["172",79,69],["173",80,69],["174",80,81],["175",80,82],["176",80,83],["177",80,82],["178",80,82],["179",66,73],["180",74,73],["181",75,73],["182",79,84],["183",79,85],["184",79,86],["185",79,87],["186",79,88]]},{"roots":[2],"nodes":[[0,888.75,240],[1,1008.75,240],[2,0,0],[3,-108.75,480],[4,1106.25,480],[5,746.25,480],[6,1046.25,720],[7,1166.25,720],[8,1046.25,960],[9,-663.75,720],[10,1766.25,480],[11,1466.25,480],[12,-108.75,720],[13,446.25,720],[14,86.25,960],[15,206.25,960],[16,326.25,960],[17,446.25,960],[18,566.25,960],[19,686.25,960],[20,806.25,960],[21,1406.25,720],[22,1526.25,720],[23,746.25,720],[24,1886.25,480],[25,1466.25,960],[26,1586.25,960],[27,1766.25,720],[28,-1173.75,960],[29,-1053.75,960],[30,-663.75,960],[31,-273.75,960],[32,-153.75,960],[33,-753.75,1200],[34,-633.75,1200],[35,-513.75,1200],[36,-393.75,1200],[37,-193.74999999999997,1200],[38,-1053.75,1200],[39,6.250000000000071,1200],[40,206.25,1200],[41,146.25,1440],[42,266.25,1440],[43,-1173.75,1440],[44,-1053.75,1440],[45,-933.75,1440],[46,-693.75,1440],[47,-93.75,1440],[48,-213.75,1680],[49,-93.75,1680],[50,26.25,1680],[51,-933.75,1680],[52,-813.75,1680],[53,-693.75,1680],[54,-573.75,1680],[55,-453.75,1680],[56,-1728.75,240],[57,-1158.75,240],[58,-588.75,240],[59,-96.24999999999986,240],[60,396.2500000000003,240],[61,1128.75,240],[62,1248.75,240],[63,1368.75,240],[64,1488.75,240],[65,1608.75,240],[66,1728.75,240],[67,-828.75,480],[68,-708.75,480],[69,-588.75,480],[70,-468.75,480],[71,-348.75,480],[72,-2388.75,480],[73,-2268.75,480],[74,-2148.75,480],[75,-2028.75,480],[76,-1908.75,480],[77,-1788.75,480],[78,-1668.75,480],[79,-1548.75,480],[80,-1428.75,480],[81,-1308.75,480],[82,-1188.75,480],[83,-1068.75,480],[84,-2148.75,720],[85,-2388.75,720],[86,-2028.75,720],[87,-1908.75,720],[88,-2388.75,960]],"edges":[["0",2,56],["1",2,57],["2",2,58],["3",2,59],["4",2,60],["5",2,0],["6",2,1],["7",56,72],["8",56,73],["9",56,74],["10",56,75],["11",84,75],["13",85,75],["14",86,75],["15",87,75],["16",85,72],["18",85,88],["19",1,3],["21",1,0],["24",1,4],["25",3,9],["26",3,10],["27",3,0],["28",0,3],["35",3,11],["36",5,0],["37",0,0],["42",0,4],["43",6,4],["44",7,4],["50",0,5],["56",10,9],["57",5,10],["58",10,5],["60",24,10],["61",24,9],["62",6,8],["63",21,11],["64",11,0],["65",22,11],["66",11,22],["68",0,11],["69",25,22],["71",26,22],["76",58,67],["77",68,58],["78",69,58],["80",70,58],["81",71,58],["84",5,5],["89",12,3],["90",10,0],["92",9,28],["93",9,29],["94",9,30],["95",9,31],["96",9,32],["97",9,23],["98",9,27],["99",9,21],["101",33,31],["102",29,31],["103",34,31],["105",35,31],["106",36,31],["107",37,31],["108",38,31],["109",39,31],["110",40,31],["111",24,0],["112",38,29],["113",38,43],["114",44,38],["116",45,38],["117",38,45],["118",76,56],["121",56,77],["123",78,56],["124",56,78],["125",56,79],["127",73,56],["128",74,56],["129",80,56],["130",81,56],["131",56,82],["132",83,56],["133",2,61],["134",2,62],["135",2,63],["136",2,64],["137",2,65],["138",2,66],["140",10,13],["142",10,27],["143",10,11],["146",3,13],["147",14,13],["149",15,13],["150",16,13],["151",17,13],["154",18,13],["155",19,13],["156",20,13],["158",23,5],["162",24,5],["172",46,36],["173",47,36],["174",47,48],["175",47,49],["176",47,50],["179",33,40],["180",41,40],["181",42,40],["182",46,51],["183",46,52],["184",46,53],["185",46,54],["186",46,55]]},{"roots":[2],"nodes":[[0,-1290,240],[1,-945,240],[2,0,0],[3,-600,240],[4,-1440,480],[5,1920,240],[6,-1500,720],[7,-1380,720],[8,-1500,960],[9,-60,240],[10,-1140,480],[11,-660,480],[12,-540,480],[13,-900,720],[14,-780,720],[15,-660,720],[16,-540,720],[17,-420,720],[18,-300,720],[19,-180,720],[20,960,240],[21,-1140,720],[22,720,240],[23,-1200,960],[24,-1080,960],[25,840,240],[26,480,240],[27,600,240],[28,2.6645352591003757e-14,480],[29,120.00000000000003,480],[30,240,480],[31,360,480],[32,560,480],[33,760.0000000000001,480],[34,960,480],[35,900,720],[36,1020,720],[37,1080,240],[38,60.00000000000003,720],[39,660,720],[40,540,960],[41,660,960],[42,780,960],[43,-179.99999999999997,960],[44,-59.99999999999997,960],[45,60.00000000000003,960],[46,180.00000000000003,960],[47,300,960],[48,-1920,240],[49,-1710,240],[50,-1500,240],[51,1200,240],[52,1320,240],[53,1440,240],[54,1560,240],[55,1680,240],[56,1800,240],[57,-2160,480],[58,-2040,480],[59,-1920,480],[60,-1800,480],[61,-1680,480]],"edges":[["0",2,2],["2",2,48],["3",2,49],["4",2,50],["5",2,0],["6",2,1],["19",1,3],["21",1,0],["24",1,4],["25",3,2],["26",3,9],["27",3,0],["28",0,3],["35",3,10],["36",5,0],["37",0,0],["42",0,4],["43",6,4],["44",7,4],["50",0,5],["56",9,2],["57",5,9],["58",9,5],["60",2,9],["62",6,8],["63",20,10],["64",10,0],["65",21,10],["66",10,21],["68",0,10],["69",23,21],["71",24,21],["76",48,57],["77",58,48],["78",59,48],["80",60,48],["81",61,48],["84",5,5],["89",11,3],["90",9,0],["95",2,26],["96",2,27],["97",2,22],["98",2,25],["99",2,20],["101",28,26],["103",29,26],["105",30,26],["106",31,26],["107",32,26],["109",33,26],["110",34,26],["116",37,2],["117",2,37],["133",2,51],["134",2,52],["135",2,53],["136",2,54],["137",2,55],["138",2,56],["140",9,12],["142",9,25],["143",9,10],["146",3,12],["147",13,12],["149",14,12],["150",15,12],["151",16,12],["154",17,12],["155",18,12],["156",19,12],["158",22,5],["162",2,5],["172",38,31],["173",39,31],["174",39,40],["175",39,41],["176",39,42],["179",28,34],["180",35,34],["181",36,34],["182",38,43],["183",38,44],["184",38,45],["185",38,46],["186",38,47]]},{"roots":[2],"nodes":[[0,511.98950048735423,46.97929213703376],[1,392.53858812939956,-192.92480890034207],[2,158.6046410117719,-44.44821150010403],[3,506.6674863957032,-92.54416441538109],[4,616.7781043230403,-294.9677395357707],[5,343.97884516881834,241.86921787902716],[6,753.9164536614707,-518.0433642391046],[7,620.5221676328781,-504.8632592487522],[8,886.4262480845474,-670.1455830341383],[9,393.3848739665497,56.444846599053434],[10,518.8540098469498,256.0228502847308],[11,514.2100141753647,-298.4950586059725],[12,751.9075643130886,-43.40838443807444],[13,780.7558772092852,150.67174152159086],[14,871.0616322057299,117.0541281737424],[15,929.7741581688076,50.36168169064734],[16,953.6754763512369,-33.209642984593046],[17,941.0551403488937,-117.36303599816382],[18,895.194939826445,-188.1050159792568],[19,817.7326960917502,-233.4288382440305],[20,311.1467639734894,142.27011592697534],[21,556.6321685861926,486.33172162145274],[22,166.40848524220522,185.78560117193913],[23,519.2495046269096,679.3552109611936],[24,676.2587170191821,638.7064983106275],[25,326.8796970845309,-122.42545941259547],[26,-352.0939430131628,104.98818142591306],[27,237.13483573263053,-230.41434701295117],[28,-542.2808559309442,187.2340165100883],[29,-426.5619037910869,-81.30886885822572],[30,-498.6797369838108,-36.479072539973856],[31,-719.4115308506936,170.56856635468162],[32,-541.0488674582944,38.75185204576688],[33,-471.49814803345913,250.88247078519646],[34,-441.6875611026415,362.5207326445863],[35,-560.8712494055384,517.1942693308955],[36,-424.56619195501565,559.955946483831],[37,171.6260887444129,-253.73115996499303],[38,-994.057086286656,75.20704016461103],[39,-858.3259554406886,417.89617368914315],[40,-1017.1459971167535,533.0708185367613],[41,-920.1437911595942,606.842928728925],[42,-808.1854958934478,609.434370424869],[43,-1080.097432464374,-102.12888773440211],[44,-1164.7372598531908,-25.14995645481318],[45,-1191.8059672802785,77.61534513962793],[46,-1163.2309739721657,176.5180652550993],[47,-1082.101895197295,247.02726643538026],[48,-87.0947032343156,-441.90798964115606],[49,47.515191422334595,-218.90300496452713],[50,107.31083141047365,-245.67188223426083],[51,91.79966693325372,144.43416415839357],[52,24.611980718070143,107.42879829243077],[53,-22.613571730234582,43.172482549103286],[54,-43.130296681439795,-35.1668716178823],[55,-34.72526731876049,-110.34263261378632],[56,-2.096734841395155,-172.8659762459599],[57,-54.275520913182575,-648.3181125192976],[58,-137.7551749354612,-648.5027519051616],[59,-206.66006053463963,-619.1579248064121],[60,-259.1894195840679,-566.8336197793229],[61,-289.25657913081534,-491.0829773174281]],"edges":[["0",2,2],["2",2,48],["3",2,49],["4",2,50],["5",2,0],["6",2,1],["19",1,3],["21",1,0],["24",1,4],["25",3,2],["26",3,9],["27",3,0],["28",0,3],["35",3,10],["36",5,0],["37",0,0],["42",0,4],["43",6,4],["44",7,4],["50",0,5],["56",9,2],["57",5,9],["58",9,5],["60",2,9],["62",6,8],["63",20,10],["64",10,0],["65",21,10],["66",10,21],["68",0,10],["69",23,21],["71",24,21],["76",48,57],["77",58,48],["78",59,48],["80",60,48],["81",61,48],["84",5,5],["89",11,3],["90",9,0],["95",2,26],["96",2,27],["97",2,22],["98",2,25],["99",2,20],["101",28,26],["103",29,26],["105",30,26],["106",31,26],["107",32,26],["109",33,26],["110",34,26],["116",37,2],["117",2,37],["133",2,51],["134",2,52],["135",2,53],["136",2,54],["137",2,55],["138",2,56],["140",9,12],["142",9,25],["143",9,10],["146",3,12],["147",13,12],["149",14,12],["150",15,12],["151",16,12],["154",17,12],["155",18,12],["156",19,12],["158",22,5],["162",2,5],["172",38,31],["173",39,31],["174",39,40],["175",39,41],["176",39,42],["179",28,34],["180",35,34],["181",36,34],["182",38,43],["183",38,44],["184",38,45],["185",38,46],["186",38,47]]}] \ No newline at end of file +export default [ + { + roots: [2], + nodes: [ + [0, 167.72104636169402, -207.7276952656924], + [1, -15.46306638358638, -136.53613543566118], + [2, 12.803691913485798, -575.2068406888288], + [3, 32.847340891315156, 195.09628369267128], + [4, -4.607706955470989, -319.0007289817301], + [5, -309.79128956143137, -146.65185360558016], + [6, -133.2777650291415, 8.134826654542367], + [7, -558.0243608163536, -182.00377250600016], + [8, -407.05963848842316, -312.93276982662314], + [9, -757.3918475429156, -217.5934882231816], + [10, -303.5313606440518, 494.66140652647624], + [11, -14.167209997961272, 360.50649096578536], + [12, 162.44687378306924, 400.2250137454427], + [13, 195.48693550201284, 295.92591197317404], + [14, -200.18088118586627, 204.63387801823347], + [15, 66.16798905729031, 503.71491789219704], + [16, 229.295987826078, 525.229751303872], + [17, -129.9539235487878, 101.1611782908746], + [18, 403.7602069091975, 162.37233190485958], + [19, 532.1286509548048, 318.646523348587], + [20, 585.0036177106648, 61.68151872090988], + [21, 612.6664258501326, 193.77580438417743], + [22, 460.60920940432857, -30.797457344056166], + [23, 608.630377671933, 125.72158592840378], + [24, 584.9130396568573, 259.1426040541351], + [25, 537.2037441592671, 7.315157929079533], + [26, -86.32905952507748, 537.0448807218161], + [27, 429.1625091241353, 721.9492962348982], + [28, 186.48192661957725, 719.5789403640877], + [29, 116.6374189003526, 675.3186717025194], + [30, -358.2479269398747, 692.5180976542912], + [31, -140.70762138115543, 587.1326422836535], + [32, 599.8298913158488, 829.6011364079188], + [33, 477.07545959341235, 914.5772327837194], + [34, -406.853154221346, 164.2276557370461], + [35, 209.1822227299616, 596.486142816424], + [36, 352.4959654956592, 471.0596230012676], + [37, -24.38434212895891, 560.4746651459843], + [38, -225.1478889445018, 339.1177948404569], + [39, -488.34198800266444, 590.3667877249661], + [40, -437.26921589165676, 653.1109700676932], + [41, -510.6191789563829, 513.8407181979637], + [42, -498.12986374770077, 429.226580097986], + [43, -132.26495798646582, -700.3622949640079], + [44, -264.90709294511987, -837.2245699637447], + [45, 195.22116210286765, -497.1580445031528], + [46, 54.00345093452741, -774.3458379707296], + [47, 208.4928417784296, -646.0107156898673], + [48, -179.71315613184038, -595.6143033306406], + [49, 123.49725981944282, -749.5844590668071], + [50, 218.16204823050032, -575.9538921416527], + [51, -32.52818201210661, -766.9083117672797], + [52, 175.63708086379006, -705.0586418953845], + [53, -154.18158760445388, -486.1675451524723], + [54, -451.5195593511334, -907.3310871228836], + [55, -286.18999972999757, -1034.9540712523105], + [56, -462.35652807041004, -799.7031906629434], + [57, -388.2737551822471, -993.3087518864593], + [58, -176.17009217798085, -1015.4409031125884] + ], + edges: [ + ['1', 2, 43], + ['2', 2, 44], + ['3', 2, 45], + ['4', 2, 46], + ['5', 2, 47], + ['6', 2, 1], + ['19', 1, 3], + ['20', 1, 3], + ['21', 1, 4], + ['22', 1, 0], + ['23', 1, 0], + ['24', 1, 5], + ['25', 3, 10], + ['26', 3, 11], + ['27', 3, 12], + ['28', 12, 3], + ['29', 3, 13], + ['30', 13, 3], + ['31', 14, 3], + ['32', 3, 14], + ['33', 6, 3], + ['34', 3, 15], + ['35', 3, 16], + ['36', 35, 12], + ['37', 36, 12], + ['38', 29, 12], + ['40', 34, 14], + ['41', 34, 14], + ['42', 6, 5], + ['43', 7, 5], + ['44', 8, 5], + ['56', 11, 10], + ['59', 37, 11], + ['60', 31, 11], + ['61', 31, 10], + ['62', 7, 9], + ['63', 26, 16], + ['64', 16, 13], + ['65', 27, 16], + ['66', 16, 27], + ['67', 16, 28], + ['68', 29, 16], + ['69', 32, 27], + ['70', 32, 27], + ['71', 33, 27], + ['72', 15, 28], + ['73', 29, 15], + ['76', 44, 54], + ['77', 55, 44], + ['78', 56, 44], + ['79', 56, 44], + ['80', 57, 44], + ['81', 58, 44], + ['89', 17, 3], + ['90', 11, 12], + ['91', 16, 12], + ['92', 10, 39], + ['93', 10, 40], + ['94', 10, 41], + ['96', 10, 42], + ['97', 10, 30], + ['98', 10, 38], + ['99', 10, 26], + ['100', 10, 26], + ['111', 31, 15], + ['133', 2, 48], + ['134', 2, 49], + ['135', 2, 50], + ['136', 2, 51], + ['137', 2, 52], + ['138', 2, 53], + ['139', 11, 15], + ['140', 11, 18], + ['142', 11, 38], + ['143', 11, 16], + ['144', 11, 13], + ['145', 11, 14], + ['146', 3, 18], + ['147', 19, 18], + ['148', 19, 18], + ['149', 20, 18], + ['150', 21, 18], + ['151', 22, 18], + ['152', 21, 18], + ['153', 22, 18], + ['154', 23, 18], + ['155', 24, 18], + ['156', 25, 18], + ['157', 22, 18] + ] + }, + { + roots: [2], + nodes: [ + [0, 215.45175107325585, 26.71586150599214], + [1, 29.58133869124958, 77.13776993981516], + [2, 196.37456148484037, -449.0872947730194], + [3, -44.33613536157846, 446.06736048005666], + [4, -94.52241478382683, -69.80377596377164], + [5, -263.51437911358425, 42.909394771634446], + [6, -170.05080503029262, 250.90057124569717], + [7, -469.1743926238866, -56.62206444317837], + [8, -93.0960008550333, 77.16172145953959], + [9, -630.0280347324175, -167.85537581731674], + [10, -332.24471691187756, 816.9131584430698], + [11, -95.68380014629749, 609.0798947541977], + [12, 80.84257804077987, 660.8205344645327], + [13, 114.79742437152183, 559.0932478468833], + [14, -375.4082055775735, 381.11605475783983], + [15, 6.509288550154733, 752.2876125983524], + [16, 170.85117991674144, 798.5017419677168], + [17, -228.31381251892296, 399.3875019016546], + [18, 366.23471835505114, 502.2790786316326], + [19, 475.74046496189095, 675.5892518432885], + [20, 567.637457824146, 446.0665017772265], + [21, 569.6216315580004, 572.7003729126745], + [22, 467.72753152409507, 329.2176553977259], + [23, 576.7548417625477, 509.8783551501], + [24, 532.4593598621225, 627.4529287571337], + [25, 533.9812121414792, 384.45824813353306], + [26, -116.8193825635757, 914.7068646798282], + [27, 381.7904183293979, 1003.1787803049873], + [28, 119.94560823958889, 983.7601712110107], + [29, 49.654691392461004, 932.7791361934693], + [30, -355.2423498950982, 1020.3197243219716], + [31, -158.93940985627384, 830.4898303555931], + [32, 567.4379743408273, 1093.268432292875], + [33, 470.18499161618513, 1183.1482024468355], + [34, -889.7510859527961, 112.87998456106632], + [35, -578.294221110845, 374.32292291511556], + [36, -1112.3520007451941, -60.629005537476296], + [37, -881.1189657973954, -74.48440338871288], + [38, -1047.0182452118645, 25.644415743126284], + [39, -1283.6988639300155, -168.8521583891371], + [40, -1375.3936718627406, -16.786849973048238], + [41, -1135.0679737133346, -254.99663419322502], + [42, -1042.6598429953515, -259.8517286101027], + [43, -1224.2228417482033, -258.0883231781057], + [44, -1389.0195515766745, 172.18779626645986], + [45, -1534.422236979785, -124.8601260569877], + [46, -1534.2258236252833, 87.76293536723767], + [47, 136.71992444440488, 855.7846394201147], + [48, 268.4071113181607, 734.1664070045248], + [49, -236.7469356203077, 735.7501048903397], + [50, -312.9050041654951, 625.618315743539], + [51, -502.78734784951723, 934.0833519653593], + [52, -441.7720632527818, 991.7883597437803], + [53, -534.9423970330132, 857.1938631749126], + [54, -529.8107182618362, 766.5747936960702], + [55, 775.1445956423936, -616.7583014233294], + [56, 0.6658682409382449, -417.5487641006146], + [57, -156.43035505159287, -771.8020531937121], + [58, 380.1233267910755, -401.7657598767047], + [59, 33.639353664603725, -568.2232393682073], + [60, 235.54872683775437, -644.8391407504084], + [61, 44.90382998730693, -330.9121257745525], + [62, 89.29929443411467, -620.4966511662319], + [63, 317.7525735597637, -595.8525529577748], + [64, 0.860203160067491, -498.05451283052207], + [65, 158.4551292314752, -647.8064507987972], + [66, 198.60169324539072, -260.8057814892629], + [67, -341.49072530265596, -862.0852236545044], + [68, -221.11597823500512, -967.3976484779417], + [69, -362.1980540000457, -773.8239589168255], + [70, -293.0303157395337, -927.9130113481433], + [71, -131.09177656741778, -973.058849017838], + [72, 611.5300642657996, -558.4801758993892], + [73, 967.1582386735323, -693.629613856519], + [74, 839.4458727330817, -421.8834412365479], + [75, 714.5217665740162, -955.9866521344375], + [76, 979.0877028047901, -559.0420167973672], + [77, 757.2274937430104, -418.36028276289164], + [78, 857.2973258441156, -799.4885774710193], + [79, 947.1837864184909, -501.80235562965805], + [80, 753.0168454242894, -807.8268566861983], + [81, 980.6078752796893, -625.5079847863651], + [82, 902.1771606664835, -453.8821433919127], + [83, 924.4155474758683, -753.7943151138023], + [84, 802.435597024264, -1135.4244262435723], + [85, 586.2958563464142, -783.4691835300341], + [86, 675.3839459766889, -1152.4905935816926], + [87, 574.8000442258798, -1100.8442348235212], + [88, 512.6655686339873, -618.125617310287] + ], + edges: [ + ['0', 2, 55], + ['1', 2, 56], + ['2', 2, 57], + ['3', 2, 58], + ['4', 2, 59], + ['5', 2, 60], + ['6', 2, 1], + ['7', 55, 72], + ['8', 55, 73], + ['9', 55, 74], + ['10', 55, 75], + ['11', 84, 75], + ['12', 84, 75], + ['13', 85, 75], + ['14', 86, 75], + ['15', 87, 75], + ['16', 85, 72], + ['17', 85, 72], + ['18', 85, 88], + ['19', 1, 3], + ['20', 1, 3], + ['21', 1, 4], + ['22', 1, 0], + ['23', 1, 0], + ['24', 1, 5], + ['25', 3, 10], + ['26', 3, 11], + ['27', 3, 12], + ['28', 12, 3], + ['29', 3, 13], + ['30', 13, 3], + ['31', 14, 3], + ['32', 3, 14], + ['33', 6, 3], + ['34', 3, 15], + ['35', 3, 16], + ['36', 47, 12], + ['37', 48, 12], + ['38', 29, 12], + ['39', 34, 14], + ['40', 35, 14], + ['41', 35, 14], + ['42', 6, 5], + ['43', 7, 5], + ['44', 8, 5], + ['45', 36, 34], + ['46', 36, 34], + ['47', 36, 34], + ['48', 37, 34], + ['49', 38, 34], + ['50', 36, 39], + ['51', 36, 40], + ['52', 36, 39], + ['53', 36, 41], + ['54', 36, 42], + ['55', 36, 43], + ['56', 11, 10], + ['59', 49, 11], + ['60', 31, 11], + ['61', 31, 10], + ['62', 7, 9], + ['63', 26, 16], + ['64', 16, 13], + ['65', 27, 16], + ['66', 16, 27], + ['67', 16, 28], + ['68', 29, 16], + ['69', 32, 27], + ['70', 32, 27], + ['71', 33, 27], + ['72', 15, 28], + ['73', 29, 15], + ['76', 57, 67], + ['77', 68, 57], + ['78', 69, 57], + ['79', 69, 57], + ['80', 70, 57], + ['81', 71, 57], + ['82', 36, 42], + ['83', 42, 43], + ['84', 40, 39], + ['85', 44, 40], + ['86', 45, 40], + ['87', 40, 46], + ['88', 40, 46], + ['89', 17, 3], + ['90', 11, 12], + ['91', 16, 12], + ['92', 10, 51], + ['93', 10, 52], + ['94', 10, 53], + ['96', 10, 54], + ['97', 10, 30], + ['98', 10, 50], + ['99', 10, 26], + ['100', 10, 26], + ['111', 31, 15], + ['118', 76, 55], + ['119', 76, 55], + ['120', 76, 55], + ['121', 55, 77], + ['122', 55, 77], + ['123', 78, 55], + ['124', 55, 78], + ['125', 55, 79], + ['126', 55, 72], + ['127', 73, 55], + ['128', 74, 55], + ['129', 80, 55], + ['130', 81, 55], + ['131', 55, 82], + ['132', 83, 55], + ['133', 2, 61], + ['134', 2, 62], + ['135', 2, 63], + ['136', 2, 64], + ['137', 2, 65], + ['138', 2, 66], + ['139', 11, 15], + ['140', 11, 18], + ['142', 11, 50], + ['143', 11, 16], + ['144', 11, 13], + ['145', 11, 14], + ['146', 3, 18], + ['147', 19, 18], + ['148', 19, 18], + ['149', 20, 18], + ['150', 21, 18], + ['151', 22, 18], + ['152', 21, 18], + ['153', 22, 18], + ['154', 23, 18], + ['155', 24, 18], + ['156', 25, 18], + ['157', 22, 18] + ] + }, + { + roots: [2], + nodes: [ + [0, 233.7022477498847, -454.59650491778575], + [1, 324.748044129521, -282.49054249460414], + [2, 335.88161982789467, -869.2907080710337], + [3, 326.0986130583235, 156.52794620865885], + [4, 152.7300402633379, -378.7693898085594], + [5, 94.32391763033745, -231.90148035596482], + [6, 244.21928252640944, -50.87565195460029], + [7, -115.3050083154925, -336.1438280281784], + [8, 280.2877282886571, -208.56779230223296], + [9, -290.52158529045875, -430.3681683983745], + [10, -103.2205126447811, 463.15830364320465], + [11, 265.71229394069087, 457.1038001938242], + [12, 439.6523231520605, 399.2061477180681], + [13, 465.18417926950804, 312.808515620205], + [14, -10.71312339697304, 38.76463806332332], + [15, 459.57797028143943, 476.4909419068801], + [16, 551.5297975001623, 557.6023428506336], + [17, 174.3181607518551, 248.33638571553618], + [18, 743.1950051722011, 253.23860114995992], + [19, 900.8795179107341, 390.0582975109733], + [20, 909.3137103686616, 131.2994302908232], + [21, 957.5780325268548, 258.4928313112434], + [22, 752.5456756230957, 57.37582575444566], + [23, 943.2514887310101, 192.57502966592946], + [24, 940.1851938648964, 325.17127679446], + [25, 848.0820494321712, 81.7213501082269], + [26, 159.59298247938926, 503.97550681469596], + [27, 755.7973407148045, 807.4514173088011], + [28, 713.7756623726601, 582.7233221843998], + [29, 437.01092458415474, 745.8092644575536], + [30, 166.68630067202355, 804.3146957947014], + [31, 287.25091439496174, 883.118003690516], + [32, 134.24951237457475, 1186.8945919089022], + [33, -11.394878185335447, 1336.989083318247], + [34, 162.86440514546368, 1387.791619290047], + [35, 64.34638221325365, 1378.352958470074], + [36, -54.52608380158726, 1260.811261569419], + [37, -28.666576508659094, 673.5748407781929], + [38, 16.26405984925956, 936.2614190605328], + [39, 141.82257801163283, 595.16348120442], + [40, 116.18511624807712, 997.5715661766153], + [41, -26.284435150623935, 840.3747249003461], + [42, 916.3065642282462, 944.8045805442017], + [43, 817.269546538869, 1005.3152540075943], + [44, -695.4982971708978, -470.3563687926702], + [45, -190.72947287526117, -61.020338213274464], + [46, -966.6560711513413, -656.32361503526], + [47, -695.2789760209006, -666.9790303007251], + [48, -799.3085218675159, -633.8913846297285], + [49, -1178.6041720530218, -681.8864246092722], + [50, -1220.1235763840507, -514.5515555475413], + [51, -1086.6100365076434, -815.5966851666716], + [52, -1013.6821807343009, -872.0221621285215], + [53, -1169.4799695426, -776.8615546255003], + [54, -1039.8499631975906, -504.22698602274954], + [55, -1337.090687399752, -363.1550178293125], + [56, -1131.9155964037618, -349.42118503786236], + [57, 339.2160819607482, 565.9129436884933], + [58, 511.1884521348195, 598.3730549973868], + [59, 397.1202368557457, 607.2969052457271], + [60, 68.00698597344694, 371.6693329535133], + [61, -291.90820543439116, 400.20927607133916], + [62, -412.8584749361372, 572.838363028762], + [63, -245.53912949032457, 319.2875661777855], + [64, -672.2663584750309, 551.6448593575175], + [65, -163.08374115073534, 274.1734451574828], + [66, -857.6576644661523, 457.3776666723125], + [67, -733.4713347164874, 366.055228058043], + [68, -786.291986959178, 706.4840478385266], + [69, -974.9695233136962, 790.0798045778638], + [70, -868.6864634438047, 531.3827251606493], + [71, -537.8044350446917, 793.5401422534312], + [72, -856.8178054885337, 618.5994681117058], + [73, -905.2584386499376, 306.4882214536686], + [74, -1018.782249819129, 140.54617890362456], + [75, -1095.2666398777146, 233.0136752121978], + [76, -466.51986691473803, 979.4722860010445], + [77, -559.5005240170766, 993.2760369146254], + [78, -389.0727240277773, 919.1824376462508], + [79, -997.4605801012863, 1090.218573133665], + [80, -1282.8987619880734, 784.3067907648234], + [81, -1378.4785198678624, 614.4307487184786], + [82, -1476.8598855025025, 816.8943599490177], + [83, -1456.6218217483593, 693.8360281112311], + [84, -873.5758664710296, 1249.7082303355583], + [85, -1030.8539473291446, 1287.2034606140896], + [86, -822.6629027186182, 1177.18786072456], + [87, -945.2912603879566, 1286.2432646843456], + [88, -1123.318891461193, 1239.3302505306772], + [89, 957.8568377220191, -841.4020979405959], + [90, 134.29658252202782, -918.8660919456792], + [91, -24.679299174615995, -1245.3646633918013], + [92, 480.44850183788924, -998.3388924272715], + [93, 196.26976338963144, -1026.3794488863725], + [94, 362.72574759130686, -1077.3928530901499], + [95, 132.24265622507764, -850.1306812756302], + [96, 246.8824902093347, -1059.2577135259694], + [97, 422.84572210204215, -1053.0719116237176], + [98, 157.12860771128226, -978.0847052183498], + [99, 303.1704168834132, -1077.1211817721485], + [100, 165.09955624621935, -773.0046002312355], + [101, -203.90021754175828, -1350.988887639169], + [102, -77.37335374142287, -1446.0377165155185], + [103, -231.9777009201632, -1267.8453001445175], + [104, -151.52991896284823, -1411.742534961607], + [105, 13.081521152628113, -1445.9971775107547], + [106, 849.5307567903341, -670.8242971257571], + [107, 1159.6081391054138, -899.4815244013197], + [108, 1025.201003348417, -647.210637769846], + [109, 807.9953071409321, -1005.91102721844], + [110, 1161.8639959838304, -771.8855157117009], + [111, 948.7115873271932, -643.0353613927242], + [112, 1072.476901653455, -1012.2204352172103], + [113, 1127.681511363471, -721.2487836111455], + [114, 991.3051939141711, -1038.1773293535155], + [115, 1165.2713135329655, -834.8910224263259], + [116, 1084.4190820970127, -677.0569322838776], + [117, 1125.8686138075072, -960.0379016485231], + [118, 843.4438436470734, -1203.7605461081953], + [119, 693.7930173478641, -766.8836633365528], + [120, 703.7652416006332, -1169.9222667116353], + [121, 652.8870889869919, -911.4853180423877], + [122, 545.1003677612161, -643.0348254441968] + ], + edges: [ + ['0', 2, 89], + ['1', 2, 90], + ['2', 2, 91], + ['3', 2, 92], + ['4', 2, 93], + ['5', 2, 94], + ['6', 2, 1], + ['7', 89, 106], + ['8', 89, 107], + ['9', 89, 108], + ['10', 89, 109], + ['11', 118, 109], + ['12', 118, 109], + ['13', 119, 109], + ['14', 120, 109], + ['15', 121, 109], + ['16', 119, 106], + ['17', 119, 106], + ['18', 119, 122], + ['19', 1, 3], + ['20', 1, 3], + ['21', 1, 4], + ['22', 1, 0], + ['23', 1, 0], + ['24', 1, 5], + ['25', 3, 10], + ['26', 3, 11], + ['27', 3, 12], + ['28', 12, 3], + ['29', 3, 13], + ['30', 13, 3], + ['31', 14, 3], + ['32', 3, 14], + ['33', 6, 3], + ['34', 3, 15], + ['35', 3, 16], + ['36', 57, 12], + ['37', 58, 12], + ['38', 29, 12], + ['39', 44, 14], + ['40', 45, 14], + ['41', 45, 14], + ['42', 6, 5], + ['43', 7, 5], + ['44', 8, 5], + ['45', 46, 44], + ['46', 46, 44], + ['47', 46, 44], + ['48', 47, 44], + ['49', 48, 44], + ['50', 46, 49], + ['51', 46, 50], + ['52', 46, 49], + ['53', 46, 51], + ['54', 46, 52], + ['55', 46, 53], + ['56', 11, 10], + ['57', 30, 11], + ['58', 11, 30], + ['59', 59, 11], + ['60', 39, 11], + ['61', 39, 10], + ['62', 7, 9], + ['63', 26, 16], + ['64', 16, 13], + ['65', 27, 16], + ['66', 16, 27], + ['67', 16, 28], + ['68', 29, 16], + ['69', 42, 27], + ['70', 42, 27], + ['71', 43, 27], + ['72', 15, 28], + ['73', 29, 15], + ['74', 29, 30], + ['75', 29, 31], + ['76', 91, 101], + ['77', 102, 91], + ['78', 103, 91], + ['79', 103, 91], + ['80', 104, 91], + ['81', 105, 91], + ['82', 46, 52], + ['83', 52, 53], + ['84', 50, 49], + ['85', 54, 50], + ['86', 55, 50], + ['87', 50, 56], + ['88', 50, 56], + ['89', 17, 3], + ['90', 11, 12], + ['91', 16, 12], + ['92', 10, 61], + ['93', 10, 62], + ['94', 10, 63], + ['95', 10, 64], + ['96', 10, 65], + ['97', 10, 37], + ['98', 10, 60], + ['99', 10, 26], + ['100', 10, 26], + ['101', 66, 64], + ['102', 62, 64], + ['103', 67, 64], + ['104', 67, 64], + ['105', 68, 64], + ['106', 69, 64], + ['107', 70, 64], + ['108', 71, 64], + ['109', 72, 64], + ['110', 73, 64], + ['111', 39, 15], + ['112', 71, 62], + ['113', 71, 76], + ['114', 77, 71], + ['115', 77, 71], + ['116', 78, 71], + ['117', 71, 78], + ['118', 110, 89], + ['119', 110, 89], + ['120', 110, 89], + ['121', 89, 111], + ['122', 89, 111], + ['123', 112, 89], + ['124', 89, 112], + ['125', 89, 113], + ['126', 89, 106], + ['127', 107, 89], + ['128', 108, 89], + ['129', 114, 89], + ['130', 115, 89], + ['131', 89, 116], + ['132', 117, 89], + ['133', 2, 95], + ['134', 2, 96], + ['135', 2, 97], + ['136', 2, 98], + ['137', 2, 99], + ['138', 2, 100], + ['139', 11, 15], + ['140', 11, 18], + ['141', 11, 31], + ['142', 11, 60], + ['143', 11, 16], + ['144', 11, 13], + ['145', 11, 14], + ['146', 3, 18], + ['147', 19, 18], + ['148', 19, 18], + ['149', 20, 18], + ['150', 21, 18], + ['151', 22, 18], + ['152', 21, 18], + ['153', 22, 18], + ['154', 23, 18], + ['155', 24, 18], + ['156', 25, 18], + ['157', 22, 18], + ['158', 37, 30], + ['159', 30, 31], + ['160', 30, 32], + ['161', 38, 30], + ['162', 39, 30], + ['163', 40, 30], + ['164', 41, 30], + ['165', 31, 32], + ['166', 33, 32], + ['167', 33, 32], + ['168', 34, 32], + ['169', 35, 32], + ['170', 36, 32], + ['171', 34, 32], + ['172', 79, 69], + ['173', 80, 69], + ['174', 80, 81], + ['175', 80, 82], + ['176', 80, 83], + ['177', 80, 82], + ['178', 80, 82], + ['179', 66, 73], + ['180', 74, 73], + ['181', 75, 73], + ['182', 79, 84], + ['183', 79, 85], + ['184', 79, 86], + ['185', 79, 87], + ['186', 79, 88] + ] + }, + { + roots: [2], + nodes: [ + [0, 1716.2499999999995, 480], + [1, 1308.75, 240], + [2, 0, 0], + [3, 86.25, 480], + [4, 901.2499999999998, 480], + [5, 2531.25, 480], + [6, 881.25, 720], + [7, 2471.25, 720], + [8, 2591.25, 720], + [9, 2471.25, 960], + [10, -1698.75, 720], + [11, -168.75, 720], + [12, 311.25, 720], + [13, 521.25, 720], + [14, 731.25, 720], + [15, 1031.25, 720], + [16, 1271.25, 720], + [17, 1571.25, 720], + [18, 1871.25, 720], + [19, 1511.25, 960], + [20, 1631.25, 960], + [21, 1751.25, 960], + [22, 1871.25, 960], + [23, 1991.25, 960], + [24, 2111.25, 960], + [25, 2231.25, 960], + [26, -948.75, 960], + [27, 1271.25, 960], + [28, 1031.25, 960], + [29, 431.25, 960], + [30, -288.75, 960], + [31, -48.75, 960], + [32, -468.75, 1200], + [33, -648.75, 1440], + [34, -528.75, 1440], + [35, -408.75, 1440], + [36, -288.75, 1440], + [37, -1188.75, 960], + [38, -348.75, 1200], + [39, -2448.75, 960], + [40, -228.75, 1200], + [41, -108.75, 1200], + [42, 1211.25, 1200], + [43, 1331.25, 1200], + [44, 671.25, 960], + [45, 791.25, 960], + [46, 551.25, 1200], + [47, 671.25, 1200], + [48, 791.25, 1200], + [49, 311.25, 1440], + [50, 431.25, 1440], + [51, 551.25, 1440], + [52, 671.25, 1440], + [53, 791.25, 1440], + [54, 311.25, 1680], + [55, 431.25, 1680], + [56, 551.25, 1680], + [57, 191.25, 960], + [58, 311.25, 960], + [59, -168.75, 960], + [60, -1068.75, 960], + [61, -2328.75, 960], + [62, -2208.75, 960], + [63, -1818.75, 960], + [64, -1428.75, 960], + [65, -1308.75, 960], + [66, -1908.75, 1200], + [67, -1788.75, 1200], + [68, -1668.75, 1200], + [69, -1548.75, 1200], + [70, -1348.7499999999998, 1200], + [71, -2208.75, 1200], + [72, -1148.75, 1200], + [73, -948.75, 1200], + [74, -1008.75, 1440], + [75, -888.75, 1440], + [76, -2328.75, 1440], + [77, -2208.75, 1440], + [78, -2088.75, 1440], + [79, -1848.75, 1440], + [80, -1248.75, 1440], + [81, -1368.75, 1680], + [82, -1248.75, 1680], + [83, -1128.75, 1680], + [84, -2088.75, 1680], + [85, -1968.75, 1680], + [86, -1848.75, 1680], + [87, -1728.75, 1680], + [88, -1608.75, 1680], + [89, -2028.75, 240], + [90, -1376.2499999999998, 240], + [91, -723.75, 240], + [92, -215.625, 240], + [93, 292.5, 240], + [94, 800.625, 240], + [95, 1428.75, 240], + [96, 1548.75, 240], + [97, 1668.75, 240], + [98, 1788.75, 240], + [99, 1908.75, 240], + [100, 2028.75, 240], + [101, -963.7499999999998, 480], + [102, -843.7499999999998, 480], + [103, -723.7499999999998, 480], + [104, -603.7499999999998, 480], + [105, -483.7499999999998, 480], + [106, -2688.75, 480], + [107, -2568.75, 480], + [108, -2448.75, 480], + [109, -2328.75, 480], + [110, -2208.75, 480], + [111, -2088.75, 480], + [112, -1968.75, 480], + [113, -1848.75, 480], + [114, -1728.75, 480], + [115, -1608.75, 480], + [116, -1488.75, 480], + [117, -1368.75, 480], + [118, -2448.75, 720], + [119, -2688.75, 720], + [120, -2328.75, 720], + [121, -2208.75, 720], + [122, -2688.75, 960] + ], + edges: [ + ['0', 2, 89], + ['1', 2, 90], + ['2', 2, 91], + ['3', 2, 92], + ['4', 2, 93], + ['5', 2, 94], + ['6', 2, 1], + ['7', 89, 106], + ['8', 89, 107], + ['9', 89, 108], + ['10', 89, 109], + ['11', 118, 109], + ['12', 118, 109], + ['13', 119, 109], + ['14', 120, 109], + ['15', 121, 109], + ['16', 119, 106], + ['17', 119, 106], + ['18', 119, 122], + ['19', 1, 3], + ['20', 1, 3], + ['21', 1, 4], + ['22', 1, 0], + ['23', 1, 0], + ['24', 1, 5], + ['25', 3, 10], + ['26', 3, 11], + ['27', 3, 12], + ['28', 12, 3], + ['29', 3, 13], + ['30', 13, 3], + ['31', 14, 3], + ['32', 3, 14], + ['33', 6, 3], + ['34', 3, 15], + ['35', 3, 16], + ['36', 57, 12], + ['37', 58, 12], + ['38', 29, 12], + ['39', 44, 14], + ['40', 45, 14], + ['41', 45, 14], + ['42', 6, 5], + ['43', 7, 5], + ['44', 8, 5], + ['45', 46, 44], + ['46', 46, 44], + ['47', 46, 44], + ['48', 47, 44], + ['49', 48, 44], + ['50', 46, 49], + ['51', 46, 50], + ['52', 46, 49], + ['53', 46, 51], + ['54', 46, 52], + ['55', 46, 53], + ['56', 11, 10], + ['57', 30, 11], + ['58', 11, 30], + ['59', 59, 11], + ['60', 39, 11], + ['61', 39, 10], + ['62', 7, 9], + ['63', 26, 16], + ['64', 16, 13], + ['65', 27, 16], + ['66', 16, 27], + ['67', 16, 28], + ['68', 29, 16], + ['69', 42, 27], + ['70', 42, 27], + ['71', 43, 27], + ['72', 15, 28], + ['73', 29, 15], + ['74', 29, 30], + ['75', 29, 31], + ['76', 91, 101], + ['77', 102, 91], + ['78', 103, 91], + ['79', 103, 91], + ['80', 104, 91], + ['81', 105, 91], + ['82', 46, 52], + ['83', 52, 53], + ['84', 50, 49], + ['85', 54, 50], + ['86', 55, 50], + ['87', 50, 56], + ['88', 50, 56], + ['89', 17, 3], + ['90', 11, 12], + ['91', 16, 12], + ['92', 10, 61], + ['93', 10, 62], + ['94', 10, 63], + ['95', 10, 64], + ['96', 10, 65], + ['97', 10, 37], + ['98', 10, 60], + ['99', 10, 26], + ['100', 10, 26], + ['101', 66, 64], + ['102', 62, 64], + ['103', 67, 64], + ['104', 67, 64], + ['105', 68, 64], + ['106', 69, 64], + ['107', 70, 64], + ['108', 71, 64], + ['109', 72, 64], + ['110', 73, 64], + ['111', 39, 15], + ['112', 71, 62], + ['113', 71, 76], + ['114', 77, 71], + ['115', 77, 71], + ['116', 78, 71], + ['117', 71, 78], + ['118', 110, 89], + ['119', 110, 89], + ['120', 110, 89], + ['121', 89, 111], + ['122', 89, 111], + ['123', 112, 89], + ['124', 89, 112], + ['125', 89, 113], + ['126', 89, 106], + ['127', 107, 89], + ['128', 108, 89], + ['129', 114, 89], + ['130', 115, 89], + ['131', 89, 116], + ['132', 117, 89], + ['133', 2, 95], + ['134', 2, 96], + ['135', 2, 97], + ['136', 2, 98], + ['137', 2, 99], + ['138', 2, 100], + ['139', 11, 15], + ['140', 11, 18], + ['141', 11, 31], + ['142', 11, 60], + ['143', 11, 16], + ['144', 11, 13], + ['145', 11, 14], + ['146', 3, 18], + ['147', 19, 18], + ['148', 19, 18], + ['149', 20, 18], + ['150', 21, 18], + ['151', 22, 18], + ['152', 21, 18], + ['153', 22, 18], + ['154', 23, 18], + ['155', 24, 18], + ['156', 25, 18], + ['157', 22, 18], + ['158', 37, 30], + ['159', 30, 31], + ['160', 30, 32], + ['161', 38, 30], + ['162', 39, 30], + ['163', 40, 30], + ['164', 41, 30], + ['165', 31, 32], + ['166', 33, 32], + ['167', 33, 32], + ['168', 34, 32], + ['169', 35, 32], + ['170', 36, 32], + ['171', 34, 32], + ['172', 79, 69], + ['173', 80, 69], + ['174', 80, 81], + ['175', 80, 82], + ['176', 80, 83], + ['177', 80, 82], + ['178', 80, 82], + ['179', 66, 73], + ['180', 74, 73], + ['181', 75, 73], + ['182', 79, 84], + ['183', 79, 85], + ['184', 79, 86], + ['185', 79, 87], + ['186', 79, 88] + ] + }, + { + roots: [2], + nodes: [ + [0, 888.75, 240], + [1, 1008.75, 240], + [2, 0, 0], + [3, -108.75, 480], + [4, 1106.25, 480], + [5, 746.25, 480], + [6, 1046.25, 720], + [7, 1166.25, 720], + [8, 1046.25, 960], + [9, -663.75, 720], + [10, 1766.25, 480], + [11, 1466.25, 480], + [12, -108.75, 720], + [13, 446.25, 720], + [14, 86.25, 960], + [15, 206.25, 960], + [16, 326.25, 960], + [17, 446.25, 960], + [18, 566.25, 960], + [19, 686.25, 960], + [20, 806.25, 960], + [21, 1406.25, 720], + [22, 1526.25, 720], + [23, 746.25, 720], + [24, 1886.25, 480], + [25, 1466.25, 960], + [26, 1586.25, 960], + [27, 1766.25, 720], + [28, -1173.75, 960], + [29, -1053.75, 960], + [30, -663.75, 960], + [31, -273.75, 960], + [32, -153.75, 960], + [33, -753.75, 1200], + [34, -633.75, 1200], + [35, -513.75, 1200], + [36, -393.75, 1200], + [37, -193.74999999999997, 1200], + [38, -1053.75, 1200], + [39, 6.250000000000071, 1200], + [40, 206.25, 1200], + [41, 146.25, 1440], + [42, 266.25, 1440], + [43, -1173.75, 1440], + [44, -1053.75, 1440], + [45, -933.75, 1440], + [46, -693.75, 1440], + [47, -93.75, 1440], + [48, -213.75, 1680], + [49, -93.75, 1680], + [50, 26.25, 1680], + [51, -933.75, 1680], + [52, -813.75, 1680], + [53, -693.75, 1680], + [54, -573.75, 1680], + [55, -453.75, 1680], + [56, -1728.75, 240], + [57, -1158.75, 240], + [58, -588.75, 240], + [59, -96.24999999999986, 240], + [60, 396.2500000000003, 240], + [61, 1128.75, 240], + [62, 1248.75, 240], + [63, 1368.75, 240], + [64, 1488.75, 240], + [65, 1608.75, 240], + [66, 1728.75, 240], + [67, -828.75, 480], + [68, -708.75, 480], + [69, -588.75, 480], + [70, -468.75, 480], + [71, -348.75, 480], + [72, -2388.75, 480], + [73, -2268.75, 480], + [74, -2148.75, 480], + [75, -2028.75, 480], + [76, -1908.75, 480], + [77, -1788.75, 480], + [78, -1668.75, 480], + [79, -1548.75, 480], + [80, -1428.75, 480], + [81, -1308.75, 480], + [82, -1188.75, 480], + [83, -1068.75, 480], + [84, -2148.75, 720], + [85, -2388.75, 720], + [86, -2028.75, 720], + [87, -1908.75, 720], + [88, -2388.75, 960] + ], + edges: [ + ['0', 2, 56], + ['1', 2, 57], + ['2', 2, 58], + ['3', 2, 59], + ['4', 2, 60], + ['5', 2, 0], + ['6', 2, 1], + ['7', 56, 72], + ['8', 56, 73], + ['9', 56, 74], + ['10', 56, 75], + ['11', 84, 75], + ['13', 85, 75], + ['14', 86, 75], + ['15', 87, 75], + ['16', 85, 72], + ['18', 85, 88], + ['19', 1, 3], + ['21', 1, 0], + ['24', 1, 4], + ['25', 3, 9], + ['26', 3, 10], + ['27', 3, 0], + ['28', 0, 3], + ['35', 3, 11], + ['36', 5, 0], + ['37', 0, 0], + ['42', 0, 4], + ['43', 6, 4], + ['44', 7, 4], + ['50', 0, 5], + ['56', 10, 9], + ['57', 5, 10], + ['58', 10, 5], + ['60', 24, 10], + ['61', 24, 9], + ['62', 6, 8], + ['63', 21, 11], + ['64', 11, 0], + ['65', 22, 11], + ['66', 11, 22], + ['68', 0, 11], + ['69', 25, 22], + ['71', 26, 22], + ['76', 58, 67], + ['77', 68, 58], + ['78', 69, 58], + ['80', 70, 58], + ['81', 71, 58], + ['84', 5, 5], + ['89', 12, 3], + ['90', 10, 0], + ['92', 9, 28], + ['93', 9, 29], + ['94', 9, 30], + ['95', 9, 31], + ['96', 9, 32], + ['97', 9, 23], + ['98', 9, 27], + ['99', 9, 21], + ['101', 33, 31], + ['102', 29, 31], + ['103', 34, 31], + ['105', 35, 31], + ['106', 36, 31], + ['107', 37, 31], + ['108', 38, 31], + ['109', 39, 31], + ['110', 40, 31], + ['111', 24, 0], + ['112', 38, 29], + ['113', 38, 43], + ['114', 44, 38], + ['116', 45, 38], + ['117', 38, 45], + ['118', 76, 56], + ['121', 56, 77], + ['123', 78, 56], + ['124', 56, 78], + ['125', 56, 79], + ['127', 73, 56], + ['128', 74, 56], + ['129', 80, 56], + ['130', 81, 56], + ['131', 56, 82], + ['132', 83, 56], + ['133', 2, 61], + ['134', 2, 62], + ['135', 2, 63], + ['136', 2, 64], + ['137', 2, 65], + ['138', 2, 66], + ['140', 10, 13], + ['142', 10, 27], + ['143', 10, 11], + ['146', 3, 13], + ['147', 14, 13], + ['149', 15, 13], + ['150', 16, 13], + ['151', 17, 13], + ['154', 18, 13], + ['155', 19, 13], + ['156', 20, 13], + ['158', 23, 5], + ['162', 24, 5], + ['172', 46, 36], + ['173', 47, 36], + ['174', 47, 48], + ['175', 47, 49], + ['176', 47, 50], + ['179', 33, 40], + ['180', 41, 40], + ['181', 42, 40], + ['182', 46, 51], + ['183', 46, 52], + ['184', 46, 53], + ['185', 46, 54], + ['186', 46, 55] + ] + }, + { + roots: [2], + nodes: [ + [0, -1290, 240], + [1, -945, 240], + [2, 0, 0], + [3, -600, 240], + [4, -1440, 480], + [5, 1920, 240], + [6, -1500, 720], + [7, -1380, 720], + [8, -1500, 960], + [9, -60, 240], + [10, -1140, 480], + [11, -660, 480], + [12, -540, 480], + [13, -900, 720], + [14, -780, 720], + [15, -660, 720], + [16, -540, 720], + [17, -420, 720], + [18, -300, 720], + [19, -180, 720], + [20, 960, 240], + [21, -1140, 720], + [22, 720, 240], + [23, -1200, 960], + [24, -1080, 960], + [25, 840, 240], + [26, 480, 240], + [27, 600, 240], + [28, 2.6645352591003757e-14, 480], + [29, 120.00000000000003, 480], + [30, 240, 480], + [31, 360, 480], + [32, 560, 480], + [33, 760.0000000000001, 480], + [34, 960, 480], + [35, 900, 720], + [36, 1020, 720], + [37, 1080, 240], + [38, 60.00000000000003, 720], + [39, 660, 720], + [40, 540, 960], + [41, 660, 960], + [42, 780, 960], + [43, -179.99999999999997, 960], + [44, -59.99999999999997, 960], + [45, 60.00000000000003, 960], + [46, 180.00000000000003, 960], + [47, 300, 960], + [48, -1920, 240], + [49, -1710, 240], + [50, -1500, 240], + [51, 1200, 240], + [52, 1320, 240], + [53, 1440, 240], + [54, 1560, 240], + [55, 1680, 240], + [56, 1800, 240], + [57, -2160, 480], + [58, -2040, 480], + [59, -1920, 480], + [60, -1800, 480], + [61, -1680, 480] + ], + edges: [ + ['0', 2, 2], + ['2', 2, 48], + ['3', 2, 49], + ['4', 2, 50], + ['5', 2, 0], + ['6', 2, 1], + ['19', 1, 3], + ['21', 1, 0], + ['24', 1, 4], + ['25', 3, 2], + ['26', 3, 9], + ['27', 3, 0], + ['28', 0, 3], + ['35', 3, 10], + ['36', 5, 0], + ['37', 0, 0], + ['42', 0, 4], + ['43', 6, 4], + ['44', 7, 4], + ['50', 0, 5], + ['56', 9, 2], + ['57', 5, 9], + ['58', 9, 5], + ['60', 2, 9], + ['62', 6, 8], + ['63', 20, 10], + ['64', 10, 0], + ['65', 21, 10], + ['66', 10, 21], + ['68', 0, 10], + ['69', 23, 21], + ['71', 24, 21], + ['76', 48, 57], + ['77', 58, 48], + ['78', 59, 48], + ['80', 60, 48], + ['81', 61, 48], + ['84', 5, 5], + ['89', 11, 3], + ['90', 9, 0], + ['95', 2, 26], + ['96', 2, 27], + ['97', 2, 22], + ['98', 2, 25], + ['99', 2, 20], + ['101', 28, 26], + ['103', 29, 26], + ['105', 30, 26], + ['106', 31, 26], + ['107', 32, 26], + ['109', 33, 26], + ['110', 34, 26], + ['116', 37, 2], + ['117', 2, 37], + ['133', 2, 51], + ['134', 2, 52], + ['135', 2, 53], + ['136', 2, 54], + ['137', 2, 55], + ['138', 2, 56], + ['140', 9, 12], + ['142', 9, 25], + ['143', 9, 10], + ['146', 3, 12], + ['147', 13, 12], + ['149', 14, 12], + ['150', 15, 12], + ['151', 16, 12], + ['154', 17, 12], + ['155', 18, 12], + ['156', 19, 12], + ['158', 22, 5], + ['162', 2, 5], + ['172', 38, 31], + ['173', 39, 31], + ['174', 39, 40], + ['175', 39, 41], + ['176', 39, 42], + ['179', 28, 34], + ['180', 35, 34], + ['181', 36, 34], + ['182', 38, 43], + ['183', 38, 44], + ['184', 38, 45], + ['185', 38, 46], + ['186', 38, 47] + ] + }, + { + roots: [2], + nodes: [ + [0, 511.98950048735423, 46.97929213703376], + [1, 392.53858812939956, -192.92480890034207], + [2, 158.6046410117719, -44.44821150010403], + [3, 506.6674863957032, -92.54416441538109], + [4, 616.7781043230403, -294.9677395357707], + [5, 343.97884516881834, 241.86921787902716], + [6, 753.9164536614707, -518.0433642391046], + [7, 620.5221676328781, -504.8632592487522], + [8, 886.4262480845474, -670.1455830341383], + [9, 393.3848739665497, 56.444846599053434], + [10, 518.8540098469498, 256.0228502847308], + [11, 514.2100141753647, -298.4950586059725], + [12, 751.9075643130886, -43.40838443807444], + [13, 780.7558772092852, 150.67174152159086], + [14, 871.0616322057299, 117.0541281737424], + [15, 929.7741581688076, 50.36168169064734], + [16, 953.6754763512369, -33.209642984593046], + [17, 941.0551403488937, -117.36303599816382], + [18, 895.194939826445, -188.1050159792568], + [19, 817.7326960917502, -233.4288382440305], + [20, 311.1467639734894, 142.27011592697534], + [21, 556.6321685861926, 486.33172162145274], + [22, 166.40848524220522, 185.78560117193913], + [23, 519.2495046269096, 679.3552109611936], + [24, 676.2587170191821, 638.7064983106275], + [25, 326.8796970845309, -122.42545941259547], + [26, -352.0939430131628, 104.98818142591306], + [27, 237.13483573263053, -230.41434701295117], + [28, -542.2808559309442, 187.2340165100883], + [29, -426.5619037910869, -81.30886885822572], + [30, -498.6797369838108, -36.479072539973856], + [31, -719.4115308506936, 170.56856635468162], + [32, -541.0488674582944, 38.75185204576688], + [33, -471.49814803345913, 250.88247078519646], + [34, -441.6875611026415, 362.5207326445863], + [35, -560.8712494055384, 517.1942693308955], + [36, -424.56619195501565, 559.955946483831], + [37, 171.6260887444129, -253.73115996499303], + [38, -994.057086286656, 75.20704016461103], + [39, -858.3259554406886, 417.89617368914315], + [40, -1017.1459971167535, 533.0708185367613], + [41, -920.1437911595942, 606.842928728925], + [42, -808.1854958934478, 609.434370424869], + [43, -1080.097432464374, -102.12888773440211], + [44, -1164.7372598531908, -25.14995645481318], + [45, -1191.8059672802785, 77.61534513962793], + [46, -1163.2309739721657, 176.5180652550993], + [47, -1082.101895197295, 247.02726643538026], + [48, -87.0947032343156, -441.90798964115606], + [49, 47.515191422334595, -218.90300496452713], + [50, 107.31083141047365, -245.67188223426083], + [51, 91.79966693325372, 144.43416415839357], + [52, 24.611980718070143, 107.42879829243077], + [53, -22.613571730234582, 43.172482549103286], + [54, -43.130296681439795, -35.1668716178823], + [55, -34.72526731876049, -110.34263261378632], + [56, -2.096734841395155, -172.8659762459599], + [57, -54.275520913182575, -648.3181125192976], + [58, -137.7551749354612, -648.5027519051616], + [59, -206.66006053463963, -619.1579248064121], + [60, -259.1894195840679, -566.8336197793229], + [61, -289.25657913081534, -491.0829773174281] + ], + edges: [ + ['0', 2, 2], + ['2', 2, 48], + ['3', 2, 49], + ['4', 2, 50], + ['5', 2, 0], + ['6', 2, 1], + ['19', 1, 3], + ['21', 1, 0], + ['24', 1, 4], + ['25', 3, 2], + ['26', 3, 9], + ['27', 3, 0], + ['28', 0, 3], + ['35', 3, 10], + ['36', 5, 0], + ['37', 0, 0], + ['42', 0, 4], + ['43', 6, 4], + ['44', 7, 4], + ['50', 0, 5], + ['56', 9, 2], + ['57', 5, 9], + ['58', 9, 5], + ['60', 2, 9], + ['62', 6, 8], + ['63', 20, 10], + ['64', 10, 0], + ['65', 21, 10], + ['66', 10, 21], + ['68', 0, 10], + ['69', 23, 21], + ['71', 24, 21], + ['76', 48, 57], + ['77', 58, 48], + ['78', 59, 48], + ['80', 60, 48], + ['81', 61, 48], + ['84', 5, 5], + ['89', 11, 3], + ['90', 9, 0], + ['95', 2, 26], + ['96', 2, 27], + ['97', 2, 22], + ['98', 2, 25], + ['99', 2, 20], + ['101', 28, 26], + ['103', 29, 26], + ['105', 30, 26], + ['106', 31, 26], + ['107', 32, 26], + ['109', 33, 26], + ['110', 34, 26], + ['116', 37, 2], + ['117', 2, 37], + ['133', 2, 51], + ['134', 2, 52], + ['135', 2, 53], + ['136', 2, 54], + ['137', 2, 55], + ['138', 2, 56], + ['140', 9, 12], + ['142', 9, 25], + ['143', 9, 10], + ['146', 3, 12], + ['147', 13, 12], + ['149', 14, 12], + ['150', 15, 12], + ['151', 16, 12], + ['154', 17, 12], + ['155', 18, 12], + ['156', 19, 12], + ['158', 22, 5], + ['162', 2, 5], + ['172', 38, 31], + ['173', 39, 31], + ['174', 39, 40], + ['175', 39, 41], + ['176', 39, 42], + ['179', 28, 34], + ['180', 35, 34], + ['181', 36, 34], + ['182', 38, 43], + ['183', 38, 44], + ['184', 38, 45], + ['185', 38, 46], + ['186', 38, 47] + ] + } +] diff --git a/docs-src/docs/index.html b/docs-src/docs/index.html index 99335bbb..811ad1e7 100644 --- a/docs-src/docs/index.html +++ b/docs-src/docs/index.html @@ -15,7 +15,7 @@ - + - - -
-
+
+
+
+

+ A high performance network visualization library with a simple, declarative API, plugable renderers, and bindings for different + frameworks and use cases. Trellis renders to WebGL, Canvas, JPEG, and other + targets. +

+
+
+ scroll for more +
+ ⌄ + +
+
+ +
   import * as Force from '@sayari/trellis/layout/force'
   import * as WebGL from '@sayari/trellis/renderers/webgl'
 
@@ -236,16 +327,15 @@
     render({ nodes, edges, options: renderOptions })
   })
 
-
-
- - - + + + + + diff --git a/docs-src/index.ts b/docs-src/index.ts index 8c2e558b..5c688023 100644 --- a/docs-src/index.ts +++ b/docs-src/index.ts @@ -2,13 +2,12 @@ import * as WebGL from '../src/renderers/webgl' import * as Graph from '../src/' import raw from './data' - const NODE_STYLE_A: Graph.NodeStyle = { color: '#0A85FF', stroke: [{ color: '#9CF', width: 3 }], icon: { type: 'textIcon', family: 'Material Icons', text: 'person', color: '#fff', size: 24 }, labelSize: 10, - labelColor: '#666', + labelColor: '#666' } const NODE_STYLE_B: Graph.NodeStyle = { @@ -16,7 +15,7 @@ const NODE_STYLE_B: Graph.NodeStyle = { stroke: [{ color: '#FEA', width: 3 }], icon: { type: 'textIcon', family: 'Material Icons', text: 'business', color: '#fff', size: 24 }, labelSize: 10, - labelColor: '#666', + labelColor: '#666' } const EDGE_STYLE: Graph.EdgeStyle = { @@ -24,31 +23,39 @@ const EDGE_STYLE: Graph.EdgeStyle = { width: 1, arrow: 'forward', labelSize: 10, - labelColor: '#666', + labelColor: '#666' } - const container = document.querySelector('#graph') as HTMLDivElement const render = WebGL.Renderer({ container }) const layouts = raw.map(({ roots, nodes, edges }) => { return { roots, - nodes: nodes.map(([id, x, y], idx) => ({ id: `${id}`, x, y, radius: 18, label: `${idx % 4 === 0 ? 'person' : 'company'} ${id}`, style: idx % 4 === 0 ? NODE_STYLE_A : NODE_STYLE_B })), - edges: edges.map(([id, source, target]) => ({ id: id as string, source: `${source}`, target: `${target}`, label: 'linked to', style: EDGE_STYLE })), + nodes: nodes.map(([id, x, y], idx) => ({ + id: `${id}`, + x, + y, + radius: 18, + label: `${idx % 4 === 0 ? 'person' : 'company'} ${id}`, + style: idx % 4 === 0 ? NODE_STYLE_A : NODE_STYLE_B + })), + edges: edges.map(([id, source, target]) => ({ + id: id as string, + source: `${source}`, + target: `${target}`, + label: 'linked to', + style: EDGE_STYLE + })) } }) - const draw = (idx: number, animate: boolean) => { const nodes = layouts[idx].nodes const edges = layouts[idx].edges const width = container.offsetWidth const height = container.offsetHeight - const { x, y, zoom } = Graph.boundsToViewport( - Graph.getSelectionBounds(nodes, 80), - { width, height } - ) + const { x, y, zoom } = Graph.boundsToViewport(Graph.getSelectionBounds(nodes, 80), { width, height }) render({ nodes, diff --git a/docs-src/sample.js b/docs-src/sample.js index f1590deb..24d7c5fb 100644 --- a/docs-src/sample.js +++ b/docs-src/sample.js @@ -2,11 +2,22 @@ import * as Force from '@sayari/trellis/layout/force' import * as WebGL from '@sayari/trellis/renderers/webgl' /* Initialize Data */ -const NODE_STYLE = { color: '#999', stroke: [{ color: '#FFF', width: 2 }, { color: '#F7CA4D', width: 2 }] } +const NODE_STYLE = { + color: '#999', + stroke: [ + { color: '#FFF', width: 2 }, + { color: '#F7CA4D', width: 2 } + ] +} const EDGE_STYLE = { arrow: 'forward', width: 2, stroke: '#CCC' } let nodes = ['a', 'b', 'c', 'd', 'e', 'f'].map((id) => ({ id, radius: 18, style: NODE_STYLE })) -let edges = [['a', 'b'], ['a', 'c'], ['a', 'd'], ['c', 'e'], ['c', 'f']] - .map(([source, target]) => ({ id: `${source}_${target}`, source, target, style: EDGE_STYLE })) +let edges = [ + ['a', 'b'], + ['a', 'c'], + ['a', 'd'], + ['c', 'e'], + ['c', 'f'] +].map(([source, target]) => ({ id: `${source}_${target}`, source, target, style: EDGE_STYLE })) /* Create Renderer and Layout */ const container = document.querySelector('#graph') @@ -35,7 +46,7 @@ const renderOptions = { renderOptions.x = viewportX renderOptions.y = viewportY render({ nodes, edges, options: renderOptions }) - }, + } } /* Run layout and render graph */ diff --git a/examples/annotations/index.html b/examples/annotations/index.html index ac400bab..ef1eb2df 100644 --- a/examples/annotations/index.html +++ b/examples/annotations/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
- - + + + Graph + + + + + + +
+ + diff --git a/examples/annotations/index.ts b/examples/annotations/index.ts index 61d6d0d6..b9dadbec 100644 --- a/examples/annotations/index.ts +++ b/examples/annotations/index.ts @@ -1,9 +1,9 @@ -import Stats from "stats.js" -import * as Force from "../../src/layout/force" -import * as Download from "../../src/bindings/native/download" -import * as WebGL from "../../src/renderers/webgl" -import * as Png from "../../src/renderers/image" -import * as Graph from "../../src" +import Stats from 'stats.js' +import * as Force from '../../src/layout/force' +import * as Download from '../../src/bindings/native/download' +import * as WebGL from '../../src/renderers/webgl' +import * as Png from '../../src/renderers/image' +import * as Graph from '../../src' export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom @@ -13,265 +13,265 @@ document.body.appendChild(stats.dom) * Initialize Data */ const createCompanyStyle = (radius: number): Graph.NodeStyle => ({ - color: "#FFAF1D", - stroke: [{ color: "#FFF", width: 4 }, { color: "#F7CA4D" }], + color: '#FFAF1D', + stroke: [{ color: '#FFF', width: 4 }, { color: '#F7CA4D' }], icon: { - type: "textIcon" as const, - family: "Material Icons", - text: "business", - color: "#fff", - size: radius * 1.2, + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: radius * 1.2 }, badge: [ { position: 45, - color: "#FFAF1D", - stroke: "#FFF", + color: '#FFAF1D', + stroke: '#FFF', icon: { - type: "textIcon", - family: "Helvetica", + type: 'textIcon', + family: 'Helvetica', size: 10, - color: "#FFF", - text: "15", - }, + color: '#FFF', + text: '15' + } }, { position: 135, - color: "#E4171B", - stroke: "#FFF", + color: '#E4171B', + stroke: '#FFF', icon: { - type: "textIcon", - family: "Helvetica", + type: 'textIcon', + family: 'Helvetica', size: 10, - color: "#FFF", - text: "!", - }, - }, - ], + color: '#FFF', + text: '!' + } + } + ] }) const createPersonStyle = (radius: number): Graph.NodeStyle => ({ - color: "#7CBBF3", + color: '#7CBBF3', label: { fontSize: 10, - wordWrap: 260, + wordWrap: 260 }, stroke: [ - { color: "#FFF", width: 2 }, - { color: "#90D7FB", width: 1 }, + { color: '#FFF', width: 2 }, + { color: '#90D7FB', width: 1 } ], icon: { - type: "textIcon" as const, - family: "Material Icons", - text: "person", - color: "#fff", - size: radius * 1.2, + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: radius * 1.2 }, badge: [ { position: 45, - color: "#7CBBF3", - stroke: "#FFF", + color: '#7CBBF3', + stroke: '#FFF', icon: { - type: "textIcon", - family: "Helvetica", + type: 'textIcon', + family: 'Helvetica', size: 10, - color: "#FFF", - text: "8", - }, - }, - ], + color: '#FFF', + text: '8' + } + } + ] }) let annotations = [ { - type: "text" as const, - id: "1", + type: 'text' as const, + id: '1', width: 100, height: 100, x: -400, y: -200, resize: true, content: - "This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text.", + 'This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text. This is a test of long text.', style: { - backgroundColor: "#FFFFFF", + backgroundColor: '#FFFFFF', stroke: { - color: "#000000", - width: 0.5, + color: '#000000', + width: 0.5 }, text: { fontSize: 12, - color: "#953838", - fontWeight: "bold" as const, - }, - }, + color: '#953838', + fontWeight: 'bold' as const + } + } }, { - type: "text" as const, - id: "2", + type: 'text' as const, + id: '2', width: 100, height: 100, x: -600, y: -200, resize: true, - content: "TEST 2", + content: 'TEST 2', style: { - backgroundColor: "#FFFFFF", + backgroundColor: '#FFFFFF', stroke: { - color: "#000000", - width: 0.5, + color: '#000000', + width: 0.5 }, text: { - fontSize: 18, - }, - }, + fontSize: 18 + } + } }, { - type: "rectangle" as const, - id: "test-rectangle-annotation", + type: 'rectangle' as const, + id: 'test-rectangle-annotation', width: 100, height: 100, x: -600, y: -400, resize: true, style: { - backgroundColor: "#FFFFFF", + backgroundColor: '#FFFFFF', stroke: { - color: "#000000", - width: 0.5, - }, - }, - }, + color: '#000000', + width: 0.5 + } + } + } ] let nodes = [ - { id: "a", label: "A" }, - { id: "b", label: "B" }, - { id: "c", label: "C" }, - { id: "d", label: "D" }, - { id: "e", label: "E" }, - { id: "f", label: "F" }, - { id: "g", label: "G" }, - { id: "h", label: "H" }, - { id: "i", label: "I" }, - { id: "j", label: "J" }, - { id: "k", label: "K" }, - { id: "l", label: "L" }, - { id: "m", label: "M" }, - { id: "n", label: "N" }, - { id: "o", label: "O" }, - { id: "p", label: "P" }, - { id: "q", label: "Q" }, + { id: 'a', label: 'A' }, + { id: 'b', label: 'B' }, + { id: 'c', label: 'C' }, + { id: 'd', label: 'D' }, + { id: 'e', label: 'E' }, + { id: 'f', label: 'F' }, + { id: 'g', label: 'G' }, + { id: 'h', label: 'H' }, + { id: 'i', label: 'I' }, + { id: 'j', label: 'J' }, + { id: 'k', label: 'K' }, + { id: 'l', label: 'L' }, + { id: 'm', label: 'M' }, + { id: 'n', label: 'N' }, + { id: 'o', label: 'O' }, + { id: 'p', label: 'P' }, + { id: 'q', label: 'Q' } ].map(({ id, label }) => ({ id, label, radius: 18, - style: id === "a" ? createCompanyStyle(18) : createPersonStyle(18), + style: id === 'a' ? createCompanyStyle(18) : createPersonStyle(18) })) let edges: Graph.Edge[] = [ { - id: "ea", - source: "a", - target: "e", - label: "A to E", - style: { arrow: "forward" }, + id: 'ea', + source: 'a', + target: 'e', + label: 'A to E', + style: { arrow: 'forward' } }, { - id: "fa", - source: "a", - target: "f", - label: "A to F", - style: { arrow: "forward" }, + id: 'fa', + source: 'a', + target: 'f', + label: 'A to F', + style: { arrow: 'forward' } }, { - id: "ga", - source: "a", - target: "g", - label: "A to G", - style: { arrow: "forward" }, + id: 'ga', + source: 'a', + target: 'g', + label: 'A to G', + style: { arrow: 'forward' } }, { - id: "ha", - source: "a", - target: "h", - label: "A to H", - style: { arrow: "forward" }, + id: 'ha', + source: 'a', + target: 'h', + label: 'A to H', + style: { arrow: 'forward' } }, { - id: "ia", - source: "a", - target: "i", - label: "A to I", - style: { arrow: "forward" }, + id: 'ia', + source: 'a', + target: 'i', + label: 'A to I', + style: { arrow: 'forward' } }, { - id: "ja", - source: "b", - target: "j", - label: "B to J", - style: { arrow: "forward" }, + id: 'ja', + source: 'b', + target: 'j', + label: 'B to J', + style: { arrow: 'forward' } }, { - id: "ka", - source: "b", - target: "k", - label: "K to B", - style: { arrow: "reverse" }, + id: 'ka', + source: 'b', + target: 'k', + label: 'K to B', + style: { arrow: 'reverse' } }, { - id: "la", - source: "b", - target: "l", - label: "L to B", - style: { arrow: "reverse" }, + id: 'la', + source: 'b', + target: 'l', + label: 'L to B', + style: { arrow: 'reverse' } }, { - id: "ma", - source: "l", - target: "m", - label: "M to L", - style: { arrow: "reverse" }, + id: 'ma', + source: 'l', + target: 'm', + label: 'M to L', + style: { arrow: 'reverse' } }, { - id: "nc", - source: "n", - target: "c", - label: "N to C", - style: { arrow: "forward" }, + id: 'nc', + source: 'n', + target: 'c', + label: 'N to C', + style: { arrow: 'forward' } }, { - id: "oa", - source: "c", - target: "o", - label: "Both", - style: { arrow: "both" }, + id: 'oa', + source: 'c', + target: 'o', + label: 'Both', + style: { arrow: 'both' } }, { - id: "pa", - source: "c", - target: "p", - label: "Both", - style: { arrow: "both" }, + id: 'pa', + source: 'c', + target: 'p', + label: 'Both', + style: { arrow: 'both' } }, { - id: "qa", - source: "c", - target: "q", - label: "Both", - style: { arrow: "both" }, - }, + id: 'qa', + source: 'c', + target: 'q', + label: 'Both', + style: { arrow: 'both' } + } ] /** * Create Renderer and Layout */ -const container = document.querySelector("#graph") as HTMLDivElement +const container = document.querySelector('#graph') as HTMLDivElement const imageRenderer = Png.Renderer() const render = WebGL.Renderer({ container, - debug: { stats, logPerformance: false }, + debug: { stats, logPerformance: false } }) const force = Force.Layout() @@ -295,17 +295,17 @@ downloadControl({ height: dimensions.height, x: viewport.x, y: viewport.y, - zoom: 1, - }, + zoom: 1 + } }) - }, + } }) /** * Layout and Render Graph */ const layoutOptions: Force.Options = { - nodeStrength: -500, + nodeStrength: -500 } const renderOptions: WebGL.Options = { width: container.offsetWidth, @@ -329,16 +329,16 @@ const renderOptions: WebGL.Options = { style: { ...node.style, stroke: - node.id === "a" + node.id === 'a' ? node.style?.stroke?.map((stroke, idx) => ({ ...stroke, - color: idx % 2 === 0 ? "#FFF" : "#CCC", + color: idx % 2 === 0 ? '#FFF' : '#CCC' })) : node.style?.stroke?.map((stroke) => ({ ...stroke, - color: "#CCC", - })), - }, + color: '#CCC' + })) + } } : node ) @@ -351,57 +351,35 @@ const renderOptions: WebGL.Options = { ...node, style: { ...node.style, - stroke: - node.id === "a" - ? createCompanyStyle(48).stroke - : createPersonStyle(48).stroke, - }, + stroke: node.id === 'a' ? createCompanyStyle(48).stroke : createPersonStyle(48).stroke + } } : node ) render({ nodes, edges, annotations, options: renderOptions }) }, onEdgePointerEnter: ({ target: { id } }) => { - edges = edges.map((edge) => - edge.id === id ? { ...edge, style: { ...edge.style, width: 3 } } : edge - ) + edges = edges.map((edge) => (edge.id === id ? { ...edge, style: { ...edge.style, width: 3 } } : edge)) render({ nodes, edges, annotations, options: renderOptions }) }, onEdgePointerLeave: ({ target: { id } }) => { - edges = edges.map((edge) => - edge.id === id ? { ...edge, style: { ...edge.style, width: 1 } } : edge - ) + edges = edges.map((edge) => (edge.id === id ? { ...edge, style: { ...edge.style, width: 1 } } : edge)) render({ nodes, edges, annotations, options: renderOptions }) }, - onAnnotationDrag: ({ - annotationX, - annotationY, - target: { id, x = 0, y = 0 }, - }: WebGL.AnnotationDragEvent) => { + onAnnotationDrag: ({ annotationX, annotationY, target: { id, x = 0, y = 0 } }: WebGL.AnnotationDragEvent) => { const dx = annotationX - x const dy = annotationY - y annotations = annotations.map((annotation) => - annotation.id === id - ? { ...annotation, x: annotation.x + dx, y: annotation.y + dy } - : annotation + annotation.id === id ? { ...annotation, x: annotation.x + dx, y: annotation.y + dy } : annotation ) render({ nodes, edges, annotations, options: renderOptions }) }, - onAnnotationResize: ({ - position, - x, - y, - width, - height, - target: { id }, - }: WebGL.AnnotationResizeEvent) => { + onAnnotationResize: ({ position, x, y, width, height, target: { id } }: WebGL.AnnotationResizeEvent) => { renderOptions.cursor = `${position}-resize` - annotations = annotations.map((annotation) => - annotation.id === id ? { ...annotation, x, y, width, height } : annotation - ) + annotations = annotations.map((annotation) => (annotation.id === id ? { ...annotation, x, y, width, height } : annotation)) render({ nodes, edges, annotations, options: renderOptions }) }, @@ -410,16 +388,16 @@ const renderOptions: WebGL.Options = { renderOptions.y = viewportY renderOptions.zoom = viewportZoom render({ nodes, edges, annotations, options: renderOptions }) - }, + } } force({ nodes, edges, options: layoutOptions }).then((graph) => { nodes = graph.nodes - const { x, y, zoom } = Graph.boundsToViewport( - Graph.getSelectionBounds(nodes, 40), - { width: renderOptions.width!, height: renderOptions.height! } - ) + const { x, y, zoom } = Graph.boundsToViewport(Graph.getSelectionBounds(nodes, 40), { + width: renderOptions.width!, + height: renderOptions.height! + }) renderOptions.x = x renderOptions.y = y renderOptions.zoom = zoom @@ -432,7 +410,7 @@ force({ nodes, edges, options: layoutOptions }).then((graph) => { setTimeout(() => { annotations[0] = { ...annotations[0], - resize: false, + resize: false } render({ nodes, edges, annotations, options: renderOptions }) }, 5000) @@ -440,7 +418,7 @@ setTimeout(() => { setTimeout(() => { annotations[0] = { ...annotations[0], - resize: true, + resize: true } render({ nodes, edges, annotations, options: renderOptions }) }, 10000) diff --git a/examples/assets/icons.ts b/examples/assets/icons.ts index cc988507..6b7ec8bc 100644 --- a/examples/assets/icons.ts +++ b/examples/assets/icons.ts @@ -1,2 +1,2 @@ export const person = `data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogc2tldGNodG9vbCA2My4xICgxMDEwMTApIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkNDNEQ2NkYzLTg3QTktNEIxQy1CRjNBLUMwQUY0RjQ5OTM1MTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNOCwtNS4wMDAwMDAwNmUtMDggQzEwLjI5NzUwNDYsLTUuMDAwMDAwMDZlLTA4IDEyLjE2LDEuODYyNDk1NCAxMi4xNiw0LjE1OTk5OTk4IEMxMi4xNiw2LjQ1NzUwNDU1IDEwLjI5NzUwNDYsOC4zMiA4LDguMzIgQzUuNzAyNDk1NDMsOC4zMiAzLjgzOTk5OTk3LDYuNDU3NTA0NTUgMy44Mzk5OTk5Nyw0LjE1OTk5OTk4IEMzLjgzOTk5OTk3LDEuODYyNDk1NCA1LjcwMjQ5NTQzLC01LjAwMDAwMDA2ZS0wOCA4LC01LjAwMDAwMDA2ZS0wOCBaIE04LDAuOTk5OTk5OTU2IEM2LjI1NDc4MDE4LDAuOTk5OTk5OTU2IDQuODM5OTk5OTgsMi40MTQ3ODAxNiA0LjgzOTk5OTk4LDQuMTU5OTk5OTggQzQuODM5OTk5OTgsNS45MDUyMTk4IDYuMjU0NzgwMTgsNy4zMiA4LDcuMzIgQzkuNzQ1MjE5ODEsNy4zMiAxMS4xNiw1LjkwNTIxOTggMTEuMTYsNC4xNTk5OTk5OCBDMTEuMTYsMi40MTQ3ODAxNiA5Ljc0NTIxOTgxLDAuOTk5OTk5OTU2IDgsMC45OTk5OTk5NTYgWiBNOCw5LjYwMDAwMDAxIEMxMS41OTI1NTI4LDkuNjAwMDAwMDEgMTQuMjIyNzIzOCwxMS4yNDk2MjM1IDE1Ljg5MDUxMywxNC41NDg4NzA2IEMxNS45NjEyMTg2LDE0LjY4ODc0MTUgMTUuOTk4MDU3MywxNC44NDMyNzM2IDE1Ljk5ODA1NzMsMTUgQzE1Ljk5ODA1NzMsMTUuNTEyODIzMyAxNS42MTIwMjY2LDE1LjkzNTQ4NDQgMTUuMTE0NywxNS45OTMyNjc2IEwxNC45OTgwODE3LDE2LjAwMDAwMDEgTDEuMDAxNDIxNjQsMTYuMDAwMDAwMSBDMC44NDQ2NTczODUsMTYuMDAwMDAwMSAwLjY5MDA4ODgzNCwxNS45NjMxNDQ4IDAuNTUwMTkwODEzLDE1Ljg5MjQwODggQzAuMDU3MzE5OTIwNCwxNS42NDMyMDA5IC0wLjE0MDIwNzk1NiwxNS4wNDE2MjcyIDAuMTA5MDExNDIxLDE0LjU0ODc2MjEgQzEuNzc3MTU3MDYsMTEuMjQ5NTg3NCA0LjQwNzQ4NjU5LDkuNjAwMDAwMDEgOCw5LjYwMDAwMDAxIFogTTgsMTAuNiBDNC44OTE3MDY2OSwxMC42IDIuNjQ5NDIyNzgsMTEuOTQzMzQ2MiAxLjE0ODk4NjUzLDE0LjcxNzc5IEwxLjAwMTk5OTk2LDE0Ljk5OSBMMTQuOTk4MDM3NiwxNSBMMTQuODUwNTE4MSwxNC43MTc3OTI5IEMxMy4zNTA0MTI1LDExLjk0MzM0NzUgMTEuMTA4MzAyMywxMC42IDgsMTAuNiBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0iU3ltYm9scyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkVudGl0eS9wZXJzb25fcmVndWxhciI+CiAgICAgICAgICAgIDxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9IndoaXRlIj4KICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgIDwvbWFzaz4KICAgICAgICAgICAgPHVzZSBpZD0icGVyc29uIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICA8ZyBpZD0iY29sb3JzL2FhX2ljb25fZGFyayIgbWFzaz0idXJsKCNtYXNrLTIpIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSJpY29uX2RhcmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9yZWN0PgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=` -export const company = `data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogc2tldGNodG9vbCA2My4xICgxMDEwMTApIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkI0RTRGQ0FGLTdCMzctNERCNy1BRUFGLTdGRDY0RUE0QzQwQTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMC45OTk5OTk5NSwxNi4wMDAwMDAxIEMwLjQ0NzcxNTIwMywxNi4wMDAwMDAxIC01LjAwMDAwMDA2ZS0wOCwxNS41NTIyODQ3IC01LjAwMDAwMDA2ZS0wOCwxNSBMLTUuMDAwMDAwMDZlLTA4LDQuODM5OTk5OTcgQy01LjAwMDAwMDA2ZS0wOCw0LjI4NzcxNTIzIDAuNDQ3NzE1MjAzLDMuODM5OTk5OTcgMC45OTk5OTk5NSwzLjgzOTk5OTk3IEwzLjk5OTk5OTk1LDMuODM5OTk5OTcgTDMuOTk5OTk5OTcsMC45OTk5OTk5NSBDMy45OTk5OTk5NywwLjQ0NzcxNTIwMyA0LjQ0NzcxNTIzLC00Ljk5OTk3NjYxZS0wOCA0Ljk5OTk5OTk3LC00Ljk5OTk3NjYxZS0wOCBMMTEsLTQuOTk5OTc2NjFlLTA4IEMxMS41NTIyODQ3LC00Ljk5OTk3NjYxZS0wOCAxMiwwLjQ0NzcxNTIwMyAxMiwwLjk5OTk5OTk1IEwxMiw0Ljk5OTk5OTk4IEwxMiw0Ljk5OTk5OTk4IEwxNSw0Ljk5OTk5OTk4IEMxNS41NTIyODQ3LDQuOTk5OTk5OTggMTYsNS40NDc3MTUyMyAxNiw1Ljk5OTk5OTk4IEwxNiwxNSBDMTYsMTUuNTUyMjg0NyAxNS41NTIyODQ3LDE2IDE1LDE2IEwwLjk5OTk5OTk1LDE2LjAwMDAwMDEgWiBNMTEsMC45OTk5OTk5NTYgTDQuOTk5OTk5OTgsMC45OTk5OTk5NTYgTDQuOTk5OTk5OTgsMTUgTDUuOTk5OTk5OTksMTUgTDUuOTk5OTk5OTksMTUgTDUuOTk5OTk5OTksMTEuMjQgQzUuOTk5OTk5OTksMTAuNjg3NzE1MyA2LjQ0NzcxNTI0LDEwLjI0IDYuOTk5OTk5OTksMTAuMjQgTDguOTk5OTk5OTksMTAuMjQgQzkuNTUyMjg0NzYsMTAuMjQgOS45OTk5OTk5OSwxMC42ODc3MTUzIDkuOTk5OTk5OTksMTEuMjQgTDkuOTk5OTk5OTksMTUgTDExLDE1IEwxMSwwLjk5OTk5OTk1NiBaIE04Ljk5OTk5OTk5LDExLjI0IEw2Ljk5OTk5OTk5LDExLjI0IEw2Ljk5OTk5OTk5LDE1IEw4Ljk5OTk5OTk5LDE1IEw4Ljk5OTk5OTk5LDExLjI0IFogTTMuOTk5OTk5OTYsNC44Mzk5OTk5OCBMMC45OTk5OTk5NTYsNC44Mzk5OTk5OCBMMC45OTk5OTk5NTYsMTUgTDMuOTk5OTk5OTYsMTQuOTk5IEwzLjk5OTk5OTk2LDQuODM5OTk5OTggWiBNMTUsNS45OTk5OTk5OSBMMTIsNS45OTk5OTk5OSBMMTIsMTUgTDE1LDE1IEwxNSw1Ljk5OTk5OTk5IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJTeW1ib2xzIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iRW50aXR5L2NvbXBhbnlfcmVndWxhciI+CiAgICAgICAgICAgIDxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgPC9tYXNrPgogICAgICAgICAgICA8dXNlIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgPGcgaWQ9ImNvbG9ycy9hYV9pY29uX2RhcmsiIG1hc2s9InVybCgjbWFzay0yKSIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iaWNvbl9kYXJrIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvcmVjdD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+` \ No newline at end of file +export const company = `data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogc2tldGNodG9vbCA2My4xICgxMDEwMTApIC0gaHR0cHM6Ly9za2V0Y2guY29tIC0tPgogICAgPHRpdGxlPkI0RTRGQ0FGLTdCMzctNERCNy1BRUFGLTdGRDY0RUE0QzQwQTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMC45OTk5OTk5NSwxNi4wMDAwMDAxIEMwLjQ0NzcxNTIwMywxNi4wMDAwMDAxIC01LjAwMDAwMDA2ZS0wOCwxNS41NTIyODQ3IC01LjAwMDAwMDA2ZS0wOCwxNSBMLTUuMDAwMDAwMDZlLTA4LDQuODM5OTk5OTcgQy01LjAwMDAwMDA2ZS0wOCw0LjI4NzcxNTIzIDAuNDQ3NzE1MjAzLDMuODM5OTk5OTcgMC45OTk5OTk5NSwzLjgzOTk5OTk3IEwzLjk5OTk5OTk1LDMuODM5OTk5OTcgTDMuOTk5OTk5OTcsMC45OTk5OTk5NSBDMy45OTk5OTk5NywwLjQ0NzcxNTIwMyA0LjQ0NzcxNTIzLC00Ljk5OTk3NjYxZS0wOCA0Ljk5OTk5OTk3LC00Ljk5OTk3NjYxZS0wOCBMMTEsLTQuOTk5OTc2NjFlLTA4IEMxMS41NTIyODQ3LC00Ljk5OTk3NjYxZS0wOCAxMiwwLjQ0NzcxNTIwMyAxMiwwLjk5OTk5OTk1IEwxMiw0Ljk5OTk5OTk4IEwxMiw0Ljk5OTk5OTk4IEwxNSw0Ljk5OTk5OTk4IEMxNS41NTIyODQ3LDQuOTk5OTk5OTggMTYsNS40NDc3MTUyMyAxNiw1Ljk5OTk5OTk4IEwxNiwxNSBDMTYsMTUuNTUyMjg0NyAxNS41NTIyODQ3LDE2IDE1LDE2IEwwLjk5OTk5OTk1LDE2LjAwMDAwMDEgWiBNMTEsMC45OTk5OTk5NTYgTDQuOTk5OTk5OTgsMC45OTk5OTk5NTYgTDQuOTk5OTk5OTgsMTUgTDUuOTk5OTk5OTksMTUgTDUuOTk5OTk5OTksMTUgTDUuOTk5OTk5OTksMTEuMjQgQzUuOTk5OTk5OTksMTAuNjg3NzE1MyA2LjQ0NzcxNTI0LDEwLjI0IDYuOTk5OTk5OTksMTAuMjQgTDguOTk5OTk5OTksMTAuMjQgQzkuNTUyMjg0NzYsMTAuMjQgOS45OTk5OTk5OSwxMC42ODc3MTUzIDkuOTk5OTk5OTksMTEuMjQgTDkuOTk5OTk5OTksMTUgTDExLDE1IEwxMSwwLjk5OTk5OTk1NiBaIE04Ljk5OTk5OTk5LDExLjI0IEw2Ljk5OTk5OTk5LDExLjI0IEw2Ljk5OTk5OTk5LDE1IEw4Ljk5OTk5OTk5LDE1IEw4Ljk5OTk5OTk5LDExLjI0IFogTTMuOTk5OTk5OTYsNC44Mzk5OTk5OCBMMC45OTk5OTk5NTYsNC44Mzk5OTk5OCBMMC45OTk5OTk5NTYsMTUgTDMuOTk5OTk5OTYsMTQuOTk5IEwzLjk5OTk5OTk2LDQuODM5OTk5OTggWiBNMTUsNS45OTk5OTk5OSBMMTIsNS45OTk5OTk5OSBMMTIsMTUgTDE1LDE1IEwxNSw1Ljk5OTk5OTk5IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJTeW1ib2xzIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iRW50aXR5L2NvbXBhbnlfcmVndWxhciI+CiAgICAgICAgICAgIDxtYXNrIGlkPSJtYXNrLTIiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgPC9tYXNrPgogICAgICAgICAgICA8dXNlIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgPGcgaWQ9ImNvbG9ycy9hYV9pY29uX2RhcmsiIG1hc2s9InVybCgjbWFzay0yKSIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iaWNvbl9kYXJrIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvcmVjdD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+` diff --git a/examples/collide/data.ts b/examples/collide/data.ts index 3a15f731..d00760a6 100644 --- a/examples/collide/data.ts +++ b/examples/collide/data.ts @@ -1,52 +1,52 @@ import { Node, Edge } from '../../src/' -const graph: { nodes: Record, edges: Record } = { +const graph: { nodes: Record; edges: Record } = { nodes: { - "CDD2rgijLQ4cViDQ_AR1zA": { - id: "CDD2rgijLQ4cViDQ_AR1zA", - label: "A", - type: "company", + CDD2rgijLQ4cViDQ_AR1zA: { + id: 'CDD2rgijLQ4cViDQ_AR1zA', + label: 'A', + type: 'company', x: 0, y: 0, - radius: 18, + radius: 18 }, - "309237672349": { - id: "309237672349", - label: "B", - type: "person", + '309237672349': { + id: '309237672349', + label: 'B', + type: 'person', x: -0.3029525749161621, y: 0.6897005428946841, radius: 18 }, - "Fl7N9OvAJ3AkOwHphEBapA": { - id: "Fl7N9OvAJ3AkOwHphEBapA", - label: "C", - type: "company", + Fl7N9OvAJ3AkOwHphEBapA: { + id: 'Fl7N9OvAJ3AkOwHphEBapA', + label: 'C', + type: 'company', x: -60, y: 240, radius: 18 }, - "Aia8q6eqCH9ZH3NYS6KCIg": { - id: "Aia8q6eqCH9ZH3NYS6KCIg", - label: "D", - type: "company", + Aia8q6eqCH9ZH3NYS6KCIg: { + id: 'Aia8q6eqCH9ZH3NYS6KCIg', + label: 'D', + type: 'company', x: 60, y: 240, radius: 18 } }, edges: { - "YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Fl7N9OvAJ3AkOwHphEBapA": { - id: "YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Fl7N9OvAJ3AkOwHphEBapA", - source: "309237672349", - target: "Fl7N9OvAJ3AkOwHphEBapA", + 'YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Fl7N9OvAJ3AkOwHphEBapA': { + id: 'YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Fl7N9OvAJ3AkOwHphEBapA', + source: '309237672349', + target: 'Fl7N9OvAJ3AkOwHphEBapA' }, - "YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Aia8q6eqCH9ZH3NYS6KCIg": { - id: "YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Aia8q6eqCH9ZH3NYS6KCIg", - source: "309237672349", - target: "Aia8q6eqCH9ZH3NYS6KCIg", + 'YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Aia8q6eqCH9ZH3NYS6KCIg': { + id: 'YLFBpXkSBsRWKDXtPT86AQ::shareholder_of::Aia8q6eqCH9ZH3NYS6KCIg', + source: '309237672349', + target: 'Aia8q6eqCH9ZH3NYS6KCIg' } - }, + } } -export default graph \ No newline at end of file +export default graph diff --git a/examples/collide/index.html b/examples/collide/index.html index ac400bab..ef1eb2df 100644 --- a/examples/collide/index.html +++ b/examples/collide/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
- - + + + Graph + + + + + + +
+ + diff --git a/examples/collide/index.ts b/examples/collide/index.ts index 93d5fd3d..cd96bb2c 100644 --- a/examples/collide/index.ts +++ b/examples/collide/index.ts @@ -4,12 +4,10 @@ import * as Graph from '../../src/' import * as WebGL from '../../src/renderers/webgl' import graphData from './data' - export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - /** * Initialize Data */ @@ -19,37 +17,55 @@ type Node = Graph.Node & { type: string } const createCompanyStyle = (radius: number): Graph.NodeStyle => ({ color: '#FFAF1D', stroke: [{ color: '#FFF' }, { color: '#F7CA4D' }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'business', color: '#fff', size: radius * 1.2 }, - badge: [{ - position: 45, - color: '#FFAF1D', - stroke: '#FFF', - icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '15' } - }, { - position: 135, - color: '#E4171B', - stroke: '#FFF', - icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '!' } - }], + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: radius * 1.2 + }, + badge: [ + { + position: 45, + color: '#FFAF1D', + stroke: '#FFF', + icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '15' } + }, + { + position: 135, + color: '#E4171B', + stroke: '#FFF', + icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '!' } + } + ] }) const createPersonStyle = (radius: number): Graph.NodeStyle => ({ color: '#7CBBF3', stroke: [{ color: '#90D7FB' }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'person', color: '#fff', size: radius * 1.2 }, - badge: [{ - position: 45, - color: '#7CBBF3', - stroke: '#FFF', - icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '8' } - }], + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: radius * 1.2 + }, + badge: [ + { + position: 45, + color: '#7CBBF3', + stroke: '#FFF', + icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '8' } + } + ] }) - -let nodes: Node[] = Object.values(graphData.nodes).map((node) => ({ ...node, style: node.type === 'company' ? createCompanyStyle(node.radius) : createPersonStyle(node.radius) })) +let nodes: Node[] = Object.values(graphData.nodes).map((node) => ({ + ...node, + style: node.type === 'company' ? createCompanyStyle(node.radius) : createPersonStyle(node.radius) +})) let edges: Graph.Edge[] = Object.values(graphData.edges).map((edge) => edge) - /** * Initialize Layout and Renderer */ @@ -60,7 +76,6 @@ const render = WebGL.Renderer({ debug: { stats, logPerformance: false } }) - /** * Initialize Layout and Renderer Options */ @@ -71,7 +86,7 @@ const renderOptions: WebGL.Options = { y: 0, zoom: 1, minZoom: 0.1, - maxZoom: 2.5, + maxZoom: 2.5 } /** @@ -80,7 +95,7 @@ const renderOptions: WebGL.Options = { // show layout with overlapping nodes render({ nodes, edges, options: renderOptions }) -const data = collide({ nodes, edges, options: { } }) +const data = collide({ nodes, edges, options: {} }) nodes = data.nodes edges = data.edges //wait and show updated layout diff --git a/examples/components/index.html b/examples/components/index.html index ac400bab..ef1eb2df 100644 --- a/examples/components/index.html +++ b/examples/components/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
- - + + + Graph + + + + + + +
+ + diff --git a/examples/components/index.ts b/examples/components/index.ts index 64d47a39..8a73f76c 100644 --- a/examples/components/index.ts +++ b/examples/components/index.ts @@ -3,12 +3,10 @@ import * as Hierarchy from '../../src/layout/hierarchy' import * as Components from '../../src/layout/components' import * as WebGL from '../../src/renderers/webgl' - export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - const A_STYLE = { color: '#FFAF1D', stroke: [{ color: '#F7CA4D' }] } const B_STYLE = { color: '#7CBBF3', stroke: [{ color: '#90D7FB' }] } @@ -17,7 +15,6 @@ const C_STYLE = { color: '#7F5BCC', stroke: [{ color: '#9F7BEC' }] } const D_STYLE = { color: '#C6D336', stroke: [{ color: '#E6F356' }] } - /** * Initialize Layout and Renderer */ @@ -29,42 +26,36 @@ const render = WebGL.Renderer({ debug: { stats, logPerformance: false } }) - /** * Layout and Render Graph */ // TODO: remove the commented out code before merging -const graph = ['a', 'b', 'd'].reduce( - (graph, root) => hierarchy(root, graph), - { - nodes: [ - { id: 'a', label: 'a', radius: 18, style: A_STYLE }, - { id: 'aa', label: 'aa', radius: 18, style: A_STYLE }, - { id: 'ab', label: 'ab', radius: 18, style: A_STYLE }, - { id: 'aba', label: 'aba', radius: 18, style: A_STYLE }, - { id: 'b', label: 'b', radius: 18, style: B_STYLE }, - { id: 'ba', label: 'ba', radius: 18, style: B_STYLE }, - { id: 'bb', label: 'bb', radius: 18, style: B_STYLE }, - { id: 'c', label: 'c', radius: 18, style: C_STYLE }, - { id: 'd', label: 'd', radius: 18, style: D_STYLE }, - { id: 'da', label: 'da', radius: 18, style: D_STYLE }, - ], - edges: [ - { id: 'a-aa', source: 'a', target: 'aa' }, - { id: 'a-ab', source: 'a', target: 'ab' }, - { id: 'a-ab2', source: 'a', target: 'ab' }, - { id: 'ab-aba', source: 'ab', target: 'aba' }, - { id: 'b-ba', source: 'b', target: 'ba' }, - { id: 'b-bb', source: 'b', target: 'bb' }, - { id: 'd-da', source: 'd', target: 'da' }, - ], - } -) - +const graph = ['a', 'b', 'd'].reduce((graph, root) => hierarchy(root, graph), { + nodes: [ + { id: 'a', label: 'a', radius: 18, style: A_STYLE }, + { id: 'aa', label: 'aa', radius: 18, style: A_STYLE }, + { id: 'ab', label: 'ab', radius: 18, style: A_STYLE }, + { id: 'aba', label: 'aba', radius: 18, style: A_STYLE }, + { id: 'b', label: 'b', radius: 18, style: B_STYLE }, + { id: 'ba', label: 'ba', radius: 18, style: B_STYLE }, + { id: 'bb', label: 'bb', radius: 18, style: B_STYLE }, + { id: 'c', label: 'c', radius: 18, style: C_STYLE }, + { id: 'd', label: 'd', radius: 18, style: D_STYLE }, + { id: 'da', label: 'da', radius: 18, style: D_STYLE } + ], + edges: [ + { id: 'a-aa', source: 'a', target: 'aa' }, + { id: 'a-ab', source: 'a', target: 'ab' }, + { id: 'a-ab2', source: 'a', target: 'ab' }, + { id: 'ab-aba', source: 'ab', target: 'aba' }, + { id: 'b-ba', source: 'b', target: 'ba' }, + { id: 'b-bb', source: 'b', target: 'bb' }, + { id: 'd-da', source: 'd', target: 'da' } + ] +}) const { nodes, edges } = components(graph) - render({ nodes, edges, @@ -73,6 +64,6 @@ render({ height: container.offsetHeight, x: 0, y: 0, - zoom: 1, - }, + zoom: 1 + } }) diff --git a/examples/data.ts b/examples/data.ts index 14a3fdc9..c1245305 100644 --- a/examples/data.ts +++ b/examples/data.ts @@ -1,338 +1,338 @@ export const data = { - "nodes": [ - {"id": "Myriel", "group": 1}, - {"id": "Napoleon", "group": 1}, - {"id": "Mlle.Baptistine", "group": 1}, - {"id": "Mme.Magloire", "group": 1}, - {"id": "CountessdeLo", "group": 1}, - {"id": "Geborand", "group": 1}, - {"id": "Champtercier", "group": 1}, - {"id": "Cravatte", "group": 1}, - {"id": "Count", "group": 1}, - {"id": "OldMan", "group": 1}, - {"id": "Labarre", "group": 2}, - {"id": "Valjean", "group": 2}, - {"id": "Marguerite", "group": 3}, - {"id": "Mme.deR", "group": 2}, - {"id": "Isabeau", "group": 2}, - {"id": "Gervais", "group": 2}, - {"id": "Tholomyes", "group": 3}, - {"id": "Listolier", "group": 3}, - {"id": "Fameuil", "group": 3}, - {"id": "Blacheville", "group": 3}, - {"id": "Favourite", "group": 3}, - {"id": "Dahlia", "group": 3}, - {"id": "Zephine", "group": 3}, - {"id": "Fantine", "group": 3}, - {"id": "Mme.Thenardier", "group": 4}, - {"id": "Thenardier", "group": 4}, - {"id": "Cosette", "group": 5}, - {"id": "Javert", "group": 4}, - {"id": "Fauchelevent", "group": 0}, - {"id": "Bamatabois", "group": 2}, - {"id": "Perpetue", "group": 3}, - {"id": "Simplice", "group": 2}, - {"id": "Scaufflaire", "group": 2}, - {"id": "Woman1", "group": 2}, - {"id": "Judge", "group": 2}, - {"id": "Champmathieu", "group": 2}, - {"id": "Brevet", "group": 2}, - {"id": "Chenildieu", "group": 2}, - {"id": "Cochepaille", "group": 2}, - {"id": "Pontmercy", "group": 4}, - {"id": "Boulatruelle", "group": 6}, - {"id": "Eponine", "group": 4}, - {"id": "Anzelma", "group": 4}, - {"id": "Woman2", "group": 5}, - {"id": "MotherInnocent", "group": 0}, - {"id": "Gribier", "group": 0}, - {"id": "Jondrette", "group": 7}, - {"id": "Mme.Burgon", "group": 7}, - {"id": "Gavroche", "group": 8}, - {"id": "Gillenormand", "group": 5}, - {"id": "Magnon", "group": 5}, - {"id": "Mlle.Gillenormand", "group": 5}, - {"id": "Mme.Pontmercy", "group": 5}, - {"id": "Mlle.Vaubois", "group": 5}, - {"id": "Lt.Gillenormand", "group": 5}, - {"id": "Marius", "group": 8}, - {"id": "BaronessT", "group": 5}, - {"id": "Mabeuf", "group": 8}, - {"id": "Enjolras", "group": 8}, - {"id": "Combeferre", "group": 8}, - {"id": "Prouvaire", "group": 8}, - {"id": "Feuilly", "group": 8}, - {"id": "Courfeyrac", "group": 8}, - {"id": "Bahorel", "group": 8}, - {"id": "Bossuet", "group": 8}, - {"id": "Joly", "group": 8}, - {"id": "Grantaire", "group": 8}, - {"id": "MotherPlutarch", "group": 9}, - {"id": "Gueulemer", "group": 4}, - {"id": "Babet", "group": 4}, - {"id": "Claquesous", "group": 4}, - {"id": "Montparnasse", "group": 4}, - {"id": "Toussaint", "group": 5}, - {"id": "Child1", "group": 10}, - {"id": "Child2", "group": 10}, - {"id": "Brujon", "group": 4}, - {"id": "Mme.Hucheloup", "group": 8} + nodes: [ + { id: 'Myriel', group: 1 }, + { id: 'Napoleon', group: 1 }, + { id: 'Mlle.Baptistine', group: 1 }, + { id: 'Mme.Magloire', group: 1 }, + { id: 'CountessdeLo', group: 1 }, + { id: 'Geborand', group: 1 }, + { id: 'Champtercier', group: 1 }, + { id: 'Cravatte', group: 1 }, + { id: 'Count', group: 1 }, + { id: 'OldMan', group: 1 }, + { id: 'Labarre', group: 2 }, + { id: 'Valjean', group: 2 }, + { id: 'Marguerite', group: 3 }, + { id: 'Mme.deR', group: 2 }, + { id: 'Isabeau', group: 2 }, + { id: 'Gervais', group: 2 }, + { id: 'Tholomyes', group: 3 }, + { id: 'Listolier', group: 3 }, + { id: 'Fameuil', group: 3 }, + { id: 'Blacheville', group: 3 }, + { id: 'Favourite', group: 3 }, + { id: 'Dahlia', group: 3 }, + { id: 'Zephine', group: 3 }, + { id: 'Fantine', group: 3 }, + { id: 'Mme.Thenardier', group: 4 }, + { id: 'Thenardier', group: 4 }, + { id: 'Cosette', group: 5 }, + { id: 'Javert', group: 4 }, + { id: 'Fauchelevent', group: 0 }, + { id: 'Bamatabois', group: 2 }, + { id: 'Perpetue', group: 3 }, + { id: 'Simplice', group: 2 }, + { id: 'Scaufflaire', group: 2 }, + { id: 'Woman1', group: 2 }, + { id: 'Judge', group: 2 }, + { id: 'Champmathieu', group: 2 }, + { id: 'Brevet', group: 2 }, + { id: 'Chenildieu', group: 2 }, + { id: 'Cochepaille', group: 2 }, + { id: 'Pontmercy', group: 4 }, + { id: 'Boulatruelle', group: 6 }, + { id: 'Eponine', group: 4 }, + { id: 'Anzelma', group: 4 }, + { id: 'Woman2', group: 5 }, + { id: 'MotherInnocent', group: 0 }, + { id: 'Gribier', group: 0 }, + { id: 'Jondrette', group: 7 }, + { id: 'Mme.Burgon', group: 7 }, + { id: 'Gavroche', group: 8 }, + { id: 'Gillenormand', group: 5 }, + { id: 'Magnon', group: 5 }, + { id: 'Mlle.Gillenormand', group: 5 }, + { id: 'Mme.Pontmercy', group: 5 }, + { id: 'Mlle.Vaubois', group: 5 }, + { id: 'Lt.Gillenormand', group: 5 }, + { id: 'Marius', group: 8 }, + { id: 'BaronessT', group: 5 }, + { id: 'Mabeuf', group: 8 }, + { id: 'Enjolras', group: 8 }, + { id: 'Combeferre', group: 8 }, + { id: 'Prouvaire', group: 8 }, + { id: 'Feuilly', group: 8 }, + { id: 'Courfeyrac', group: 8 }, + { id: 'Bahorel', group: 8 }, + { id: 'Bossuet', group: 8 }, + { id: 'Joly', group: 8 }, + { id: 'Grantaire', group: 8 }, + { id: 'MotherPlutarch', group: 9 }, + { id: 'Gueulemer', group: 4 }, + { id: 'Babet', group: 4 }, + { id: 'Claquesous', group: 4 }, + { id: 'Montparnasse', group: 4 }, + { id: 'Toussaint', group: 5 }, + { id: 'Child1', group: 10 }, + { id: 'Child2', group: 10 }, + { id: 'Brujon', group: 4 }, + { id: 'Mme.Hucheloup', group: 8 } ], - "links": [ - {"source": "Napoleon", "target": "Myriel", "value": 1}, - {"source": "Mlle.Baptistine", "target": "Myriel", "value": 8}, - {"source": "Mme.Magloire", "target": "Myriel", "value": 10}, - {"source": "Mme.Magloire", "target": "Mlle.Baptistine", "value": 6}, - {"source": "CountessdeLo", "target": "Myriel", "value": 1}, - {"source": "Geborand", "target": "Myriel", "value": 1}, - {"source": "Champtercier", "target": "Myriel", "value": 1}, - {"source": "Cravatte", "target": "Myriel", "value": 1}, - {"source": "Count", "target": "Myriel", "value": 2}, - {"source": "OldMan", "target": "Myriel", "value": 1}, - {"source": "Valjean", "target": "Labarre", "value": 1}, - {"source": "Valjean", "target": "Mme.Magloire", "value": 3}, - {"source": "Valjean", "target": "Mlle.Baptistine", "value": 3}, - {"source": "Valjean", "target": "Myriel", "value": 5}, - {"source": "Marguerite", "target": "Valjean", "value": 1}, - {"source": "Mme.deR", "target": "Valjean", "value": 1}, - {"source": "Isabeau", "target": "Valjean", "value": 1}, - {"source": "Gervais", "target": "Valjean", "value": 1}, - {"source": "Listolier", "target": "Tholomyes", "value": 4}, - {"source": "Fameuil", "target": "Tholomyes", "value": 4}, - {"source": "Fameuil", "target": "Listolier", "value": 4}, - {"source": "Blacheville", "target": "Tholomyes", "value": 4}, - {"source": "Blacheville", "target": "Listolier", "value": 4}, - {"source": "Blacheville", "target": "Fameuil", "value": 4}, - {"source": "Favourite", "target": "Tholomyes", "value": 3}, - {"source": "Favourite", "target": "Listolier", "value": 3}, - {"source": "Favourite", "target": "Fameuil", "value": 3}, - {"source": "Favourite", "target": "Blacheville", "value": 4}, - {"source": "Dahlia", "target": "Tholomyes", "value": 3}, - {"source": "Dahlia", "target": "Listolier", "value": 3}, - {"source": "Dahlia", "target": "Fameuil", "value": 3}, - {"source": "Dahlia", "target": "Blacheville", "value": 3}, - {"source": "Dahlia", "target": "Favourite", "value": 5}, - {"source": "Zephine", "target": "Tholomyes", "value": 3}, - {"source": "Zephine", "target": "Listolier", "value": 3}, - {"source": "Zephine", "target": "Fameuil", "value": 3}, - {"source": "Zephine", "target": "Blacheville", "value": 3}, - {"source": "Zephine", "target": "Favourite", "value": 4}, - {"source": "Zephine", "target": "Dahlia", "value": 4}, - {"source": "Fantine", "target": "Tholomyes", "value": 3}, - {"source": "Fantine", "target": "Listolier", "value": 3}, - {"source": "Fantine", "target": "Fameuil", "value": 3}, - {"source": "Fantine", "target": "Blacheville", "value": 3}, - {"source": "Fantine", "target": "Favourite", "value": 4}, - {"source": "Fantine", "target": "Dahlia", "value": 4}, - {"source": "Fantine", "target": "Zephine", "value": 4}, - {"source": "Fantine", "target": "Marguerite", "value": 2}, - {"source": "Fantine", "target": "Valjean", "value": 9}, - {"source": "Mme.Thenardier", "target": "Fantine", "value": 2}, - {"source": "Mme.Thenardier", "target": "Valjean", "value": 7}, - {"source": "Thenardier", "target": "Mme.Thenardier", "value": 13}, - {"source": "Thenardier", "target": "Fantine", "value": 1}, - {"source": "Thenardier", "target": "Valjean", "value": 12}, - {"source": "Cosette", "target": "Mme.Thenardier", "value": 4}, - {"source": "Cosette", "target": "Valjean", "value": 31}, - {"source": "Cosette", "target": "Tholomyes", "value": 1}, - {"source": "Cosette", "target": "Thenardier", "value": 1}, - {"source": "Javert", "target": "Valjean", "value": 17}, - {"source": "Javert", "target": "Fantine", "value": 5}, - {"source": "Javert", "target": "Thenardier", "value": 5}, - {"source": "Javert", "target": "Mme.Thenardier", "value": 1}, - {"source": "Javert", "target": "Cosette", "value": 1}, - {"source": "Fauchelevent", "target": "Valjean", "value": 8}, - {"source": "Fauchelevent", "target": "Javert", "value": 1}, - {"source": "Bamatabois", "target": "Fantine", "value": 1}, - {"source": "Bamatabois", "target": "Javert", "value": 1}, - {"source": "Bamatabois", "target": "Valjean", "value": 2}, - {"source": "Perpetue", "target": "Fantine", "value": 1}, - {"source": "Simplice", "target": "Perpetue", "value": 2}, - {"source": "Simplice", "target": "Valjean", "value": 3}, - {"source": "Simplice", "target": "Fantine", "value": 2}, - {"source": "Simplice", "target": "Javert", "value": 1}, - {"source": "Scaufflaire", "target": "Valjean", "value": 1}, - {"source": "Woman1", "target": "Valjean", "value": 2}, - {"source": "Woman1", "target": "Javert", "value": 1}, - {"source": "Judge", "target": "Valjean", "value": 3}, - {"source": "Judge", "target": "Bamatabois", "value": 2}, - {"source": "Champmathieu", "target": "Valjean", "value": 3}, - {"source": "Champmathieu", "target": "Judge", "value": 3}, - {"source": "Champmathieu", "target": "Bamatabois", "value": 2}, - {"source": "Brevet", "target": "Judge", "value": 2}, - {"source": "Brevet", "target": "Champmathieu", "value": 2}, - {"source": "Brevet", "target": "Valjean", "value": 2}, - {"source": "Brevet", "target": "Bamatabois", "value": 1}, - {"source": "Chenildieu", "target": "Judge", "value": 2}, - {"source": "Chenildieu", "target": "Champmathieu", "value": 2}, - {"source": "Chenildieu", "target": "Brevet", "value": 2}, - {"source": "Chenildieu", "target": "Valjean", "value": 2}, - {"source": "Chenildieu", "target": "Bamatabois", "value": 1}, - {"source": "Cochepaille", "target": "Judge", "value": 2}, - {"source": "Cochepaille", "target": "Champmathieu", "value": 2}, - {"source": "Cochepaille", "target": "Brevet", "value": 2}, - {"source": "Cochepaille", "target": "Chenildieu", "value": 2}, - {"source": "Cochepaille", "target": "Valjean", "value": 2}, - {"source": "Cochepaille", "target": "Bamatabois", "value": 1}, - {"source": "Pontmercy", "target": "Thenardier", "value": 1}, - {"source": "Boulatruelle", "target": "Thenardier", "value": 1}, - {"source": "Eponine", "target": "Mme.Thenardier", "value": 2}, - {"source": "Eponine", "target": "Thenardier", "value": 3}, - {"source": "Anzelma", "target": "Eponine", "value": 2}, - {"source": "Anzelma", "target": "Thenardier", "value": 2}, - {"source": "Anzelma", "target": "Mme.Thenardier", "value": 1}, - {"source": "Woman2", "target": "Valjean", "value": 3}, - {"source": "Woman2", "target": "Cosette", "value": 1}, - {"source": "Woman2", "target": "Javert", "value": 1}, - {"source": "MotherInnocent", "target": "Fauchelevent", "value": 3}, - {"source": "MotherInnocent", "target": "Valjean", "value": 1}, - {"source": "Gribier", "target": "Fauchelevent", "value": 2}, - {"source": "Mme.Burgon", "target": "Jondrette", "value": 1}, - {"source": "Gavroche", "target": "Mme.Burgon", "value": 2}, - {"source": "Gavroche", "target": "Thenardier", "value": 1}, - {"source": "Gavroche", "target": "Javert", "value": 1}, - {"source": "Gavroche", "target": "Valjean", "value": 1}, - {"source": "Gillenormand", "target": "Cosette", "value": 3}, - {"source": "Gillenormand", "target": "Valjean", "value": 2}, - {"source": "Magnon", "target": "Gillenormand", "value": 1}, - {"source": "Magnon", "target": "Mme.Thenardier", "value": 1}, - {"source": "Mlle.Gillenormand", "target": "Gillenormand", "value": 9}, - {"source": "Mlle.Gillenormand", "target": "Cosette", "value": 2}, - {"source": "Mlle.Gillenormand", "target": "Valjean", "value": 2}, - {"source": "Mme.Pontmercy", "target": "Mlle.Gillenormand", "value": 1}, - {"source": "Mme.Pontmercy", "target": "Pontmercy", "value": 1}, - {"source": "Mlle.Vaubois", "target": "Mlle.Gillenormand", "value": 1}, - {"source": "Lt.Gillenormand", "target": "Mlle.Gillenormand", "value": 2}, - {"source": "Lt.Gillenormand", "target": "Gillenormand", "value": 1}, - {"source": "Lt.Gillenormand", "target": "Cosette", "value": 1}, - {"source": "Marius", "target": "Mlle.Gillenormand", "value": 6}, - {"source": "Marius", "target": "Gillenormand", "value": 12}, - {"source": "Marius", "target": "Pontmercy", "value": 1}, - {"source": "Marius", "target": "Lt.Gillenormand", "value": 1}, - {"source": "Marius", "target": "Cosette", "value": 21}, - {"source": "Marius", "target": "Valjean", "value": 19}, - {"source": "Marius", "target": "Tholomyes", "value": 1}, - {"source": "Marius", "target": "Thenardier", "value": 2}, - {"source": "Marius", "target": "Eponine", "value": 5}, - {"source": "Marius", "target": "Gavroche", "value": 4}, - {"source": "BaronessT", "target": "Gillenormand", "value": 1}, - {"source": "BaronessT", "target": "Marius", "value": 1}, - {"source": "Mabeuf", "target": "Marius", "value": 1}, - {"source": "Mabeuf", "target": "Eponine", "value": 1}, - {"source": "Mabeuf", "target": "Gavroche", "value": 1}, - {"source": "Enjolras", "target": "Marius", "value": 7}, - {"source": "Enjolras", "target": "Gavroche", "value": 7}, - {"source": "Enjolras", "target": "Javert", "value": 6}, - {"source": "Enjolras", "target": "Mabeuf", "value": 1}, - {"source": "Enjolras", "target": "Valjean", "value": 4}, - {"source": "Combeferre", "target": "Enjolras", "value": 15}, - {"source": "Combeferre", "target": "Marius", "value": 5}, - {"source": "Combeferre", "target": "Gavroche", "value": 6}, - {"source": "Combeferre", "target": "Mabeuf", "value": 2}, - {"source": "Prouvaire", "target": "Gavroche", "value": 1}, - {"source": "Prouvaire", "target": "Enjolras", "value": 4}, - {"source": "Prouvaire", "target": "Combeferre", "value": 2}, - {"source": "Feuilly", "target": "Gavroche", "value": 2}, - {"source": "Feuilly", "target": "Enjolras", "value": 6}, - {"source": "Feuilly", "target": "Prouvaire", "value": 2}, - {"source": "Feuilly", "target": "Combeferre", "value": 5}, - {"source": "Feuilly", "target": "Mabeuf", "value": 1}, - {"source": "Feuilly", "target": "Marius", "value": 1}, - {"source": "Courfeyrac", "target": "Marius", "value": 9}, - {"source": "Courfeyrac", "target": "Enjolras", "value": 17}, - {"source": "Courfeyrac", "target": "Combeferre", "value": 13}, - {"source": "Courfeyrac", "target": "Gavroche", "value": 7}, - {"source": "Courfeyrac", "target": "Mabeuf", "value": 2}, - {"source": "Courfeyrac", "target": "Eponine", "value": 1}, - {"source": "Courfeyrac", "target": "Feuilly", "value": 6}, - {"source": "Courfeyrac", "target": "Prouvaire", "value": 3}, - {"source": "Bahorel", "target": "Combeferre", "value": 5}, - {"source": "Bahorel", "target": "Gavroche", "value": 5}, - {"source": "Bahorel", "target": "Courfeyrac", "value": 6}, - {"source": "Bahorel", "target": "Mabeuf", "value": 2}, - {"source": "Bahorel", "target": "Enjolras", "value": 4}, - {"source": "Bahorel", "target": "Feuilly", "value": 3}, - {"source": "Bahorel", "target": "Prouvaire", "value": 2}, - {"source": "Bahorel", "target": "Marius", "value": 1}, - {"source": "Bossuet", "target": "Marius", "value": 5}, - {"source": "Bossuet", "target": "Courfeyrac", "value": 12}, - {"source": "Bossuet", "target": "Gavroche", "value": 5}, - {"source": "Bossuet", "target": "Bahorel", "value": 4}, - {"source": "Bossuet", "target": "Enjolras", "value": 10}, - {"source": "Bossuet", "target": "Feuilly", "value": 6}, - {"source": "Bossuet", "target": "Prouvaire", "value": 2}, - {"source": "Bossuet", "target": "Combeferre", "value": 9}, - {"source": "Bossuet", "target": "Mabeuf", "value": 1}, - {"source": "Bossuet", "target": "Valjean", "value": 1}, - {"source": "Joly", "target": "Bahorel", "value": 5}, - {"source": "Joly", "target": "Bossuet", "value": 7}, - {"source": "Joly", "target": "Gavroche", "value": 3}, - {"source": "Joly", "target": "Courfeyrac", "value": 5}, - {"source": "Joly", "target": "Enjolras", "value": 5}, - {"source": "Joly", "target": "Feuilly", "value": 5}, - {"source": "Joly", "target": "Prouvaire", "value": 2}, - {"source": "Joly", "target": "Combeferre", "value": 5}, - {"source": "Joly", "target": "Mabeuf", "value": 1}, - {"source": "Joly", "target": "Marius", "value": 2}, - {"source": "Grantaire", "target": "Bossuet", "value": 3}, - {"source": "Grantaire", "target": "Enjolras", "value": 3}, - {"source": "Grantaire", "target": "Combeferre", "value": 1}, - {"source": "Grantaire", "target": "Courfeyrac", "value": 2}, - {"source": "Grantaire", "target": "Joly", "value": 2}, - {"source": "Grantaire", "target": "Gavroche", "value": 1}, - {"source": "Grantaire", "target": "Bahorel", "value": 1}, - {"source": "Grantaire", "target": "Feuilly", "value": 1}, - {"source": "Grantaire", "target": "Prouvaire", "value": 1}, - {"source": "MotherPlutarch", "target": "Mabeuf", "value": 3}, - {"source": "Gueulemer", "target": "Thenardier", "value": 5}, - {"source": "Gueulemer", "target": "Valjean", "value": 1}, - {"source": "Gueulemer", "target": "Mme.Thenardier", "value": 1}, - {"source": "Gueulemer", "target": "Javert", "value": 1}, - {"source": "Gueulemer", "target": "Gavroche", "value": 1}, - {"source": "Gueulemer", "target": "Eponine", "value": 1}, - {"source": "Babet", "target": "Thenardier", "value": 6}, - {"source": "Babet", "target": "Gueulemer", "value": 6}, - {"source": "Babet", "target": "Valjean", "value": 1}, - {"source": "Babet", "target": "Mme.Thenardier", "value": 1}, - {"source": "Babet", "target": "Javert", "value": 2}, - {"source": "Babet", "target": "Gavroche", "value": 1}, - {"source": "Babet", "target": "Eponine", "value": 1}, - {"source": "Claquesous", "target": "Thenardier", "value": 4}, - {"source": "Claquesous", "target": "Babet", "value": 4}, - {"source": "Claquesous", "target": "Gueulemer", "value": 4}, - {"source": "Claquesous", "target": "Valjean", "value": 1}, - {"source": "Claquesous", "target": "Mme.Thenardier", "value": 1}, - {"source": "Claquesous", "target": "Javert", "value": 1}, - {"source": "Claquesous", "target": "Eponine", "value": 1}, - {"source": "Claquesous", "target": "Enjolras", "value": 1}, - {"source": "Montparnasse", "target": "Javert", "value": 1}, - {"source": "Montparnasse", "target": "Babet", "value": 2}, - {"source": "Montparnasse", "target": "Gueulemer", "value": 2}, - {"source": "Montparnasse", "target": "Claquesous", "value": 2}, - {"source": "Montparnasse", "target": "Valjean", "value": 1}, - {"source": "Montparnasse", "target": "Gavroche", "value": 1}, - {"source": "Montparnasse", "target": "Eponine", "value": 1}, - {"source": "Montparnasse", "target": "Thenardier", "value": 1}, - {"source": "Toussaint", "target": "Cosette", "value": 2}, - {"source": "Toussaint", "target": "Javert", "value": 1}, - {"source": "Toussaint", "target": "Valjean", "value": 1}, - {"source": "Child1", "target": "Gavroche", "value": 2}, - {"source": "Child2", "target": "Gavroche", "value": 2}, - {"source": "Child2", "target": "Child1", "value": 3}, - {"source": "Brujon", "target": "Babet", "value": 3}, - {"source": "Brujon", "target": "Gueulemer", "value": 3}, - {"source": "Brujon", "target": "Thenardier", "value": 3}, - {"source": "Brujon", "target": "Gavroche", "value": 1}, - {"source": "Brujon", "target": "Eponine", "value": 1}, - {"source": "Brujon", "target": "Claquesous", "value": 1}, - {"source": "Brujon", "target": "Montparnasse", "value": 1}, - {"source": "Mme.Hucheloup", "target": "Bossuet", "value": 1}, - {"source": "Mme.Hucheloup", "target": "Joly", "value": 1}, - {"source": "Mme.Hucheloup", "target": "Grantaire", "value": 1}, - {"source": "Mme.Hucheloup", "target": "Bahorel", "value": 1}, - {"source": "Mme.Hucheloup", "target": "Courfeyrac", "value": 1}, - {"source": "Mme.Hucheloup", "target": "Gavroche", "value": 1}, - {"source": "Mme.Hucheloup", "target": "Enjolras", "value": 1} + links: [ + { source: 'Napoleon', target: 'Myriel', value: 1 }, + { source: 'Mlle.Baptistine', target: 'Myriel', value: 8 }, + { source: 'Mme.Magloire', target: 'Myriel', value: 10 }, + { source: 'Mme.Magloire', target: 'Mlle.Baptistine', value: 6 }, + { source: 'CountessdeLo', target: 'Myriel', value: 1 }, + { source: 'Geborand', target: 'Myriel', value: 1 }, + { source: 'Champtercier', target: 'Myriel', value: 1 }, + { source: 'Cravatte', target: 'Myriel', value: 1 }, + { source: 'Count', target: 'Myriel', value: 2 }, + { source: 'OldMan', target: 'Myriel', value: 1 }, + { source: 'Valjean', target: 'Labarre', value: 1 }, + { source: 'Valjean', target: 'Mme.Magloire', value: 3 }, + { source: 'Valjean', target: 'Mlle.Baptistine', value: 3 }, + { source: 'Valjean', target: 'Myriel', value: 5 }, + { source: 'Marguerite', target: 'Valjean', value: 1 }, + { source: 'Mme.deR', target: 'Valjean', value: 1 }, + { source: 'Isabeau', target: 'Valjean', value: 1 }, + { source: 'Gervais', target: 'Valjean', value: 1 }, + { source: 'Listolier', target: 'Tholomyes', value: 4 }, + { source: 'Fameuil', target: 'Tholomyes', value: 4 }, + { source: 'Fameuil', target: 'Listolier', value: 4 }, + { source: 'Blacheville', target: 'Tholomyes', value: 4 }, + { source: 'Blacheville', target: 'Listolier', value: 4 }, + { source: 'Blacheville', target: 'Fameuil', value: 4 }, + { source: 'Favourite', target: 'Tholomyes', value: 3 }, + { source: 'Favourite', target: 'Listolier', value: 3 }, + { source: 'Favourite', target: 'Fameuil', value: 3 }, + { source: 'Favourite', target: 'Blacheville', value: 4 }, + { source: 'Dahlia', target: 'Tholomyes', value: 3 }, + { source: 'Dahlia', target: 'Listolier', value: 3 }, + { source: 'Dahlia', target: 'Fameuil', value: 3 }, + { source: 'Dahlia', target: 'Blacheville', value: 3 }, + { source: 'Dahlia', target: 'Favourite', value: 5 }, + { source: 'Zephine', target: 'Tholomyes', value: 3 }, + { source: 'Zephine', target: 'Listolier', value: 3 }, + { source: 'Zephine', target: 'Fameuil', value: 3 }, + { source: 'Zephine', target: 'Blacheville', value: 3 }, + { source: 'Zephine', target: 'Favourite', value: 4 }, + { source: 'Zephine', target: 'Dahlia', value: 4 }, + { source: 'Fantine', target: 'Tholomyes', value: 3 }, + { source: 'Fantine', target: 'Listolier', value: 3 }, + { source: 'Fantine', target: 'Fameuil', value: 3 }, + { source: 'Fantine', target: 'Blacheville', value: 3 }, + { source: 'Fantine', target: 'Favourite', value: 4 }, + { source: 'Fantine', target: 'Dahlia', value: 4 }, + { source: 'Fantine', target: 'Zephine', value: 4 }, + { source: 'Fantine', target: 'Marguerite', value: 2 }, + { source: 'Fantine', target: 'Valjean', value: 9 }, + { source: 'Mme.Thenardier', target: 'Fantine', value: 2 }, + { source: 'Mme.Thenardier', target: 'Valjean', value: 7 }, + { source: 'Thenardier', target: 'Mme.Thenardier', value: 13 }, + { source: 'Thenardier', target: 'Fantine', value: 1 }, + { source: 'Thenardier', target: 'Valjean', value: 12 }, + { source: 'Cosette', target: 'Mme.Thenardier', value: 4 }, + { source: 'Cosette', target: 'Valjean', value: 31 }, + { source: 'Cosette', target: 'Tholomyes', value: 1 }, + { source: 'Cosette', target: 'Thenardier', value: 1 }, + { source: 'Javert', target: 'Valjean', value: 17 }, + { source: 'Javert', target: 'Fantine', value: 5 }, + { source: 'Javert', target: 'Thenardier', value: 5 }, + { source: 'Javert', target: 'Mme.Thenardier', value: 1 }, + { source: 'Javert', target: 'Cosette', value: 1 }, + { source: 'Fauchelevent', target: 'Valjean', value: 8 }, + { source: 'Fauchelevent', target: 'Javert', value: 1 }, + { source: 'Bamatabois', target: 'Fantine', value: 1 }, + { source: 'Bamatabois', target: 'Javert', value: 1 }, + { source: 'Bamatabois', target: 'Valjean', value: 2 }, + { source: 'Perpetue', target: 'Fantine', value: 1 }, + { source: 'Simplice', target: 'Perpetue', value: 2 }, + { source: 'Simplice', target: 'Valjean', value: 3 }, + { source: 'Simplice', target: 'Fantine', value: 2 }, + { source: 'Simplice', target: 'Javert', value: 1 }, + { source: 'Scaufflaire', target: 'Valjean', value: 1 }, + { source: 'Woman1', target: 'Valjean', value: 2 }, + { source: 'Woman1', target: 'Javert', value: 1 }, + { source: 'Judge', target: 'Valjean', value: 3 }, + { source: 'Judge', target: 'Bamatabois', value: 2 }, + { source: 'Champmathieu', target: 'Valjean', value: 3 }, + { source: 'Champmathieu', target: 'Judge', value: 3 }, + { source: 'Champmathieu', target: 'Bamatabois', value: 2 }, + { source: 'Brevet', target: 'Judge', value: 2 }, + { source: 'Brevet', target: 'Champmathieu', value: 2 }, + { source: 'Brevet', target: 'Valjean', value: 2 }, + { source: 'Brevet', target: 'Bamatabois', value: 1 }, + { source: 'Chenildieu', target: 'Judge', value: 2 }, + { source: 'Chenildieu', target: 'Champmathieu', value: 2 }, + { source: 'Chenildieu', target: 'Brevet', value: 2 }, + { source: 'Chenildieu', target: 'Valjean', value: 2 }, + { source: 'Chenildieu', target: 'Bamatabois', value: 1 }, + { source: 'Cochepaille', target: 'Judge', value: 2 }, + { source: 'Cochepaille', target: 'Champmathieu', value: 2 }, + { source: 'Cochepaille', target: 'Brevet', value: 2 }, + { source: 'Cochepaille', target: 'Chenildieu', value: 2 }, + { source: 'Cochepaille', target: 'Valjean', value: 2 }, + { source: 'Cochepaille', target: 'Bamatabois', value: 1 }, + { source: 'Pontmercy', target: 'Thenardier', value: 1 }, + { source: 'Boulatruelle', target: 'Thenardier', value: 1 }, + { source: 'Eponine', target: 'Mme.Thenardier', value: 2 }, + { source: 'Eponine', target: 'Thenardier', value: 3 }, + { source: 'Anzelma', target: 'Eponine', value: 2 }, + { source: 'Anzelma', target: 'Thenardier', value: 2 }, + { source: 'Anzelma', target: 'Mme.Thenardier', value: 1 }, + { source: 'Woman2', target: 'Valjean', value: 3 }, + { source: 'Woman2', target: 'Cosette', value: 1 }, + { source: 'Woman2', target: 'Javert', value: 1 }, + { source: 'MotherInnocent', target: 'Fauchelevent', value: 3 }, + { source: 'MotherInnocent', target: 'Valjean', value: 1 }, + { source: 'Gribier', target: 'Fauchelevent', value: 2 }, + { source: 'Mme.Burgon', target: 'Jondrette', value: 1 }, + { source: 'Gavroche', target: 'Mme.Burgon', value: 2 }, + { source: 'Gavroche', target: 'Thenardier', value: 1 }, + { source: 'Gavroche', target: 'Javert', value: 1 }, + { source: 'Gavroche', target: 'Valjean', value: 1 }, + { source: 'Gillenormand', target: 'Cosette', value: 3 }, + { source: 'Gillenormand', target: 'Valjean', value: 2 }, + { source: 'Magnon', target: 'Gillenormand', value: 1 }, + { source: 'Magnon', target: 'Mme.Thenardier', value: 1 }, + { source: 'Mlle.Gillenormand', target: 'Gillenormand', value: 9 }, + { source: 'Mlle.Gillenormand', target: 'Cosette', value: 2 }, + { source: 'Mlle.Gillenormand', target: 'Valjean', value: 2 }, + { source: 'Mme.Pontmercy', target: 'Mlle.Gillenormand', value: 1 }, + { source: 'Mme.Pontmercy', target: 'Pontmercy', value: 1 }, + { source: 'Mlle.Vaubois', target: 'Mlle.Gillenormand', value: 1 }, + { source: 'Lt.Gillenormand', target: 'Mlle.Gillenormand', value: 2 }, + { source: 'Lt.Gillenormand', target: 'Gillenormand', value: 1 }, + { source: 'Lt.Gillenormand', target: 'Cosette', value: 1 }, + { source: 'Marius', target: 'Mlle.Gillenormand', value: 6 }, + { source: 'Marius', target: 'Gillenormand', value: 12 }, + { source: 'Marius', target: 'Pontmercy', value: 1 }, + { source: 'Marius', target: 'Lt.Gillenormand', value: 1 }, + { source: 'Marius', target: 'Cosette', value: 21 }, + { source: 'Marius', target: 'Valjean', value: 19 }, + { source: 'Marius', target: 'Tholomyes', value: 1 }, + { source: 'Marius', target: 'Thenardier', value: 2 }, + { source: 'Marius', target: 'Eponine', value: 5 }, + { source: 'Marius', target: 'Gavroche', value: 4 }, + { source: 'BaronessT', target: 'Gillenormand', value: 1 }, + { source: 'BaronessT', target: 'Marius', value: 1 }, + { source: 'Mabeuf', target: 'Marius', value: 1 }, + { source: 'Mabeuf', target: 'Eponine', value: 1 }, + { source: 'Mabeuf', target: 'Gavroche', value: 1 }, + { source: 'Enjolras', target: 'Marius', value: 7 }, + { source: 'Enjolras', target: 'Gavroche', value: 7 }, + { source: 'Enjolras', target: 'Javert', value: 6 }, + { source: 'Enjolras', target: 'Mabeuf', value: 1 }, + { source: 'Enjolras', target: 'Valjean', value: 4 }, + { source: 'Combeferre', target: 'Enjolras', value: 15 }, + { source: 'Combeferre', target: 'Marius', value: 5 }, + { source: 'Combeferre', target: 'Gavroche', value: 6 }, + { source: 'Combeferre', target: 'Mabeuf', value: 2 }, + { source: 'Prouvaire', target: 'Gavroche', value: 1 }, + { source: 'Prouvaire', target: 'Enjolras', value: 4 }, + { source: 'Prouvaire', target: 'Combeferre', value: 2 }, + { source: 'Feuilly', target: 'Gavroche', value: 2 }, + { source: 'Feuilly', target: 'Enjolras', value: 6 }, + { source: 'Feuilly', target: 'Prouvaire', value: 2 }, + { source: 'Feuilly', target: 'Combeferre', value: 5 }, + { source: 'Feuilly', target: 'Mabeuf', value: 1 }, + { source: 'Feuilly', target: 'Marius', value: 1 }, + { source: 'Courfeyrac', target: 'Marius', value: 9 }, + { source: 'Courfeyrac', target: 'Enjolras', value: 17 }, + { source: 'Courfeyrac', target: 'Combeferre', value: 13 }, + { source: 'Courfeyrac', target: 'Gavroche', value: 7 }, + { source: 'Courfeyrac', target: 'Mabeuf', value: 2 }, + { source: 'Courfeyrac', target: 'Eponine', value: 1 }, + { source: 'Courfeyrac', target: 'Feuilly', value: 6 }, + { source: 'Courfeyrac', target: 'Prouvaire', value: 3 }, + { source: 'Bahorel', target: 'Combeferre', value: 5 }, + { source: 'Bahorel', target: 'Gavroche', value: 5 }, + { source: 'Bahorel', target: 'Courfeyrac', value: 6 }, + { source: 'Bahorel', target: 'Mabeuf', value: 2 }, + { source: 'Bahorel', target: 'Enjolras', value: 4 }, + { source: 'Bahorel', target: 'Feuilly', value: 3 }, + { source: 'Bahorel', target: 'Prouvaire', value: 2 }, + { source: 'Bahorel', target: 'Marius', value: 1 }, + { source: 'Bossuet', target: 'Marius', value: 5 }, + { source: 'Bossuet', target: 'Courfeyrac', value: 12 }, + { source: 'Bossuet', target: 'Gavroche', value: 5 }, + { source: 'Bossuet', target: 'Bahorel', value: 4 }, + { source: 'Bossuet', target: 'Enjolras', value: 10 }, + { source: 'Bossuet', target: 'Feuilly', value: 6 }, + { source: 'Bossuet', target: 'Prouvaire', value: 2 }, + { source: 'Bossuet', target: 'Combeferre', value: 9 }, + { source: 'Bossuet', target: 'Mabeuf', value: 1 }, + { source: 'Bossuet', target: 'Valjean', value: 1 }, + { source: 'Joly', target: 'Bahorel', value: 5 }, + { source: 'Joly', target: 'Bossuet', value: 7 }, + { source: 'Joly', target: 'Gavroche', value: 3 }, + { source: 'Joly', target: 'Courfeyrac', value: 5 }, + { source: 'Joly', target: 'Enjolras', value: 5 }, + { source: 'Joly', target: 'Feuilly', value: 5 }, + { source: 'Joly', target: 'Prouvaire', value: 2 }, + { source: 'Joly', target: 'Combeferre', value: 5 }, + { source: 'Joly', target: 'Mabeuf', value: 1 }, + { source: 'Joly', target: 'Marius', value: 2 }, + { source: 'Grantaire', target: 'Bossuet', value: 3 }, + { source: 'Grantaire', target: 'Enjolras', value: 3 }, + { source: 'Grantaire', target: 'Combeferre', value: 1 }, + { source: 'Grantaire', target: 'Courfeyrac', value: 2 }, + { source: 'Grantaire', target: 'Joly', value: 2 }, + { source: 'Grantaire', target: 'Gavroche', value: 1 }, + { source: 'Grantaire', target: 'Bahorel', value: 1 }, + { source: 'Grantaire', target: 'Feuilly', value: 1 }, + { source: 'Grantaire', target: 'Prouvaire', value: 1 }, + { source: 'MotherPlutarch', target: 'Mabeuf', value: 3 }, + { source: 'Gueulemer', target: 'Thenardier', value: 5 }, + { source: 'Gueulemer', target: 'Valjean', value: 1 }, + { source: 'Gueulemer', target: 'Mme.Thenardier', value: 1 }, + { source: 'Gueulemer', target: 'Javert', value: 1 }, + { source: 'Gueulemer', target: 'Gavroche', value: 1 }, + { source: 'Gueulemer', target: 'Eponine', value: 1 }, + { source: 'Babet', target: 'Thenardier', value: 6 }, + { source: 'Babet', target: 'Gueulemer', value: 6 }, + { source: 'Babet', target: 'Valjean', value: 1 }, + { source: 'Babet', target: 'Mme.Thenardier', value: 1 }, + { source: 'Babet', target: 'Javert', value: 2 }, + { source: 'Babet', target: 'Gavroche', value: 1 }, + { source: 'Babet', target: 'Eponine', value: 1 }, + { source: 'Claquesous', target: 'Thenardier', value: 4 }, + { source: 'Claquesous', target: 'Babet', value: 4 }, + { source: 'Claquesous', target: 'Gueulemer', value: 4 }, + { source: 'Claquesous', target: 'Valjean', value: 1 }, + { source: 'Claquesous', target: 'Mme.Thenardier', value: 1 }, + { source: 'Claquesous', target: 'Javert', value: 1 }, + { source: 'Claquesous', target: 'Eponine', value: 1 }, + { source: 'Claquesous', target: 'Enjolras', value: 1 }, + { source: 'Montparnasse', target: 'Javert', value: 1 }, + { source: 'Montparnasse', target: 'Babet', value: 2 }, + { source: 'Montparnasse', target: 'Gueulemer', value: 2 }, + { source: 'Montparnasse', target: 'Claquesous', value: 2 }, + { source: 'Montparnasse', target: 'Valjean', value: 1 }, + { source: 'Montparnasse', target: 'Gavroche', value: 1 }, + { source: 'Montparnasse', target: 'Eponine', value: 1 }, + { source: 'Montparnasse', target: 'Thenardier', value: 1 }, + { source: 'Toussaint', target: 'Cosette', value: 2 }, + { source: 'Toussaint', target: 'Javert', value: 1 }, + { source: 'Toussaint', target: 'Valjean', value: 1 }, + { source: 'Child1', target: 'Gavroche', value: 2 }, + { source: 'Child2', target: 'Gavroche', value: 2 }, + { source: 'Child2', target: 'Child1', value: 3 }, + { source: 'Brujon', target: 'Babet', value: 3 }, + { source: 'Brujon', target: 'Gueulemer', value: 3 }, + { source: 'Brujon', target: 'Thenardier', value: 3 }, + { source: 'Brujon', target: 'Gavroche', value: 1 }, + { source: 'Brujon', target: 'Eponine', value: 1 }, + { source: 'Brujon', target: 'Claquesous', value: 1 }, + { source: 'Brujon', target: 'Montparnasse', value: 1 }, + { source: 'Mme.Hucheloup', target: 'Bossuet', value: 1 }, + { source: 'Mme.Hucheloup', target: 'Joly', value: 1 }, + { source: 'Mme.Hucheloup', target: 'Grantaire', value: 1 }, + { source: 'Mme.Hucheloup', target: 'Bahorel', value: 1 }, + { source: 'Mme.Hucheloup', target: 'Courfeyrac', value: 1 }, + { source: 'Mme.Hucheloup', target: 'Gavroche', value: 1 }, + { source: 'Mme.Hucheloup', target: 'Enjolras', value: 1 } ] } @@ -401,14 +401,74 @@ export const large = { .concat(data.links.map((link) => ({ ...link, source: link.source + '6', target: link.target + '7' }))) .concat(data.links.map((link) => ({ ...link, source: link.source + '7', target: link.target + '8' }))) .concat(data.links.map((link) => ({ ...link, source: link.source + '8', target: link.target + '9' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '9', target: link.target + '10' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '10', target: link.target + '11' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '11', target: link.target + '12' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '12', target: link.target + '13' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '13', target: link.target + '14' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '14', target: link.target + '15' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '15', target: link.target + '16' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '16', target: link.target + '17' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '17', target: link.target + '18' }))) - .concat(data.links.map((link) => ({ ...link, source: link.source + '18', target: link.target + '19' }))) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '9', + target: link.target + '10' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '10', + target: link.target + '11' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '11', + target: link.target + '12' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '12', + target: link.target + '13' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '13', + target: link.target + '14' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '14', + target: link.target + '15' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '15', + target: link.target + '16' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '16', + target: link.target + '17' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '17', + target: link.target + '18' + })) + ) + .concat( + data.links.map((link) => ({ + ...link, + source: link.source + '18', + target: link.target + '19' + })) + ) } diff --git a/examples/fixed-nodes/data.ts b/examples/fixed-nodes/data.ts index 0f1122ab..c09d99b5 100644 --- a/examples/fixed-nodes/data.ts +++ b/examples/fixed-nodes/data.ts @@ -1 +1,25 @@ -export default {"roots":[2],"nodes":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122],"edges":[[2,89],[2,90],[2,91],[2,92],[2,93],[2,94],[2,1],[89,106],[89,107],[89,108],[89,109],[118,109],[118,109],[119,109],[120,109],[121,109],[119,106],[119,106],[119,122],[1,3],[1,3],[1,4],[1,0],[1,0],[1,5],[3,10],[3,11],[3,12],[12,3],[3,13],[13,3],[14,3],[3,14],[6,3],[3,15],[3,16],[57,12],[58,12],[29,12],[44,14],[45,14],[45,14],[6,5],[7,5],[8,5],[46,44],[46,44],[46,44],[47,44],[48,44],[46,49],[46,50],[46,49],[46,51],[46,52],[46,53],[11,10],[30,11],[11,30],[59,11],[39,11],[39,10],[7,9],[26,16],[16,13],[27,16],[16,27],[16,28],[29,16],[42,27],[42,27],[43,27],[15,28],[29,15],[29,30],[29,31],[91,101],[102,91],[103,91],[103,91],[104,91],[105,91],[46,52],[52,53],[50,49],[54,50],[55,50],[50,56],[50,56],[17,3],[11,12],[16,12],[10,61],[10,62],[10,63],[10,64],[10,65],[10,37],[10,60],[10,26],[10,26],[66,64],[62,64],[67,64],[67,64],[68,64],[69,64],[70,64],[71,64],[72,64],[73,64],[39,15],[71,62],[71,76],[77,71],[77,71],[78,71],[71,78],[110,89],[110,89],[110,89],[89,111],[89,111],[112,89],[89,112],[89,113],[89,106],[107,89],[108,89],[114,89],[115,89],[89,116],[117,89],[2,95],[2,96],[2,97],[2,98],[2,99],[2,100],[11,15],[11,18],[11,31],[11,60],[11,16],[11,13],[11,14],[3,18],[19,18],[19,18],[20,18],[21,18],[22,18],[21,18],[22,18],[23,18],[24,18],[25,18],[22,18],[37,30],[30,31],[30,32],[38,30],[39,30],[40,30],[41,30],[31,32],[33,32],[33,32],[34,32],[35,32],[36,32],[34,32],[79,69],[80,69],[80,81],[80,82],[80,83],[80,82],[80,82],[66,73],[74,73],[75,73],[79,84],[79,85],[79,86],[79,87],[79,88]]} \ No newline at end of file +// prettier-ignore +export default { + roots: [2], + nodes: [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 + ], + edges: [ + [2, 89], [2, 90], [2, 91], [2, 92], [2, 93], [2, 94], [2, 1], [89, 106], [89, 107], [89, 108], [89, 109], [118, 109], [118, 109], [119, 109], + [120, 109], [121, 109], [119, 106], [119, 106], [119, 122], [1, 3], [1, 3], [1, 4], [1, 0], [1, 0], [1, 5], [3, 10], [3, 11], [3, 12], [12, 3], + [3, 13], [13, 3], [14, 3], [3, 14], [6, 3], [3, 15], [3, 16], [57, 12], [58, 12], [29, 12], [44, 14], [45, 14], [45, 14], [6, 5], [7, 5], [8, 5], + [46, 44], [46, 44], [46, 44], [47, 44], [48, 44], [46, 49], [46, 50], [46, 49], [46, 51], [46, 52], [46, 53], [11, 10], [30, 11], [11, 30], [59, 11], + [39, 11], [39, 10], [7, 9], [26, 16], [16, 13], [27, 16], [16, 27], [16, 28], [29, 16], [42, 27], [42, 27], [43, 27], [15, 28], [29, 15], [29, 30], + [29, 31], [91, 101], [102, 91], [103, 91], [103, 91], [104, 91], [105, 91], [46, 52], [52, 53], [50, 49], [54, 50], [55, 50], [50, 56], [50, 56], + [17, 3], [11, 12], [16, 12], [10, 61], [10, 62], [10, 63], [10, 64], [10, 65], [10, 37], [10, 60], [10, 26], [10, 26], [66, 64], [62, 64], [67, 64], + [67, 64], [68, 64], [69, 64], [70, 64], [71, 64], [72, 64], [73, 64], [39, 15], [71, 62], [71, 76], [77, 71], [77, 71], [78, 71], [71, 78], [110, 89], + [110, 89], [110, 89], [89, 111], [89, 111], [112, 89], [89, 112], [89, 113], [89, 106], [107, 89], [108, 89], [114, 89], [115, 89], [89, 116], [117, 89], + [2, 95], [2, 96], [2, 97], [2, 98], [2, 99], [2, 100], [11, 15], [11, 18], [11, 31], [11, 60], [11, 16], [11, 13], [11, 14], [3, 18], [19, 18], [19, 18], + [20, 18], [21, 18], [22, 18], [21, 18], [22, 18], [23, 18], [24, 18], [25, 18], [22, 18], [37, 30], [30, 31], [30, 32], [38, 30], [39, 30], [40, 30], + [41, 30], [31, 32], [33, 32], [33, 32], [34, 32], [35, 32], [36, 32], [34, 32], [79, 69], [80, 69], [80, 81], [80, 82], [80, 83], [80, 82], [80, 82], + [66, 73], [74, 73], [75, 73], [79, 84], [79, 85], [79, 86], [79, 87], [79, 88] + ] +} diff --git a/examples/fixed-nodes/index.html b/examples/fixed-nodes/index.html index ac400bab..ef1eb2df 100644 --- a/examples/fixed-nodes/index.html +++ b/examples/fixed-nodes/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
- - + + + Graph + + + + + + +
+ + diff --git a/examples/fixed-nodes/index.ts b/examples/fixed-nodes/index.ts index 265b46e3..6929b252 100644 --- a/examples/fixed-nodes/index.ts +++ b/examples/fixed-nodes/index.ts @@ -1,66 +1,66 @@ -import clustersKmeans from "@turf/clusters-kmeans" -import * as Force from "../../src/layout/force" -import * as Hierarchy from "../../src/layout/hierarchy" -import * as Collide from "../../src/layout/collide" -import * as Radial from "../../src/layout/radial" -import * as WebGL from "../../src/renderers/webgl" -import * as Graph from "../../src/" -import raw from "./data" +import clustersKmeans from '@turf/clusters-kmeans' +import * as Force from '../../src/layout/force' +import * as Hierarchy from '../../src/layout/hierarchy' +import * as Collide from '../../src/layout/collide' +import * as Radial from '../../src/layout/radial' +import * as WebGL from '../../src/renderers/webgl' +import * as Graph from '../../src/' +import raw from './data' type Node = Graph.Node & { cluster?: number; size?: number } const NODE_STYLE_A: Graph.NodeStyle = { - color: "#0A85FF", - stroke: [{ color: "#9CF", width: 3 }], + color: '#0A85FF', + stroke: [{ color: '#9CF', width: 3 }], icon: { - type: "textIcon", - family: "Material Icons", - text: "person", - color: "#fff", - size: 24, + type: 'textIcon', + family: 'Material Icons', + text: 'person', + color: '#fff', + size: 24 }, label: { fontSize: 10, - color: "#666", - }, + color: '#666' + } } const NODE_STYLE_B: Graph.NodeStyle = { - color: "#FFB71B", - stroke: [{ color: "#FEA", width: 3 }], + color: '#FFB71B', + stroke: [{ color: '#FEA', width: 3 }], icon: { - type: "textIcon", - family: "Material Icons", - text: "business", - color: "#fff", - size: 24, + type: 'textIcon', + family: 'Material Icons', + text: 'business', + color: '#fff', + size: 24 }, label: { fontSize: 10, - color: "#666", - }, + color: '#666' + } } const NODE_STYLE_C: Graph.NodeStyle = { - color: "#7F5BCC", - stroke: [{ color: "#967ccc", width: 3 }], + color: '#7F5BCC', + stroke: [{ color: '#967ccc', width: 3 }], label: { fontSize: 10, - color: "#666", - }, + color: '#666' + } } const EDGE_STYLE: Graph.EdgeStyle = { - stroke: "#BBB", + stroke: '#BBB', width: 1, - arrow: "forward", + arrow: 'forward', label: { fontSize: 10, - color: "#666", - }, + color: '#666' + } } -const container = document.querySelector("#graph") as HTMLDivElement +const container = document.querySelector('#graph') as HTMLDivElement const render = WebGL.Renderer({ container }) const force = Force.Layout() const hierarchy = Hierarchy.Layout() @@ -70,88 +70,73 @@ const radial = Radial.Layout() const nodes = raw.nodes.map((id, idx) => ({ id: `${id}`, radius: 18, - label: `${idx % 4 === 0 ? "person" : "company"} ${id}`, + label: `${idx % 4 === 0 ? 'person' : 'company'} ${id}`, style: id === 0 ? NODE_STYLE_C : idx % 4 === 0 ? NODE_STYLE_A : NODE_STYLE_B, fx: id === 0 ? 0 : undefined, - fy: id === 0 ? 0 : undefined, + fy: id === 0 ? 0 : undefined })) const edges = raw.edges.map(([source, target], idx) => ({ id: `${idx}`, source: `${source}`, target: `${target}`, - label: "linked to", - style: EDGE_STYLE, + label: 'linked to', + style: EDGE_STYLE })) -const filterGraph = - (predicate: (node: Node) => boolean) => - (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { - const nodeMap = graph.nodes.reduce>( - (nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), - {} - ) - return { - nodes: graph.nodes.filter(predicate), - edges: graph.edges.filter( - ({ source, target }) => - predicate(nodeMap[source]) && predicate(nodeMap[target]) - ), - } +const filterGraph = (predicate: (node: Node) => boolean) => (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { + const nodeMap = graph.nodes.reduce>((nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), {}) + return { + nodes: graph.nodes.filter(predicate), + edges: graph.edges.filter(({ source, target }) => predicate(nodeMap[source]) && predicate(nodeMap[target])) } +} -const groupBy = - (grouper: (node: Node) => string) => - (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { - const idMap: Record = {} - - const nodes = Object.values( - graph.nodes.reduce>((groups, node) => { - const key = grouper(node) - if (groups[key] === undefined) groups[key] = [] - groups[key].push(node) - return groups - }, {}) - ).map((nodes) => { - nodes.forEach((node) => { - idMap[node.id] = nodes[0].id - }) - return { ...nodes[0], size: nodes.length } +const groupBy = (grouper: (node: Node) => string) => (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { + const idMap: Record = {} + + const nodes = Object.values( + graph.nodes.reduce>((groups, node) => { + const key = grouper(node) + if (groups[key] === undefined) groups[key] = [] + groups[key].push(node) + return groups + }, {}) + ).map((nodes) => { + nodes.forEach((node) => { + idMap[node.id] = nodes[0].id }) + return { ...nodes[0], size: nodes.length } + }) - const edges = Object.values( - graph.edges.reduce>((edges, edge) => { - if ( - edges[`${idMap[edge.source]}::${idMap[edge.target]}`] === undefined - ) { - edges[`${idMap[edge.source]}::${idMap[edge.target]}`] = { - ...edge, - source: idMap[edge.source], - target: idMap[edge.target], - } + const edges = Object.values( + graph.edges.reduce>((edges, edge) => { + if (edges[`${idMap[edge.source]}::${idMap[edge.target]}`] === undefined) { + edges[`${idMap[edge.source]}::${idMap[edge.target]}`] = { + ...edge, + source: idMap[edge.source], + target: idMap[edge.target] } - return edges - }, {}) - ) + } + return edges + }, {}) + ) - return { nodes, edges } - } + return { nodes, edges } +} const cluster = (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { - const nodeMap = graph.nodes.reduce>( - (nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), - {} - ) + const nodeMap = graph.nodes.reduce>((nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), {}) const nodes = clustersKmeans({ - type: "FeatureCollection", + type: 'FeatureCollection', features: graph.nodes.map(({ id, x = 0, y = 0 }) => ({ - type: "Feature", + type: 'Feature', geometry: { - type: "Point", - coordinates: [x, y], + type: 'Point', + coordinates: [x, y] }, - properties: { id }, - })), + properties: { id } + })) }).features.map(({ properties }) => { const cluster = properties.cluster ?? 0 const node = nodeMap[(properties as any).id] @@ -165,12 +150,7 @@ const cluster = (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ force({ nodes, edges }) .then(cluster) - .then( - filterGraph( - ({ cluster }) => - cluster !== 2 && cluster !== 3 && cluster !== 5 && cluster !== 7 - ) - ) + .then(filterGraph(({ cluster }) => cluster !== 2 && cluster !== 3 && cluster !== 5 && cluster !== 7)) .then(force), force({ nodes, edges }) .then(cluster) @@ -178,16 +158,12 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ .then(force), force({ nodes, edges }).then(cluster), collide(hierarchy(`${raw.roots[0]}`, { nodes, edges })), - collide( - radial(`${raw.roots[0]}`, { nodes, edges, options: { radius: 1200 } }) - ), + collide(radial(`${raw.roots[0]}`, { nodes, edges, options: { radius: 1200 } })), force( - groupBy((node) => - node.cluster === 0 || node.cluster === 6 || node.cluster === 2 - ? `${node.cluster}` - : node.id - )(cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges }))) - ), + groupBy((node) => (node.cluster === 0 || node.cluster === 6 || node.cluster === 2 ? `${node.cluster}` : node.id))( + cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges })) + ) + ) ]).then((layouts) => { const draw = (idx: number, animate: boolean) => { const nodes = layouts[idx].nodes @@ -195,10 +171,7 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ const width = container.offsetWidth const height = container.offsetHeight - const { zoom } = Graph.boundsToViewport( - Graph.getSelectionBounds(nodes, 80), - { width, height } - ) + const { zoom } = Graph.boundsToViewport(Graph.getSelectionBounds(nodes, 80), { width, height }) render({ nodes, @@ -212,8 +185,8 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ animateViewportZoom: true, onNodeClick: ({ target: node }) => { console.log(node) - }, - }, + } + } }) } @@ -229,26 +202,15 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ console.log( JSON.stringify( layouts.map(({ nodes, edges }) => { - const idMap = Object.values(nodes).reduce>( - (idMap, { id }, idx) => { - idMap[id] = idx - return idMap - }, - {} - ) + const idMap = Object.values(nodes).reduce>((idMap, { id }, idx) => { + idMap[id] = idx + return idMap + }, {}) return { roots: raw.roots, - nodes: Object.values(nodes).map(({ id, x = 0, y = 0 }) => [ - idMap[id], - x, - y, - ]), - edges: Object.values(edges).map(({ id, source, target }) => [ - id, - idMap[source], - idMap[target], - ]), + nodes: Object.values(nodes).map(({ id, x = 0, y = 0 }) => [idMap[id], x, y]), + edges: Object.values(edges).map(({ id, source, target }) => [id, idMap[source], idMap[target]]) } }) ) diff --git a/examples/hierarchy/index.html b/examples/hierarchy/index.html index ac400bab..ef1eb2df 100644 --- a/examples/hierarchy/index.html +++ b/examples/hierarchy/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
- - + + + Graph + + + + + + +
+ + diff --git a/examples/hierarchy/index.ts b/examples/hierarchy/index.ts index a8581c38..390585cd 100644 --- a/examples/hierarchy/index.ts +++ b/examples/hierarchy/index.ts @@ -6,18 +6,15 @@ import * as Zoom from '../../src/bindings/native/zoom' import * as WebGL from '../../src/renderers/webgl' import graphData from '../../data/tmp-data' - export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - /** * Initialize Data */ type Node = Graph.Node & { type: string } - const arabicLabel = 'مدالله بن علي\nبن سهل الخالدي' const thaiLabel = 'บริษัท ไทยยูเนียนรับเบอร์\nจำกัด' const russianLabel = 'ВИКТОР ФЕЛИКСОВИЧ ВЕКСЕЛЬБЕРГ' @@ -25,37 +22,53 @@ const russianLabel = 'ВИКТОР ФЕЛИКСОВИЧ ВЕКСЕЛЬБЕРГ' const createCompanyStyle = (radius: number): Graph.NodeStyle => ({ color: '#FFAF1D', stroke: [{ color: '#FFF' }, { color: '#F7CA4D' }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'business', color: '#fff', size: radius * 1.2 }, - badge: [{ - position: 45, - color: '#FFAF1D', - stroke: '#FFF', - icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '15' } - }, { - position: 135, - color: '#E4171B', - stroke: '#FFF', - icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '!' } - }], + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: radius * 1.2 + }, + badge: [ + { + position: 45, + color: '#FFAF1D', + stroke: '#FFF', + icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '15' } + }, + { + position: 135, + color: '#E4171B', + stroke: '#FFF', + icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '!' } + } + ] }) const createPersonStyle = (radius: number): Graph.NodeStyle => ({ color: '#7CBBF3', stroke: [{ color: '#90D7FB' }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'person', color: '#fff', size: radius * 1.2 }, - badge: [{ - position: 45, - color: '#7CBBF3', - stroke: '#FFF', - icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '8' } - }], + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: radius * 1.2 + }, + badge: [ + { + position: 45, + color: '#7CBBF3', + stroke: '#FFF', + icon: { type: 'textIcon', family: 'Helvetica', size: 10, color: '#FFF', text: '8' } + } + ] }) - let nodes = Object.values(graphData.nodes) .map((node, idx) => ({ ...node, - label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel: node.label + label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel : node.label })) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_2` }))) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_3` }))) @@ -64,17 +77,33 @@ let nodes = Object.values(graphData.nodes) label, radius: 18, type, - style: type === 'company' ? - createCompanyStyle(18) : - createPersonStyle(18) + style: type === 'company' ? createCompanyStyle(18) : createPersonStyle(18) })) -let edges = Object.entries<{ field: string, source: string, target: string }>(graphData.edges) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }])) +let edges = Object.entries<{ field: string; source: string; target: string }>(graphData.edges) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }]) + ) .concat([ - ['connect_2', { field: 'related_to', source: Object.values(graphData.nodes)[77].id, target: `${Object.values(graphData.nodes)[0].id}_2` }], - ['connect_3', { field: 'related_to', source: `${Object.values(graphData.nodes)[50].id}_2`, target: `${Object.values(graphData.nodes)[0].id}_3` }], + [ + 'connect_2', + { + field: 'related_to', + source: Object.values(graphData.nodes)[77].id, + target: `${Object.values(graphData.nodes)[0].id}_2` + } + ], + [ + 'connect_3', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[50].id}_2`, + target: `${Object.values(graphData.nodes)[0].id}_3` + } + ] ]) .map(([id, { field, source, target }]) => ({ id, @@ -90,7 +119,6 @@ let hierarchyEdges: Graph.Edge[] = [] let forceNodes: Node[] = [] let forceEdges: Graph.Edge[] = [] - /** * Initialize Layout and Renderer */ @@ -103,13 +131,12 @@ const render = WebGL.Renderer({ debug: { stats, logPerformance: false } }) - /** * Initialize Layout and Renderer Options */ const layoutOptions: Hierarchy.Options = { y: container.offsetHeight, - x: 600, + x: 600 } const renderOptions: WebGL.Options = { width: container.offsetWidth, @@ -124,24 +151,28 @@ const renderOptions: WebGL.Options = { render({ nodes, edges, options: renderOptions }) }, onNodePointerEnter: ({ target: { id } }) => { - nodes = nodes.map((node) => (node.id === id ? { - ...node, - style: { - ...node.style, - stroke: node.type === 'company' ? - [{ color: '#FFF' }, { color: '#CCC' }] : - [{ color: '#CCC' }] - } - } : node)) + nodes = nodes.map((node) => + node.id === id + ? { + ...node, + style: { + ...node.style, + stroke: node.type === 'company' ? [{ color: '#FFF' }, { color: '#CCC' }] : [{ color: '#CCC' }] + } + } + : node + ) render({ nodes, edges, options: renderOptions }) }, onNodePointerLeave: ({ target: { id } }) => { - nodes = nodes.map((node) => (node.id === id ? { - ...node, - style: node.type === 'company' ? - createCompanyStyle(18) : - createPersonStyle(18) - } : node)) + nodes = nodes.map((node) => + node.id === id + ? { + ...node, + style: node.type === 'company' ? createCompanyStyle(18) : createPersonStyle(18) + } + : node + ) render({ nodes, edges, options: renderOptions }) }, onEdgePointerEnter: ({ target: { id } }) => { @@ -194,7 +225,6 @@ const renderOptions: WebGL.Options = { } } - /** * Layout and Render Graph */ @@ -207,7 +237,7 @@ zoomControl({ onZoomOut: () => { renderOptions.zoom = Zoom.clampZoom(renderOptions.minZoom!, renderOptions.maxZoom!, renderOptions.zoom! * 0.6) render({ nodes, edges, options: renderOptions }) - }, + } }) let layout = 'hierarchy' @@ -218,10 +248,10 @@ force({ nodes, edges }).then((forceData) => { forceNodes = forceData.nodes forceEdges = forceData.edges - const { x, y, zoom } = Graph.boundsToViewport( - Graph.getSelectionBounds(nodes, 80), - { width: renderOptions.width!, height: renderOptions.height! } - ) + const { x, y, zoom } = Graph.boundsToViewport(Graph.getSelectionBounds(nodes, 80), { + width: renderOptions.width!, + height: renderOptions.height! + }) renderOptions.x = x renderOptions.y = y renderOptions.zoom = zoom diff --git a/examples/index.html b/examples/index.html index 0e36c09c..9414df4d 100644 --- a/examples/index.html +++ b/examples/index.html @@ -1,35 +1,35 @@ - - - Graph - - - - - - +
  • landing
  • +
  • pixi
  • +
  • pixi perf
  • +
  • pixi render perf [without layout]
  • +
  • pixi subgraphs
  • +
  • pixi react
  • +
  • pixi icons
  • +
  • hierarchy
  • +
  • radial
  • +
  • collide
  • +
  • components
  • +
  • fixed nodes
  • +
  • graph annotations
  • + + diff --git a/examples/landing/data.ts b/examples/landing/data.ts index 0f1122ab..2cc0e80c 100644 --- a/examples/landing/data.ts +++ b/examples/landing/data.ts @@ -1 +1,25 @@ -export default {"roots":[2],"nodes":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122],"edges":[[2,89],[2,90],[2,91],[2,92],[2,93],[2,94],[2,1],[89,106],[89,107],[89,108],[89,109],[118,109],[118,109],[119,109],[120,109],[121,109],[119,106],[119,106],[119,122],[1,3],[1,3],[1,4],[1,0],[1,0],[1,5],[3,10],[3,11],[3,12],[12,3],[3,13],[13,3],[14,3],[3,14],[6,3],[3,15],[3,16],[57,12],[58,12],[29,12],[44,14],[45,14],[45,14],[6,5],[7,5],[8,5],[46,44],[46,44],[46,44],[47,44],[48,44],[46,49],[46,50],[46,49],[46,51],[46,52],[46,53],[11,10],[30,11],[11,30],[59,11],[39,11],[39,10],[7,9],[26,16],[16,13],[27,16],[16,27],[16,28],[29,16],[42,27],[42,27],[43,27],[15,28],[29,15],[29,30],[29,31],[91,101],[102,91],[103,91],[103,91],[104,91],[105,91],[46,52],[52,53],[50,49],[54,50],[55,50],[50,56],[50,56],[17,3],[11,12],[16,12],[10,61],[10,62],[10,63],[10,64],[10,65],[10,37],[10,60],[10,26],[10,26],[66,64],[62,64],[67,64],[67,64],[68,64],[69,64],[70,64],[71,64],[72,64],[73,64],[39,15],[71,62],[71,76],[77,71],[77,71],[78,71],[71,78],[110,89],[110,89],[110,89],[89,111],[89,111],[112,89],[89,112],[89,113],[89,106],[107,89],[108,89],[114,89],[115,89],[89,116],[117,89],[2,95],[2,96],[2,97],[2,98],[2,99],[2,100],[11,15],[11,18],[11,31],[11,60],[11,16],[11,13],[11,14],[3,18],[19,18],[19,18],[20,18],[21,18],[22,18],[21,18],[22,18],[23,18],[24,18],[25,18],[22,18],[37,30],[30,31],[30,32],[38,30],[39,30],[40,30],[41,30],[31,32],[33,32],[33,32],[34,32],[35,32],[36,32],[34,32],[79,69],[80,69],[80,81],[80,82],[80,83],[80,82],[80,82],[66,73],[74,73],[75,73],[79,84],[79,85],[79,86],[79,87],[79,88]]} \ No newline at end of file +// prettier-ignore +export default { + roots: [2], + nodes: [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 + ], + edges: [ + [2, 89], [2, 90], [2, 91], [2, 92], [2, 93], [2, 94], [2, 1], [89, 106], [89, 107], [89, 108], [89, 109], [118, 109], [118, 109], [119, 109], + [120, 109], [121, 109], [119, 106], [119, 106], [119, 122], [1, 3], [1, 3], [1, 4], [1, 0], [1, 0], [1, 5], [3, 10], [3, 11], [3, 12], [12, 3], + [3, 13], [13, 3], [14, 3], [3, 14], [6, 3], [3, 15], [3, 16], [57, 12], [58, 12], [29, 12], [44, 14], [45, 14], [45, 14], [6, 5], [7, 5], [8, 5], + [46, 44], [46, 44], [46, 44], [47, 44], [48, 44], [46, 49], [46, 50], [46, 49], [46, 51], [46, 52], [46, 53], [11, 10], [30, 11], [11, 30], + [59, 11], [39, 11], [39, 10], [7, 9], [26, 16], [16, 13], [27, 16], [16, 27], [16, 28], [29, 16], [42, 27], [42, 27], [43, 27], [15, 28], [29, 15], + [29, 30], [29, 31], [91, 101], [102, 91], [103, 91], [103, 91], [104, 91], [105, 91], [46, 52], [52, 53], [50, 49], [54, 50], [55, 50], [50, 56], + [50, 56], [17, 3], [11, 12], [16, 12], [10, 61], [10, 62], [10, 63], [10, 64], [10, 65], [10, 37], [10, 60], [10, 26], [10, 26], [66, 64], [62, 64], + [67, 64], [67, 64], [68, 64], [69, 64], [70, 64], [71, 64], [72, 64], [73, 64], [39, 15], [71, 62], [71, 76], [77, 71], [77, 71], [78, 71], [71, 78], + [110, 89], [110, 89], [110, 89], [89, 111], [89, 111], [112, 89], [89, 112], [89, 113], [89, 106], [107, 89], [108, 89], [114, 89], [115, 89], [89, 116], + [117, 89], [2, 95], [2, 96], [2, 97], [2, 98], [2, 99], [2, 100], [11, 15], [11, 18], [11, 31], [11, 60], [11, 16], [11, 13], [11, 14], [3, 18], [19, 18], + [19, 18], [20, 18], [21, 18], [22, 18], [21, 18], [22, 18], [23, 18], [24, 18], [25, 18], [22, 18], [37, 30], [30, 31], [30, 32], [38, 30], [39, 30], + [40, 30], [41, 30], [31, 32], [33, 32], [33, 32], [34, 32], [35, 32], [36, 32], [34, 32], [79, 69], [80, 69], [80, 81], [80, 82], [80, 83], [80, 82], + [80, 82], [66, 73], [74, 73], [75, 73], [79, 84], [79, 85], [79, 86], [79, 87], [79, 88] + ] +} diff --git a/examples/landing/index.html b/examples/landing/index.html index 6db04160..e9ffcd0a 100644 --- a/examples/landing/index.html +++ b/examples/landing/index.html @@ -1,14 +1,15 @@ - - - Graph - - - - - -
    - - Docs - - github - -
    -
    -
    -
    -

    A high performance network visualization library with a simple, declarative API, plugable renderers, and bindings for different frameworks and use cases. Trellis renders to WebGL, Canvas, JPEG, and other targets.

    -
    -
    - - + + +
    + + Docs + + github + +
    +
    +
    +
    +

    + A high performance network visualization library with a simple, declarative API, plugable renderers, and bindings for different + frameworks and use cases. Trellis renders to WebGL, Canvas, JPEG, and other + targets. +

    +
    +
    + + diff --git a/examples/landing/index.ts b/examples/landing/index.ts index ef027138..1343c98e 100644 --- a/examples/landing/index.ts +++ b/examples/landing/index.ts @@ -1,141 +1,126 @@ -import clustersKmeans from "@turf/clusters-kmeans" -import * as Force from "../../src/layout/force" -import * as Hierarchy from "../../src/layout/hierarchy" -import * as WebGL from "../../src/renderers/webgl" -import * as Graph from "../../src/" -import raw from "./data" +import clustersKmeans from '@turf/clusters-kmeans' +import * as Force from '../../src/layout/force' +import * as Hierarchy from '../../src/layout/hierarchy' +import * as WebGL from '../../src/renderers/webgl' +import * as Graph from '../../src/' +import raw from './data' type Node = Graph.Node & { cluster?: number; size?: number } const NODE_STYLE_A: Graph.NodeStyle = { - color: "#0A85FF", - stroke: [{ color: "#9CF", width: 3 }], + color: '#0A85FF', + stroke: [{ color: '#9CF', width: 3 }], icon: { - type: "textIcon", - family: "Material Icons", - text: "person", - color: "#fff", - size: 24, + type: 'textIcon', + family: 'Material Icons', + text: 'person', + color: '#fff', + size: 24 }, label: { fontSize: 10, - color: "#666", - }, + color: '#666' + } } const NODE_STYLE_B: Graph.NodeStyle = { - color: "#FFB71B", - stroke: [{ color: "#FEA", width: 3 }], + color: '#FFB71B', + stroke: [{ color: '#FEA', width: 3 }], icon: { - type: "textIcon", - family: "Material Icons", - text: "business", - color: "#fff", - size: 24, + type: 'textIcon', + family: 'Material Icons', + text: 'business', + color: '#fff', + size: 24 }, label: { fontSize: 10, - color: "#666", - }, + color: '#666' + } } const EDGE_STYLE: Graph.EdgeStyle = { - stroke: "#BBB", + stroke: '#BBB', width: 1, - arrow: "forward", + arrow: 'forward', label: { fontSize: 10, - color: "#666", - }, + color: '#666' + } } -const container = document.querySelector("#graph") as HTMLDivElement +const container = document.querySelector('#graph') as HTMLDivElement const render = WebGL.Renderer({ container }) const force = Force.Layout() const hierarchy = Hierarchy.Layout() const nodes = raw.nodes.map((id, idx) => ({ id: `${id}`, radius: 18, - label: `${idx % 4 === 0 ? "person" : "company"} ${id}`, - style: idx % 4 === 0 ? NODE_STYLE_A : NODE_STYLE_B, + label: `${idx % 4 === 0 ? 'person' : 'company'} ${id}`, + style: idx % 4 === 0 ? NODE_STYLE_A : NODE_STYLE_B })) const edges = raw.edges.map(([source, target], idx) => ({ id: `${idx}`, source: `${source}`, target: `${target}`, - label: "linked to", - style: EDGE_STYLE, + label: 'linked to', + style: EDGE_STYLE })) -const filterGraph = - (predicate: (node: Node) => boolean) => - (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { - const nodeMap = graph.nodes.reduce>( - (nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), - {} - ) - return { - nodes: graph.nodes.filter(predicate), - edges: graph.edges.filter( - ({ source, target }) => - predicate(nodeMap[source]) && predicate(nodeMap[target]) - ), - } +const filterGraph = (predicate: (node: Node) => boolean) => (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { + const nodeMap = graph.nodes.reduce>((nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), {}) + return { + nodes: graph.nodes.filter(predicate), + edges: graph.edges.filter(({ source, target }) => predicate(nodeMap[source]) && predicate(nodeMap[target])) } +} -const groupBy = - (grouper: (node: Node) => string) => - (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { - const idMap: Record = {} - - const nodes = Object.values( - graph.nodes.reduce>((groups, node) => { - const key = grouper(node) - if (groups[key] === undefined) groups[key] = [] - groups[key].push(node) - return groups - }, {}) - ).map((nodes) => { - nodes.forEach((node) => { - idMap[node.id] = nodes[0].id - }) - return { ...nodes[0], size: nodes.length } +const groupBy = (grouper: (node: Node) => string) => (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { + const idMap: Record = {} + + const nodes = Object.values( + graph.nodes.reduce>((groups, node) => { + const key = grouper(node) + if (groups[key] === undefined) groups[key] = [] + groups[key].push(node) + return groups + }, {}) + ).map((nodes) => { + nodes.forEach((node) => { + idMap[node.id] = nodes[0].id }) + return { ...nodes[0], size: nodes.length } + }) - const edges = Object.values( - graph.edges.reduce>((edges, edge) => { - if ( - edges[`${idMap[edge.source]}::${idMap[edge.target]}`] === undefined - ) { - edges[`${idMap[edge.source]}::${idMap[edge.target]}`] = { - ...edge, - source: idMap[edge.source], - target: idMap[edge.target], - } + const edges = Object.values( + graph.edges.reduce>((edges, edge) => { + if (edges[`${idMap[edge.source]}::${idMap[edge.target]}`] === undefined) { + edges[`${idMap[edge.source]}::${idMap[edge.target]}`] = { + ...edge, + source: idMap[edge.source], + target: idMap[edge.target] } - return edges - }, {}) - ) + } + return edges + }, {}) + ) - return { nodes, edges } - } + return { nodes, edges } +} const cluster = (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { - const nodeMap = graph.nodes.reduce>( - (nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), - {} - ) + const nodeMap = graph.nodes.reduce>((nodeMap, node) => ((nodeMap[node.id] = node), nodeMap), {}) const nodes = clustersKmeans({ - type: "FeatureCollection", + type: 'FeatureCollection', features: graph.nodes.map(({ id, x = 0, y = 0 }) => ({ - type: "Feature", + type: 'Feature', geometry: { - type: "Point", - coordinates: [x, y], + type: 'Point', + coordinates: [x, y] }, - properties: { id }, - })), + properties: { id } + })) }).features.map(({ properties }) => { const cluster = properties.cluster ?? 0 const node = nodeMap[(properties as any).id] @@ -150,12 +135,7 @@ const cluster = (graph: { nodes: Node[]; edges: Graph.Edge[] }) => { Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ force({ nodes, edges }) .then(cluster) - .then( - filterGraph( - ({ cluster }) => - cluster !== 2 && cluster !== 3 && cluster !== 5 && cluster !== 7 - ) - ) + .then(filterGraph(({ cluster }) => cluster !== 2 && cluster !== 3 && cluster !== 5 && cluster !== 7)) .then(force), force({ nodes, edges }) .then(cluster) @@ -165,25 +145,21 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges })), hierarchy( `${raw.roots[0]}`, - groupBy((node) => - node.cluster === 0 || node.cluster === 6 ? `${node.cluster}` : node.id - )(cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges }))) + groupBy((node) => (node.cluster === 0 || node.cluster === 6 ? `${node.cluster}` : node.id))( + cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges })) + ) ), hierarchy( `${raw.roots[0]}`, - groupBy((node) => - node.cluster === 0 || node.cluster === 6 || node.cluster === 2 - ? `${node.cluster}` - : node.id - )(cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges }))) + groupBy((node) => (node.cluster === 0 || node.cluster === 6 || node.cluster === 2 ? `${node.cluster}` : node.id))( + cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges })) + ) ), force( - groupBy((node) => - node.cluster === 0 || node.cluster === 6 || node.cluster === 2 - ? `${node.cluster}` - : node.id - )(cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges }))) - ), + groupBy((node) => (node.cluster === 0 || node.cluster === 6 || node.cluster === 2 ? `${node.cluster}` : node.id))( + cluster(hierarchy(`${raw.roots[0]}`, { nodes, edges })) + ) + ) ]).then((layouts) => { const draw = (idx: number, animate: boolean) => { const nodes = layouts[idx].nodes @@ -191,10 +167,10 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ const width = container.offsetWidth const height = container.offsetHeight - const { x, y, zoom } = Graph.boundsToViewport( - Graph.getSelectionBounds(nodes, 80), - { width, height } - ) + const { x, y, zoom } = Graph.boundsToViewport(Graph.getSelectionBounds(nodes, 80), { + width, + height + }) render({ nodes, @@ -207,8 +183,8 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ zoom, animateNodePosition: !!animate, animateViewportPosition: true, - animateViewportZoom: true, - }, + animateViewportZoom: true + } }) } @@ -224,26 +200,15 @@ Promise.all<{ nodes: Node[]; edges: Graph.Edge[] }>([ console.log( JSON.stringify( layouts.map(({ nodes, edges }) => { - const idMap = Object.values(nodes).reduce>( - (idMap, { id }, idx) => { - idMap[id] = idx - return idMap - }, - {} - ) + const idMap = Object.values(nodes).reduce>((idMap, { id }, idx) => { + idMap[id] = idx + return idMap + }, {}) return { roots: raw.roots, - nodes: Object.values(nodes).map(({ id, x = 0, y = 0 }) => [ - idMap[id], - x, - y, - ]), - edges: Object.values(edges).map(({ id, source, target }) => [ - id, - idMap[source], - idMap[target], - ]), + nodes: Object.values(nodes).map(({ id, x = 0, y = 0 }) => [idMap[id], x, y]), + edges: Object.values(edges).map(({ id, source, target }) => [id, idMap[source], idMap[target]]) } }) ) diff --git a/examples/pixi-icons/index.html b/examples/pixi-icons/index.html index de77ada1..5522e966 100644 --- a/examples/pixi-icons/index.html +++ b/examples/pixi-icons/index.html @@ -1,25 +1,25 @@ - - - Graph - - - - - - - -
    - - + + + Graph + + + + + + + +
    + + diff --git a/examples/pixi-icons/index.ts b/examples/pixi-icons/index.ts index e0ad2ac6..d6c9c426 100644 --- a/examples/pixi-icons/index.ts +++ b/examples/pixi-icons/index.ts @@ -1,11 +1,11 @@ -import Stats from "stats.js" -import * as Force from "../../src/layout/force" -import * as Fisheye from "../../src/layout/fisheye" -import * as Cluster from "../../src/layout/cluster" -import * as Graph from "../../src/" -import * as WebGL from "../../src/renderers/webgl" -import { company } from "../assets/icons" -import person from "../assets/person.png" +import Stats from 'stats.js' +import * as Force from '../../src/layout/force' +import * as Fisheye from '../../src/layout/fisheye' +import * as Cluster from '../../src/layout/cluster' +import * as Graph from '../../src/' +import * as WebGL from '../../src/renderers/webgl' +import { company } from '../assets/icons' +import person from '../assets/person.png' export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom @@ -15,137 +15,136 @@ document.body.appendChild(stats.dom) * Initialize Data */ const createCompanyStyle = (): Graph.NodeStyle => ({ - color: "#FFAF1D", - stroke: [{ color: "#F7CA4D", width: 5 }], - icon: { type: "imageIcon", url: company, scale: 1.8 }, + color: '#FFAF1D', + stroke: [{ color: '#F7CA4D', width: 5 }], + icon: { type: 'imageIcon', url: company, scale: 1.8 }, badge: [ { position: 45, - color: "#FFAF1D", - stroke: "#FFF", + color: '#FFAF1D', + stroke: '#FFF', strokeWidth: 3, radius: 12, icon: { - type: "textIcon", - family: "Roboto", + type: 'textIcon', + family: 'Roboto', size: 16, - color: "#FFF", - text: "15", - }, + color: '#FFF', + text: '15' + } }, { position: 135, - color: "#E4171B", - stroke: "#FFF", + color: '#E4171B', + stroke: '#FFF', strokeWidth: 3, radius: 12, icon: { - type: "textIcon", - family: "Roboto", + type: 'textIcon', + family: 'Roboto', size: 16, - color: "#FFF", - text: "!", - }, - }, - ], + color: '#FFF', + text: '!' + } + } + ] }) const createPersonStyle = (radius: number): Graph.NodeStyle => ({ - color: "#7CBBF3", - stroke: [{ color: "#90D7FB", width: 5 }], + color: '#7CBBF3', + stroke: [{ color: '#90D7FB', width: 5 }], label: { - fontFamily: "Roboto", + fontFamily: 'Roboto' }, icon: radius > 30 ? { - type: "textIcon" as const, - family: "Arial, Helvetica, monospace", - text: "P", - color: "#cbedff", - size: radius, + type: 'textIcon' as const, + family: 'Arial, Helvetica, monospace', + text: 'P', + color: '#cbedff', + size: radius } - : { type: "imageIcon" as const, url: person, scale: 0.05 }, + : { type: 'imageIcon' as const, url: person, scale: 0.05 }, badge: [ { position: 45, - color: "#7CBBF3", - stroke: "#FFF", + color: '#7CBBF3', + stroke: '#FFF', strokeWidth: 3, radius: 12, icon: { - type: "textIcon", - family: "Roboto", + type: 'textIcon', + family: 'Roboto', size: 16, - color: "#FFF", - text: "8", - }, - }, - ], + color: '#FFF', + text: '8' + } + } + ] }) let nodes = [ - { id: "a", label: "A" }, - { id: "b", label: "B" }, - { id: "c", label: "C" }, - { id: "d", label: "D" }, - { id: "e", label: "E" }, - { id: "f", label: "F" }, - { id: "g", label: "G" }, - { id: "h", label: "H" }, - { id: "i", label: "I" }, - { id: "j", label: "J" }, - { id: "k", label: "K" }, - { id: "l", label: "L" }, - { id: "m", label: "M" }, - { id: "n", label: "N" }, - { id: "o", label: "O" }, - { id: "p", label: "P" }, - { id: "q", label: "Q" }, + { id: 'a', label: 'A' }, + { id: 'b', label: 'B' }, + { id: 'c', label: 'C' }, + { id: 'd', label: 'D' }, + { id: 'e', label: 'E' }, + { id: 'f', label: 'F' }, + { id: 'g', label: 'G' }, + { id: 'h', label: 'H' }, + { id: 'i', label: 'I' }, + { id: 'j', label: 'J' }, + { id: 'k', label: 'K' }, + { id: 'l', label: 'L' }, + { id: 'm', label: 'M' }, + { id: 'n', label: 'N' }, + { id: 'o', label: 'O' }, + { id: 'p', label: 'P' }, + { id: 'q', label: 'Q' } ].map(({ id, label }, idx) => ({ id, label, - radius: id === "a" ? 32 : (28 - idx) * 1.8, - style: - id === "a" ? createCompanyStyle() : createPersonStyle((28 - idx) * 1.8), + radius: id === 'a' ? 32 : (28 - idx) * 1.8, + style: id === 'a' ? createCompanyStyle() : createPersonStyle((28 - idx) * 1.8) })) let edges: Graph.Edge[] = [ - { id: "ba", source: "a", target: "b", label: "Related To" }, - { id: "ca", source: "a", target: "c", label: "Related To" }, - { id: "da", source: "a", target: "d", label: "Related To" }, - { id: "ea", source: "a", target: "e", label: "Related To" }, - { id: "fa", source: "a", target: "f", label: "Related To" }, - { id: "ga", source: "a", target: "g", label: "Related To" }, - { id: "ha", source: "a", target: "h", label: "Related To" }, - { id: "ia", source: "a", target: "i", label: "Related To" }, - { id: "ja", source: "b", target: "j", label: "Related To" }, - { id: "ka", source: "b", target: "k", label: "Related To" }, - { id: "la", source: "b", target: "l", label: "Related To" }, - { id: "ma", source: "l", target: "m", label: "Related To" }, - { id: "na", source: "c", target: "n", label: "Related To" }, - { id: "oa", source: "c", target: "o", label: "Related To" }, - { id: "pa", source: "c", target: "p", label: "Related To" }, - { id: "qa", source: "c", target: "q", label: "Related To" }, + { id: 'ba', source: 'a', target: 'b', label: 'Related To' }, + { id: 'ca', source: 'a', target: 'c', label: 'Related To' }, + { id: 'da', source: 'a', target: 'd', label: 'Related To' }, + { id: 'ea', source: 'a', target: 'e', label: 'Related To' }, + { id: 'fa', source: 'a', target: 'f', label: 'Related To' }, + { id: 'ga', source: 'a', target: 'g', label: 'Related To' }, + { id: 'ha', source: 'a', target: 'h', label: 'Related To' }, + { id: 'ia', source: 'a', target: 'i', label: 'Related To' }, + { id: 'ja', source: 'b', target: 'j', label: 'Related To' }, + { id: 'ka', source: 'b', target: 'k', label: 'Related To' }, + { id: 'la', source: 'b', target: 'l', label: 'Related To' }, + { id: 'ma', source: 'l', target: 'm', label: 'Related To' }, + { id: 'na', source: 'c', target: 'n', label: 'Related To' }, + { id: 'oa', source: 'c', target: 'o', label: 'Related To' }, + { id: 'pa', source: 'c', target: 'p', label: 'Related To' }, + { id: 'qa', source: 'c', target: 'q', label: 'Related To' } ].map((edge) => ({ ...edge, style: { label: { - fontFamily: "Roboto", - }, - }, + fontFamily: 'Roboto' + } + } })) /** * Initialize Layout and Renderer */ -const container = document.querySelector("#graph") as HTMLDivElement +const container = document.querySelector('#graph') as HTMLDivElement const force = Force.Layout() const fisheye = Fisheye.Layout() const cluster = Cluster.Layout() const render = WebGL.Renderer({ container, - debug: { stats, logPerformance: false }, + debug: { stats, logPerformance: false } }) /** @@ -166,7 +165,7 @@ const renderOptions: WebGL.Options = { node.id === id ? { ...node, - style: { ...node.style, stroke: [{ color: "#ddd", width: 6 }] }, + style: { ...node.style, stroke: [{ color: '#ddd', width: 6 }] } } : node ) @@ -179,23 +178,19 @@ const renderOptions: WebGL.Options = { ...node, style: { ...node.style, - stroke: [{ color: id === "a" ? "#F7CA4D" : "#90D7FB", width: 6 }], - }, + stroke: [{ color: id === 'a' ? '#F7CA4D' : '#90D7FB', width: 6 }] + } } : node ) render({ nodes, edges, options: renderOptions }) }, onEdgePointerEnter: ({ target: { id } }) => { - edges = edges.map((edge) => - edge.id === id ? { ...edge, style: { ...edge.style, width: 3 } } : edge - ) + edges = edges.map((edge) => (edge.id === id ? { ...edge, style: { ...edge.style, width: 3 } } : edge)) render({ nodes, edges, options: renderOptions }) }, onEdgePointerLeave: ({ target: { id } }) => { - edges = edges.map((edge) => - edge.id === id ? { ...edge, style: { ...edge.style, width: 1 } } : edge - ) + edges = edges.map((edge) => (edge.id === id ? { ...edge, style: { ...edge.style, width: 1 } } : edge)) render({ nodes, edges, options: renderOptions }) }, onNodeDoubleClick: ({ target }) => { @@ -204,60 +199,45 @@ const renderOptions: WebGL.Options = { { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 1}`, radius: 18, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 1 - }`, - style: createCompanyStyle(), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 1}`, + style: createCompanyStyle() }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 2}`, radius: 18, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 2 - }`, - style: createCompanyStyle(), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 2}`, + style: createCompanyStyle() }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 3}`, radius: 18, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 3 - }`, - style: createCompanyStyle(), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 3}`, + style: createCompanyStyle() }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 4}`, radius: 18, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 4 - }`, - style: createCompanyStyle(), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 4}`, + style: createCompanyStyle() }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 5}`, radius: 18, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 5 - }`, - style: createCompanyStyle(), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 5}`, + style: createCompanyStyle() }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 6}`, radius: 18, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 6 - }`, - style: createCompanyStyle(), - }, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 6}`, + style: createCompanyStyle() + } ]) ) const radius = subgraphNodes .map(({ x = 0, y = 0, radius }) => Graph.distance(x, y, 0, 0) + radius) - .reduce( - (maxDistance, distance) => Math.max(maxDistance, distance), - target.radius - ) + 20 + .reduce((maxDistance, distance) => Math.max(maxDistance, distance), target.radius) + 20 nodes = fisheye( nodes, @@ -266,11 +246,11 @@ const renderOptions: WebGL.Options = { return { ...node, radius, - style: { ...node.style, color: "#efefef", icon: undefined }, + style: { ...node.style, color: '#efefef', icon: undefined }, subgraph: { nodes: subgraphNodes, - edges: [], - }, + edges: [] + } } } @@ -285,12 +265,9 @@ const renderOptions: WebGL.Options = { nodes, nodes.map((node, idx) => ({ ...node, - radius: node.id === "a" ? 32 : (28 - idx) * 1.8, - style: - node.id === "a" - ? createCompanyStyle() - : createPersonStyle((28 - idx) * 1.8), - subgraph: undefined, + radius: node.id === 'a' ? 32 : (28 - idx) * 1.8, + style: node.id === 'a' ? createCompanyStyle() : createPersonStyle((28 - idx) * 1.8), + subgraph: undefined })) ) @@ -306,7 +283,7 @@ const renderOptions: WebGL.Options = { renderOptions.y = viewportY renderOptions.zoom = viewportZoom render({ nodes, edges, options: renderOptions }) - }, + } } /** diff --git a/examples/pixi-perf/index.html b/examples/pixi-perf/index.html index ac400bab..ef1eb2df 100644 --- a/examples/pixi-perf/index.html +++ b/examples/pixi-perf/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
    - - + + + Graph + + + + + + +
    + + diff --git a/examples/pixi-perf/index.ts b/examples/pixi-perf/index.ts index 62567833..ceff60bb 100644 --- a/examples/pixi-perf/index.ts +++ b/examples/pixi-perf/index.ts @@ -7,15 +7,12 @@ import * as WebGL from '../../src/renderers/webgl' import * as Png from '../../src/renderers/image' import graphData from '../../data/tmp-data' - export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - type Node = Graph.Node & { type: string } - /** * Initialize Data */ @@ -24,7 +21,10 @@ const thaiLabel = 'บริษัท ไทยยูเนียนรับเ const russianLabel = 'ВИКТОР ФЕЛИКСОВИЧ ВЕКСЕЛЬБЕРГ' const data = { nodes: Object.values(graphData.nodes) - .map((node, idx) => ({ ...node, label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel: node.label })) + .map((node, idx) => ({ + ...node, + label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel : node.label + })) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_2` }))) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_3` }))) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_4` }))) @@ -38,36 +38,116 @@ const data = { style: { color: type === 'company' ? '#ffaf1d' : '#7CBBF3', stroke: [{ color: type === 'company' ? '#F7CA4D' : '#90D7FB', width: 4 }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'person', color: '#fff', size: 20 }, - badge: type === 'company' ? [{ - position: 45, - color: '#FFAF1D', - stroke: '#FFF', - icon: { - type: 'textIcon', - family: 'Helvetica', - size: 10, - color: '#FFF', - text: '8', - } - }] : undefined, + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: 20 + }, + badge: + type === 'company' + ? [ + { + position: 45, + color: '#FFAF1D', + stroke: '#FFF', + icon: { + type: 'textIcon', + family: 'Helvetica', + size: 10, + color: '#FFF', + text: '8' + } + } + ] + : undefined } })), - edges: Object.entries<{ field: string, source: string, target: string }>(graphData.edges) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_4`, { ...edge, source: `${edge.source}_4`, target: `${edge.target}_4` }])) + edges: Object.entries<{ field: string; source: string; target: string }>(graphData.edges) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_4`, { ...edge, source: `${edge.source}_4`, target: `${edge.target}_4` }]) + ) // .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_5`, { ...edge, source: `${edge.source}_5`, target: `${edge.target}_5` }])) .concat([ - ['connect_a', { field: 'related_to', source: Object.values(graphData.nodes)[0].id, target: `${Object.values(graphData.nodes)[0].id}_2` }], - ['connect_d', { field: 'related_to', source: `${Object.values(graphData.nodes)[15].id}`, target: `${Object.values(graphData.nodes)[15].id}_2` }], - ['connect_g', { field: 'related_to', source: `${Object.values(graphData.nodes)[30].id}`, target: `${Object.values(graphData.nodes)[30].id}_2` }], - ['connect_b', { field: 'related_to', source: `${Object.values(graphData.nodes)[5].id}_2`, target: `${Object.values(graphData.nodes)[5].id}_3` }], - ['connect_e', { field: 'related_to', source: `${Object.values(graphData.nodes)[20].id}_2`, target: `${Object.values(graphData.nodes)[20].id}_3` }], - ['connect_h', { field: 'related_to', source: `${Object.values(graphData.nodes)[35].id}_2`, target: `${Object.values(graphData.nodes)[35].id}_3` }], - ['connect_c', { field: 'related_to', source: `${Object.values(graphData.nodes)[10].id}_3`, target: `${Object.values(graphData.nodes)[10].id}_4` }], - ['connect_f', { field: 'related_to', source: `${Object.values(graphData.nodes)[25].id}_3`, target: `${Object.values(graphData.nodes)[25].id}_4` }], - ['connect_i', { field: 'related_to', source: `${Object.values(graphData.nodes)[40].id}_3`, target: `${Object.values(graphData.nodes)[40].id}_4` }], + [ + 'connect_a', + { + field: 'related_to', + source: Object.values(graphData.nodes)[0].id, + target: `${Object.values(graphData.nodes)[0].id}_2` + } + ], + [ + 'connect_d', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[15].id}`, + target: `${Object.values(graphData.nodes)[15].id}_2` + } + ], + [ + 'connect_g', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[30].id}`, + target: `${Object.values(graphData.nodes)[30].id}_2` + } + ], + [ + 'connect_b', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[5].id}_2`, + target: `${Object.values(graphData.nodes)[5].id}_3` + } + ], + [ + 'connect_e', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[20].id}_2`, + target: `${Object.values(graphData.nodes)[20].id}_3` + } + ], + [ + 'connect_h', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[35].id}_2`, + target: `${Object.values(graphData.nodes)[35].id}_3` + } + ], + [ + 'connect_c', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[10].id}_3`, + target: `${Object.values(graphData.nodes)[10].id}_4` + } + ], + [ + 'connect_f', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[25].id}_3`, + target: `${Object.values(graphData.nodes)[25].id}_4` + } + ], + [ + 'connect_i', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[40].id}_3`, + target: `${Object.values(graphData.nodes)[40].id}_4` + } + ] ]) .map(([id, { field, source, target }]) => ({ id, @@ -81,7 +161,6 @@ const data = { let nodes: Node[] = [] let edges: Graph.Edge[] = [] - /** * Initialize Layout and Renderers */ @@ -93,7 +172,6 @@ const render = WebGL.Renderer({ }) const imageRenderer = Png.Renderer() - /** * Initialize Zoom Control */ @@ -107,11 +185,10 @@ const zoomOptions: Zoom.Options = { onZoomOut: () => { renderOptions.zoom = Zoom.clampZoom(renderOptions.minZoom!, renderOptions.maxZoom!, renderOptions.zoom! * 0.6) render({ nodes, edges, options: renderOptions }) - }, + } } zoomControl(zoomOptions) - /** * Create Download Controls */ @@ -129,13 +206,12 @@ downloadControl({ height, x: 0, y: 0, - zoom: 1, + zoom: 1 } }) } }) - /** * Layout and Render Graph */ @@ -154,21 +230,30 @@ const renderOptions: WebGL.Options = { render({ nodes, edges, options: renderOptions }) }, onNodePointerEnter: ({ target: { id } }) => { - nodes = nodes.map((node) => (node.id === id ? - { ...node, radius: node.radius * 4, style: { ...node.style, stroke: [{ color: '#CCC', width: 4 }] } } : - node - )) + nodes = nodes.map((node) => + node.id === id + ? { + ...node, + radius: node.radius * 4, + style: { ...node.style, stroke: [{ color: '#CCC', width: 4 }] } + } + : node + ) render({ nodes, edges, options: renderOptions }) }, onNodePointerLeave: ({ target: { id } }) => { - nodes = nodes.map((node) => (node.id === id ? { - ...node, - radius: 18, - style: { - ...node.style, - stroke: [{ color: node.type === 'company' ? '#F7CA4D' : '#90D7FB', width: 4 }] - } - } : node)) + nodes = nodes.map((node) => + node.id === id + ? { + ...node, + radius: 18, + style: { + ...node.style, + stroke: [{ color: node.type === 'company' ? '#F7CA4D' : '#90D7FB', width: 4 }] + } + } + : node + ) render({ nodes, edges, options: renderOptions }) }, onEdgePointerEnter: ({ target: { id } }) => { @@ -192,15 +277,14 @@ const renderOptions: WebGL.Options = { } } - const NODES_PER_TICK = 20 const INTERVAL = 2000 const COUNT = Math.ceil(data.nodes.length / NODES_PER_TICK) let idx = 0 - -console.log(`Rendering ${NODES_PER_TICK} nodes every ${INTERVAL}ms ${COUNT} times \nnode count: ${data.nodes.length} \nedge count ${data.edges.length}`) - +console.log( + `Rendering ${NODES_PER_TICK} nodes every ${INTERVAL}ms ${COUNT} times \nnode count: ${data.nodes.length} \nedge count ${data.edges.length}` +) const update = () => { idx++ @@ -216,22 +300,24 @@ const update = () => { // data.edges.filter((edge) => nodeIds.has(edge.source) && nodeIds.has(edge.target)).concat([{ id: '!', source: 'a', target: 'b' }]) : // data.edges.filter((edge) => nodeIds.has(edge.source) && nodeIds.has(edge.target)) - layout({ nodes: newNodes, edges: newEdges }).then((graph) => { - nodes = graph.nodes - edges = graph.edges + layout({ nodes: newNodes, edges: newEdges }) + .then((graph) => { + nodes = graph.nodes + edges = graph.edges - const { x, y, zoom } = Graph.boundsToViewport( - Graph.getSelectionBounds(nodes, 80), - { width: renderOptions.width!, height: renderOptions.height! } - ) - renderOptions.x = x - renderOptions.y = y - renderOptions.zoom = zoom + const { x, y, zoom } = Graph.boundsToViewport(Graph.getSelectionBounds(nodes, 80), { + width: renderOptions.width!, + height: renderOptions.height! + }) + renderOptions.x = x + renderOptions.y = y + renderOptions.zoom = zoom - render({ nodes, edges, options: renderOptions }) - }).catch((error) => { - console.error(error) - }) + render({ nodes, edges, options: renderOptions }) + }) + .catch((error) => { + console.error(error) + }) } const interval = setInterval(() => { @@ -242,6 +328,4 @@ const interval = setInterval(() => { } }, INTERVAL) update() - - ;(window as any).render = render diff --git a/examples/pixi-react/index.html b/examples/pixi-react/index.html index 06a9cc95..f5918307 100644 --- a/examples/pixi-react/index.html +++ b/examples/pixi-react/index.html @@ -19,6 +19,6 @@
    - + diff --git a/examples/pixi-react/index.ts b/examples/pixi-react/index.ts index 1e34da9d..d622204c 100644 --- a/examples/pixi-react/index.ts +++ b/examples/pixi-react/index.ts @@ -13,29 +13,47 @@ import * as Fisheye from '../../src/layout/fisheye' import * as WebGL from '../../src/renderers/webgl' import graphData from '../../data/tmp-data' - const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - type Node = Graph.Node & { type: string } type Edge = Graph.Edge - const SUBGRAPH_STYLE: Graph.NodeStyle = { color: '#FFAF1D', stroke: [{ color: '#F7CA4D', width: 4 }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'business', color: '#fff', size: 22 } + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: 22 + } +} +const PERSON_ICON = { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: 22 +} +const COMPANY_ICON = { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: 22 } -const PERSON_ICON = { type: 'textIcon' as const, family: 'Material Icons', text: 'person', color: '#fff', size: 22 } -const COMPANY_ICON = { type: 'textIcon' as const, family: 'Material Icons', text: 'business', color: '#fff', size: 22 } const arabicLabel = 'مدالله بن علي\nبن سهل الخالدي' const thaiLabel = 'บริษัท ไทยยูเนียนรับเบอร์\nจำกัด' const russianLabel = 'ВИКТОР ФЕЛИКСОВИЧ ВЕКСЕЛЬБЕРГ' const data = { nodes: Object.values(graphData.nodes) - .map((node, idx) => ({ ...node, label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel: node.label })) + .map((node, idx) => ({ + ...node, + label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel : node.label + })) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_2` }))) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_3` }))) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_4` }))) @@ -45,23 +63,92 @@ const data = { id, label, radius: 18, - type, + type })), - edges: Object.entries<{ field: string, source: string, target: string }>(graphData.edges) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_4`, { ...edge, source: `${edge.source}_4`, target: `${edge.target}_4` }])) + edges: Object.entries<{ field: string; source: string; target: string }>(graphData.edges) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_4`, { ...edge, source: `${edge.source}_4`, target: `${edge.target}_4` }]) + ) // .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_5`, { ...edge, source: `${edge.source}_5`, target: `${edge.target}_5` }])) .concat([ - ['connect_a', { field: 'related_to', source: Object.values(graphData.nodes)[0].id, target: `${Object.values(graphData.nodes)[0].id}_2` }], - ['connect_d', { field: 'related_to', source: `${Object.values(graphData.nodes)[15].id}`, target: `${Object.values(graphData.nodes)[15].id}_2` }], - ['connect_g', { field: 'related_to', source: `${Object.values(graphData.nodes)[30].id}`, target: `${Object.values(graphData.nodes)[30].id}_2` }], - ['connect_b', { field: 'related_to', source: `${Object.values(graphData.nodes)[5].id}_2`, target: `${Object.values(graphData.nodes)[5].id}_3` }], - ['connect_e', { field: 'related_to', source: `${Object.values(graphData.nodes)[20].id}_2`, target: `${Object.values(graphData.nodes)[20].id}_3` }], - ['connect_h', { field: 'related_to', source: `${Object.values(graphData.nodes)[35].id}_2`, target: `${Object.values(graphData.nodes)[35].id}_3` }], - ['connect_c', { field: 'related_to', source: `${Object.values(graphData.nodes)[10].id}_3`, target: `${Object.values(graphData.nodes)[10].id}_4` }], - ['connect_f', { field: 'related_to', source: `${Object.values(graphData.nodes)[25].id}_3`, target: `${Object.values(graphData.nodes)[25].id}_4` }], - ['connect_i', { field: 'related_to', source: `${Object.values(graphData.nodes)[40].id}_3`, target: `${Object.values(graphData.nodes)[40].id}_4` }], + [ + 'connect_a', + { + field: 'related_to', + source: Object.values(graphData.nodes)[0].id, + target: `${Object.values(graphData.nodes)[0].id}_2` + } + ], + [ + 'connect_d', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[15].id}`, + target: `${Object.values(graphData.nodes)[15].id}_2` + } + ], + [ + 'connect_g', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[30].id}`, + target: `${Object.values(graphData.nodes)[30].id}_2` + } + ], + [ + 'connect_b', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[5].id}_2`, + target: `${Object.values(graphData.nodes)[5].id}_3` + } + ], + [ + 'connect_e', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[20].id}_2`, + target: `${Object.values(graphData.nodes)[20].id}_3` + } + ], + [ + 'connect_h', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[35].id}_2`, + target: `${Object.values(graphData.nodes)[35].id}_3` + } + ], + [ + 'connect_c', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[10].id}_3`, + target: `${Object.values(graphData.nodes)[10].id}_4` + } + ], + [ + 'connect_f', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[25].id}_3`, + target: `${Object.values(graphData.nodes)[25].id}_4` + } + ], + [ + 'connect_i', + { + field: 'related_to', + source: `${Object.values(graphData.nodes)[40].id}_3`, + target: `${Object.values(graphData.nodes)[40].id}_4` + } + ] ]) .map(([id, { field, source, target }]) => ({ id, @@ -71,26 +158,32 @@ const data = { })) } - const force = Force.Layout() const cluster = Cluster.Layout() const fisheye = Fisheye.Layout() const MIN_ZOOM = 0.1 const MAX_ZOOM = 2.5 - /** * Render React Layout and Renderer Components */ const App: FunctionComponent = () => { - - const [graph, setGraph] = useState<{ nodes: Node[], edges: Edge[], x: number, y: number, zoom: number, selected: Set, hoverNode?: string, hoverEdge?: string }>({ + const [graph, setGraph] = useState<{ + nodes: Node[] + edges: Edge[] + x: number + y: number + zoom: number + selected: Set + hoverNode?: string + hoverEdge?: string + }>({ nodes: [], edges: [], x: 0, y: 0, zoom: 1, - selected: new Set(), + selected: new Set() }) useEffect(() => { @@ -115,57 +208,96 @@ const App: FunctionComponent = () => { setGraph((graph) => ({ ...graph, - nodes: graph.nodes.map((node) => ( - node.id === id ? ( - { ...node, x: nodeX, y: nodeY } - ) : graph.selected.has(node.id) ? ( - { ...node, x: (node.x ?? 0) + dx, y: (node.y ?? 0) + dy } - ) : node - )) + nodes: graph.nodes.map((node) => + node.id === id + ? { ...node, x: nodeX, y: nodeY } + : graph.selected.has(node.id) + ? { ...node, x: (node.x ?? 0) + dx, y: (node.y ?? 0) + dy } + : node + ) })) }, []) const onNodePointerUp = useCallback(({ metaKey, shiftKey, target: { id } }: WebGL.NodePointerEvent) => { setGraph((graph) => ({ ...graph, - selected: graph.selected.has(id) && (metaKey || shiftKey) ? ( - new Set(Array.from(graph.selected).filter((node) => node !== id)) - ) : (metaKey || shiftKey) ? ( - new Set([...graph.selected, id]) - ) : new Set([id]), + selected: + graph.selected.has(id) && (metaKey || shiftKey) + ? new Set(Array.from(graph.selected).filter((node) => node !== id)) + : metaKey || shiftKey + ? new Set([...graph.selected, id]) + : new Set([id]) })) }, []) const onNodeDragStart = useCallback(({ metaKey, shiftKey, target: { id } }) => { setGraph((graph) => ({ ...graph, - selected: !graph.selected.has(id) && (metaKey || shiftKey) ? ( - new Set([...graph.selected, id]) - ) : !graph.selected.has(id) ? ( - new Set([id]) - ) : graph.selected + selected: + !graph.selected.has(id) && (metaKey || shiftKey) + ? new Set([...graph.selected, id]) + : !graph.selected.has(id) + ? new Set([id]) + : graph.selected })) }, []) const onNodeDoubleClick = useCallback(({ target }: WebGL.NodePointerEvent) => { - const subgraphNodes = cluster((target.subgraph?.nodes ?? []).concat([ - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 1}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 1}`, style: SUBGRAPH_STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 2}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 2}`, style: SUBGRAPH_STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 3}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 3}`, style: SUBGRAPH_STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 4}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 4}`, style: SUBGRAPH_STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 5}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 5}`, style: SUBGRAPH_STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 6}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 6}`, style: SUBGRAPH_STYLE }, - ])) - const radius = subgraphNodes - .map(({ x = 0, y = 0, radius }) => Graph.distance(x, y, 0, 0) + radius) - .reduce((maxDistance, distance) => Math.max(maxDistance, distance), target.radius) + 20 + const subgraphNodes = cluster( + (target.subgraph?.nodes ?? []).concat([ + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 1}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 1}`, + style: SUBGRAPH_STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 2}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 2}`, + style: SUBGRAPH_STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 3}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 3}`, + style: SUBGRAPH_STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 4}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 4}`, + style: SUBGRAPH_STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 5}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 5}`, + style: SUBGRAPH_STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 6}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 6}`, + style: SUBGRAPH_STYLE + } + ]) + ) + const radius = + subgraphNodes + .map(({ x = 0, y = 0, radius }) => Graph.distance(x, y, 0, 0) + radius) + .reduce((maxDistance, distance) => Math.max(maxDistance, distance), target.radius) + 20 setGraph((graph) => ({ ...graph, nodes: fisheye( graph.nodes, - graph.nodes.map((node) => node.id === target.id ? { - ...node, - radius, - subgraph: { nodes: subgraphNodes, edges: [] } - } : node) + graph.nodes.map((node) => + node.id === target.id + ? { + ...node, + radius, + subgraph: { nodes: subgraphNodes, edges: [] } + } + : node + ) ) })) }, []) @@ -183,10 +315,10 @@ const App: FunctionComponent = () => { graph.nodes.map((node) => ({ ...node, radius: 18, - subgraph: undefined, + subgraph: undefined })) ), - selected: new Set(), + selected: new Set() })) }, []) const onViewportDrag = useCallback(({ viewportX: x, viewportY: y }: WebGL.ViewportDragEvent | WebGL.ViewportDragDecelerateEvent) => { @@ -196,7 +328,10 @@ const App: FunctionComponent = () => { setGraph((graph) => ({ ...graph, x, y, zoom })) }, []) const onSelection = useCallback(({ selection, shiftKey, metaKey }: SelectionChangeEvent) => { - setGraph((graph) => ({ ...graph, selected: shiftKey || metaKey ? new Set([...graph.selected, ...selection]) : selection })) + setGraph((graph) => ({ + ...graph, + selected: shiftKey || metaKey ? new Set([...graph.selected, ...selection]) : selection + })) }, []) const styledNodes = useMemo(() => { @@ -205,33 +340,119 @@ const App: FunctionComponent = () => { if (node.subgraph !== undefined) { if (graph.selected.has(node.id) && node.id === graph.hoverNode) { - style = { color: '#EFEFEF', stroke: [{ color: '#AAA', width: 4 }, { color: '#FFF', width: 2 }, { color: '#CCC', width: 2 }] } + style = { + color: '#EFEFEF', + stroke: [ + { color: '#AAA', width: 4 }, + { color: '#FFF', width: 2 }, + { color: '#CCC', width: 2 } + ] + } } else if (graph.selected.has(node.id)) { - style = { color: '#EFEFEF', stroke: [{ color: '#CCC', width: 4 }, { color: '#FFF', width: 2 }, { color: '#CCC', width: 2 }] } + style = { + color: '#EFEFEF', + stroke: [ + { color: '#CCC', width: 4 }, + { color: '#FFF', width: 2 }, + { color: '#CCC', width: 2 } + ] + } } else if (node.id === graph.hoverNode) { - style = { color: '#EFEFEF', stroke: [{ color: '#AAA', width: 4 }, { color: '#FFF', width: 4 }] } + style = { + color: '#EFEFEF', + stroke: [ + { color: '#AAA', width: 4 }, + { color: '#FFF', width: 4 } + ] + } } else { - style = { color: '#EFEFEF', stroke: [{ color: '#CCC', width: 4 }, { color: '#FFF', width: 4 }] } + style = { + color: '#EFEFEF', + stroke: [ + { color: '#CCC', width: 4 }, + { color: '#FFF', width: 4 } + ] + } } } else if (node.type === 'person') { if (graph.selected.has(node.id) && node.id === graph.hoverNode) { - style = { color: '#7CBBF3', stroke: [{ color: '#CCC', width: 4 }, { color: '#FFF', width: 2 }, { color: '#7CBBF3', width: 2 }], icon: PERSON_ICON } + style = { + color: '#7CBBF3', + stroke: [ + { color: '#CCC', width: 4 }, + { color: '#FFF', width: 2 }, + { color: '#7CBBF3', width: 2 } + ], + icon: PERSON_ICON + } } else if (graph.selected.has(node.id)) { - style = { color: '#7CBBF3', stroke: [{ color: '#90D7FB', width: 4 }, { color: '#FFF', width: 2 }, { color: '#7CBBF3', width: 2 }], icon: PERSON_ICON } + style = { + color: '#7CBBF3', + stroke: [ + { color: '#90D7FB', width: 4 }, + { color: '#FFF', width: 2 }, + { color: '#7CBBF3', width: 2 } + ], + icon: PERSON_ICON + } } else if (node.id === graph.hoverNode) { - style = { color: '#7CBBF3', stroke: [{ color: '#CCC', width: 4 }, { color: '#FFF', width: 4 }], icon: PERSON_ICON } + style = { + color: '#7CBBF3', + stroke: [ + { color: '#CCC', width: 4 }, + { color: '#FFF', width: 4 } + ], + icon: PERSON_ICON + } } else { - style = { color: '#7CBBF3', stroke: [{ color: '#90D7FB', width: 4 }, { color: '#FFF', width: 4 }], icon: PERSON_ICON } + style = { + color: '#7CBBF3', + stroke: [ + { color: '#90D7FB', width: 4 }, + { color: '#FFF', width: 4 } + ], + icon: PERSON_ICON + } } } else { if (graph.selected.has(node.id) && node.id === graph.hoverNode) { - style = { color: '#FFAF1D', stroke: [{ color: '#CCC', width: 4 }, { color: '#FFF', width: 2 }, { color: '#F7CA4D', width: 2 }], icon: COMPANY_ICON } + style = { + color: '#FFAF1D', + stroke: [ + { color: '#CCC', width: 4 }, + { color: '#FFF', width: 2 }, + { color: '#F7CA4D', width: 2 } + ], + icon: COMPANY_ICON + } } else if (graph.selected.has(node.id)) { - style = { color: '#FFAF1D', stroke: [{ color: '#F7CA4D', width: 4 }, { color: '#FFF', width: 2 }, { color: '#F7CA4D', width: 2 }], icon: COMPANY_ICON } + style = { + color: '#FFAF1D', + stroke: [ + { color: '#F7CA4D', width: 4 }, + { color: '#FFF', width: 2 }, + { color: '#F7CA4D', width: 2 } + ], + icon: COMPANY_ICON + } } else if (node.id === graph.hoverNode) { - style = { color: '#FFAF1D', stroke: [{ color: '#CCC', width: 4 }, { color: '#FFF', width: 4 }], icon: COMPANY_ICON } + style = { + color: '#FFAF1D', + stroke: [ + { color: '#CCC', width: 4 }, + { color: '#FFF', width: 4 } + ], + icon: COMPANY_ICON + } } else { - style = { color: '#FFAF1D', stroke: [{ color: '#F7CA4D', width: 4 }, { color: '#FFF', width: 4 }], icon: COMPANY_ICON } + style = { + color: '#FFAF1D', + stroke: [ + { color: '#F7CA4D', width: 4 }, + { color: '#FFF', width: 4 } + ], + icon: COMPANY_ICON + } } } @@ -246,58 +467,55 @@ const App: FunctionComponent = () => { })) }, [graph.edges, graph.hoverEdge]) - return ( - createElement(ReactResizeDetector, {}, - ({ width, height }: { width?: number, height?: number }) => ( - createElement('div', { style: { width: '100%', height: '100%' } }, ( - createElement(Selection, { - nodes: styledNodes, - onViewportDrag, - onSelection, - children: ({ select, toggleSelect, annotation, cursor, onViewportDragStart, onViewportDrag, onViewportDragEnd }) => ( - createElement(Fragment, {}, - createElement('div', { style: { position: 'absolute', top: 72, left: 12 } }, - createElement(Button, { title: 'Select Tool', selected: select, onClick: toggleSelect }, '■'), - createElement(Zoom, { onZoomIn, onZoomOut }) - ), - createElement(Renderer, { - width, - height, - nodes: styledNodes, - edges: styledEdges, - annotations: annotation ? [annotation] : undefined, - x: graph.x, - y: graph.y, - zoom: graph.zoom, - minZoom: MIN_ZOOM, - maxZoom: MAX_ZOOM, - cursor, - onNodePointerEnter, - onNodePointerUp, - onNodeDragStart, - onNodeDrag, - onNodeDoubleClick, - onNodePointerLeave, - onEdgePointerEnter, - onEdgePointerLeave, - onViewportDragStart, - onViewportDrag, - onViewportDragEnd, - onViewportPointerUp, - onViewportWheel, - debug: { stats } - }) - ) - ) - }) - )) - ) + return createElement(ReactResizeDetector, {}, ({ width, height }: { width?: number; height?: number }) => + createElement( + 'div', + { style: { width: '100%', height: '100%' } }, + createElement(Selection, { + nodes: styledNodes, + onViewportDrag, + onSelection, + children: ({ select, toggleSelect, annotation, cursor, onViewportDragStart, onViewportDrag, onViewportDragEnd }) => + createElement( + Fragment, + {}, + createElement( + 'div', + { style: { position: 'absolute', top: 72, left: 12 } }, + createElement(Button, { title: 'Select Tool', selected: select, onClick: toggleSelect }, '■'), + createElement(Zoom, { onZoomIn, onZoomOut }) + ), + createElement(Renderer, { + width, + height, + nodes: styledNodes, + edges: styledEdges, + annotations: annotation ? [annotation] : undefined, + x: graph.x, + y: graph.y, + zoom: graph.zoom, + minZoom: MIN_ZOOM, + maxZoom: MAX_ZOOM, + cursor, + onNodePointerEnter, + onNodePointerUp, + onNodeDragStart, + onNodeDrag, + onNodeDoubleClick, + onNodePointerLeave, + onEdgePointerEnter, + onEdgePointerLeave, + onViewportDragStart, + onViewportDrag, + onViewportDragEnd, + onViewportPointerUp, + onViewportWheel, + debug: { stats } + }) + ) + }) ) ) } - -render( - createElement(App), - document.querySelector('#graph') -) +render(createElement(App), document.querySelector('#graph')) diff --git a/examples/pixi-render-perf/index.html b/examples/pixi-render-perf/index.html index ac400bab..ef1eb2df 100644 --- a/examples/pixi-render-perf/index.html +++ b/examples/pixi-render-perf/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
    - - + + + Graph + + + + + + +
    + + diff --git a/examples/pixi-render-perf/index.ts b/examples/pixi-render-perf/index.ts index 6f6e8c65..09683f5a 100644 --- a/examples/pixi-render-perf/index.ts +++ b/examples/pixi-render-perf/index.ts @@ -6,15 +6,12 @@ import * as WebGL from '../../src/renderers/webgl' import graphData from '../../data/tmp-data' import { throttleAnimationFrame } from '../../src/utils' - export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - type Node = Graph.Node & { type: string } - /** * Initialize Data */ @@ -24,15 +21,30 @@ const russianLabel = 'ВИКТОР ФЕЛИКСОВИЧ ВЕКСЕЛЬБЕРГ' const COMPANY = { color: '#ffaf1d', stroke: [{ color: '#F7CA4D', width: 2 }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'person', color: '#fff', size: 32 * 0.6 }, + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: 32 * 0.6 + } } const PERSON = { color: '#7CBBF3', stroke: [{ color: '#90D7FB', width: 2 }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'person', color: '#fff', size: 32 * 0.6 }, + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: 32 * 0.6 + } } let nodes = Object.values(graphData.nodes) - .map((node, idx) => ({ ...node, label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel: node.label })) + .map((node, idx) => ({ + ...node, + label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel : node.label + })) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_2` }))) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_3` }))) .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_4` }))) @@ -94,55 +106,151 @@ let nodes = Object.values(graphData.nodes) style: type === 'person' ? PERSON : COMPANY })) -let edges = Object.entries<{ field: string, source: string, target: string }>(graphData.edges) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_4`, { ...edge, source: `${edge.source}_4`, target: `${edge.target}_4` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_5`, { ...edge, source: `${edge.source}_5`, target: `${edge.target}_5` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_6`, { ...edge, source: `${edge.source}_6`, target: `${edge.target}_6` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_7`, { ...edge, source: `${edge.source}_7`, target: `${edge.target}_7` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_8`, { ...edge, source: `${edge.source}_8`, target: `${edge.target}_8` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_9`, { ...edge, source: `${edge.source}_9`, target: `${edge.target}_9` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_10`, { ...edge, source: `${edge.source}_10`, target: `${edge.target}_10` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_11`, { ...edge, source: `${edge.source}_11`, target: `${edge.target}_11` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_12`, { ...edge, source: `${edge.source}_12`, target: `${edge.target}_12` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_13`, { ...edge, source: `${edge.source}_13`, target: `${edge.target}_13` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_14`, { ...edge, source: `${edge.source}_14`, target: `${edge.target}_14` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_15`, { ...edge, source: `${edge.source}_15`, target: `${edge.target}_15` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_16`, { ...edge, source: `${edge.source}_16`, target: `${edge.target}_16` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_17`, { ...edge, source: `${edge.source}_17`, target: `${edge.target}_17` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_18`, { ...edge, source: `${edge.source}_18`, target: `${edge.target}_18` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_19`, { ...edge, source: `${edge.source}_19`, target: `${edge.target}_19` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_20`, { ...edge, source: `${edge.source}_20`, target: `${edge.target}_20` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_21`, { ...edge, source: `${edge.source}_21`, target: `${edge.target}_21` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_22`, { ...edge, source: `${edge.source}_22`, target: `${edge.target}_22` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_23`, { ...edge, source: `${edge.source}_23`, target: `${edge.target}_23` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_24`, { ...edge, source: `${edge.source}_24`, target: `${edge.target}_24` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_25`, { ...edge, source: `${edge.source}_25`, target: `${edge.target}_25` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_26`, { ...edge, source: `${edge.source}_26`, target: `${edge.target}_26` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_27`, { ...edge, source: `${edge.source}_27`, target: `${edge.target}_27` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_28`, { ...edge, source: `${edge.source}_28`, target: `${edge.target}_28` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_29`, { ...edge, source: `${edge.source}_29`, target: `${edge.target}_29` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_30`, { ...edge, source: `${edge.source}_30`, target: `${edge.target}_30` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_31`, { ...edge, source: `${edge.source}_31`, target: `${edge.target}_31` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_32`, { ...edge, source: `${edge.source}_32`, target: `${edge.target}_32` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_33`, { ...edge, source: `${edge.source}_33`, target: `${edge.target}_33` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_34`, { ...edge, source: `${edge.source}_34`, target: `${edge.target}_34` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_35`, { ...edge, source: `${edge.source}_35`, target: `${edge.target}_35` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_36`, { ...edge, source: `${edge.source}_36`, target: `${edge.target}_36` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_37`, { ...edge, source: `${edge.source}_37`, target: `${edge.target}_37` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_38`, { ...edge, source: `${edge.source}_38`, target: `${edge.target}_38` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_39`, { ...edge, source: `${edge.source}_39`, target: `${edge.target}_39` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_40`, { ...edge, source: `${edge.source}_40`, target: `${edge.target}_40` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_41`, { ...edge, source: `${edge.source}_41`, target: `${edge.target}_41` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_42`, { ...edge, source: `${edge.source}_42`, target: `${edge.target}_42` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_43`, { ...edge, source: `${edge.source}_43`, target: `${edge.target}_43` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_44`, { ...edge, source: `${edge.source}_44`, target: `${edge.target}_44` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_45`, { ...edge, source: `${edge.source}_45`, target: `${edge.target}_45` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_46`, { ...edge, source: `${edge.source}_46`, target: `${edge.target}_46` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_47`, { ...edge, source: `${edge.source}_47`, target: `${edge.target}_47` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_48`, { ...edge, source: `${edge.source}_48`, target: `${edge.target}_48` }])) - .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_49`, { ...edge, source: `${edge.source}_49`, target: `${edge.target}_49` }])) +let edges = Object.entries<{ field: string; source: string; target: string }>(graphData.edges) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_4`, { ...edge, source: `${edge.source}_4`, target: `${edge.target}_4` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_5`, { ...edge, source: `${edge.source}_5`, target: `${edge.target}_5` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_6`, { ...edge, source: `${edge.source}_6`, target: `${edge.target}_6` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_7`, { ...edge, source: `${edge.source}_7`, target: `${edge.target}_7` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_8`, { ...edge, source: `${edge.source}_8`, target: `${edge.target}_8` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_9`, { ...edge, source: `${edge.source}_9`, target: `${edge.target}_9` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_10`, { ...edge, source: `${edge.source}_10`, target: `${edge.target}_10` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_11`, { ...edge, source: `${edge.source}_11`, target: `${edge.target}_11` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_12`, { ...edge, source: `${edge.source}_12`, target: `${edge.target}_12` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_13`, { ...edge, source: `${edge.source}_13`, target: `${edge.target}_13` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_14`, { ...edge, source: `${edge.source}_14`, target: `${edge.target}_14` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_15`, { ...edge, source: `${edge.source}_15`, target: `${edge.target}_15` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_16`, { ...edge, source: `${edge.source}_16`, target: `${edge.target}_16` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_17`, { ...edge, source: `${edge.source}_17`, target: `${edge.target}_17` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_18`, { ...edge, source: `${edge.source}_18`, target: `${edge.target}_18` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_19`, { ...edge, source: `${edge.source}_19`, target: `${edge.target}_19` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_20`, { ...edge, source: `${edge.source}_20`, target: `${edge.target}_20` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_21`, { ...edge, source: `${edge.source}_21`, target: `${edge.target}_21` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_22`, { ...edge, source: `${edge.source}_22`, target: `${edge.target}_22` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_23`, { ...edge, source: `${edge.source}_23`, target: `${edge.target}_23` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_24`, { ...edge, source: `${edge.source}_24`, target: `${edge.target}_24` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_25`, { ...edge, source: `${edge.source}_25`, target: `${edge.target}_25` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_26`, { ...edge, source: `${edge.source}_26`, target: `${edge.target}_26` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_27`, { ...edge, source: `${edge.source}_27`, target: `${edge.target}_27` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_28`, { ...edge, source: `${edge.source}_28`, target: `${edge.target}_28` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_29`, { ...edge, source: `${edge.source}_29`, target: `${edge.target}_29` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_30`, { ...edge, source: `${edge.source}_30`, target: `${edge.target}_30` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_31`, { ...edge, source: `${edge.source}_31`, target: `${edge.target}_31` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_32`, { ...edge, source: `${edge.source}_32`, target: `${edge.target}_32` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_33`, { ...edge, source: `${edge.source}_33`, target: `${edge.target}_33` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_34`, { ...edge, source: `${edge.source}_34`, target: `${edge.target}_34` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_35`, { ...edge, source: `${edge.source}_35`, target: `${edge.target}_35` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_36`, { ...edge, source: `${edge.source}_36`, target: `${edge.target}_36` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_37`, { ...edge, source: `${edge.source}_37`, target: `${edge.target}_37` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_38`, { ...edge, source: `${edge.source}_38`, target: `${edge.target}_38` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_39`, { ...edge, source: `${edge.source}_39`, target: `${edge.target}_39` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_40`, { ...edge, source: `${edge.source}_40`, target: `${edge.target}_40` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_41`, { ...edge, source: `${edge.source}_41`, target: `${edge.target}_41` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_42`, { ...edge, source: `${edge.source}_42`, target: `${edge.target}_42` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_43`, { ...edge, source: `${edge.source}_43`, target: `${edge.target}_43` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_44`, { ...edge, source: `${edge.source}_44`, target: `${edge.target}_44` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_45`, { ...edge, source: `${edge.source}_45`, target: `${edge.target}_45` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_46`, { ...edge, source: `${edge.source}_46`, target: `${edge.target}_46` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_47`, { ...edge, source: `${edge.source}_47`, target: `${edge.target}_47` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_48`, { ...edge, source: `${edge.source}_48`, target: `${edge.target}_48` }]) + ) + .concat( + Object.entries(graphData.edges).map(([id, edge]) => [`${id}_49`, { ...edge, source: `${edge.source}_49`, target: `${edge.target}_49` }]) + ) // .concat([ // ['connect_a', { field: 'related_to', source: Object.values(graphData.nodes)[0].id, target: `${Object.values(graphData.nodes)[0].id}_2` }], // ['connect_d', { field: 'related_to', source: `${Object.values(graphData.nodes)[15].id}`, target: `${Object.values(graphData.nodes)[15].id}_2` }], @@ -157,38 +265,38 @@ let edges = Object.entries<{ field: string, source: string, target: string }>(gr .map(([id, { source, target }]) => ({ id, source, - target, + target // label: field.replace(/_/g, ' '), })) let nodesById: Record // let edgesById: Record - /** * Initialize Layout and Renderer */ const container = document.querySelector('#graph') as HTMLDivElement const layout = Force.Layout() const zoomControl = Zoom.Control({ container }) -const render = throttleAnimationFrame(WebGL.Renderer({ - container, - debug: { stats, logPerformance: false } - // debug: { stats, logPerformance: true } -})) +const render = throttleAnimationFrame( + WebGL.Renderer({ + container, + debug: { stats, logPerformance: false } + // debug: { stats, logPerformance: true } + }) +) // const render = WebGL.Renderer({ // container, // debug: { stats, logPerformance: false } // // debug: { stats, logPerformance: true } // }) - /** * Initialize Layout and Renderer Options */ const layoutOptions: Force.Options = { nodeStrength: -600, - tick: 50, + tick: 50 } const renderOptions: WebGL.Options = { width: container.offsetWidth, @@ -237,7 +345,6 @@ const renderOptions: WebGL.Options = { } } - /** * Layout and Render Graph */ @@ -251,7 +358,7 @@ zoomControl({ onZoomOut: () => { renderOptions.zoom = Zoom.clampZoom(renderOptions.minZoom!, renderOptions.maxZoom!, renderOptions.zoom! * 0.6) render({ nodes, edges, options: renderOptions }) - }, + } }) layout({ @@ -261,10 +368,8 @@ layout({ }).then((graph) => { nodes = graph.nodes edges = graph.edges - nodesById = nodes.reduce>((nodesById, node) => (nodesById[node.id] = node, nodesById), {}) + nodesById = nodes.reduce>((nodesById, node) => ((nodesById[node.id] = node), nodesById), {}) // edgesById = edges.reduce>((edgesById, edge) => (edgesById[edge.id] = edge, edgesById), {}) render({ nodes, edges, options: renderOptions }) }) - - ;(window as any).render = render diff --git a/examples/pixi-subgraphs/index.html b/examples/pixi-subgraphs/index.html index ac400bab..ef1eb2df 100644 --- a/examples/pixi-subgraphs/index.html +++ b/examples/pixi-subgraphs/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
    - - + + + Graph + + + + + + +
    + + diff --git a/examples/pixi-subgraphs/index.ts b/examples/pixi-subgraphs/index.ts index 51c0c67c..4f457cd9 100644 --- a/examples/pixi-subgraphs/index.ts +++ b/examples/pixi-subgraphs/index.ts @@ -4,47 +4,54 @@ import * as Fisheye from '../../src/layout/fisheye' import * as WebGL from '../../src/renderers/webgl' import * as Graph from '../../src/' - export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - /** * Initialize Data */ const STYLE: Partial = { color: '#FFAF1D', stroke: [{ color: '#F7CA4D', width: 4 }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'business', color: '#fff', size: 22 } + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: 22 + } } -let nodes: Graph.Node[] = [{ - id: 'a', - radius: 18, - x: 0, - y: 0, - label: 'A', - fx: 0, - fy: 0, - style: STYLE -}, { - id: 'b', - radius: 18, - x: -200, - y: -85, - label: 'B', - style: STYLE -}, { - id: 'c', - radius: 18, - x: 100, - y: -85, - label: 'C', - style: STYLE -}] +let nodes: Graph.Node[] = [ + { + id: 'a', + radius: 18, + x: 0, + y: 0, + label: 'A', + fx: 0, + fy: 0, + style: STYLE + }, + { + id: 'b', + radius: 18, + x: -200, + y: -85, + label: 'B', + style: STYLE + }, + { + id: 'c', + radius: 18, + x: 100, + y: -85, + label: 'C', + style: STYLE + } +] const edges: Graph.Edge[] = [] - /** * Initialize Layout and Renderer */ @@ -56,7 +63,6 @@ const render = WebGL.Renderer({ debug: { stats, logPerformance: false } }) - /** * Initialize Layout and Renderer Options */ @@ -64,17 +70,50 @@ const renderOptions: WebGL.Options = { width: container.offsetWidth, height: container.offsetHeight, onNodeDoubleClick: ({ target }) => { - const subgraphNodes = cluster((target.subgraph?.nodes ?? []).concat([ - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 1}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 1}`, style: STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 2}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 2}`, style: STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 3}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 3}`, style: STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 4}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 4}`, style: STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 5}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 5}`, style: STYLE }, - { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 6}`, radius: 18, label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 6}`, style: STYLE }, - ])) - const radius = subgraphNodes - .map(({ x = 0, y = 0, radius }) => Graph.distance(x, y, 0, 0) + radius) - .reduce((maxDistance, distance) => Math.max(maxDistance, distance), target.radius) + 20 + const subgraphNodes = cluster( + (target.subgraph?.nodes ?? []).concat([ + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 1}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 1}`, + style: STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 2}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 2}`, + style: STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 3}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 3}`, + style: STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 4}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 4}`, + style: STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 5}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 5}`, + style: STYLE + }, + { + id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 6}`, + radius: 18, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 6}`, + style: STYLE + } + ]) + ) + const radius = + subgraphNodes + .map(({ x = 0, y = 0, radius }) => Graph.distance(x, y, 0, 0) + radius) + .reduce((maxDistance, distance) => Math.max(maxDistance, distance), target.radius) + 20 nodes = fisheye( nodes, @@ -87,7 +126,7 @@ const renderOptions: WebGL.Options = { subgraph: { nodes: subgraphNodes, edges: [] - }, + } } } @@ -104,18 +143,16 @@ const renderOptions: WebGL.Options = { ...node, radius: 18, style: STYLE, - subgraph: undefined, + subgraph: undefined })) ) render({ nodes, edges, options: renderOptions }) - }, + } } - /** * Layout and Render Graph */ render({ nodes, edges, options: renderOptions }) - ;(window as any).render = render diff --git a/examples/pixi/index.html b/examples/pixi/index.html index 68cf4440..8a5bdf95 100644 --- a/examples/pixi/index.html +++ b/examples/pixi/index.html @@ -1,23 +1,23 @@ - - - Graph - - - - - -
    - - + + + Graph + + + + + +
    + + diff --git a/examples/pixi/index.ts b/examples/pixi/index.ts index 1d52fbe7..c986fb15 100644 --- a/examples/pixi/index.ts +++ b/examples/pixi/index.ts @@ -1,13 +1,13 @@ -import Stats from "stats.js" -import * as Force from "../../src/layout/force" -import * as Fisheye from "../../src/layout/fisheye" -import * as Zoom from "../../src/bindings/native/zoom" -import * as Selection from "../../src/bindings/native/selection" -import * as Download from "../../src/bindings/native/download" -import * as Cluster from "../../src/layout/cluster" -import * as WebGL from "../../src/renderers/webgl" -import * as Png from "../../src/renderers/image" -import * as Graph from "../../src/" +import Stats from 'stats.js' +import * as Force from '../../src/layout/force' +import * as Fisheye from '../../src/layout/fisheye' +import * as Zoom from '../../src/bindings/native/zoom' +import * as Selection from '../../src/bindings/native/selection' +import * as Download from '../../src/bindings/native/download' +import * as Cluster from '../../src/layout/cluster' +import * as WebGL from '../../src/renderers/webgl' +import * as Png from '../../src/renderers/image' +import * as Graph from '../../src/' export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom @@ -17,240 +17,240 @@ document.body.appendChild(stats.dom) * Initialize Data */ const createCompanyStyle = (radius: number): Graph.NodeStyle => ({ - color: "#FFAF1D", - stroke: [{ color: "#FFF", width: 4 }, { color: "#F7CA4D" }], + color: '#FFAF1D', + stroke: [{ color: '#FFF', width: 4 }, { color: '#F7CA4D' }], icon: { - type: "textIcon" as const, - family: "Material Icons", - text: "business", - color: "#fff", - size: radius * 1.2, + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: radius * 1.2 }, badge: [ { position: 45, - color: "#FFAF1D", - stroke: "#FFF", + color: '#FFAF1D', + stroke: '#FFF', icon: { - type: "textIcon", - family: "Helvetica", + type: 'textIcon', + family: 'Helvetica', size: 10, - color: "#FFF", - text: "15", - }, + color: '#FFF', + text: '15' + } }, { position: 135, - color: "#E4171B", - stroke: "#FFF", + color: '#E4171B', + stroke: '#FFF', icon: { - type: "textIcon", - family: "Helvetica", + type: 'textIcon', + family: 'Helvetica', size: 10, - color: "#FFF", - text: "!", - }, - }, - ], + color: '#FFF', + text: '!' + } + } + ] }) const createPersonStyle = (radius: number): Graph.NodeStyle => ({ - color: "#7CBBF3", + color: '#7CBBF3', label: { fontSize: 10, - wordWrap: 260, + wordWrap: 260 }, stroke: [ - { color: "#FFF", width: 2 }, - { color: "#90D7FB", width: 1 }, + { color: '#FFF', width: 2 }, + { color: '#90D7FB', width: 1 } ], icon: { - type: "textIcon" as const, - family: "Material Icons", - text: "person", - color: "#fff", - size: radius * 1.2, + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: radius * 1.2 }, badge: [ { position: 45, - color: "#7CBBF3", - stroke: "#FFF", + color: '#7CBBF3', + stroke: '#FFF', icon: { - type: "textIcon", - family: "Helvetica", + type: 'textIcon', + family: 'Helvetica', size: 10, - color: "#FFF", - text: "8", - }, - }, - ], + color: '#FFF', + text: '8' + } + } + ] }) const createSubgraphStyle = (radius: number): Graph.NodeStyle => ({ - color: "#FFAF1D", - stroke: [{ color: "#F7CA4D", width: 2 }], + color: '#FFAF1D', + stroke: [{ color: '#F7CA4D', width: 2 }], icon: { - type: "textIcon" as const, - family: "Material Icons", - text: "business", - color: "#fff", - size: radius * 1.2, - }, + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: radius * 1.2 + } }) let nodes = [ - { id: "a", label: "A" }, - { id: "b", label: "B" }, - { id: "c", label: "C" }, - { id: "d", label: "D" }, - { id: "e", label: "E" }, - { id: "f", label: "F" }, - { id: "g", label: "G" }, - { id: "h", label: "H" }, - { id: "i", label: "I" }, - { id: "j", label: "J" }, - { id: "k", label: "K" }, - { id: "l", label: "L" }, - { id: "m", label: "M" }, - { id: "n", label: "N" }, - { id: "o", label: "O" }, - { id: "p", label: "P" }, - { id: "q", label: "Q" }, + { id: 'a', label: 'A' }, + { id: 'b', label: 'B' }, + { id: 'c', label: 'C' }, + { id: 'd', label: 'D' }, + { id: 'e', label: 'E' }, + { id: 'f', label: 'F' }, + { id: 'g', label: 'G' }, + { id: 'h', label: 'H' }, + { id: 'i', label: 'I' }, + { id: 'j', label: 'J' }, + { id: 'k', label: 'K' }, + { id: 'l', label: 'L' }, + { id: 'm', label: 'M' }, + { id: 'n', label: 'N' }, + { id: 'o', label: 'O' }, + { id: 'p', label: 'P' }, + { id: 'q', label: 'Q' } ].map(({ id, label }) => ({ id, label, radius: 18, - style: id === "a" ? createCompanyStyle(18) : createPersonStyle(18), + style: id === 'a' ? createCompanyStyle(18) : createPersonStyle(18) })) let edges: Graph.Edge[] = [ - { id: "aa", source: "a", target: "a", label: "Self" }, - { id: "ba", source: "a", target: "b", label: "None" }, - { id: "ca", source: "a", target: "c", label: "None" }, - { id: "da", source: "a", target: "d", label: "None" }, + { id: 'aa', source: 'a', target: 'a', label: 'Self' }, + { id: 'ba', source: 'a', target: 'b', label: 'None' }, + { id: 'ca', source: 'a', target: 'c', label: 'None' }, + { id: 'da', source: 'a', target: 'd', label: 'None' }, { - id: "ea", - source: "a", - target: "e", - label: "A to E 1", + id: 'ea', + source: 'a', + target: 'e', + label: 'A to E 1', style: { - arrow: "forward", + arrow: 'forward', label: { wordWrap: 600, - background: "#FFA500", - backgroundOpacity: 0.5, - }, - }, + background: '#FFA500', + backgroundOpacity: 0.5 + } + } }, { - id: "ea2", - source: "a", - target: "e", - label: "A to E 2", - style: { arrow: "forward" }, + id: 'ea2', + source: 'a', + target: 'e', + label: 'A to E 2', + style: { arrow: 'forward' } }, { - id: "ea3", - source: "a", - target: "e", - label: "A to E 3", - style: { arrow: "forward" }, + id: 'ea3', + source: 'a', + target: 'e', + label: 'A to E 3', + style: { arrow: 'forward' } }, { - id: "fa", - source: "a", - target: "f", - label: "A to F", - style: { arrow: "forward" }, + id: 'fa', + source: 'a', + target: 'f', + label: 'A to F', + style: { arrow: 'forward' } }, { - id: "ga", - source: "a", - target: "g", - label: "A to G", - style: { arrow: "forward" }, + id: 'ga', + source: 'a', + target: 'g', + label: 'A to G', + style: { arrow: 'forward' } }, { - id: "ha", - source: "a", - target: "h", - label: "A to H", - style: { arrow: "forward" }, + id: 'ha', + source: 'a', + target: 'h', + label: 'A to H', + style: { arrow: 'forward' } }, { - id: "ia", - source: "a", - target: "i", - label: "A to I", - style: { arrow: "forward" }, + id: 'ia', + source: 'a', + target: 'i', + label: 'A to I', + style: { arrow: 'forward' } }, { - id: "ja", - source: "b", - target: "j", - label: "B to J", - style: { arrow: "forward" }, + id: 'ja', + source: 'b', + target: 'j', + label: 'B to J', + style: { arrow: 'forward' } }, { - id: "ka", - source: "b", - target: "k", - label: "K to B", - style: { arrow: "reverse" }, + id: 'ka', + source: 'b', + target: 'k', + label: 'K to B', + style: { arrow: 'reverse' } }, { - id: "la", - source: "b", - target: "l", - label: "L to B", - style: { arrow: "reverse" }, + id: 'la', + source: 'b', + target: 'l', + label: 'L to B', + style: { arrow: 'reverse' } }, { - id: "ma", - source: "l", - target: "m", - label: "M to L", - style: { arrow: "reverse" }, + id: 'ma', + source: 'l', + target: 'm', + label: 'M to L', + style: { arrow: 'reverse' } }, { - id: "nc", - source: "n", - target: "c", - label: "N to C", - style: { arrow: "forward" }, + id: 'nc', + source: 'n', + target: 'c', + label: 'N to C', + style: { arrow: 'forward' } }, { - id: "oa", - source: "c", - target: "o", - label: "Both", - style: { arrow: "both" }, + id: 'oa', + source: 'c', + target: 'o', + label: 'Both', + style: { arrow: 'both' } }, { - id: "pa", - source: "c", - target: "p", - label: "Both", - style: { arrow: "both" }, + id: 'pa', + source: 'c', + target: 'p', + label: 'Both', + style: { arrow: 'both' } }, { - id: "qa", - source: "c", - target: "q", - label: "Both", - style: { arrow: "both" }, - }, + id: 'qa', + source: 'c', + target: 'q', + label: 'Both', + style: { arrow: 'both' } + } ] /** * Create Renderer and Layout */ -const container = document.querySelector("#graph") as HTMLDivElement +const container = document.querySelector('#graph') as HTMLDivElement const imageRenderer = Png.Renderer() const render = WebGL.Renderer({ container, - debug: { stats, logPerformance: false }, + debug: { stats, logPerformance: false } }) const force = Force.Layout() const fisheye = Fisheye.Layout() @@ -263,21 +263,13 @@ const zoomControl = Zoom.Control({ container }) zoomControl({ top: 140, onZoomIn: () => { - renderOptions.zoom = Zoom.clampZoom( - renderOptions.minZoom!, - renderOptions.maxZoom!, - renderOptions.zoom! / 0.5 - ) + renderOptions.zoom = Zoom.clampZoom(renderOptions.minZoom!, renderOptions.maxZoom!, renderOptions.zoom! / 0.5) render({ nodes, edges, annotations, options: renderOptions }) }, onZoomOut: () => { - renderOptions.zoom = Zoom.clampZoom( - renderOptions.minZoom!, - renderOptions.maxZoom!, - renderOptions.zoom! * 0.5 - ) + renderOptions.zoom = Zoom.clampZoom(renderOptions.minZoom!, renderOptions.maxZoom!, renderOptions.zoom! * 0.5) render({ nodes, edges, annotations, options: renderOptions }) - }, + } }) /** @@ -285,57 +277,53 @@ zoomControl({ */ let annotations: Graph.Annotation[] = [] const selectionControl = Selection.Control({ container }) -const { onViewportPointerDown, onViewportDrag, onViewportPointerUp } = - selectionControl({ - top: 100, - onViewportPointerUp: () => { - annotations = [] +const { onViewportPointerDown, onViewportDrag, onViewportPointerUp } = selectionControl({ + top: 100, + onViewportPointerUp: () => { + annotations = [] - nodes = fisheye( - nodes, - nodes.map((node) => - node.subgraph - ? { - ...node, - radius: 18, - style: - node.id === "a" - ? createCompanyStyle(18) - : createPersonStyle(18), - subgraph: undefined, - } - : node - ) + nodes = fisheye( + nodes, + nodes.map((node) => + node.subgraph + ? { + ...node, + radius: 18, + style: node.id === 'a' ? createCompanyStyle(18) : createPersonStyle(18), + subgraph: undefined + } + : node ) + ) - render({ nodes, edges, annotations, options: renderOptions }) - }, - onViewportDrag: ({ viewportX, viewportY }) => { - renderOptions.x = viewportX - renderOptions.y = viewportY - render({ nodes, edges, annotations, options: renderOptions }) - }, - onSelection: ({ x, y, radius }) => { - annotations = [ - { - type: "circle", - id: "selection", - x, - y, - radius, - style: { - backgroundColor: "#eee", - stroke: { - width: 2, - color: "#ccc", - }, - }, - }, - ] + render({ nodes, edges, annotations, options: renderOptions }) + }, + onViewportDrag: ({ viewportX, viewportY }) => { + renderOptions.x = viewportX + renderOptions.y = viewportY + render({ nodes, edges, annotations, options: renderOptions }) + }, + onSelection: ({ x, y, radius }) => { + annotations = [ + { + type: 'circle', + id: 'selection', + x, + y, + radius, + style: { + backgroundColor: '#eee', + stroke: { + width: 2, + color: '#ccc' + } + } + } + ] - render({ nodes, edges, annotations, options: renderOptions }) - }, - }) + render({ nodes, edges, annotations, options: renderOptions }) + } +}) /** * Create Download Controls @@ -356,17 +344,17 @@ downloadControl({ height: dimensions.height, x: viewport.x, y: viewport.y, - zoom: 1, - }, + zoom: 1 + } }) - }, + } }) /** * Layout and Render Graph */ const layoutOptions: Force.Options = { - nodeStrength: -500, + nodeStrength: -500 } const renderOptions: WebGL.Options = { width: container.offsetWidth, @@ -390,16 +378,16 @@ const renderOptions: WebGL.Options = { style: { ...node.style, stroke: - node.id === "a" + node.id === 'a' ? node.style?.stroke?.map((stroke, idx) => ({ ...stroke, - color: idx % 2 === 0 ? "#FFF" : "#CCC", + color: idx % 2 === 0 ? '#FFF' : '#CCC' })) : node.style?.stroke?.map((stroke) => ({ ...stroke, - color: "#CCC", - })), - }, + color: '#CCC' + })) + } } : node ) @@ -412,26 +400,19 @@ const renderOptions: WebGL.Options = { ...node, style: { ...node.style, - stroke: - node.id === "a" - ? createCompanyStyle(48).stroke - : createPersonStyle(48).stroke, - }, + stroke: node.id === 'a' ? createCompanyStyle(48).stroke : createPersonStyle(48).stroke + } } : node ) render({ nodes, edges, annotations, options: renderOptions }) }, onEdgePointerEnter: ({ target: { id } }) => { - edges = edges.map((edge) => - edge.id === id ? { ...edge, style: { ...edge.style, width: 3 } } : edge - ) + edges = edges.map((edge) => (edge.id === id ? { ...edge, style: { ...edge.style, width: 3 } } : edge)) render({ nodes, edges, annotations, options: renderOptions }) }, onEdgePointerLeave: ({ target: { id } }) => { - edges = edges.map((edge) => - edge.id === id ? { ...edge, style: { ...edge.style, width: 1 } } : edge - ) + edges = edges.map((edge) => (edge.id === id ? { ...edge, style: { ...edge.style, width: 1 } } : edge)) render({ nodes, edges, annotations, options: renderOptions }) }, onNodeDoubleClick: ({ target }) => { @@ -440,44 +421,33 @@ const renderOptions: WebGL.Options = { { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 1}`, radius: 10, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 1 - }`, - style: createSubgraphStyle(10), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 1}`, + style: createSubgraphStyle(10) }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 2}`, radius: 10, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 2 - }`, - style: createSubgraphStyle(10), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 2}`, + style: createSubgraphStyle(10) }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 3}`, radius: 10, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 3 - }`, - style: createSubgraphStyle(10), + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 3}`, + style: createSubgraphStyle(10) }, { id: `${target.id}_${(target.subgraph?.nodes.length ?? 0) + 4}`, radius: 10, - label: `${target.id.toUpperCase()} ${ - target.subgraph?.nodes.length ?? 0 + 4 - }`, - style: createSubgraphStyle(10), - }, + label: `${target.id.toUpperCase()} ${target.subgraph?.nodes.length ?? 0 + 4}`, + style: createSubgraphStyle(10) + } ]) ) const radius = subgraphNodes .map(({ x = 0, y = 0, radius }) => Graph.distance(x, y, 0, 0) + radius) - .reduce( - (maxDistance, distance) => Math.max(maxDistance, distance), - target.radius - ) + 20 + .reduce((maxDistance, distance) => Math.max(maxDistance, distance), target.radius) + 20 nodes = fisheye( nodes, @@ -486,11 +456,11 @@ const renderOptions: WebGL.Options = { ? { ...node, radius, - style: { ...node.style, color: "#EFEFEF", icon: undefined }, + style: { ...node.style, color: '#EFEFEF', icon: undefined }, subgraph: { nodes: subgraphNodes, - edges: [], - }, + edges: [] + } } : node ) @@ -506,16 +476,16 @@ const renderOptions: WebGL.Options = { renderOptions.y = viewportY renderOptions.zoom = viewportZoom render({ nodes, edges, annotations, options: renderOptions }) - }, + } } force({ nodes, edges, options: layoutOptions }).then((graph) => { nodes = graph.nodes - const { x, y, zoom } = Graph.boundsToViewport( - Graph.getSelectionBounds(nodes, 40), - { width: renderOptions.width!, height: renderOptions.height! } - ) + const { x, y, zoom } = Graph.boundsToViewport(Graph.getSelectionBounds(nodes, 40), { + width: renderOptions.width!, + height: renderOptions.height! + }) renderOptions.x = x renderOptions.y = y renderOptions.zoom = zoom diff --git a/examples/radial/index.html b/examples/radial/index.html index ac400bab..ef1eb2df 100644 --- a/examples/radial/index.html +++ b/examples/radial/index.html @@ -1,24 +1,24 @@ - - - Graph - - - - - - -
    - - + + + Graph + + + + + + +
    + + diff --git a/examples/radial/index.ts b/examples/radial/index.ts index 8c70a2a8..245c8eb0 100644 --- a/examples/radial/index.ts +++ b/examples/radial/index.ts @@ -4,18 +4,15 @@ import * as Graph from '../../src/' import * as WebGL from '../../src/renderers/webgl' import graphData from '../../data/tmp-data' - export const stats = new Stats() stats.showPanel(0) // 0: fps, 1: ms, 2: mb, 3+: custom document.body.appendChild(stats.dom) - /** * Initialize Data */ type Node = Graph.Node & { type: string } - const arabicLabel = 'مدالله بن علي\nبن سهل الخالدي' const thaiLabel = 'บริษัท ไทยยูเนียนรับเบอร์\nจำกัด' const russianLabel = 'ВИКТОР ФЕЛИКСОВИЧ ВЕКСЕЛЬБЕРГ' @@ -23,53 +20,72 @@ const russianLabel = 'ВИКТОР ФЕЛИКСОВИЧ ВЕКСЕЛЬБЕРГ' const createCompanyStyle = (radius: number): Graph.NodeStyle => ({ color: '#FFAF1D', stroke: [{ color: '#FFF' }, { color: '#F7CA4D' }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'business', color: '#fff', size: radius * 1.25 }, - badge: [{ - position: 45, - color: '#FFAF1D', - stroke: '#FFF', - icon: { - type: 'textIcon', - family: 'Helvetica', - size: 12, - color: '#FFF', - text: '15', - } - }, { - position: 135, - color: '#E4171B', - stroke: '#FFF', - icon: { - type: 'textIcon', - family: 'Helvetica', - size: 12, - color: '#FFF', - text: '!', + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'business', + color: '#fff', + size: radius * 1.25 + }, + badge: [ + { + position: 45, + color: '#FFAF1D', + stroke: '#FFF', + icon: { + type: 'textIcon', + family: 'Helvetica', + size: 12, + color: '#FFF', + text: '15' + } + }, + { + position: 135, + color: '#E4171B', + stroke: '#FFF', + icon: { + type: 'textIcon', + family: 'Helvetica', + size: 12, + color: '#FFF', + text: '!' + } } - }], + ] }) const createPersonStyle = (radius: number): Graph.NodeStyle => ({ color: '#7CBBF3', stroke: [{ color: '#90D7FB' }], - icon: { type: 'textIcon' as const, family: 'Material Icons', text: 'person', color: '#fff', size: radius * 1.25 }, - badge: [{ - position: 45, - color: '#7CBBF3', - stroke: '#FFF', - icon: { - type: 'textIcon', - family: 'Helvetica', - size: 12, - color: '#FFF', - text: '8', + icon: { + type: 'textIcon' as const, + family: 'Material Icons', + text: 'person', + color: '#fff', + size: radius * 1.25 + }, + badge: [ + { + position: 45, + color: '#7CBBF3', + stroke: '#FFF', + icon: { + type: 'textIcon', + family: 'Helvetica', + size: 12, + color: '#FFF', + text: '8' + } } - }], + ] }) - let nodes = Object.values(graphData.nodes) - .map((node, idx) => ({ ...node, label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel: node.label })) + .map((node, idx) => ({ + ...node, + label: idx % 4 === 0 ? arabicLabel : idx % 4 === 1 ? thaiLabel : idx % 4 === 2 ? russianLabel : node.label + })) // .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_2` }))) // .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_3` }))) .map(({ id, label, type }) => ({ @@ -77,12 +93,10 @@ let nodes = Object.values(graphData.nodes) label, radius: 32, type, - style: type === 'company' ? - createCompanyStyle(32) : - createPersonStyle(32) + style: type === 'company' ? createCompanyStyle(32) : createPersonStyle(32) })) -let edges = Object.entries<{ field: string, source: string, target: string }>(graphData.edges) +let edges = Object.entries<{ field: string; source: string; target: string }>(graphData.edges) // .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_2`, { ...edge, source: `${edge.source}_2`, target: `${edge.target}_2` }])) // .concat(Object.entries(graphData.edges).map(([id, edge]) => [`${id}_3`, { ...edge, source: `${edge.source}_3`, target: `${edge.target}_3` }])) // .concat([ @@ -121,7 +135,6 @@ let edges = Object.entries<{ field: string, source: string, target: string }>(gr // { id: 'qa', source: 'c', target: 'q', label: 'Both', style: { arrow: 'both' } }, // ] - /** * Initialize Layout and Renderer Options */ @@ -139,24 +152,28 @@ const renderOptions: WebGL.Options = { render({ nodes, edges, options: renderOptions }) }, onNodePointerEnter: ({ target: { id } }) => { - nodes = nodes.map((node) => (node.id === id ? { - ...node, - style: { - ...node.style, - stroke: node.type === 'company' ? - [{ color: '#FFF' }, { color: '#CCC' }] : - [{ color: '#CCC' }] - } - } : node)) + nodes = nodes.map((node) => + node.id === id + ? { + ...node, + style: { + ...node.style, + stroke: node.type === 'company' ? [{ color: '#FFF' }, { color: '#CCC' }] : [{ color: '#CCC' }] + } + } + : node + ) render({ nodes, edges, options: renderOptions }) }, onNodePointerLeave: ({ target: { id } }) => { - nodes = nodes.map((node) => (node.id === id ? { - ...node, - style: node.type === 'company' ? - createCompanyStyle(32) : - createPersonStyle(32) - } : node)) + nodes = nodes.map((node) => + node.id === id + ? { + ...node, + style: node.type === 'company' ? createCompanyStyle(32) : createPersonStyle(32) + } + : node + ) render({ nodes, edges, options: renderOptions }) }, onEdgePointerEnter: ({ target: { id } }) => { @@ -166,10 +183,9 @@ const renderOptions: WebGL.Options = { onEdgePointerLeave: ({ target: { id } }) => { edges = edges.map((edge) => (edge.id === id ? { ...edge, style: { ...edge.style, width: 1 } } : edge)) render({ nodes, edges, options: renderOptions }) - }, + } } - /** * Initialize Layout and Renderer */ @@ -179,7 +195,6 @@ const render = WebGL.Renderer({ debug: { stats, logPerformance: false } }) - /** * Layout and Render Graph */ diff --git a/examples/tsconfig.json b/examples/tsconfig.json index bdea9c40..2657be54 100644 --- a/examples/tsconfig.json +++ b/examples/tsconfig.json @@ -2,35 +2,35 @@ "compilerOptions": { /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ - "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ - "lib": ["es2015","es2017","dom"], /* Specify library files to be included in the compilation. */ + "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": ["es2015", "es2017", "dom"] /* Specify library files to be included in the compilation. */, // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ + "sourceMap": true /* Generates corresponding '.map' file. */, // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./dist", /* Redirect output structure to the directory. */ + "outDir": "./dist" /* Redirect output structure to the directory. */, // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ // "composite": true, /* Enable project compilation */ // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ // "removeComments": true, /* Do not emit comments to output. */ // "noEmit": true, /* Do not emit outputs. */ // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + "downlevelIteration": true /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */, // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - "strictNullChecks": true, /* Enable strict null checks. */ - "strictFunctionTypes": true, /* Enable strict checking of function types. */ - "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, + "strictNullChecks": true /* Enable strict null checks. */, + "strictFunctionTypes": true /* Enable strict checking of function types. */, + "strictBindCallApply": true /* Enable strict 'bind', 'call', and 'apply' methods on functions. */, + "strictPropertyInitialization": true /* Enable strict checking of property initialization in classes. */, + "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, + "alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, /* Additional Checks */ // "noUnusedLocals": true, /* Report errors on unused locals. */ @@ -46,7 +46,7 @@ // "typeRoots": [], /* List of folders to include type definitions from. */ // "types": [], /* Type declaration files to be included in compilation. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ @@ -60,7 +60,5 @@ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ }, - "include": [ - "./**/*" - ], + "include": ["./**/*"] } diff --git a/package-lock.json b/package-lock.json index d8900b06..b9c3ec6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,41 +11,59 @@ "dependencies": { "@pixi/unsafe-eval": "^6.5.5", "d3-color": "^3.1.0", - "d3-force": "^2.0.1", - "d3-hierarchy": "^2.0.0", - "d3-interpolate": "^1.4.0", + "d3-force": "^3.0.0", + "d3-hierarchy": "^3.1.2", + "d3-interpolate": "^3.0.1", "fontfaceobserver": "^2.1.0", "pixi.js-legacy": "^6.5.5" }, "devDependencies": { + "@parcel/packager-ts": "^2.9.3", + "@parcel/transformer-typescript-tsc": "^2.9.3", + "@parcel/transformer-typescript-types": "^2.9.3", "@turf/clusters-kmeans": "^6.3.0", - "@types/d3-color": "^1.2.2", - "@types/d3-force": "^1.2.1", - "@types/d3-hierarchy": "^2.0.0", - "@types/d3-interpolate": "^1.3.1", - "@types/d3-scale": "^2.2.0", - "@types/d3-scale-chromatic": "^1.5.0", + "@types/d3-color": "^3.1.0", + "@types/d3-force": "^3.0.5", + "@types/d3-hierarchy": "^3.1.3", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.4", + "@types/d3-scale-chromatic": "^3.0.0", "@types/fontfaceobserver": "0.0.6", "@types/react": "^16.9.34", "@types/react-dom": "^16.9.8", "@types/react-resize-detector": "^5.0.0", - "@types/stats": "^0.16.30", - "@typescript-eslint/eslint-plugin": "^4.11.1", - "@typescript-eslint/parser": "^4.11.1", - "d3-scale": "^3.2.1", - "d3-scale-chromatic": "^1.5.0", - "eslint": "^7.17.0", - "parcel-bundler": "^1.12.4", + "@types/stats.js": "^0.17.0", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "d3-scale": "^4.0.2", + "d3-scale-chromatic": "^3.0.0", + "eslint": "^8.49.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0", + "parcel": "^2.9.3", + "prettier": "^3.0.3", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", "react": "^16.13.1", "react-dom": "^16.13.1", "react-resize-detector": "^5.2.0", "rxjs": "^6.5.5", "stats.js": "^0.17.0", "ts-loader": "^6.2.2", - "typescript": "^4.9.3" + "typescript": "^5.2.2" }, "peerDependencies": { - "react": "^16.0" + "react": ">=16.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@babel/code-frame": { @@ -57,1673 +75,2684 @@ "@babel/highlight": "^7.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", - "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==", - "dev": true - }, - "node_modules/@babel/core": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", - "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.10", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.10", - "@babel/types": "^7.12.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/core/node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "node_modules/@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", + "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", - "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { - "@babel/types": "^7.12.11", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", - "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "node_modules/@eslint/js": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", "dev": true, - "dependencies": { - "@babel/types": "^7.12.10" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", - "browserslist": "^4.14.5", - "semver": "^5.5.0" + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" - } + "node_modules/@lezer/common": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", + "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", + "dev": true }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", - "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "node_modules/@lezer/lr": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", + "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "regexpu-core": "^4.7.1" + "@lezer/common": "^0.15.0" } }, - "node_modules/@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.7.11.tgz", + "integrity": "sha512-r6+vYq2vKzE+vgj/rNVRMwAevq0+ZR9IeMFIqcSga+wMtMdXQ27KqQ7uS99/yXASg29bos7yHP3yk4x6Iio0lw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.7.11.tgz", + "integrity": "sha512-jhj1aB4K8ycRL1HOQT5OtzlqOq70jxUQEWRN9Gqh3TIDN30dxXtiHi6EWF516tzw6v2+3QqhDMJh8O6DtTGG8Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.12.1" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/helper-function-name": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", - "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.7.11.tgz", + "integrity": "sha512-dHfLFVSrw/v5X5lkwp0Vl7+NFpEeEYKfMG2DpdFJnnG1RgHQZngZxCaBagFoaJGykRpd2DYF1AeuXBFrAUAXfw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/types": "^7.12.11" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", - "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.7.11.tgz", + "integrity": "sha512-7xGEfPPbmVJWcY2Nzqo11B9Nfxs+BAsiiaY/OcT4aaTDdykKeCjvKMQJA3KXCtZ1AtiC9ljyGLi+BfUwdulY5A==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.12.10" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.7.11.tgz", + "integrity": "sha512-vUKI3JrREMQsXX8q0Eq5zX2FlYCKWMmLiCyyJNfZK0Uyf14RBg9VtB3ObQ41b4swYh2EWaltasWVe93Y8+KDng==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.10.4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", - "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.7.11.tgz", + "integrity": "sha512-BJwkHlSUgtB+Ei52Ai32M1AOMerSlzyIGA/KC4dAGL+GGwVMdwG8HGCOA2TxP3KjhbgDPMYkv7bt/NmOmRIFng==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.12.7" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "node_modules/@mischnic/json-sourcemap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", + "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", "dev": true, "dependencies": { - "@babel/types": "^7.12.5" + "@lezer/common": "^0.15.7", + "@lezer/lr": "^0.15.4", + "json5": "^2.2.1" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "node_modules/@mischnic/json-sourcemap/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "lodash": "^4.17.19" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", - "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", + "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.12.10" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", + "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", - "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", + "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.12.7", - "@babel/helper-optimise-call-expression": "^7.12.10", - "@babel/traverse": "^7.12.10", - "@babel/types": "^7.12.11" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", + "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.12.1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", + "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.12.1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", - "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", + "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@babel/types": "^7.12.11" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", - "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", - "dev": true + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", - "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 8" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", - "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", + "node_modules/@parcel/bundler-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.9.3.tgz", + "integrity": "sha512-JjJK8dq39/UO/MWI/4SCbB1t/qgpQRFnFDetAAAezQ8oN++b24u1fkMDa/xqQGjbuPmGeTds5zxGgYs7id7PYg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/graph": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "node_modules/@parcel/cache": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.9.3.tgz", + "integrity": "sha512-Bj/H2uAJJSXtysG7E/x4EgTrE2hXmm7td/bc97K8M9N7+vQjxf7xb0ebgqe84ePVMkj4MVQSMEJkEucXVx4b0Q==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/fs": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/utils": "2.9.3", + "lmdb": "2.7.11" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "node_modules/@parcel/codeframe": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.9.3.tgz", + "integrity": "sha512-z7yTyD6h3dvduaFoHpNqur74/2yDWL++33rjQjIjCaXREBN6dKHoMGMizzo/i4vbiI1p9dDox2FIDEHCMQxqdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "node_modules/@parcel/codeframe/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "node_modules/@parcel/codeframe/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "node_modules/@parcel/codeframe/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } + "node_modules/@parcel/codeframe/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", - "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "node_modules/@parcel/codeframe/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "node_modules/@parcel/codeframe/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "node_modules/@parcel/compressor-raw": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.9.3.tgz", + "integrity": "sha512-jz3t4/ICMsHEqgiTmv5i1DJva2k5QRpZlBELVxfY+QElJTVe8edKJ0TiKcBxh2hx7sm4aUigGmp7JiqqHRRYmA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", - "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@parcel/plugin": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/config-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.9.3.tgz", + "integrity": "sha512-tqN5tF7QnVABDZAu76co5E6N8mA9n8bxiWdK4xYyINYFIEHgX172oRTqXTnhEMjlMrdmASxvnGlbaPBaVnrCTw==", + "dev": true, + "dependencies": { + "@parcel/bundler-default": "2.9.3", + "@parcel/compressor-raw": "2.9.3", + "@parcel/namer-default": "2.9.3", + "@parcel/optimizer-css": "2.9.3", + "@parcel/optimizer-htmlnano": "2.9.3", + "@parcel/optimizer-image": "2.9.3", + "@parcel/optimizer-svgo": "2.9.3", + "@parcel/optimizer-swc": "2.9.3", + "@parcel/packager-css": "2.9.3", + "@parcel/packager-html": "2.9.3", + "@parcel/packager-js": "2.9.3", + "@parcel/packager-raw": "2.9.3", + "@parcel/packager-svg": "2.9.3", + "@parcel/reporter-dev-server": "2.9.3", + "@parcel/resolver-default": "2.9.3", + "@parcel/runtime-browser-hmr": "2.9.3", + "@parcel/runtime-js": "2.9.3", + "@parcel/runtime-react-refresh": "2.9.3", + "@parcel/runtime-service-worker": "2.9.3", + "@parcel/transformer-babel": "2.9.3", + "@parcel/transformer-css": "2.9.3", + "@parcel/transformer-html": "2.9.3", + "@parcel/transformer-image": "2.9.3", + "@parcel/transformer-js": "2.9.3", + "@parcel/transformer-json": "2.9.3", + "@parcel/transformer-postcss": "2.9.3", + "@parcel/transformer-posthtml": "2.9.3", + "@parcel/transformer-raw": "2.9.3", + "@parcel/transformer-react-refresh-wrap": "2.9.3", + "@parcel/transformer-svg": "2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" + } + }, + "node_modules/@parcel/core": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.9.3.tgz", + "integrity": "sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==", + "dev": true, + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/cache": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/graph": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/package-manager": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/profiler": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "abortcontroller-polyfill": "^1.1.9", + "base-x": "^3.0.8", + "browserslist": "^4.6.6", + "clone": "^2.1.1", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "json5": "^2.2.0", + "msgpackr": "^1.5.4", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "node_modules/@parcel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "node_modules/@parcel/core/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@parcel/diagnostic": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.9.3.tgz", + "integrity": "sha512-6jxBdyB3D7gP4iE66ghUGntWt2v64E6EbD4AetZk+hNJpgudOOPsKTovcMi/i7I4V0qD7WXSF4tvkZUoac0jwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@mischnic/json-sourcemap": "^0.1.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "node_modules/@parcel/events": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.9.3.tgz", + "integrity": "sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "node_modules/@parcel/fs": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.9.3.tgz", + "integrity": "sha512-/PrRKgCRw22G7rNPSpgN3Q+i2nIkZWuvIOAdMG4KWXC4XLp8C9jarNaWd5QEQ75amjhQSl3oUzABzkdCtkKrgg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@parcel/fs-search": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/watcher": "^2.0.7", + "@parcel/workers": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "node_modules/@parcel/fs-search": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.9.3.tgz", + "integrity": "sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", - "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", + "node_modules/@parcel/graph": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.9.3.tgz", + "integrity": "sha512-3LmRJmF8+OprAr6zJT3X2s8WAhLKkrhi6RsFlMWHifGU5ED1PFcJWFbOwJvSjcAhMQJP0fErcFIK1Ludv3Vm3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@parcel/hash": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.9.3.tgz", + "integrity": "sha512-qlH5B85XLzVAeijgKPjm1gQu35LoRYX/8igsjnN8vOlbc3O8BYAUIutU58fbHbtE8MJPbxQQUw7tkTjeoujcQQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "xxhash-wasm": "^0.4.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "node_modules/@parcel/logger": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.9.3.tgz", + "integrity": "sha512-5FNBszcV6ilGFcijEOvoNVG6IUJGsnMiaEnGQs7Fvc1dktTjEddnoQbIYhcSZL63wEmzBZOgkT5yDMajJ/41jw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@parcel/markdown-ansi": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.9.3.tgz", + "integrity": "sha512-/Q4X8F2aN8UNjAJrQ5NfK2OmZf6shry9DqetUSEndQ0fHonk78WKt6LT0zSKEBEW/bB/bXk6mNMsCup6L8ibjQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "chalk": "^4.1.0" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@parcel/markdown-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@parcel/markdown-ansi/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@parcel/markdown-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@parcel/markdown-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@parcel/markdown-ansi/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@parcel/markdown-ansi/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "node_modules/@parcel/namer-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.9.3.tgz", + "integrity": "sha512-1ynFEcap48/Ngzwwn318eLYpLUwijuuZoXQPCsEQ21OOIOtfhFQJaPwXTsw6kRitshKq76P2aafE0BioGSqxcA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "node_modules/@parcel/node-resolver-core": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.0.3.tgz", + "integrity": "sha512-AjxNcZVHHJoNT/A99PKIdFtwvoze8PAiC3yz8E/dRggrDIOboUEodeQYV5Aq++aK76uz/iOP0tST2T8A5rhb1A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/diagnostic": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "node_modules/@parcel/node-resolver-core/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "node_modules/@parcel/optimizer-css": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.9.3.tgz", + "integrity": "sha512-RK1QwcSdWDNUsFvuLy0hgnYKtPQebzCb0vPPzqs6LhL+vqUu9utOyRycGaQffHCkHVQP6zGlN+KFssd7YtFGhA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", - "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", + "node_modules/@parcel/optimizer-htmlnano": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.9.3.tgz", + "integrity": "sha512-9g/KBck3c6DokmJfvJ5zpHFBiCSolaGrcsTGx8C3YPdCTVTI9P1TDCwUxvAr4LjpcIRSa82wlLCI+nF6sSgxKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/plugin": "2.9.3", + "htmlnano": "^2.0.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "svgo": "^2.4.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "node_modules/@parcel/optimizer-htmlnano/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/@parcel/optimizer-htmlnano/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "node_modules/@parcel/optimizer-image": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.9.3.tgz", + "integrity": "sha512-530YzthE7kmecnNhPbkAK+26yQNt69pfJrgE0Ev0BZaM1Wu2+33nki7o8qvkTkikhPrurEJLGIXt1qKmbKvCbA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "node_modules/@parcel/optimizer-svgo": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.9.3.tgz", + "integrity": "sha512-ytQS0wY5JJhWU4mL0wfhYDUuHcfuw+Gy2+JcnTm1t1AZXHlOTbU6EzRWNqBShsgXjvdrQQXizAe3B6GFFlFJVQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "svgo": "^2.4.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.10.tgz", - "integrity": "sha512-0ti12wLTLeUIzu9U7kjqIn4MyOL7+Wibc7avsHhj4o1l5C0ATs8p2IMHrVYjm9t9wzhfEO6S3kxax0Rpdo8LTg==", + "node_modules/@parcel/optimizer-svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.12.1" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "node_modules/@parcel/optimizer-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "node_modules/@parcel/optimizer-svgo/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "node_modules/@parcel/optimizer-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/@parcel/optimizer-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "node_modules/@parcel/optimizer-swc": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.9.3.tgz", + "integrity": "sha512-GQINNeqtdpL1ombq/Cpwi6IBk02wKJ/JJbYbyfHtk8lxlq13soenpwOlzJ5T9D2fdG+FUhai9NxpN5Ss4lNoAg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "@swc/core": "^1.3.36", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "node_modules/@parcel/package-manager": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.9.3.tgz", + "integrity": "sha512-NH6omcNTEupDmW4Lm1e4NUYBjdqkURxgZ4CNESESInHJe6tblVhNB8Rpr1ar7zDar7cly9ILr8P6N3Ei7bTEjg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@parcel/diagnostic": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/node-resolver-core": "3.0.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "semver": "^7.5.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "node_modules/@parcel/package-manager/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", - "babel-plugin-dynamic-import-node": "^2.3.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "node_modules/@parcel/packager-css": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.9.3.tgz", + "integrity": "sha512-mePiWiYZOULY6e1RdAIJyRoYqXqGci0srOaVZYaP7mnrzvJgA63kaZFFsDiEWghunQpMUuUjM2x/vQVHzxmhKQ==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "node_modules/@parcel/packager-html": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.9.3.tgz", + "integrity": "sha512-0Ex+O0EaZf9APNERRNGgGto02hFJ6f5RQEvRWBK55WAV1rXeU+kpjC0c0qZvnUaUtXfpWMsEBkevJCwDkUMeMg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/plugin": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "node_modules/@parcel/packager-js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.9.3.tgz", + "integrity": "sha512-V5xwkoE3zQ3R+WqAWhA1KGQ791FvJeW6KonOlMI1q76Djjgox68hhObqcLu66AmYNhR2R/wUpkP18hP2z8dSFw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "globals": "^13.2.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "node_modules/@parcel/packager-raw": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.9.3.tgz", + "integrity": "sha512-oPQTNoYanQ2DdJyL61uPYK2py83rKOT8YVh2QWAx0zsSli6Kiy64U3+xOCYWgDVCrHw9+9NpQMuAdSiFg4cq8g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "@parcel/plugin": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "node_modules/@parcel/packager-svg": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.9.3.tgz", + "integrity": "sha512-p/Ya6UO9DAkaCUFxfFGyeHZDp9YPAlpdnh1OChuwqSFOXFjjeXuoK4KLT+ZRalVBo2Jo8xF70oKMZw4MVvaL7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" + "@parcel/plugin": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "posthtml": "^0.16.4" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "node_modules/@parcel/packager-ts": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-ts/-/packager-ts-2.9.3.tgz", + "integrity": "sha512-Vd9dm1FqaFDw/kWCh95zgGS08HvIpSLg5Aa+AIhFiM0G+kpRSItcBSNJVwC7JKmLk1rmQhmQKoCKX26+nvyAzA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/plugin": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "node_modules/@parcel/plugin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.9.3.tgz", + "integrity": "sha512-qN85Gqr2GMuxX1dT1mnuO9hOcvlEv1lrYrCxn7CJN2nUhbwcfG+LEvcrCzCOJ6XtIHm+ZBV9h9p7FfoPLvpw+g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/types": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz", - "integrity": "sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw==", + "node_modules/@parcel/profiler": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.9.3.tgz", + "integrity": "sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.10", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1", - "@babel/types": "^7.12.12" + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3", + "chrome-trace-event": "^1.0.2" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "node_modules/@parcel/reporter-cli": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.9.3.tgz", + "integrity": "sha512-pZiEvQpuXFuQBafMHxkDmwH8CnnK9sWHwa3bSbsnt385aUahtE8dpY0LKt+K1zfB6degKoczN6aWVj9WycQuZQ==", "dev": true, "dependencies": { - "regenerator-transform": "^0.14.2" + "@parcel/plugin": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "chalk": "^4.1.0", + "term-size": "^2.2.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "node_modules/@parcel/reporter-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "node_modules/@parcel/reporter-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "node_modules/@parcel/reporter-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", - "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "node_modules/@parcel/reporter-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@parcel/reporter-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "node_modules/@parcel/reporter-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", - "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "node_modules/@parcel/reporter-dev-server": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.9.3.tgz", + "integrity": "sha512-s6eboxdLEtRSvG52xi9IiNbcPKC0XMVmvTckieue2EqGDbDcaHQoHmmwkk0rNq0/Z/UxelGcQXoIYC/0xq3ykQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "node_modules/@parcel/reporter-tracer": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.9.3.tgz", + "integrity": "sha512-9cXpKWk0m6d6d+4+TlAdOe8XIPaFEIKGWMWG+5SFAQE08u3olet4PSvd49F4+ZZo5ftRE7YI3j6xNbXvJT8KGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "chrome-trace-event": "^1.0.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "node_modules/@parcel/resolver-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.9.3.tgz", + "integrity": "sha512-8ESJk1COKvDzkmOnppNXoDamNMlYVIvrKc2RuFPmp8nKVj47R6NwMgvwxEaatyPzvkmyTpq5RvG9I3HFc+r4Cw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@parcel/node-resolver-core": "3.0.3", + "@parcel/plugin": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/preset-env": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", - "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "node_modules/@parcel/runtime-browser-hmr": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.9.3.tgz", + "integrity": "sha512-EgiDIDrVAWpz7bOzWXqVinQkaFjLwT34wsonpXAbuI7f7r00d52vNAQC9AMu+pTijA3gyKoJ+Q4NWPMZf7ACDA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.12.7", - "@babel/helper-compilation-targets": "^7.12.5", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.11", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.7", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.11", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.7", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.10", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.11", - "core-js-compat": "^3.8.0", - "semver": "^5.5.0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "node_modules/@parcel/runtime-js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.9.3.tgz", + "integrity": "sha512-EvIy+qXcKnB5qxHhe96zmJpSAViNVXHfQI5RSdZ2a7CPwORwhTI+zPNT9sb7xb/WwFw/WuTTgzT40b41DceU6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "node_modules/@parcel/runtime-react-refresh": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.9.3.tgz", + "integrity": "sha512-XBgryZQIyCmi6JwEfMUCmINB3l1TpTp9a2iFxmYNpzHlqj4Ve0saKaqWOVRLvC945ZovWIBzcSW2IYqWKGtbAA==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "react-error-overlay": "6.0.9", + "react-refresh": "^0.9.0" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "node_modules/@parcel/runtime-service-worker": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.9.3.tgz", + "integrity": "sha512-qLJLqv1mMdWL7gyh8aKBFFAuEiJkhUUgLKpdn6eSfH/R7kTtb76WnOwqUrhvEI9bZFUM/8Pa1bzJnPpqSOM+Sw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "node_modules/@parcel/source-map": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", + "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "detect-libc": "^1.0.3" + }, + "engines": { + "node": "^12.18.3 || >=14" } }, - "node_modules/@babel/template/node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "node_modules/@parcel/transformer-babel": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.9.3.tgz", + "integrity": "sha512-pURtEsnsp3h6tOBDuzh9wRvVtw4PgIlqwAArIWdrG7iwqOUYv9D8ME4+ePWEu7MQWAp58hv9pTJtqWv4T+Sq8A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "browserslist": "^4.6.6", + "json5": "^2.2.0", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/traverse": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", - "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", + "node_modules/@parcel/transformer-babel/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.11", - "@babel/generator": "^7.12.11", - "@babel/helper-function-name": "^7.12.11", - "@babel/helper-split-export-declaration": "^7.12.11", - "@babel/parser": "^7.12.11", - "@babel/types": "^7.12.12", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "node_modules/@parcel/transformer-babel/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@babel/traverse/node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "node_modules/@parcel/transformer-css": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.9.3.tgz", + "integrity": "sha512-duWMdbEBBPjg3fQdXF16iWIdThetDZvCs2TpUD7xOlXH6kR0V5BJy8ONFT15u1RCqIV9hSNGaS3v3I9YRNY5zQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@babel/types": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", - "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", + "node_modules/@parcel/transformer-html": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.9.3.tgz", + "integrity": "sha512-0NU4omcHzFXA1seqftAXA2KNZaMByoKaNdXnLgBgtCGDiYvOcL+6xGHgY6pw9LvOh5um10KI5TxSIMILoI7VtA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2", + "srcset": "4" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "node_modules/@parcel/transformer-html/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/@parcel/transformer-image": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.9.3.tgz", + "integrity": "sha512-7CEe35RaPadQzLIuxzTtIxnItvOoy46hcbXtOdDt6lmVa4omuOygZYRIya2lsGIP4JHvAaALMb5nt99a1uTwJg==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@parcel/transformer-js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.9.3.tgz", + "integrity": "sha512-Z2MVVg5FYcPOfxlUwxqb5l9yjTMEqE3KI3zq2MBRUme6AV07KxLmCDF23b6glzZlHWQUE8MXzYCTAkOPCcPz+Q==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "@swc/helpers": "^0.5.0", + "browserslist": "^4.6.6", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.13.7", + "semver": "^7.5.2" + }, "engines": { - "node": ">= 4" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.9.3" } }, - "node_modules/@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "node_modules/@parcel/transformer-js/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "node_modules/@parcel/transformer-json": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.9.3.tgz", + "integrity": "sha512-yNL27dbOLhkkrjaQjiQ7Im9VOxmkfuuSNSmS0rA3gEjVcm07SLKRzWkAaPnyx44Lb6bzyOTWwVrb9aMmxgADpA==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" + "@parcel/plugin": "2.9.3", + "json5": "^2.2.0" }, "engines": { - "node": ">= 8" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "node_modules/@parcel/transformer-json/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "node_modules/@parcel/transformer-postcss": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.9.3.tgz", + "integrity": "sha512-HoDvPqKzhpmvMmHqQhDnt8F1vH61m6plpGiYaYnYv2Om4HHi5ZIq9bO+9QLBnTKfaZ7ndYSefTKOxTYElg7wyw==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "clone": "^2.1.1", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.2" + }, "engines": { - "node": ">= 6" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "node_modules/@parcel/transformer-postcss/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/@parcel/fs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", - "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "node_modules/@parcel/transformer-posthtml": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.9.3.tgz", + "integrity": "sha512-2fQGgrzRmaqbWf3y2/T6xhqrNjzqMMKksqJzvc8TMfK6f2kg3Ddjv158eaSW2JdkV39aY7tvAOn5f1uzo74BMA==", "dev": true, "dependencies": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/logger": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", - "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "node_modules/@parcel/transformer-posthtml/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 6.0.0" + "node": ">=10" } }, - "node_modules/@parcel/logger/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "node_modules/@parcel/transformer-raw": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.9.3.tgz", + "integrity": "sha512-oqdPzMC9QzWRbY9J6TZEqltknjno+dY24QWqf8ondmdF2+W+/2mRDu59hhCzQrqUHgTq4FewowRZmSfpzHxwaQ==", "dev": true, + "dependencies": { + "@parcel/plugin": "2.9.3" + }, "engines": { - "node": ">=4" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/logger/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/@parcel/transformer-react-refresh-wrap": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.9.3.tgz", + "integrity": "sha512-cb9NyU6oJlDblFIlzqIE8AkvRQVGl2IwJNKwD4PdE7Y6sq2okGEPG4hOw3k/Y9JVjM4/2pUORqvjSRhWwd9oVQ==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "react-refresh": "^0.9.0" }, "engines": { - "node": ">=4" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", + "node_modules/@parcel/transformer-svg": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.9.3.tgz", + "integrity": "sha512-ypmE+dzB09IMCdEAkOsSxq1dEIm2A3h67nAFz4qbfHbwNgXBUuy/jB3ZMwXN/cO0f7SBh/Ap8Jhq6vmGqB5tWw==", "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2" + }, "engines": { - "node": ">= 6.0.0" + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", - "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "node_modules/@parcel/transformer-svg/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.1.5" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@parcel/workers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", - "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "node_modules/@parcel/transformer-typescript-tsc": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-tsc/-/transformer-typescript-tsc-2.9.3.tgz", + "integrity": "sha512-kQUts/PVFhEb9JoyJBlKvaa5qR/3bEiyZSjn8qE3S+97CUOIVun8fNxGiDPwpaPd90BgPcgU43gSAQwlY9rIMQ==", "dev": true, "dependencies": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/ts-utils": "2.9.3" }, "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@pixi/accessibility": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-6.5.5.tgz", - "integrity": "sha512-mDGDVkNCA1w28zzCT/8x2euxHX55y6ftdDte6FytBwHJHxTzfOKyS6GPqJNrXQB2muu1E/bySqzguiYy1gW/lw==", - "peerDependencies": { - "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5", - "@pixi/utils": "6.5.5" - } - }, - "node_modules/@pixi/app": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/app/-/app-6.5.5.tgz", - "integrity": "sha512-VW2kzgj/eNZqGaf+24eL5BGPTHlCDjCYVrKXuFPmPnj48ucUOOKdMQrA8ezmC3LDXsraavwhru8F+JPLUbRtzg==", - "peerDependencies": { - "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5" - } - }, - "node_modules/@pixi/canvas-display": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-display/-/canvas-display-6.5.5.tgz", - "integrity": "sha512-MSI52p5WN1TcaK6GbPbT5+QkMU+mOL+VOJUDlhZoAWeem72iY6MxZfRXc5x0FAZWRU3k7AyIoZEntOah4UWmng==", + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, "peerDependencies": { - "@pixi/display": "6.5.5" + "typescript": ">=3.0.0" } }, - "node_modules/@pixi/canvas-extract": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-extract/-/canvas-extract-6.5.5.tgz", - "integrity": "sha512-MCki+iONWfOULhPaYi6/FRHIyDE4TFYho1a0J+dKXj3ghMeAh6D2v2o12NcdsQ19SrbnRN9edKSxnG4+SqN5Ow==", + "node_modules/@parcel/transformer-typescript-types": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.9.3.tgz", + "integrity": "sha512-W+Ze3aUTdZuBQokXlkEQ/1hUApUm6VRyYzPqEs9jcqCqU8mv18i5ZGAz4bMuIJOBprp7M2wt10SJJx/SC1pl1A==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/ts-utils": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.9.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, "peerDependencies": { - "@pixi/canvas-renderer": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/utils": "6.5.5" + "typescript": ">=3.0.0" } }, - "node_modules/@pixi/canvas-graphics": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-graphics/-/canvas-graphics-6.5.5.tgz", - "integrity": "sha512-ssKrUYYqdmFpJPBghe/2qQsKd6cxeaZqDTjwFceviZuSvUHGNsaOYMsDfg98NQlCivYuTvQVDcIF3cHN/+fnaA==", + "node_modules/@parcel/ts-utils": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.9.3.tgz", + "integrity": "sha512-MiQoXFV8I4IWZT/q5yolKN/gnEY5gZfGB2X7W9WHJbRgyjlT/A5cPERXzVBj6mc3/VM1GdZJz76w637GUcQhow==", + "dev": true, + "dependencies": { + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, "peerDependencies": { - "@pixi/canvas-display": "6.5.5", - "@pixi/canvas-renderer": "6.5.5", - "@pixi/constants": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/graphics": "6.5.5", - "@pixi/math": "6.5.5" + "typescript": ">=3.0.0" } }, - "node_modules/@pixi/canvas-mesh": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-mesh/-/canvas-mesh-6.5.5.tgz", - "integrity": "sha512-2n7J+UVktgRZjHCJX3ysK1Xi3Jmcw/uWYdf27Cn9k94tWwiK+LjKyq0Kv3XybIEgKOky+7/bVlolBNzVxcOpAw==", - "peerDependencies": { - "@pixi/canvas-display": "6.5.5", - "@pixi/canvas-renderer": "6.5.5", - "@pixi/constants": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/mesh": "6.5.5", - "@pixi/mesh-extras": "6.5.5", - "@pixi/settings": "6.5.5" + "node_modules/@parcel/types": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.9.3.tgz", + "integrity": "sha512-NSNY8sYtRhvF1SqhnIGgGvJocyWt1K8Tnw5cVepm0g38ywtX6mwkBvMkmeehXkII4mSUn+frD9wGsydTunezvA==", + "dev": true, + "dependencies": { + "@parcel/cache": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/package-manager": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/workers": "2.9.3", + "utility-types": "^3.10.0" } }, - "node_modules/@pixi/canvas-particle-container": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-particle-container/-/canvas-particle-container-6.5.5.tgz", - "integrity": "sha512-R1f9INc72S35+H5sFx7EZTsZUKU3arXRNMYeLlruPZRe5gENl7X5EvRwbVggUE23PnwL89yRfomREYFPqYNY2w==", - "peerDependencies": { - "@pixi/particle-container": "6.5.5" + "node_modules/@parcel/utils": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.9.3.tgz", + "integrity": "sha512-cesanjtj/oLehW8Waq9JFPmAImhoiHX03ihc3JTWkrvJYSbD7wYKCDgPAM3JiRAqvh1LZ6P699uITrYWNoRLUg==", + "dev": true, + "dependencies": { + "@parcel/codeframe": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/markdown-ansi": "2.9.3", + "@parcel/source-map": "^2.1.1", + "chalk": "^4.1.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@pixi/canvas-prepare": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-prepare/-/canvas-prepare-6.5.5.tgz", - "integrity": "sha512-UZyVmLE1UuMpLUdaEcKwxuF57Ibn86S2yGgKty+yyfC9FXY+YwlVdl62XEhVYOtQ+Kp488InY1LSrc7YGp/pEw==", - "peerDependencies": { - "@pixi/canvas-renderer": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/prepare": "6.5.5", - "@pixi/settings": "6.5.5" + "node_modules/@parcel/utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@pixi/canvas-renderer": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-renderer/-/canvas-renderer-6.5.5.tgz", - "integrity": "sha512-MdQA5ZvRZGcsX7bA2V3KPUH7zfqpmYY1ILUdgP1mmz4zsS0lkqB3Ao6XQCLKCnVz5QeVKhRYzRgMJ/39IlM+qA==", - "peerDependencies": { - "@pixi/constants": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/settings": "6.5.5", - "@pixi/utils": "6.5.5" + "node_modules/@parcel/utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@pixi/canvas-sprite": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite/-/canvas-sprite-6.5.5.tgz", - "integrity": "sha512-5K54PMGoSAlc7Wr7sY/08TT20o+eNbIWgC7Elc/vP4QMiJ389Shnq8Pkd2MhLs/qSbJfwti/cUj4Xiki7C86Lg==", - "peerDependencies": { - "@pixi/canvas-display": "6.5.5", - "@pixi/canvas-renderer": "6.5.5", - "@pixi/constants": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/sprite": "6.5.5", - "@pixi/utils": "6.5.5" + "node_modules/@parcel/utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@pixi/canvas-sprite-tiling": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite-tiling/-/canvas-sprite-tiling-6.5.5.tgz", - "integrity": "sha512-Tu92dpawYVo7vGPaDJnLL39gmEZRNlG/Pxn0ZW/r2FsewC+7VCODnufTuxNhg9pRgg/ax5QnNVdft17YY/zq/w==", - "peerDependencies": { - "@pixi/canvas-renderer": "6.5.5", - "@pixi/canvas-sprite": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/sprite-tiling": "6.5.5", - "@pixi/utils": "6.5.5" - } + "node_modules/@parcel/utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/@pixi/canvas-text": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-text/-/canvas-text-6.5.5.tgz", - "integrity": "sha512-6CvB9NUZWsSvAx85kIZGEVCDFc6gsMXmAesPZfrPiebSVhUkuQmX20Qtqhhl88axB0OuLmw31+Cza2nW4IapMA==", - "peerDependencies": { - "@pixi/canvas-sprite": "6.5.5", - "@pixi/sprite": "6.5.5", - "@pixi/text": "6.5.5" + "node_modules/@parcel/utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/@pixi/compressed-textures": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-6.5.5.tgz", - "integrity": "sha512-e6T1Kg1o9HLVMniSyHcpgtj2VWQV3cdDizIIvdQs7jbrtZCO5ouehViLP2PWm1ZD63hDj6nyVwmZGvkD7FgH1w==", - "peerDependencies": { - "@pixi/constants": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/loaders": "6.5.5", - "@pixi/settings": "6.5.5", - "@pixi/utils": "6.5.5" + "node_modules/@parcel/utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@pixi/constants": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-6.5.5.tgz", - "integrity": "sha512-tuiN6aeMuQv77UHzGNeJiAUiOrt22dybZYrXAVLOF7mDG+zxT96r7R43DvqrWG3GuNh/VCKE5hQLGQybR21nBA==" - }, - "node_modules/@pixi/core": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/core/-/core-6.5.5.tgz", - "integrity": "sha512-Vdod5c5oByqBuqSQq+j+aiLtAUzFGQblCm9Awmuyjsu7Hygyh8080GeAduS4YuCIHEGz5aP9KS/KP92pM+m4Cg==", + "node_modules/@parcel/watcher": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", + "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "dev": true, + "hasInstallScript": true, "dependencies": { - "@types/offscreencanvas": "^2019.6.4" + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/pixijs" + "url": "https://opencollective.com/parcel" }, - "peerDependencies": { - "@pixi/constants": "6.5.5", - "@pixi/extensions": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/runner": "6.5.5", - "@pixi/settings": "6.5.5", - "@pixi/ticker": "6.5.5", - "@pixi/utils": "6.5.5" + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.3.0", + "@parcel/watcher-darwin-arm64": "2.3.0", + "@parcel/watcher-darwin-x64": "2.3.0", + "@parcel/watcher-freebsd-x64": "2.3.0", + "@parcel/watcher-linux-arm-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-musl": "2.3.0", + "@parcel/watcher-linux-x64-glibc": "2.3.0", + "@parcel/watcher-linux-x64-musl": "2.3.0", + "@parcel/watcher-win32-arm64": "2.3.0", + "@parcel/watcher-win32-ia32": "2.3.0", + "@parcel/watcher-win32-x64": "2.3.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", + "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@pixi/display": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/display/-/display-6.5.5.tgz", - "integrity": "sha512-+WnIR9+vrMc6fgdfOPvmsUIggwdAZvjZ0eX3uEEyS6mjFkZCcC8b0fjfpBaTq8dtWWs+sS7ZZqew9TzAlA9o1w==", - "peerDependencies": { - "@pixi/math": "6.5.5", - "@pixi/settings": "6.5.5", - "@pixi/utils": "6.5.5" + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", + "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@pixi/extensions": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-6.5.5.tgz", - "integrity": "sha512-b85GH6xzh0SgPejLguCLBhq9zoq6gizW8Zwyb+W1s1Q+B6sP6LtAMeir3ZefiXT3nOakeUGEv7bLp76Aon3lyw==" + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", + "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@pixi/extract": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-6.5.5.tgz", - "integrity": "sha512-dlGS4BoMAQeMLv2HyfwvLWn4E5/YPuHF32CsclNWvm0A72y7qQYKBRzpQL3Yzo26uflCwNECbTwhcUXaQ3V2tg==", - "peerDependencies": { - "@pixi/core": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/utils": "6.5.5" + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", + "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@pixi/filter-alpha": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-6.5.5.tgz", - "integrity": "sha512-voFl8Euf+amn6/iyNpEfKA7MUV1moylJVe28HBvMuyx5xHp7N/HlcJ2zh2LNxXH2nPu55E1oOWl69+5eYpP+9Q==", - "peerDependencies": { - "@pixi/core": "6.5.5" + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", + "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@pixi/filter-blur": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-6.5.5.tgz", - "integrity": "sha512-Xu0593Fu463VBk730x0RxnoVPmYhMV16izjCv8E2VVOFG357yUECHuPsc0L+/LCCjT53wxa3JOzNTJVUJ4HjSg==", - "peerDependencies": { - "@pixi/core": "6.5.5", - "@pixi/settings": "6.5.5" + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", + "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@pixi/filter-color-matrix": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-6.5.5.tgz", - "integrity": "sha512-NGAZ11mwYegovolym0Iw/i/Tg0aXkRW1nhZMe/5AnWYg81tDpBeUfJkHXErLBZO1Kx7+8EJzMpMv3oEhSYvrug==", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", + "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", + "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", + "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", + "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", + "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", + "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/workers": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.9.3.tgz", + "integrity": "sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==", + "dev": true, + "dependencies": { + "@parcel/diagnostic": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/profiler": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, "peerDependencies": { - "@pixi/core": "6.5.5" + "@parcel/core": "^2.9.3" } }, - "node_modules/@pixi/filter-displacement": { + "node_modules/@pixi/accessibility": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-6.5.5.tgz", - "integrity": "sha512-GfmsdZmFFSlcBapUp2ElaIJE1Sy14RdxdqTA7PV72U2RL2gzBSD7rOasBoWynkPv3ILsVMGVleuuRitjPhRBDw==", + "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-6.5.5.tgz", + "integrity": "sha512-mDGDVkNCA1w28zzCT/8x2euxHX55y6ftdDte6FytBwHJHxTzfOKyS6GPqJNrXQB2muu1E/bySqzguiYy1gW/lw==", "peerDependencies": { "@pixi/core": "6.5.5", - "@pixi/math": "6.5.5" + "@pixi/display": "6.5.5", + "@pixi/utils": "6.5.5" } }, - "node_modules/@pixi/filter-fxaa": { + "node_modules/@pixi/app": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-6.5.5.tgz", - "integrity": "sha512-luW5Rhu9i0FdC2+L+dc/dMf4ImC+yG4CdIuK9zgXwYGb6WLyCuEXI5fhdrpdYU9SmTfdwa5eNWqO0mXplJBAig==", + "resolved": "https://registry.npmjs.org/@pixi/app/-/app-6.5.5.tgz", + "integrity": "sha512-VW2kzgj/eNZqGaf+24eL5BGPTHlCDjCYVrKXuFPmPnj48ucUOOKdMQrA8ezmC3LDXsraavwhru8F+JPLUbRtzg==", "peerDependencies": { - "@pixi/core": "6.5.5" + "@pixi/core": "6.5.5", + "@pixi/display": "6.5.5" } }, - "node_modules/@pixi/filter-noise": { + "node_modules/@pixi/canvas-display": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-6.5.5.tgz", - "integrity": "sha512-3ttFuNfMim+Fd7ccZF69UAPnMsF+5AivX6i1V8WUj75Ei/Fq6JQK+PPbZ2FQQHOYa1e1B6Ej4uvNCkSXs87/UA==", + "resolved": "https://registry.npmjs.org/@pixi/canvas-display/-/canvas-display-6.5.5.tgz", + "integrity": "sha512-MSI52p5WN1TcaK6GbPbT5+QkMU+mOL+VOJUDlhZoAWeem72iY6MxZfRXc5x0FAZWRU3k7AyIoZEntOah4UWmng==", "peerDependencies": { - "@pixi/core": "6.5.5" + "@pixi/display": "6.5.5" } }, - "node_modules/@pixi/graphics": { + "node_modules/@pixi/canvas-extract": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-6.5.5.tgz", - "integrity": "sha512-gBhznqpNv5IX7exnq3dgdjGaGfyi9quIFnjMC2pBihSJLc+WokM00rhRxz6IfNknDBQG0vkTXkc0WOPbVlt9Nw==", + "resolved": "https://registry.npmjs.org/@pixi/canvas-extract/-/canvas-extract-6.5.5.tgz", + "integrity": "sha512-MCki+iONWfOULhPaYi6/FRHIyDE4TFYho1a0J+dKXj3ghMeAh6D2v2o12NcdsQ19SrbnRN9edKSxnG4+SqN5Ow==", "peerDependencies": { - "@pixi/constants": "6.5.5", + "@pixi/canvas-renderer": "6.5.5", "@pixi/core": "6.5.5", "@pixi/display": "6.5.5", "@pixi/math": "6.5.5", - "@pixi/sprite": "6.5.5", "@pixi/utils": "6.5.5" } }, - "node_modules/@pixi/interaction": { + "node_modules/@pixi/canvas-graphics": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-6.5.5.tgz", - "integrity": "sha512-YARy4jeU8EbDQSqtDUguMwQS/wPZjFDAKpuOyraF+DeSN+21+hTRcU3YR4Cq2gqb74uBr5ods4fN9BevyaBjcw==", + "resolved": "https://registry.npmjs.org/@pixi/canvas-graphics/-/canvas-graphics-6.5.5.tgz", + "integrity": "sha512-ssKrUYYqdmFpJPBghe/2qQsKd6cxeaZqDTjwFceviZuSvUHGNsaOYMsDfg98NQlCivYuTvQVDcIF3cHN/+fnaA==", "peerDependencies": { + "@pixi/canvas-display": "6.5.5", + "@pixi/canvas-renderer": "6.5.5", + "@pixi/constants": "6.5.5", "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/ticker": "6.5.5", - "@pixi/utils": "6.5.5" + "@pixi/graphics": "6.5.5", + "@pixi/math": "6.5.5" } }, - "node_modules/@pixi/loaders": { + "node_modules/@pixi/canvas-mesh": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-6.5.5.tgz", - "integrity": "sha512-fFvdXYh5ije/pHi4XghF3lF71F/ng/yE2+V3n8w/i7SpYI/CDmwjgfbVNtMJ4LaflJAyPcF8NF7r+eKr/1vDFQ==", + "resolved": "https://registry.npmjs.org/@pixi/canvas-mesh/-/canvas-mesh-6.5.5.tgz", + "integrity": "sha512-2n7J+UVktgRZjHCJX3ysK1Xi3Jmcw/uWYdf27Cn9k94tWwiK+LjKyq0Kv3XybIEgKOky+7/bVlolBNzVxcOpAw==", "peerDependencies": { + "@pixi/canvas-display": "6.5.5", + "@pixi/canvas-renderer": "6.5.5", "@pixi/constants": "6.5.5", "@pixi/core": "6.5.5", - "@pixi/utils": "6.5.5" + "@pixi/mesh": "6.5.5", + "@pixi/mesh-extras": "6.5.5", + "@pixi/settings": "6.5.5" } }, - "node_modules/@pixi/math": { + "node_modules/@pixi/canvas-particle-container": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/math/-/math-6.5.5.tgz", - "integrity": "sha512-3Y8mfcPjmhIBlcUPTlQXuBBl+cyKWHp2mdXtJg3+E72poO0wTnW175oi38alxSgfKE4jZIDtoUaUoAAuJxmMoA==" + "resolved": "https://registry.npmjs.org/@pixi/canvas-particle-container/-/canvas-particle-container-6.5.5.tgz", + "integrity": "sha512-R1f9INc72S35+H5sFx7EZTsZUKU3arXRNMYeLlruPZRe5gENl7X5EvRwbVggUE23PnwL89yRfomREYFPqYNY2w==", + "peerDependencies": { + "@pixi/particle-container": "6.5.5" + } }, - "node_modules/@pixi/mesh": { + "node_modules/@pixi/canvas-prepare": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-6.5.5.tgz", - "integrity": "sha512-IdI8+jIggDoYSCwdxFQqWekWt5eKvL0kFmrseEIABe3HdHBOuROCz2xTXffqdy9RznsbFSRkmpgiO9fZWibzOg==", + "resolved": "https://registry.npmjs.org/@pixi/canvas-prepare/-/canvas-prepare-6.5.5.tgz", + "integrity": "sha512-UZyVmLE1UuMpLUdaEcKwxuF57Ibn86S2yGgKty+yyfC9FXY+YwlVdl62XEhVYOtQ+Kp488InY1LSrc7YGp/pEw==", "peerDependencies": { - "@pixi/constants": "6.5.5", + "@pixi/canvas-renderer": "6.5.5", "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/settings": "6.5.5", - "@pixi/utils": "6.5.5" + "@pixi/prepare": "6.5.5", + "@pixi/settings": "6.5.5" } }, - "node_modules/@pixi/mesh-extras": { + "node_modules/@pixi/canvas-renderer": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-6.5.5.tgz", - "integrity": "sha512-j0shm5Sbn1OvtBDQ56uSc6vYkkRXSVrYr7ywSNY05/0yE3cbLWiuA8ZC7fd5iLbDCxvgl3QaYwtz2ao9V8Sn9A==", + "resolved": "https://registry.npmjs.org/@pixi/canvas-renderer/-/canvas-renderer-6.5.5.tgz", + "integrity": "sha512-MdQA5ZvRZGcsX7bA2V3KPUH7zfqpmYY1ILUdgP1mmz4zsS0lkqB3Ao6XQCLKCnVz5QeVKhRYzRgMJ/39IlM+qA==", "peerDependencies": { "@pixi/constants": "6.5.5", "@pixi/core": "6.5.5", "@pixi/math": "6.5.5", - "@pixi/mesh": "6.5.5", + "@pixi/settings": "6.5.5", "@pixi/utils": "6.5.5" } }, - "node_modules/@pixi/mixin-cache-as-bitmap": { + "node_modules/@pixi/canvas-sprite": { "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-6.5.5.tgz", - "integrity": "sha512-rlHW5IbJV6aUhiQpDDjUBtlR5Fn+LhJjpHWHmeurhFMyMFNFGm6BNLfAIoxUe6VMm6oZOYOB6y3MNcAZeg+fXg==", + "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite/-/canvas-sprite-6.5.5.tgz", + "integrity": "sha512-5K54PMGoSAlc7Wr7sY/08TT20o+eNbIWgC7Elc/vP4QMiJ389Shnq8Pkd2MhLs/qSbJfwti/cUj4Xiki7C86Lg==", "peerDependencies": { + "@pixi/canvas-display": "6.5.5", + "@pixi/canvas-renderer": "6.5.5", + "@pixi/constants": "6.5.5", "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5", "@pixi/math": "6.5.5", - "@pixi/settings": "6.5.5", "@pixi/sprite": "6.5.5", "@pixi/utils": "6.5.5" } }, - "node_modules/@pixi/mixin-get-child-by-name": { + "node_modules/@pixi/canvas-sprite-tiling": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite-tiling/-/canvas-sprite-tiling-6.5.5.tgz", + "integrity": "sha512-Tu92dpawYVo7vGPaDJnLL39gmEZRNlG/Pxn0ZW/r2FsewC+7VCODnufTuxNhg9pRgg/ax5QnNVdft17YY/zq/w==", + "peerDependencies": { + "@pixi/canvas-renderer": "6.5.5", + "@pixi/canvas-sprite": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/sprite-tiling": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/canvas-text": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-text/-/canvas-text-6.5.5.tgz", + "integrity": "sha512-6CvB9NUZWsSvAx85kIZGEVCDFc6gsMXmAesPZfrPiebSVhUkuQmX20Qtqhhl88axB0OuLmw31+Cza2nW4IapMA==", + "peerDependencies": { + "@pixi/canvas-sprite": "6.5.5", + "@pixi/sprite": "6.5.5", + "@pixi/text": "6.5.5" + } + }, + "node_modules/@pixi/compressed-textures": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-6.5.5.tgz", + "integrity": "sha512-e6T1Kg1o9HLVMniSyHcpgtj2VWQV3cdDizIIvdQs7jbrtZCO5ouehViLP2PWm1ZD63hDj6nyVwmZGvkD7FgH1w==", + "peerDependencies": { + "@pixi/constants": "6.5.5", + "@pixi/core": "6.5.5", + "@pixi/loaders": "6.5.5", + "@pixi/settings": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/constants": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-6.5.5.tgz", + "integrity": "sha512-tuiN6aeMuQv77UHzGNeJiAUiOrt22dybZYrXAVLOF7mDG+zxT96r7R43DvqrWG3GuNh/VCKE5hQLGQybR21nBA==" + }, + "node_modules/@pixi/core": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/core/-/core-6.5.5.tgz", + "integrity": "sha512-Vdod5c5oByqBuqSQq+j+aiLtAUzFGQblCm9Awmuyjsu7Hygyh8080GeAduS4YuCIHEGz5aP9KS/KP92pM+m4Cg==", + "dependencies": { + "@types/offscreencanvas": "^2019.6.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + }, + "peerDependencies": { + "@pixi/constants": "6.5.5", + "@pixi/extensions": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/runner": "6.5.5", + "@pixi/settings": "6.5.5", + "@pixi/ticker": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/display": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/display/-/display-6.5.5.tgz", + "integrity": "sha512-+WnIR9+vrMc6fgdfOPvmsUIggwdAZvjZ0eX3uEEyS6mjFkZCcC8b0fjfpBaTq8dtWWs+sS7ZZqew9TzAlA9o1w==", + "peerDependencies": { + "@pixi/math": "6.5.5", + "@pixi/settings": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/extensions": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-6.5.5.tgz", + "integrity": "sha512-b85GH6xzh0SgPejLguCLBhq9zoq6gizW8Zwyb+W1s1Q+B6sP6LtAMeir3ZefiXT3nOakeUGEv7bLp76Aon3lyw==" + }, + "node_modules/@pixi/extract": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-6.5.5.tgz", + "integrity": "sha512-dlGS4BoMAQeMLv2HyfwvLWn4E5/YPuHF32CsclNWvm0A72y7qQYKBRzpQL3Yzo26uflCwNECbTwhcUXaQ3V2tg==", + "peerDependencies": { + "@pixi/core": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/filter-alpha": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-6.5.5.tgz", + "integrity": "sha512-voFl8Euf+amn6/iyNpEfKA7MUV1moylJVe28HBvMuyx5xHp7N/HlcJ2zh2LNxXH2nPu55E1oOWl69+5eYpP+9Q==", + "peerDependencies": { + "@pixi/core": "6.5.5" + } + }, + "node_modules/@pixi/filter-blur": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-6.5.5.tgz", + "integrity": "sha512-Xu0593Fu463VBk730x0RxnoVPmYhMV16izjCv8E2VVOFG357yUECHuPsc0L+/LCCjT53wxa3JOzNTJVUJ4HjSg==", + "peerDependencies": { + "@pixi/core": "6.5.5", + "@pixi/settings": "6.5.5" + } + }, + "node_modules/@pixi/filter-color-matrix": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-6.5.5.tgz", + "integrity": "sha512-NGAZ11mwYegovolym0Iw/i/Tg0aXkRW1nhZMe/5AnWYg81tDpBeUfJkHXErLBZO1Kx7+8EJzMpMv3oEhSYvrug==", + "peerDependencies": { + "@pixi/core": "6.5.5" + } + }, + "node_modules/@pixi/filter-displacement": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-6.5.5.tgz", + "integrity": "sha512-GfmsdZmFFSlcBapUp2ElaIJE1Sy14RdxdqTA7PV72U2RL2gzBSD7rOasBoWynkPv3ILsVMGVleuuRitjPhRBDw==", + "peerDependencies": { + "@pixi/core": "6.5.5", + "@pixi/math": "6.5.5" + } + }, + "node_modules/@pixi/filter-fxaa": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-6.5.5.tgz", + "integrity": "sha512-luW5Rhu9i0FdC2+L+dc/dMf4ImC+yG4CdIuK9zgXwYGb6WLyCuEXI5fhdrpdYU9SmTfdwa5eNWqO0mXplJBAig==", + "peerDependencies": { + "@pixi/core": "6.5.5" + } + }, + "node_modules/@pixi/filter-noise": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-6.5.5.tgz", + "integrity": "sha512-3ttFuNfMim+Fd7ccZF69UAPnMsF+5AivX6i1V8WUj75Ei/Fq6JQK+PPbZ2FQQHOYa1e1B6Ej4uvNCkSXs87/UA==", + "peerDependencies": { + "@pixi/core": "6.5.5" + } + }, + "node_modules/@pixi/graphics": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-6.5.5.tgz", + "integrity": "sha512-gBhznqpNv5IX7exnq3dgdjGaGfyi9quIFnjMC2pBihSJLc+WokM00rhRxz6IfNknDBQG0vkTXkc0WOPbVlt9Nw==", + "peerDependencies": { + "@pixi/constants": "6.5.5", + "@pixi/core": "6.5.5", + "@pixi/display": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/sprite": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/interaction": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-6.5.5.tgz", + "integrity": "sha512-YARy4jeU8EbDQSqtDUguMwQS/wPZjFDAKpuOyraF+DeSN+21+hTRcU3YR4Cq2gqb74uBr5ods4fN9BevyaBjcw==", + "peerDependencies": { + "@pixi/core": "6.5.5", + "@pixi/display": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/ticker": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/loaders": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-6.5.5.tgz", + "integrity": "sha512-fFvdXYh5ije/pHi4XghF3lF71F/ng/yE2+V3n8w/i7SpYI/CDmwjgfbVNtMJ4LaflJAyPcF8NF7r+eKr/1vDFQ==", + "peerDependencies": { + "@pixi/constants": "6.5.5", + "@pixi/core": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/math": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/math/-/math-6.5.5.tgz", + "integrity": "sha512-3Y8mfcPjmhIBlcUPTlQXuBBl+cyKWHp2mdXtJg3+E72poO0wTnW175oi38alxSgfKE4jZIDtoUaUoAAuJxmMoA==" + }, + "node_modules/@pixi/mesh": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-6.5.5.tgz", + "integrity": "sha512-IdI8+jIggDoYSCwdxFQqWekWt5eKvL0kFmrseEIABe3HdHBOuROCz2xTXffqdy9RznsbFSRkmpgiO9fZWibzOg==", + "peerDependencies": { + "@pixi/constants": "6.5.5", + "@pixi/core": "6.5.5", + "@pixi/display": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/settings": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/mesh-extras": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-6.5.5.tgz", + "integrity": "sha512-j0shm5Sbn1OvtBDQ56uSc6vYkkRXSVrYr7ywSNY05/0yE3cbLWiuA8ZC7fd5iLbDCxvgl3QaYwtz2ao9V8Sn9A==", + "peerDependencies": { + "@pixi/constants": "6.5.5", + "@pixi/core": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/mesh": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/mixin-cache-as-bitmap": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-6.5.5.tgz", + "integrity": "sha512-rlHW5IbJV6aUhiQpDDjUBtlR5Fn+LhJjpHWHmeurhFMyMFNFGm6BNLfAIoxUe6VMm6oZOYOB6y3MNcAZeg+fXg==", + "peerDependencies": { + "@pixi/core": "6.5.5", + "@pixi/display": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/settings": "6.5.5", + "@pixi/sprite": "6.5.5", + "@pixi/utils": "6.5.5" + } + }, + "node_modules/@pixi/mixin-get-child-by-name": { "version": "6.5.5", "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-6.5.5.tgz", "integrity": "sha512-Oz/6wCmJQqPwI8W0Cs7b0QGjCcQtI7THStkm5TlqcQS7quyAnRsaaZ9yh7BPLnZnaVGXaFZ0+WmYAoc0FCc9Lw==", @@ -1893,92 +2922,345 @@ "@pixi/settings": "6.5.5" } }, - "node_modules/@turf/clone": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.3.0.tgz", - "integrity": "sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.3.0" - } - }, - "node_modules/@turf/clusters-kmeans": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-6.3.0.tgz", - "integrity": "sha512-cyHtW5nsOcs1p8l3mflX2805fOxR99FanXCP95U+001S4AwVSgxiOfTg8PUHg9nui2Qcq/PMBRQz80exb2UzyA==", + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", "dev": true, "dependencies": { - "@turf/clone": "^6.3.0", - "@turf/helpers": "^6.3.0", - "@turf/invariant": "^6.3.0", - "@turf/meta": "^6.3.0", - "skmeans": "0.9.7" + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/@turf/helpers": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", - "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==", + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@turf/invariant": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", - "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.3.0" - } - }, - "node_modules/@turf/meta": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz", - "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==", + "node_modules/@swc/core": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.83.tgz", + "integrity": "sha512-PccHDgGQlFjpExgJxH91qA3a4aifR+axCFJ4RieCoiI0m5gURE4nBhxzTBY5YU/YKTBmPO8Gc5Q6inE3+NquWg==", "dev": true, + "hasInstallScript": true, "dependencies": { - "@turf/helpers": "^6.3.0" - } + "@swc/types": "^0.1.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.83", + "@swc/core-darwin-x64": "1.3.83", + "@swc/core-linux-arm-gnueabihf": "1.3.83", + "@swc/core-linux-arm64-gnu": "1.3.83", + "@swc/core-linux-arm64-musl": "1.3.83", + "@swc/core-linux-x64-gnu": "1.3.83", + "@swc/core-linux-x64-musl": "1.3.83", + "@swc/core-win32-arm64-msvc": "1.3.83", + "@swc/core-win32-ia32-msvc": "1.3.83", + "@swc/core-win32-x64-msvc": "1.3.83" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.83.tgz", + "integrity": "sha512-Plz2IKeveVLivbXTSCC3OZjD2MojyKYllhPrn9RotkDIZEFRYJZtW5/Ik1tJW/2rzu5HVKuGYrDKdScVVTbOxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.83.tgz", + "integrity": "sha512-FBGVg5IPF/8jQ6FbK60iDUHjv0H5+LwfpJHKH6wZnRaYWFtm7+pzYgreLu3NTsm3m7/1a7t0+7KURwBGUaJCCw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.83.tgz", + "integrity": "sha512-EZcsuRYhGkzofXtzwDjuuBC/suiX9s7zeg2YYXOVjWwyebb6BUhB1yad3mcykFQ20rTLO9JUyIaiaMYDHGobqw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.83.tgz", + "integrity": "sha512-khI41szLHrCD/cFOcN4p2SYvZgHjhhHlcMHz5BksRrDyteSJKu0qtWRZITVom0N/9jWoAleoFhMnFTUs0H8IWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.83.tgz", + "integrity": "sha512-zgT7yNOdbjHcGAwvys79mbfNLK65KBlPJWzeig+Yk7I8TVzmaQge7B6ZS/gwF9/p+8TiLYo/tZ5aF2lqlgdSVw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.83.tgz", + "integrity": "sha512-x+mH0Y3NC/G0YNlFmGi3vGD4VOm7IPDhh+tGrx6WtJp0BsShAbOpxtfU885rp1QweZe4qYoEmGqiEjE2WrPIdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.83.tgz", + "integrity": "sha512-s5AYhAOmetUwUZwS5g9qb92IYgNHHBGiY2mTLImtEgpAeBwe0LPDj6WrujxCBuZnaS55mKRLLOuiMZE5TpjBNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.83.tgz", + "integrity": "sha512-yw2rd/KVOGs95lRRB+killLWNaO1dy4uVa8Q3/4wb5txlLru07W1m041fZLzwOg/1Sh0TMjJgGxj0XHGR3ZXhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.83.tgz", + "integrity": "sha512-POW+rgZ6KWqBpwPGIRd2/3pcf46P+UrKBm4HLt5IwbHvekJ4avIM8ixJa9kK0muJNVJcDpaZgxaU1ELxtJ1j8w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.83.tgz", + "integrity": "sha512-CiWQtkFnZElXQUalaHp+Wacw0Jd+24ncRYhqaJ9YKnEQP1H82CxIIuQqLM8IFaLpn5dpY6SgzaeubWF46hjcLA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.4.tgz", + "integrity": "sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@turf/clone": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.3.0.tgz", + "integrity": "sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==", + "dev": true, + "dependencies": { + "@turf/helpers": "^6.3.0" + } + }, + "node_modules/@turf/clusters-kmeans": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-6.3.0.tgz", + "integrity": "sha512-cyHtW5nsOcs1p8l3mflX2805fOxR99FanXCP95U+001S4AwVSgxiOfTg8PUHg9nui2Qcq/PMBRQz80exb2UzyA==", + "dev": true, + "dependencies": { + "@turf/clone": "^6.3.0", + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "@turf/meta": "^6.3.0", + "skmeans": "0.9.7" + } + }, + "node_modules/@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==", + "dev": true + }, + "node_modules/@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "dev": true, + "dependencies": { + "@turf/helpers": "^6.3.0" + } + }, + "node_modules/@turf/meta": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz", + "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==", + "dev": true, + "dependencies": { + "@turf/helpers": "^6.3.0" + } }, "node_modules/@types/d3-color": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.2.2.tgz", - "integrity": "sha512-6pBxzJ8ZP3dYEQ4YjQ+NVbQaOflfgXq/JbDiS99oLobM2o72uAST4q6yPxHv6FOTCRC/n35ktuo8pvw/S4M7sw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==", "dev": true }, "node_modules/@types/d3-force": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.1.tgz", - "integrity": "sha512-jqK+I36uz4kTBjyk39meed5y31Ab+tXYN/x1dn3nZEus9yOHCLc+VrcIYLc/aSQ0Y7tMPRlIhLetulME76EiiA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.5.tgz", + "integrity": "sha512-EGG+IWx93ESSXBwfh/5uPuR9Hp8M6o6qEGU7bBQslxCvrdUBQZha/EFpu/VMdLU4B0y4Oe4h175nSm7p9uqFug==", "dev": true }, "node_modules/@types/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-YxdskUvwzqggpnSnDQj4KVkicgjpkgXn/g/9M9iGsiToLS3nG6Ytjo1FoYhYVAAElV/fJBGVL3cQ9Hb7tcv+lw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.3.tgz", + "integrity": "sha512-GpSK308Xj+HeLvogfEc7QsCOcIxkDwLhFYnOoohosEzOqv7/agxwvJER1v/kTC+CY1nfazR0F7gnHo7GE41/fw==", "dev": true }, "node_modules/@types/d3-interpolate": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz", - "integrity": "sha512-z8Zmi08XVwe8e62vP6wcA+CNuRhpuUU5XPEfqpG0hRypDE5BWNthQHB1UNWWDB7ojCbGaN4qBdsWp5kWxhT1IQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", "dev": true, "dependencies": { "@types/d3-color": "*" } }, "node_modules/@types/d3-scale": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-2.2.0.tgz", - "integrity": "sha512-oQFanN0/PiR2oySHfj+zAAkK1/p4LD32Nt1TMVmzk+bYHk7vgIg/iTXQWitp1cIkDw4LMdcgvO63wL+mNs47YA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", + "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", "dev": true, "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-9/D7cOBKdZdTCPc6re0HeSUFBM0aFzdNdmYggUWT9SRRiYSOa6Ys2xdTwHKgc1WS3gGfwTMatBOdWCS863REsg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", "dev": true }, "node_modules/@types/d3-time": { @@ -1999,9 +3281,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "node_modules/@types/offscreencanvas": { @@ -2015,12 +3297,6 @@ "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", "dev": true }, - "node_modules/@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "dev": true - }, "node_modules/@types/react": { "version": "16.9.34", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.34.tgz", @@ -2049,34 +3325,57 @@ "@types/react": "*" } }, - "node_modules/@types/stats": { - "version": "0.16.30", - "resolved": "https://registry.npmjs.org/@types/stats/-/stats-0.16.30.tgz", - "integrity": "sha1-3rX6blnG1nvW4PYaUe9jCoOoTOk=", + "node_modules/@types/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "dev": true + }, + "node_modules/@types/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.1.tgz", - "integrity": "sha512-fABclAX2QIEDmTMk6Yd7Muv1CzFLwWM4505nETzRHpP3br6jfahD9UUJkhnJ/g2m7lwfz8IlswcwGGPGiq9exw==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.11.1", - "@typescript-eslint/scope-manager": "4.11.1", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2088,83 +3387,122 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.1.tgz", - "integrity": "sha512-mAlWowT4A6h0TC9F+J5pdbEhjNiEMO+kqPKQ4sc3fVieKL71dEqfkKgtcFVSX3cjSBwYwhImaQ/mXQF0oaI38g==", + "node_modules/@typescript-eslint/parser": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", + "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.11.1.tgz", - "integrity": "sha512-BJ3jwPQu1jeynJ5BrjLuGfK/UJu6uwHxJ/di7sanqmUmxzmyIcd3vz58PMR7wpi8k3iWq2Q11KMYgZbUpRoIPw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "debug": "^4.1.1" + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz", - "integrity": "sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", + "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1" + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.1.tgz", - "integrity": "sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz", - "integrity": "sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2176,51 +3514,73 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz", - "integrity": "sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==", + "node_modules/@typescript-eslint/utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.11.1", - "eslint-visitor-keys": "^2.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "acorn": "bin/acorn" + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.4.0" + "node": ">=10" } }, - "node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", "dev": true, "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "node_modules/abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2230,18 +3590,12 @@ } }, "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true - }, - "node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "engines": { - "node": ">=0.4.0" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ajv": { @@ -2254,21 +3608,10 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" - } - }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ansi-regex": { @@ -2292,12738 +3635,3763 @@ "node": ">=4" } }, - "node_modules/ansi-to-html": { - "version": "0.6.14", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", - "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", - "dev": true, - "dependencies": { - "entities": "^1.1.2" - }, - "bin": { - "ansi-to-html": "bin/ansi-to-html" - }, - "engines": { - "node": "*" - } - }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "safe-buffer": "^5.0.1" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.6" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/array-equal": { + "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 5.10.0" } }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "safer-buffer": "~2.1.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">=0.8" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", "dev": true, "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, + "run-applescript": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001529", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001529.tgz", + "integrity": "sha512-n2pUQYGAkrLG4QYj2desAh+NqsJpHbNmVZz87imptDdxLAtjxary7Df/psdfyDGmskJK/9Dt9cPnx5RZ3CU4Og==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "bin": { - "atob": "bin/atob.js" + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">= 4.5.0" + "node": ">=4" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, "engines": { - "node": "*" + "node": ">=6.0" } }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true, - "dependencies": { - "object.assign": "^4.1.0" + "engines": { + "node": ">=0.8" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "color-name": "1.1.3" } }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/babylon-walk": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", - "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" - } + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "is-descriptor": "^1.0.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "kind-of": "^6.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "kind-of": "^6.0.0" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/css-select/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "node_modules/css-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "tweetnacl": "^0.14.3" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { - "node": "*" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "css-tree": "~2.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "file-uri-to-path": "1.0.0" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "optional": true, + "peer": true }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "node_modules/csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", "dev": true }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" } }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, + "node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "node_modules/d3-format": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.2.tgz", + "integrity": "sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww==", + "dev": true + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" + "d3-color": "1 - 3" }, - "bin": { - "brfs": "bin/cmd.js" + "engines": { + "node": ">=12" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "node_modules/d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", "dev": true, "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "node_modules/d3-scale/node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dev": true, "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" } }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "node_modules/d3-scale/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", "dev": true, "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "d3-array": "2" } }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "node_modules/d3-scale/node_modules/d3-time/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", "dev": true, "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "internmap": "^1.0.0" } }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "node_modules/d3-scale/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", "dev": true }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "node_modules/d3-time-format": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.2.tgz", + "integrity": "sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw==", "dev": true, "dependencies": { - "pako": "~1.0.5" + "d3-time": "1" } }, - "node_modules/browserify-zlib/node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" }, - "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" + "ms": "2.1.2" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=6.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-status-codes": { + "node_modules/default-browser-id": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", "dev": true, "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "dependencies": { - "callsites": "^2.0.0" + "bin": { + "detect-libc": "bin/detect-libc.js" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "caller-callsite": "^2.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001414", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz", - "integrity": "sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + "type": "github", + "url": "https://github.com/sponsors/fb55" } ] }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "node_modules/dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.512", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.512.tgz", + "integrity": "sha512-1W8wRbYlQE4ph7eoj3TJ+uqwO6+xvAE/L+KGU7WTQQvX3tnSIGZAb90MTsMoJqzntamiwJhBAj4WZmygXhsOUg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "node_modules/enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "prr": "~1.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "errno": "cli.js" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" + "is-arrayish": "^0.2.1" } }, - "node_modules/cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { - "node": ">=0.8" + "node": ">=0.8.0" } }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" + "node_modules/eslint": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "node_modules/eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "dependencies": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "engines": [ - "node >= 0.8" - ], "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/core-js-compat": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.1.tgz", - "integrity": "sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "browserslist": "^4.15.0", - "semver": "7.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=8" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/cosmiconfig/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/cosmiconfig/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=0.10" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "estraverse": "^5.2.0" }, "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, "engines": { - "node": ">4" + "node": ">=0.10.0" } }, - "node_modules/css-declaration-sorter/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "dependencies": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, - "node_modules/css-modules-loader-core/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true }, - "node_modules/css-modules-loader-core/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/css-modules-loader-core/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/css-modules-loader-core/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, - "node_modules/css-modules-loader-core/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/css-modules-loader-core/node_modules/postcss": { + "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=4.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/css-modules-loader-core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/css-modules-loader-core/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-modules-loader-core/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "node_modules/flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", "dev": true, "dependencies": { - "has-flag": "^1.0.0" + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=0.8.0" + "node": ">=12.0.0" } }, - "node_modules/css-select": { + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fontfaceobserver": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", + "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==" }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "node_modules/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" + "engines": { + "node": ">=6" } }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=8.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">= 6" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "is-glob": "^4.0.3" }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-preset-default/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true, - "engines": { - "node": ">=6.9.0" - } + "node_modules/graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true }, - "node_modules/cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">=4" } }, - "node_modules/cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "node_modules/htmlnano": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.4.tgz", + "integrity": "sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA==", "dev": true, "dependencies": { - "postcss": "^7.0.0" + "cosmiconfig": "^8.0.0", + "posthtml": "^0.16.5", + "timsort": "^0.3.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "cssnano": "^6.0.0", + "postcss": "^8.3.11", + "purgecss": "^5.0.0", + "relateurl": "^0.2.7", + "srcset": "4.0.0", + "svgo": "^3.0.2", + "terser": "^5.10.0", + "uncss": "^0.17.3" + }, + "peerDependenciesMeta": { + "cssnano": { + "optional": true + }, + "postcss": { + "optional": true + }, + "purgecss": { + "optional": true + }, + "relateurl": { + "optional": true + }, + "srcset": { + "optional": true + }, + "svgo": { + "optional": true + }, + "terser": { + "optional": true + }, + "uncss": { + "optional": true + } } }, - "node_modules/cssnano-util-raw-cache/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "node_modules/htmlnano/node_modules/cosmiconfig": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.4.tgz", + "integrity": "sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==", "dev": true, "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/cssnano/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, "engines": { - "node": ">=8.0.0" + "node": ">=14.18.0" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=8.0.0" + "node": ">= 4" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "cssom": "0.3.x" - } - }, - "node_modules/csstype": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", - "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", - "dev": true - }, - "node_modules/d3-array": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.4.0.tgz", - "integrity": "sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw==", - "dev": true - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", - "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" - } - }, - "node_modules/d3-format": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.2.tgz", - "integrity": "sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww==", - "dev": true - }, - "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" - }, - "node_modules/d3-interpolate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", - "dependencies": { - "d3-color": "1" + "node": ">=6" } }, - "node_modules/d3-interpolate/node_modules/d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - }, - "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" - }, - "node_modules/d3-scale": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz", - "integrity": "sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "dependencies": { - "d3-array": "1.2.0 - 2", - "d3-format": "1", - "d3-interpolate": "^1.2.0", - "d3-time": "1", - "d3-time-format": "2" + "engines": { + "node": ">=0.8.19" } }, - "node_modules/d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "d3-color": "1", - "d3-interpolate": "1" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/d3-scale-chromatic/node_modules/d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/d3-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/d3-time-format": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.2.tgz", - "integrity": "sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw==", - "dev": true, - "dependencies": { - "d3-time": "1" - } - }, - "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=0.10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/deasync": { - "version": "0.1.21", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.21.tgz", - "integrity": "sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "hasInstallScript": true, "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=0.11.0" + "node": ">=0.10.0" } }, - "node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, "engines": { - "node": ">=0.10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "node_modules/is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", "dev": true }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defaults/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=0.8" + "node": ">=0.12.0" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/delayed-stream": { + "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "dependencies": { - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", - "dev": true, - "engines": { - "node": ">=4.6.0" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.3.738", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.738.tgz", - "integrity": "sha512-vCMf4gDOpEylPSLPLSwAEsz+R3ShP02Y3cAKMZvTqule3XcPp7tgc/0ESI7IS6ZeyBlGClE50N53fIOkcIVnpw==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "dev": true, - "dependencies": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", - "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "argparse": "^2.0.1" }, "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" - }, - "node_modules/events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/falafel": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/falafel/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "node_modules/filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", - "dev": true - }, - "node_modules/fontfaceobserver": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", - "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==" - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/globby/node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/globby/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/globby/node_modules/fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/globby/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/globby/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/globby/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/globby/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "node_modules/grapheme-breaker": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", - "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", - "dev": true, - "dependencies": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.1" - } - }, - "node_modules/html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/htmlnano": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.9.tgz", - "integrity": "sha512-jWTtP3dCd7R8x/tt9DK3pvpcQd7HDMcRPUqPxr/i9989q2k5RHIhmlRDFeyQ/LSd8IKrteG8Ce5g0Ig4eGIipg==", - "dev": true, - "dependencies": { - "cssnano": "^4.1.11", - "posthtml": "^0.15.1", - "purgecss": "^2.3.0", - "relateurl": "^0.2.7", - "srcset": "^3.0.0", - "svgo": "^1.3.2", - "terser": "^5.6.1", - "timsort": "^0.3.0", - "uncss": "^0.17.3" - } - }, - "node_modules/htmlnano/node_modules/dom-serializer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", - "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/htmlnano/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/htmlnano/node_modules/domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/htmlnano/node_modules/domutils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", - "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/htmlnano/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/htmlnano/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/htmlnano/node_modules/posthtml": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.15.2.tgz", - "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==", - "dev": true, - "dependencies": { - "posthtml-parser": "^0.7.2", - "posthtml-render": "^1.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/htmlnano/node_modules/posthtml-parser": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.7.2.tgz", - "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==", - "dev": true, - "dependencies": { - "htmlparser2": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/htmlnano/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/htmlnano/node_modules/terser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", - "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "node_modules/is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", - "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", - "dev": true, - "dependencies": { - "html-tags": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "node_modules/is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "dev": true, - "dependencies": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/jsdom/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "dev": true, - "dependencies": { - "vlq": "^0.2.2" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/merge-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, - "dependencies": { - "mime-db": "1.47.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true, - "optional": true - }, - "node_modules/nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", - "dev": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", - "dev": true - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", - "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", - "dev": true, - "dependencies": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "node_modules/parcel-bundler": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz", - "integrity": "sha512-hpku8mW67U6PXQIenW6NBbphBOMb8XzW6B9r093DUhYj5GN2FUB/CXCiz5hKoPYUsusZ35BpProH8AUF9bh5IQ==", - "deprecated": "Parcel v1 is no longer maintained. Please migrate to v2, which is published under the 'parcel' package. See https://v2.parceljs.org/getting-started/migration for details.", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/plugin-transform-flow-strip-types": "^7.4.4", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.4.4", - "@babel/runtime": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.1", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.12.1", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "core-js": "^2.6.5", - "cross-spawn": "^6.0.4", - "css-modules-loader-core": "^1.1.0", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^5.1.0", - "envinfo": "^7.3.1", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.2.2", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.10.0", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.11", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^3.0.0", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" - }, - "bin": { - "parcel": "bin/cli.js" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/parcel-bundler/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/parcel-bundler/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/pixi.js-legacy": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/pixi.js-legacy/-/pixi.js-legacy-6.5.5.tgz", - "integrity": "sha512-l343BwQ+t3VOHUqNZCHBa0n/eNBhTiBtJOQJTRg0a2hK1jsJ7dV63FKgEuL8siGrKf7MnNXUTe2iYzOQulPMTg==", - "dependencies": { - "@pixi/canvas-display": "6.5.5", - "@pixi/canvas-extract": "6.5.5", - "@pixi/canvas-graphics": "6.5.5", - "@pixi/canvas-mesh": "6.5.5", - "@pixi/canvas-particle-container": "6.5.5", - "@pixi/canvas-prepare": "6.5.5", - "@pixi/canvas-renderer": "6.5.5", - "@pixi/canvas-sprite": "6.5.5", - "@pixi/canvas-sprite-tiling": "6.5.5", - "@pixi/canvas-text": "6.5.5", - "pixi.js": "6.5.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/pixijs" - } - }, - "node_modules/pixi.js-legacy/node_modules/pixi.js": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-6.5.5.tgz", - "integrity": "sha512-SfvUFl0RNnuELbU4IschzWGPSP1yRidEffQlbHnsXY1xvaCE7MG5snQzlufzAyiyiwRID1I5plSKtVjNvZfk9Q==", - "dependencies": { - "@pixi/accessibility": "6.5.5", - "@pixi/app": "6.5.5", - "@pixi/compressed-textures": "6.5.5", - "@pixi/constants": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5", - "@pixi/extensions": "6.5.5", - "@pixi/extract": "6.5.5", - "@pixi/filter-alpha": "6.5.5", - "@pixi/filter-blur": "6.5.5", - "@pixi/filter-color-matrix": "6.5.5", - "@pixi/filter-displacement": "6.5.5", - "@pixi/filter-fxaa": "6.5.5", - "@pixi/filter-noise": "6.5.5", - "@pixi/graphics": "6.5.5", - "@pixi/interaction": "6.5.5", - "@pixi/loaders": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/mesh": "6.5.5", - "@pixi/mesh-extras": "6.5.5", - "@pixi/mixin-cache-as-bitmap": "6.5.5", - "@pixi/mixin-get-child-by-name": "6.5.5", - "@pixi/mixin-get-global-position": "6.5.5", - "@pixi/particle-container": "6.5.5", - "@pixi/polyfill": "6.5.5", - "@pixi/prepare": "6.5.5", - "@pixi/runner": "6.5.5", - "@pixi/settings": "6.5.5", - "@pixi/sprite": "6.5.5", - "@pixi/sprite-animated": "6.5.5", - "@pixi/sprite-tiling": "6.5.5", - "@pixi/spritesheet": "6.5.5", - "@pixi/text": "6.5.5", - "@pixi/text-bitmap": "6.5.5", - "@pixi/ticker": "6.5.5", - "@pixi/utils": "6.5.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/pixijs" - } - }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-calc/node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "node_modules/postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "dependencies": { - "postcss": "^6.0.1" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "node_modules/postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "node_modules/postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "dependencies": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-display-values/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-positions/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-string/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", - "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/posthtml": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", - "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", - "dev": true, - "dependencies": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", - "dev": true, - "dependencies": { - "htmlparser2": "^3.9.2" - } - }, - "node_modules/posthtml-render": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", - "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise-polyfill": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", - "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", - "dev": true, - "dependencies": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "bin": { - "purgecss": "bin/purgecss" - } - }, - "node_modules/purgecss/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/purgecss/node_modules/postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - }, - "node_modules/purgecss/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "dev": true, - "dependencies": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - }, - "bin": { - "quote-stream": "bin/cmd.js" - } - }, - "node_modules/raf-schd": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", - "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", - "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/react-resize-detector": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-5.2.0.tgz", - "integrity": "sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "prop-types": "^15.7.2", - "raf-schd": "^4.0.2", - "resize-observer-polyfill": "^1.5.1" - } - }, - "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true - }, - "node_modules/rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "dependencies": { - "xmlchars": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/serialize-to-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", - "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, - "node_modules/skmeans": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", - "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/srcset": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.1.tgz", - "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "node_modules/static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", - "dev": true, - "dependencies": { - "escodegen": "^1.11.1" - } - }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", - "dev": true, - "dependencies": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - } - }, - "node_modules/stats.js": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", - "integrity": "sha1-scPcRtlEmLV4t/05hbgaznExzH0=", - "dev": true - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/stylehacks/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.6.tgz", - "integrity": "sha512-OInCtPmDNieVBkVFi6C8RwU2S2H0h8mF3e3TQK4nreaUNCpooQUkI+A/KuEkm5FawfhWIfNqG+qfelVVR+V00g==", - "dev": true, - "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - }, - "bin": { - "terser": "bin/uglifyjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "node_modules/tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "dev": true - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/ts-loader": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", - "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", - "dev": true, - "dependencies": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/ts-loader/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/ts-loader/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uncss": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", - "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "bin": { - "uncss": "bin/uncss" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/uncss/node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/uncss/node_modules/postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "dependencies": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/uncss/node_modules/postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "dev": true, - "dependencies": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "dependencies": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/compat-data": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", - "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==", - "dev": true - }, - "@babel/core": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", - "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.10", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.10", - "@babel/types": "^7.12.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", - "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.11", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", - "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", - "dev": true, - "requires": { - "@babel/types": "^7.12.10" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", - "browserslist": "^4.14.5", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", - "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-function-name": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", - "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/types": "^7.12.11" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", - "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", - "dev": true, - "requires": { - "@babel/types": "^7.12.10" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", - "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", - "dev": true, - "requires": { - "@babel/types": "^7.12.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "lodash": "^4.17.19" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", - "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", - "dev": true, - "requires": { - "@babel/types": "^7.12.10" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-replace-supers": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", - "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.7", - "@babel/helper-optimise-call-expression": "^7.12.10", - "@babel/traverse": "^7.12.10", - "@babel/types": "^7.12.11" - } - }, - "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", - "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", - "dev": true, - "requires": { - "@babel/types": "^7.12.11" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", - "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - } - }, - "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", - "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", - "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", - "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", - "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", - "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", - "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.10.tgz", - "integrity": "sha512-0ti12wLTLeUIzu9U7kjqIn4MyOL7+Wibc7avsHhj4o1l5C0ATs8p2IMHrVYjm9t9wzhfEO6S3kxax0Rpdo8LTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.12.1" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz", - "integrity": "sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.10", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1", - "@babel/types": "^7.12.12" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", - "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", - "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/preset-env": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", - "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.12.7", - "@babel/helper-compilation-targets": "^7.12.5", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.11", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.7", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.11", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.7", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.10", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.11", - "core-js-compat": "^3.8.0", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - } - } - }, - "@babel/traverse": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", - "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.11", - "@babel/generator": "^7.12.11", - "@babel/helper-function-name": "^7.12.11", - "@babel/helper-split-export-declaration": "^7.12.11", - "@babel/parser": "^7.12.11", - "@babel/types": "^7.12.12", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", - "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true - } - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - } - }, - "@parcel/fs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", - "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/logger": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", - "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", - "dev": true, - "requires": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "@parcel/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", - "dev": true - }, - "@parcel/watcher": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", - "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.1.5" - } - }, - "@parcel/workers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", - "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" - } - }, - "@pixi/accessibility": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-6.5.5.tgz", - "integrity": "sha512-mDGDVkNCA1w28zzCT/8x2euxHX55y6ftdDte6FytBwHJHxTzfOKyS6GPqJNrXQB2muu1E/bySqzguiYy1gW/lw==", - "requires": {} - }, - "@pixi/app": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/app/-/app-6.5.5.tgz", - "integrity": "sha512-VW2kzgj/eNZqGaf+24eL5BGPTHlCDjCYVrKXuFPmPnj48ucUOOKdMQrA8ezmC3LDXsraavwhru8F+JPLUbRtzg==", - "requires": {} - }, - "@pixi/canvas-display": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-display/-/canvas-display-6.5.5.tgz", - "integrity": "sha512-MSI52p5WN1TcaK6GbPbT5+QkMU+mOL+VOJUDlhZoAWeem72iY6MxZfRXc5x0FAZWRU3k7AyIoZEntOah4UWmng==", - "requires": {} - }, - "@pixi/canvas-extract": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-extract/-/canvas-extract-6.5.5.tgz", - "integrity": "sha512-MCki+iONWfOULhPaYi6/FRHIyDE4TFYho1a0J+dKXj3ghMeAh6D2v2o12NcdsQ19SrbnRN9edKSxnG4+SqN5Ow==", - "requires": {} - }, - "@pixi/canvas-graphics": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-graphics/-/canvas-graphics-6.5.5.tgz", - "integrity": "sha512-ssKrUYYqdmFpJPBghe/2qQsKd6cxeaZqDTjwFceviZuSvUHGNsaOYMsDfg98NQlCivYuTvQVDcIF3cHN/+fnaA==", - "requires": {} - }, - "@pixi/canvas-mesh": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-mesh/-/canvas-mesh-6.5.5.tgz", - "integrity": "sha512-2n7J+UVktgRZjHCJX3ysK1Xi3Jmcw/uWYdf27Cn9k94tWwiK+LjKyq0Kv3XybIEgKOky+7/bVlolBNzVxcOpAw==", - "requires": {} - }, - "@pixi/canvas-particle-container": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-particle-container/-/canvas-particle-container-6.5.5.tgz", - "integrity": "sha512-R1f9INc72S35+H5sFx7EZTsZUKU3arXRNMYeLlruPZRe5gENl7X5EvRwbVggUE23PnwL89yRfomREYFPqYNY2w==", - "requires": {} - }, - "@pixi/canvas-prepare": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-prepare/-/canvas-prepare-6.5.5.tgz", - "integrity": "sha512-UZyVmLE1UuMpLUdaEcKwxuF57Ibn86S2yGgKty+yyfC9FXY+YwlVdl62XEhVYOtQ+Kp488InY1LSrc7YGp/pEw==", - "requires": {} - }, - "@pixi/canvas-renderer": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-renderer/-/canvas-renderer-6.5.5.tgz", - "integrity": "sha512-MdQA5ZvRZGcsX7bA2V3KPUH7zfqpmYY1ILUdgP1mmz4zsS0lkqB3Ao6XQCLKCnVz5QeVKhRYzRgMJ/39IlM+qA==", - "requires": {} - }, - "@pixi/canvas-sprite": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite/-/canvas-sprite-6.5.5.tgz", - "integrity": "sha512-5K54PMGoSAlc7Wr7sY/08TT20o+eNbIWgC7Elc/vP4QMiJ389Shnq8Pkd2MhLs/qSbJfwti/cUj4Xiki7C86Lg==", - "requires": {} - }, - "@pixi/canvas-sprite-tiling": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite-tiling/-/canvas-sprite-tiling-6.5.5.tgz", - "integrity": "sha512-Tu92dpawYVo7vGPaDJnLL39gmEZRNlG/Pxn0ZW/r2FsewC+7VCODnufTuxNhg9pRgg/ax5QnNVdft17YY/zq/w==", - "requires": {} - }, - "@pixi/canvas-text": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/canvas-text/-/canvas-text-6.5.5.tgz", - "integrity": "sha512-6CvB9NUZWsSvAx85kIZGEVCDFc6gsMXmAesPZfrPiebSVhUkuQmX20Qtqhhl88axB0OuLmw31+Cza2nW4IapMA==", - "requires": {} - }, - "@pixi/compressed-textures": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-6.5.5.tgz", - "integrity": "sha512-e6T1Kg1o9HLVMniSyHcpgtj2VWQV3cdDizIIvdQs7jbrtZCO5ouehViLP2PWm1ZD63hDj6nyVwmZGvkD7FgH1w==", - "requires": {} - }, - "@pixi/constants": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-6.5.5.tgz", - "integrity": "sha512-tuiN6aeMuQv77UHzGNeJiAUiOrt22dybZYrXAVLOF7mDG+zxT96r7R43DvqrWG3GuNh/VCKE5hQLGQybR21nBA==" - }, - "@pixi/core": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/core/-/core-6.5.5.tgz", - "integrity": "sha512-Vdod5c5oByqBuqSQq+j+aiLtAUzFGQblCm9Awmuyjsu7Hygyh8080GeAduS4YuCIHEGz5aP9KS/KP92pM+m4Cg==", - "requires": { - "@types/offscreencanvas": "^2019.6.4" - } - }, - "@pixi/display": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/display/-/display-6.5.5.tgz", - "integrity": "sha512-+WnIR9+vrMc6fgdfOPvmsUIggwdAZvjZ0eX3uEEyS6mjFkZCcC8b0fjfpBaTq8dtWWs+sS7ZZqew9TzAlA9o1w==", - "requires": {} - }, - "@pixi/extensions": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-6.5.5.tgz", - "integrity": "sha512-b85GH6xzh0SgPejLguCLBhq9zoq6gizW8Zwyb+W1s1Q+B6sP6LtAMeir3ZefiXT3nOakeUGEv7bLp76Aon3lyw==" - }, - "@pixi/extract": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-6.5.5.tgz", - "integrity": "sha512-dlGS4BoMAQeMLv2HyfwvLWn4E5/YPuHF32CsclNWvm0A72y7qQYKBRzpQL3Yzo26uflCwNECbTwhcUXaQ3V2tg==", - "requires": {} - }, - "@pixi/filter-alpha": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-6.5.5.tgz", - "integrity": "sha512-voFl8Euf+amn6/iyNpEfKA7MUV1moylJVe28HBvMuyx5xHp7N/HlcJ2zh2LNxXH2nPu55E1oOWl69+5eYpP+9Q==", - "requires": {} - }, - "@pixi/filter-blur": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-6.5.5.tgz", - "integrity": "sha512-Xu0593Fu463VBk730x0RxnoVPmYhMV16izjCv8E2VVOFG357yUECHuPsc0L+/LCCjT53wxa3JOzNTJVUJ4HjSg==", - "requires": {} - }, - "@pixi/filter-color-matrix": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-6.5.5.tgz", - "integrity": "sha512-NGAZ11mwYegovolym0Iw/i/Tg0aXkRW1nhZMe/5AnWYg81tDpBeUfJkHXErLBZO1Kx7+8EJzMpMv3oEhSYvrug==", - "requires": {} - }, - "@pixi/filter-displacement": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-6.5.5.tgz", - "integrity": "sha512-GfmsdZmFFSlcBapUp2ElaIJE1Sy14RdxdqTA7PV72U2RL2gzBSD7rOasBoWynkPv3ILsVMGVleuuRitjPhRBDw==", - "requires": {} - }, - "@pixi/filter-fxaa": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-6.5.5.tgz", - "integrity": "sha512-luW5Rhu9i0FdC2+L+dc/dMf4ImC+yG4CdIuK9zgXwYGb6WLyCuEXI5fhdrpdYU9SmTfdwa5eNWqO0mXplJBAig==", - "requires": {} - }, - "@pixi/filter-noise": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-6.5.5.tgz", - "integrity": "sha512-3ttFuNfMim+Fd7ccZF69UAPnMsF+5AivX6i1V8WUj75Ei/Fq6JQK+PPbZ2FQQHOYa1e1B6Ej4uvNCkSXs87/UA==", - "requires": {} - }, - "@pixi/graphics": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-6.5.5.tgz", - "integrity": "sha512-gBhznqpNv5IX7exnq3dgdjGaGfyi9quIFnjMC2pBihSJLc+WokM00rhRxz6IfNknDBQG0vkTXkc0WOPbVlt9Nw==", - "requires": {} - }, - "@pixi/interaction": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-6.5.5.tgz", - "integrity": "sha512-YARy4jeU8EbDQSqtDUguMwQS/wPZjFDAKpuOyraF+DeSN+21+hTRcU3YR4Cq2gqb74uBr5ods4fN9BevyaBjcw==", - "requires": {} - }, - "@pixi/loaders": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-6.5.5.tgz", - "integrity": "sha512-fFvdXYh5ije/pHi4XghF3lF71F/ng/yE2+V3n8w/i7SpYI/CDmwjgfbVNtMJ4LaflJAyPcF8NF7r+eKr/1vDFQ==", - "requires": {} - }, - "@pixi/math": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/math/-/math-6.5.5.tgz", - "integrity": "sha512-3Y8mfcPjmhIBlcUPTlQXuBBl+cyKWHp2mdXtJg3+E72poO0wTnW175oi38alxSgfKE4jZIDtoUaUoAAuJxmMoA==" - }, - "@pixi/mesh": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-6.5.5.tgz", - "integrity": "sha512-IdI8+jIggDoYSCwdxFQqWekWt5eKvL0kFmrseEIABe3HdHBOuROCz2xTXffqdy9RznsbFSRkmpgiO9fZWibzOg==", - "requires": {} - }, - "@pixi/mesh-extras": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-6.5.5.tgz", - "integrity": "sha512-j0shm5Sbn1OvtBDQ56uSc6vYkkRXSVrYr7ywSNY05/0yE3cbLWiuA8ZC7fd5iLbDCxvgl3QaYwtz2ao9V8Sn9A==", - "requires": {} - }, - "@pixi/mixin-cache-as-bitmap": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-6.5.5.tgz", - "integrity": "sha512-rlHW5IbJV6aUhiQpDDjUBtlR5Fn+LhJjpHWHmeurhFMyMFNFGm6BNLfAIoxUe6VMm6oZOYOB6y3MNcAZeg+fXg==", - "requires": {} - }, - "@pixi/mixin-get-child-by-name": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-6.5.5.tgz", - "integrity": "sha512-Oz/6wCmJQqPwI8W0Cs7b0QGjCcQtI7THStkm5TlqcQS7quyAnRsaaZ9yh7BPLnZnaVGXaFZ0+WmYAoc0FCc9Lw==", - "requires": {} - }, - "@pixi/mixin-get-global-position": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-6.5.5.tgz", - "integrity": "sha512-8fftShp18r/imrgAcaL441VegywrX1rOX/XaYa5EU2pUXi37WRBmn5q3HKY0K/SV0d+EduzDQsdxzFkNuG82Zw==", - "requires": {} - }, - "@pixi/particle-container": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/particle-container/-/particle-container-6.5.5.tgz", - "integrity": "sha512-2r/YD1ilSML3BGBPeL08IW6wwqy201xRRQuOV+/AIDFOy4CXbGhoA2hEP9AvNr3DDCPApM53BECppjcihPyMEA==", - "requires": {} - }, - "@pixi/polyfill": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/polyfill/-/polyfill-6.5.5.tgz", - "integrity": "sha512-hyOs05hw191uizq5PNRNfO3xgZu5N0lRdaGJi72gvNX2N16pHnjpruazx/ae4eoS3H242+W4N63CvfxJ16ezyg==", - "requires": { - "object-assign": "^4.1.1", - "promise-polyfill": "^8.2.0" - } - }, - "@pixi/prepare": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-6.5.5.tgz", - "integrity": "sha512-IXPjIP8xtGkwOhrAxPcxRPvj9wdeA007QDZcDie1ufHOJhHPvB1ryfT1jtEMSF7xPQ/F8589UVgDM+hY8Ij/Qg==", - "requires": {} - }, - "@pixi/runner": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-6.5.5.tgz", - "integrity": "sha512-IrfkNSgFTMnzO3zbPIYTsRPETu3s9mEGIyjAu34OShrg7GxgLtXjV9H04ssqkIONsQ73idnwm9/s6pT5lNFZ1Q==" - }, - "@pixi/settings": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-6.5.5.tgz", - "integrity": "sha512-U6xeE9Ri10Rm0Ttjhxc0vc2Qzu2NhB9j/YjvO5NwtW6Adx1SsGz71Pgmebt/FoR4OKU4rtDnRKZOfem7LCFoCA==" - }, - "@pixi/sprite": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-6.5.5.tgz", - "integrity": "sha512-s8T5D4zoDgj9DWnPGSHoMwJ4uLs9CDp9cgfzTOhwIirqTeoajpywfNFS5RAFAyVCdh4ltSG2oujP8a86eWF0+A==", - "requires": {} - }, - "@pixi/sprite-animated": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-6.5.5.tgz", - "integrity": "sha512-pvjeOkMrlbvKKO4ZDRKdO97ZKt2LUfLNUCfjU+PyEgJww/6vWeY9IQj89fc2QXGPOYIGrZeT8AuYqPCtJMktHw==", - "requires": {} - }, - "@pixi/sprite-tiling": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-6.5.5.tgz", - "integrity": "sha512-noxIGDvsq5tmINElqjcCnfFofY5CRTWOgLPyL9vI2zk1QhTBW5T/XHENoWFWyuCZgFkEdI1BcO1Yug0q6u+OgQ==", - "requires": {} - }, - "@pixi/spritesheet": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-6.5.5.tgz", - "integrity": "sha512-LCfR1iVYSh0pJUM+PDP/FcP45AV6II3zkt8ojtHHcgsDN1qeggbmIEJ/ohvSMLSpKcLHYXv984wu0wp/fB6NdA==", - "requires": {} - }, - "@pixi/text": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/text/-/text-6.5.5.tgz", - "integrity": "sha512-u33ESpNqtZ4IaBiQkq5BT2KeQYcqokfr5VNatYXIMO8jbHktm0Lwqca9pdr+GhS2/DUyyiRfCmNaPHoabjPo6Q==", - "requires": {} - }, - "@pixi/text-bitmap": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-6.5.5.tgz", - "integrity": "sha512-nMi7lb3sYAnPPZ9jF/DxmOo0rjh8/Xmc0YYslagvqFJSlowcF+N9HjMOO5WKyP1OBa/gGrpwrLp9FTmdV4T+MQ==", - "requires": {} - }, - "@pixi/ticker": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-6.5.5.tgz", - "integrity": "sha512-S/LALaHQJTldEpFqgAUgi/fc6/XnDUg5k0DXJLfWT2p1hzuo8q009Izpi/wxd4hPZiOlViQtWyrstjMtrQz2AQ==", - "requires": {} + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, - "@pixi/unsafe-eval": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/unsafe-eval/-/unsafe-eval-6.5.5.tgz", - "integrity": "sha512-2I2KfyEa4JghrszuR5/birHqWkknVj/Rs09eULHomytSiOGdId7CEsq8XjHZ/9SCsmFrEOaL1Fcvn9K9KkWB0Q==", - "requires": {} + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, - "@pixi/utils": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-6.5.5.tgz", - "integrity": "sha512-QtcRR+/Y/F49rQ1vVLsc6dMoLLyLTIJxHDSHxYvlGpQWZG+mRvaWYPZZwFgjdCKzzft1RiwkXI2vL4Zxqfg9CQ==", - "requires": { - "@types/earcut": "^2.1.0", - "earcut": "^2.2.4", - "eventemitter3": "^3.1.0", - "url": "^0.11.0" + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "@turf/clone": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.3.0.tgz", - "integrity": "sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==", + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", "dev": true, - "requires": { - "@turf/helpers": "^6.3.0" + "dependencies": { + "json-buffer": "3.0.1" } }, - "@turf/clusters-kmeans": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-6.3.0.tgz", - "integrity": "sha512-cyHtW5nsOcs1p8l3mflX2805fOxR99FanXCP95U+001S4AwVSgxiOfTg8PUHg9nui2Qcq/PMBRQz80exb2UzyA==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "requires": { - "@turf/clone": "^6.3.0", - "@turf/helpers": "^6.3.0", - "@turf/invariant": "^6.3.0", - "@turf/meta": "^6.3.0", - "skmeans": "0.9.7" + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@turf/helpers": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", - "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==", - "dev": true + "node_modules/lightningcss": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.21.7.tgz", + "integrity": "sha512-xITZyh5sLFwRPYUSw15T00Rm7gcQ1qOPuQwNOcvHsTm6nLWTQ723w7zl42wrC5t+xtdg6FPmnXHml1nZxxvp1w==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.21.7", + "lightningcss-darwin-x64": "1.21.7", + "lightningcss-freebsd-x64": "1.21.7", + "lightningcss-linux-arm-gnueabihf": "1.21.7", + "lightningcss-linux-arm64-gnu": "1.21.7", + "lightningcss-linux-arm64-musl": "1.21.7", + "lightningcss-linux-x64-gnu": "1.21.7", + "lightningcss-linux-x64-musl": "1.21.7", + "lightningcss-win32-x64-msvc": "1.21.7" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.21.7.tgz", + "integrity": "sha512-tt7hIsFio9jZofTVHtCACz6rB6c9RyABMXfA9A/VcKOjS3sq+koX/QkRJWY06utwOImbJIXBC5hbg9t3RkPUAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "@turf/invariant": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", - "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", + "node_modules/lightningcss-darwin-x64": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.21.7.tgz", + "integrity": "sha512-F4gS4bf7eWekfPT+TxJNm/pF+QRgZiTrTkQH6cw4/UWfdeZISfuhD5El2dm16giFnY0K5ylIwO+ZusgYNkGSXA==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@turf/helpers": "^6.3.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@turf/meta": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz", - "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==", + "node_modules/lightningcss-freebsd-x64": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.21.7.tgz", + "integrity": "sha512-RMfNzJWXCSfPnL55fcLWEAadcY6QUFT0S8NceNKYzp1KiCZtkJIy6RQ5SaVxPzRqd3iMsahUf5sfnG8N1UQSNQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@turf/helpers": "^6.3.0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@types/d3-color": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.2.2.tgz", - "integrity": "sha512-6pBxzJ8ZP3dYEQ4YjQ+NVbQaOflfgXq/JbDiS99oLobM2o72uAST4q6yPxHv6FOTCRC/n35ktuo8pvw/S4M7sw==", - "dev": true + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.21.7.tgz", + "integrity": "sha512-biSRUDZNx7vubWP1jArw/qqfZKPGpkV/qzunasZzxmqijbZ43sW9faDQYxWNcxPWljJJdF/qs6qcurYFovWtrQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "@types/d3-force": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.1.tgz", - "integrity": "sha512-jqK+I36uz4kTBjyk39meed5y31Ab+tXYN/x1dn3nZEus9yOHCLc+VrcIYLc/aSQ0Y7tMPRlIhLetulME76EiiA==", - "dev": true + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.21.7.tgz", + "integrity": "sha512-PENY8QekqL9TG3AY/A7rkUBb5ymefGxea7Oe7+x7Hbw4Bz4Hpj5cec5OoMypMqFbURPmpi0fTWx4vSWUPzpDcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "@types/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-YxdskUvwzqggpnSnDQj4KVkicgjpkgXn/g/9M9iGsiToLS3nG6Ytjo1FoYhYVAAElV/fJBGVL3cQ9Hb7tcv+lw==", - "dev": true + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.21.7.tgz", + "integrity": "sha512-pfOipKvA/0X1OjRaZt3870vnV9UGBSjayIqHh0fGx/+aRz3O0MVFHE/60P2UWXpM3YGJEw/hMWtNkrFwqOge8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "@types/d3-interpolate": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz", - "integrity": "sha512-z8Zmi08XVwe8e62vP6wcA+CNuRhpuUU5XPEfqpG0hRypDE5BWNthQHB1UNWWDB7ojCbGaN4qBdsWp5kWxhT1IQ==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.21.7.tgz", + "integrity": "sha512-dgcsis4TAA7s0ia4f31QHX+G4PWPwxk+wJaEQLaV0NdJs09O5hHoA8DpLEr8nrvc/tsRTyVNBP1rDtgzySjpXg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@types/d3-color": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@types/d3-scale": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-2.2.0.tgz", - "integrity": "sha512-oQFanN0/PiR2oySHfj+zAAkK1/p4LD32Nt1TMVmzk+bYHk7vgIg/iTXQWitp1cIkDw4LMdcgvO63wL+mNs47YA==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.21.7.tgz", + "integrity": "sha512-A+9dXpxld3p4Cd6fxev2eqEvaauYtrgNpXV3t7ioCJy30Oj9nYiNGwiGusM+4MJVcEpUPGUGiuAqY4sWilRDwA==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@types/d3-time": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "@types/d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-9/D7cOBKdZdTCPc6re0HeSUFBM0aFzdNdmYggUWT9SRRiYSOa6Ys2xdTwHKgc1WS3gGfwTMatBOdWCS863REsg==", - "dev": true + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.21.7.tgz", + "integrity": "sha512-07/8vogEq+C/mF99pdMhh/f19/xreq8N9Ca6AWeVHZIdODyF/pt6KdKSCWDZWIn+3CUxI8gCJWuUWyOc3xymvw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "@types/d3-time": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.0.10.tgz", - "integrity": "sha512-aKf62rRQafDQmSiv1NylKhIMmznsjRN+MnXRXTqHoqm0U/UZzVpdrtRnSIfdiLS616OuC1soYeX1dBg2n1u8Xw==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "@types/earcut": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", - "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" + "node_modules/lmdb": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.7.11.tgz", + "integrity": "sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "msgpackr": "1.8.5", + "node-addon-api": "^4.3.0", + "node-gyp-build-optional-packages": "5.0.6", + "ordered-binary": "^1.4.0", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "2.7.11", + "@lmdb/lmdb-darwin-x64": "2.7.11", + "@lmdb/lmdb-linux-arm": "2.7.11", + "@lmdb/lmdb-linux-arm64": "2.7.11", + "@lmdb/lmdb-linux-x64": "2.7.11", + "@lmdb/lmdb-win32-x64": "2.7.11" + } }, - "@types/fontfaceobserver": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/fontfaceobserver/-/fontfaceobserver-0.0.6.tgz", - "integrity": "sha512-QJ1znjr9CDax2L17rgBnDOfNHsC1XtVAMswu+lRWvWb+kANhHA0slUNSSBsG8FVNvM4I4yXlN9doJRot3A2hkQ==", - "dev": true + "node_modules/lmdb/node_modules/msgpackr": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", + "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", + "dev": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.1" + } }, - "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", "dev": true }, - "@types/offscreencanvas": { - "version": "2019.6.4", - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.6.4.tgz", - "integrity": "sha512-u8SAgdZ8ROtkTF+mfZGOscl0or6BSj9A4g37e6nvxDc+YB/oDut0wHkK2PBBiC2bNR8TS0CPV+1gAk4fNisr1Q==" + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "@types/react": { - "version": "16.9.34", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.34.tgz", - "integrity": "sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, - "requires": { - "@types/prop-types": "*", - "csstype": "^2.2.0" + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "@types/react-dom": { - "version": "16.9.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", - "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "requires": { - "@types/react": "*" + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "@types/react-resize-detector": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/react-resize-detector/-/react-resize-detector-5.0.0.tgz", - "integrity": "sha512-JTqR0G+RcC6Guqi/JXQBq3jewflumUGd4fDUucmZN9L1d8TZuRHzDTtrmgYWrgLvRTBTV6FjegmLeV1UnrIuzw==", + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true, - "requires": { - "@types/react": "*" + "optional": true, + "peer": true + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "@types/stats": { - "version": "0.16.30", - "resolved": "https://registry.npmjs.org/@types/stats/-/stats-0.16.30.tgz", - "integrity": "sha1-3rX6blnG1nvW4PYaUe9jCoOoTOk=", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "@typescript-eslint/eslint-plugin": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.1.tgz", - "integrity": "sha512-fABclAX2QIEDmTMk6Yd7Muv1CzFLwWM4505nETzRHpP3br6jfahD9UUJkhnJ/g2m7lwfz8IlswcwGGPGiq9exw==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.11.1", - "@typescript-eslint/scope-manager": "4.11.1", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "engines": { + "node": ">= 8" } }, - "@typescript-eslint/experimental-utils": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.1.tgz", - "integrity": "sha512-mAlWowT4A6h0TC9F+J5pdbEhjNiEMO+kqPKQ4sc3fVieKL71dEqfkKgtcFVSX3cjSBwYwhImaQ/mXQF0oaI38g==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "@typescript-eslint/parser": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.11.1.tgz", - "integrity": "sha512-BJ3jwPQu1jeynJ5BrjLuGfK/UJu6uwHxJ/di7sanqmUmxzmyIcd3vz58PMR7wpi8k3iWq2Q11KMYgZbUpRoIPw==", + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.11.1", - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/typescript-estree": "4.11.1", - "debug": "^4.1.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@typescript-eslint/scope-manager": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz", - "integrity": "sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1" + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "@typescript-eslint/types": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.11.1.tgz", - "integrity": "sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA==", + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "@typescript-eslint/typescript-estree": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz", - "integrity": "sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/msgpackr": { + "version": "1.9.9", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.9.tgz", + "integrity": "sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.11.1", - "@typescript-eslint/visitor-keys": "4.11.1", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", + "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", + "dev": true, + "hasInstallScript": true, + "optional": true, "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "node-gyp-build-optional-packages": "5.0.7" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" } }, - "@typescript-eslint/visitor-keys": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz", - "integrity": "sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg==", + "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", + "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.11.1", - "eslint-visitor-keys": "^2.0.0" + "optional": true, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", "dev": true }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "node_modules/node-gyp-build-optional-packages": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.6.tgz", + "integrity": "sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==", "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - } + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true }, - "ansi-colors": { + "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, - "requires": { - "color-convert": "^1.9.0" + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "ansi-to-html": { - "version": "0.6.14", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", - "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", "dev": true, - "requires": { - "entities": "^1.1.2" + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordered-binary": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", + "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==", + "dev": true + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/parcel": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.9.3.tgz", + "integrity": "sha512-2GTVocFkwblV/TIg9AmT7TI2fO4xdWkyN8aFUEVtiVNWt96GTR3FgQyHFValfCbcj1k9Xf962Ws2hYXYUr9k1Q==", "dev": true, - "requires": { - "sprintf-js": "~1.0.2" + "dependencies": { + "@parcel/config-default": "2.9.3", + "@parcel/core": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/package-manager": "2.9.3", + "@parcel/reporter-cli": "2.9.3", + "@parcel/reporter-dev-server": "2.9.3", + "@parcel/reporter-tracer": "2.9.3", + "@parcel/utils": "2.9.3", + "chalk": "^4.1.0", + "commander": "^7.0.0", + "get-port": "^4.2.0" + }, + "bin": { + "parcel": "lib/bin.js" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "node_modules/parcel/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "safer-buffer": "~2.1.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "node_modules/parcel/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "node_modules/parcel/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "node_modules/parcel/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "node_modules/parcel/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "object.assign": "^4.1.0" + "engines": { + "node": ">=8" } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/parcel/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "babylon-walk": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", - "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "engines": { + "node": ">=8" } }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "requires": { - "tweetnacl": "^0.14.3" + "engines": { + "node": ">=0.10.0" } }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" + "engines": { + "node": ">=8" } }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "boolbase": { + "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "node_modules/pixi.js-legacy": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/pixi.js-legacy/-/pixi.js-legacy-6.5.5.tgz", + "integrity": "sha512-l343BwQ+t3VOHUqNZCHBa0n/eNBhTiBtJOQJTRg0a2hK1jsJ7dV63FKgEuL8siGrKf7MnNXUTe2iYzOQulPMTg==", + "dependencies": { + "@pixi/canvas-display": "6.5.5", + "@pixi/canvas-extract": "6.5.5", + "@pixi/canvas-graphics": "6.5.5", + "@pixi/canvas-mesh": "6.5.5", + "@pixi/canvas-particle-container": "6.5.5", + "@pixi/canvas-prepare": "6.5.5", + "@pixi/canvas-renderer": "6.5.5", + "@pixi/canvas-sprite": "6.5.5", + "@pixi/canvas-sprite-tiling": "6.5.5", + "@pixi/canvas-text": "6.5.5", + "pixi.js": "6.5.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" } }, - "brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "dev": true, - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" + "node_modules/pixi.js-legacy/node_modules/pixi.js": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-6.5.5.tgz", + "integrity": "sha512-SfvUFl0RNnuELbU4IschzWGPSP1yRidEffQlbHnsXY1xvaCE7MG5snQzlufzAyiyiwRID1I5plSKtVjNvZfk9Q==", + "dependencies": { + "@pixi/accessibility": "6.5.5", + "@pixi/app": "6.5.5", + "@pixi/compressed-textures": "6.5.5", + "@pixi/constants": "6.5.5", + "@pixi/core": "6.5.5", + "@pixi/display": "6.5.5", + "@pixi/extensions": "6.5.5", + "@pixi/extract": "6.5.5", + "@pixi/filter-alpha": "6.5.5", + "@pixi/filter-blur": "6.5.5", + "@pixi/filter-color-matrix": "6.5.5", + "@pixi/filter-displacement": "6.5.5", + "@pixi/filter-fxaa": "6.5.5", + "@pixi/filter-noise": "6.5.5", + "@pixi/graphics": "6.5.5", + "@pixi/interaction": "6.5.5", + "@pixi/loaders": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/mesh": "6.5.5", + "@pixi/mesh-extras": "6.5.5", + "@pixi/mixin-cache-as-bitmap": "6.5.5", + "@pixi/mixin-get-child-by-name": "6.5.5", + "@pixi/mixin-get-global-position": "6.5.5", + "@pixi/particle-container": "6.5.5", + "@pixi/polyfill": "6.5.5", + "@pixi/prepare": "6.5.5", + "@pixi/runner": "6.5.5", + "@pixi/settings": "6.5.5", + "@pixi/sprite": "6.5.5", + "@pixi/sprite-animated": "6.5.5", + "@pixi/sprite-tiling": "6.5.5", + "@pixi/spritesheet": "6.5.5", + "@pixi/text": "6.5.5", + "@pixi/text-bitmap": "6.5.5", + "@pixi/ticker": "6.5.5", + "@pixi/utils": "6.5.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "node_modules/posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "dependencies": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "node_modules/posthtml-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" } }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "node_modules/posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "dependencies": { + "is-json": "^2.0.1" + }, + "engines": { + "node": ">=12" } }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "node_modules/posthtml/node_modules/posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" } }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } + "engines": { + "node": ">= 0.8.0" } }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, - "requires": { - "pako": "~1.0.5" + "bin": { + "prettier": "bin/prettier.cjs" }, - "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - } + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "engines": { + "node": ">= 0.6.0" } }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true + "node_modules/promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } }, - "call-me-maybe": { + "node_modules/prr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "engines": { + "node": ">=0.4.x" } }, - "caniuse-lite": { - "version": "1.0.30001414", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz", - "integrity": "sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "engines": { + "node": ">=0.4.x" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ] }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "node_modules/raf-schd": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", + "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==", + "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "node_modules/react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", "dev": true, - "requires": { - "restore-cursor": "^2.0.0" + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" } }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "node_modules/react-error-overlay": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", "dev": true }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "engines": { + "node": ">=0.10.0" } }, - "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "node_modules/react-resize-detector": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-5.2.0.tgz", + "integrity": "sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A==", "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" + "dependencies": { + "lodash": "^4.17.20", + "prop-types": "^15.7.2", + "raf-schd": "^4.0.2", + "resize-observer-polyfill": "^1.5.1" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, - "requires": { - "color-name": "1.1.3" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "requires": { - "delayed-stream": "~1.0.0" + "engines": { + "node": ">=4" } }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "requires": { - "safe-buffer": "~5.1.1" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "core-js-compat": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.1.tgz", - "integrity": "sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==", + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", "dev": true, - "requires": { - "browserslist": "^4.15.0", - "semver": "7.0.0" - }, "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } + "engines": { + "node": ">=10.17.0" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "node_modules/run-applescript/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "engines": { + "node": ">=6" } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/run-applescript/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "engines": { + "node": ">=6" } }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "node_modules/rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "bin": { + "semver": "bin/semver.js" } }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "engines": { + "node": ">=8" } }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "node_modules/skmeans": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", + "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==", "dev": true }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "engines": { + "node": ">=8" } }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", "dev": true, - "requires": { - "cssom": "0.3.x" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "csstype": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", - "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "dev": true }, - "d3-array": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.4.0.tgz", - "integrity": "sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw==", + "node_modules/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha1-scPcRtlEmLV4t/05hbgaznExzH0=", "dev": true }, - "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" - }, - "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "d3-format": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.2.tgz", - "integrity": "sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww==", - "dev": true - }, - "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" - }, - "d3-interpolate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", - "requires": { - "d3-color": "1" - }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { - "d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - } + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" - }, - "d3-scale": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz", - "integrity": "sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==", + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "requires": { - "d3-array": "1.2.0 - 2", - "d3-format": "1", - "d3-interpolate": "^1.2.0", - "d3-time": "1", - "d3-time-format": "2" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "requires": { - "d3-color": "1", - "d3-interpolate": "1" + "engines": { + "node": ">=8" }, - "dependencies": { - "d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "d3-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", - "dev": true - }, - "d3-time-format": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.2.tgz", - "integrity": "sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw==", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { - "d3-time": "1" + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "node_modules/svgo": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", "dev": true, - "requires": { - "assert-plus": "^1.0.0" + "optional": true, + "peer": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "deasync": { - "version": "0.1.21", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.21.tgz", - "integrity": "sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w==", + "node_modules/synckit/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true, - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" + "engines": { + "node": ">=6" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true, - "requires": { - "ms": "^2.1.1" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", "dev": true, - "requires": { - "clone": "^1.0.2" + "engines": { + "node": ">=12" }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { - "object-keys": "^1.0.12" + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "engines": { + "node": ">=16.13.0" }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-loader": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", + "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", + "dev": true, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8.6" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "node_modules/tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { - "path-type": "^4.0.0" + "dependencies": { + "punycode": "^2.1.0" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, - "requires": { - "esutils": "^2.0.2" + "engines": { + "node": ">=6" } }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dependencies": { - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "dev": true - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - } + "punycode": "1.3.2", + "querystring": "0.2.0" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" + "engines": { + "node": ">= 4" } }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { - "domelementtype": "1" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xxhash-wasm": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", + "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", "dev": true, "requires": { - "is-obj": "^2.0.0" + "@babel/highlight": "^7.0.0" } }, - "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" } }, - "earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "eslint-visitor-keys": "^3.3.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true }, - "electron-to-chromium": { - "version": "1.3.738", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.738.tgz", - "integrity": "sha512-vCMf4gDOpEylPSLPLSwAEsz+R3ShP02Y3cAKMZvTqule3XcPp7tgc/0ESI7IS6ZeyBlGClE50N53fIOkcIVnpw==", + "@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", "dev": true }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "@lezer/common": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", + "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", "dev": true }, - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "@lezer/lr": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", + "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "@lezer/common": "^0.15.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "@lmdb/lmdb-darwin-arm64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.7.11.tgz", + "integrity": "sha512-r6+vYq2vKzE+vgj/rNVRMwAevq0+ZR9IeMFIqcSga+wMtMdXQ27KqQ7uS99/yXASg29bos7yHP3yk4x6Iio0lw==", "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } + "optional": true }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "@lmdb/lmdb-darwin-x64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.7.11.tgz", + "integrity": "sha512-jhj1aB4K8ycRL1HOQT5OtzlqOq70jxUQEWRN9Gqh3TIDN30dxXtiHi6EWF516tzw6v2+3QqhDMJh8O6DtTGG8Q==", + "dev": true, + "optional": true }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true + "@lmdb/lmdb-linux-arm": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.7.11.tgz", + "integrity": "sha512-dHfLFVSrw/v5X5lkwp0Vl7+NFpEeEYKfMG2DpdFJnnG1RgHQZngZxCaBagFoaJGykRpd2DYF1AeuXBFrAUAXfw==", + "dev": true, + "optional": true }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "@lmdb/lmdb-linux-arm64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.7.11.tgz", + "integrity": "sha512-7xGEfPPbmVJWcY2Nzqo11B9Nfxs+BAsiiaY/OcT4aaTDdykKeCjvKMQJA3KXCtZ1AtiC9ljyGLi+BfUwdulY5A==", "dev": true, - "requires": { - "prr": "~1.0.1" - } + "optional": true }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "@lmdb/lmdb-linux-x64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.7.11.tgz", + "integrity": "sha512-vUKI3JrREMQsXX8q0Eq5zX2FlYCKWMmLiCyyJNfZK0Uyf14RBg9VtB3ObQ41b4swYh2EWaltasWVe93Y8+KDng==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } + "optional": true + }, + "@lmdb/lmdb-win32-x64": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.7.11.tgz", + "integrity": "sha512-BJwkHlSUgtB+Ei52Ai32M1AOMerSlzyIGA/KC4dAGL+GGwVMdwG8HGCOA2TxP3KjhbgDPMYkv7bt/NmOmRIFng==", + "dev": true, + "optional": true }, - "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "@mischnic/json-sourcemap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", + "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - }, - "dependencies": { - "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "@lezer/common": "^0.15.7", + "@lezer/lr": "^0.15.4", + "json5": "^2.2.1" + }, + "dependencies": { + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true } } }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", + "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", + "dev": true, + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", + "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", + "dev": true, + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", + "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", + "dev": true, + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", + "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", + "dev": true, + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", + "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", + "dev": true, + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", + "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", + "dev": true, + "optional": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "@parcel/bundler-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.9.3.tgz", + "integrity": "sha512-JjJK8dq39/UO/MWI/4SCbB1t/qgpQRFnFDetAAAezQ8oN++b24u1fkMDa/xqQGjbuPmGeTds5zxGgYs7id7PYg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/graph": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + } }, - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "@parcel/cache": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.9.3.tgz", + "integrity": "sha512-Bj/H2uAJJSXtysG7E/x4EgTrE2hXmm7td/bc97K8M9N7+vQjxf7xb0ebgqe84ePVMkj4MVQSMEJkEucXVx4b0Q==", "dev": true, "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } + "@parcel/fs": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/utils": "2.9.3", + "lmdb": "2.7.11" } }, - "eslint": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", - "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", + "@parcel/codeframe": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.9.3.tgz", + "integrity": "sha512-z7yTyD6h3dvduaFoHpNqur74/2yDWL++33rjQjIjCaXREBN6dKHoMGMizzo/i4vbiI1p9dDox2FIDEHCMQxqdA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "chalk": "^4.1.0" }, "dependencies": { "ansi-styles": { @@ -15036,9 +7404,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15060,98 +7428,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15160,3938 +7442,3609 @@ "requires": { "has-flag": "^4.0.0" } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" + "@parcel/compressor-raw": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.9.3.tgz", + "integrity": "sha512-jz3t4/ICMsHEqgiTmv5i1DJva2k5QRpZlBELVxfY+QElJTVe8edKJ0TiKcBxh2hx7sm4aUigGmp7JiqqHRRYmA==", + "dev": true, + "requires": { + "@parcel/plugin": "2.9.3" + } + }, + "@parcel/config-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.9.3.tgz", + "integrity": "sha512-tqN5tF7QnVABDZAu76co5E6N8mA9n8bxiWdK4xYyINYFIEHgX172oRTqXTnhEMjlMrdmASxvnGlbaPBaVnrCTw==", + "dev": true, + "requires": { + "@parcel/bundler-default": "2.9.3", + "@parcel/compressor-raw": "2.9.3", + "@parcel/namer-default": "2.9.3", + "@parcel/optimizer-css": "2.9.3", + "@parcel/optimizer-htmlnano": "2.9.3", + "@parcel/optimizer-image": "2.9.3", + "@parcel/optimizer-svgo": "2.9.3", + "@parcel/optimizer-swc": "2.9.3", + "@parcel/packager-css": "2.9.3", + "@parcel/packager-html": "2.9.3", + "@parcel/packager-js": "2.9.3", + "@parcel/packager-raw": "2.9.3", + "@parcel/packager-svg": "2.9.3", + "@parcel/reporter-dev-server": "2.9.3", + "@parcel/resolver-default": "2.9.3", + "@parcel/runtime-browser-hmr": "2.9.3", + "@parcel/runtime-js": "2.9.3", + "@parcel/runtime-react-refresh": "2.9.3", + "@parcel/runtime-service-worker": "2.9.3", + "@parcel/transformer-babel": "2.9.3", + "@parcel/transformer-css": "2.9.3", + "@parcel/transformer-html": "2.9.3", + "@parcel/transformer-image": "2.9.3", + "@parcel/transformer-js": "2.9.3", + "@parcel/transformer-json": "2.9.3", + "@parcel/transformer-postcss": "2.9.3", + "@parcel/transformer-posthtml": "2.9.3", + "@parcel/transformer-raw": "2.9.3", + "@parcel/transformer-react-refresh-wrap": "2.9.3", + "@parcel/transformer-svg": "2.9.3" + } + }, + "@parcel/core": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.9.3.tgz", + "integrity": "sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==", + "dev": true, + "requires": { + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/cache": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/graph": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/package-manager": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/profiler": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "abortcontroller-polyfill": "^1.1.9", + "base-x": "^3.0.8", + "browserslist": "^4.6.6", + "clone": "^2.1.1", + "dotenv": "^7.0.0", + "dotenv-expand": "^5.1.0", + "json5": "^2.2.0", + "msgpackr": "^1.5.4", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" }, "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "@parcel/diagnostic": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.9.3.tgz", + "integrity": "sha512-6jxBdyB3D7gP4iE66ghUGntWt2v64E6EbD4AetZk+hNJpgudOOPsKTovcMi/i7I4V0qD7WXSF4tvkZUoac0jwA==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "@mischnic/json-sourcemap": "^0.1.0", + "nullthrows": "^1.1.1" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "@parcel/events": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.9.3.tgz", + "integrity": "sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==", "dev": true }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "@parcel/fs": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.9.3.tgz", + "integrity": "sha512-/PrRKgCRw22G7rNPSpgN3Q+i2nIkZWuvIOAdMG4KWXC4XLp8C9jarNaWd5QEQ75amjhQSl3oUzABzkdCtkKrgg==", "dev": true, "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } + "@parcel/fs-search": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/watcher": "^2.0.7", + "@parcel/workers": "2.9.3" } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "@parcel/fs-search": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.9.3.tgz", + "integrity": "sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==", "dev": true }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "@parcel/graph": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.9.3.tgz", + "integrity": "sha512-3LmRJmF8+OprAr6zJT3X2s8WAhLKkrhi6RsFlMWHifGU5ED1PFcJWFbOwJvSjcAhMQJP0fErcFIK1Ludv3Vm3g==", + "dev": true, + "requires": { + "nullthrows": "^1.1.1" + } + }, + "@parcel/hash": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.9.3.tgz", + "integrity": "sha512-qlH5B85XLzVAeijgKPjm1gQu35LoRYX/8igsjnN8vOlbc3O8BYAUIutU58fbHbtE8MJPbxQQUw7tkTjeoujcQQ==", + "dev": true, + "requires": { + "xxhash-wasm": "^0.4.2" + } + }, + "@parcel/logger": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.9.3.tgz", + "integrity": "sha512-5FNBszcV6ilGFcijEOvoNVG6IUJGsnMiaEnGQs7Fvc1dktTjEddnoQbIYhcSZL63wEmzBZOgkT5yDMajJ/41jw==", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "@parcel/markdown-ansi": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.9.3.tgz", + "integrity": "sha512-/Q4X8F2aN8UNjAJrQ5NfK2OmZf6shry9DqetUSEndQ0fHonk78WKt6LT0zSKEBEW/bB/bXk6mNMsCup6L8ibjQ==", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "chalk": "^4.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "ms": "2.0.0" + "color-convert": "^2.0.1" } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "extend-shallow": { + "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "color-name": "~1.1.4" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "@parcel/namer-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.9.3.tgz", + "integrity": "sha512-1ynFEcap48/Ngzwwn318eLYpLUwijuuZoXQPCsEQ21OOIOtfhFQJaPwXTsw6kRitshKq76P2aafE0BioGSqxcA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "nullthrows": "^1.1.1" + } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "@parcel/node-resolver-core": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.0.3.tgz", + "integrity": "sha512-AjxNcZVHHJoNT/A99PKIdFtwvoze8PAiC3yz8E/dRggrDIOboUEodeQYV5Aq++aK76uz/iOP0tST2T8A5rhb1A==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "@mischnic/json-sourcemap": "^0.1.0", + "@parcel/diagnostic": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "lru-cache": "^6.0.0" } } } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "@parcel/optimizer-css": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.9.3.tgz", + "integrity": "sha512-RK1QwcSdWDNUsFvuLy0hgnYKtPQebzCb0vPPzqs6LhL+vqUu9utOyRycGaQffHCkHVQP6zGlN+KFssd7YtFGhA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", + "nullthrows": "^1.1.1" + } + }, + "@parcel/optimizer-htmlnano": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.9.3.tgz", + "integrity": "sha512-9g/KBck3c6DokmJfvJ5zpHFBiCSolaGrcsTGx8C3YPdCTVTI9P1TDCwUxvAr4LjpcIRSa82wlLCI+nF6sSgxKA==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "@parcel/plugin": "2.9.3", + "htmlnano": "^2.0.0", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "svgo": "^2.4.0" + }, + "dependencies": { + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "css-tree": "^1.1.2" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" } } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "@parcel/optimizer-image": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.9.3.tgz", + "integrity": "sha512-530YzthE7kmecnNhPbkAK+26yQNt69pfJrgE0Ev0BZaM1Wu2+33nki7o8qvkTkikhPrurEJLGIXt1qKmbKvCbA==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3" + } }, - "falafel": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "@parcel/optimizer-svgo": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.9.3.tgz", + "integrity": "sha512-ytQS0wY5JJhWU4mL0wfhYDUuHcfuw+Gy2+JcnTm1t1AZXHlOTbU6EzRWNqBShsgXjvdrQQXizAe3B6GFFlFJVQ==", "dev": true, "requires": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "svgo": "^2.4.0" }, "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } } } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "@parcel/optimizer-swc": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.9.3.tgz", + "integrity": "sha512-GQINNeqtdpL1ombq/Cpwi6IBk02wKJ/JJbYbyfHtk8lxlq13soenpwOlzJ5T9D2fdG+FUhai9NxpN5Ss4lNoAg==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "@swc/core": "^1.3.36", + "nullthrows": "^1.1.1" + } }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "@parcel/package-manager": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.9.3.tgz", + "integrity": "sha512-NH6omcNTEupDmW4Lm1e4NUYBjdqkURxgZ4CNESESInHJe6tblVhNB8Rpr1ar7zDar7cly9ILr8P6N3Ei7bTEjg==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "@parcel/diagnostic": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/node-resolver-core": "3.0.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "semver": "^7.5.2" }, "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "lru-cache": "^6.0.0" } } } }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "@parcel/packager-css": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.9.3.tgz", + "integrity": "sha512-mePiWiYZOULY6e1RdAIJyRoYqXqGci0srOaVZYaP7mnrzvJgA63kaZFFsDiEWghunQpMUuUjM2x/vQVHzxmhKQ==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + } }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "@parcel/packager-html": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.9.3.tgz", + "integrity": "sha512-0Ex+O0EaZf9APNERRNGgGto02hFJ6f5RQEvRWBK55WAV1rXeU+kpjC0c0qZvnUaUtXfpWMsEBkevJCwDkUMeMg==", + "dev": true, + "requires": { + "@parcel/plugin": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5" + } }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true + "@parcel/packager-js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.9.3.tgz", + "integrity": "sha512-V5xwkoE3zQ3R+WqAWhA1KGQ791FvJeW6KonOlMI1q76Djjgox68hhObqcLu66AmYNhR2R/wUpkP18hP2z8dSFw==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "globals": "^13.2.0", + "nullthrows": "^1.1.1" + } }, - "fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "@parcel/packager-raw": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.9.3.tgz", + "integrity": "sha512-oPQTNoYanQ2DdJyL61uPYK2py83rKOT8YVh2QWAx0zsSli6Kiy64U3+xOCYWgDVCrHw9+9NpQMuAdSiFg4cq8g==", "dev": true, "requires": { - "reusify": "^1.0.4" + "@parcel/plugin": "2.9.3" } }, - "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "@parcel/packager-svg": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.9.3.tgz", + "integrity": "sha512-p/Ya6UO9DAkaCUFxfFGyeHZDp9YPAlpdnh1OChuwqSFOXFjjeXuoK4KLT+ZRalVBo2Jo8xF70oKMZw4MVvaL7Q==", "dev": true, "requires": { - "flat-cache": "^3.0.4" + "@parcel/plugin": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "posthtml": "^0.16.4" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "@parcel/packager-ts": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/packager-ts/-/packager-ts-2.9.3.tgz", + "integrity": "sha512-Vd9dm1FqaFDw/kWCh95zgGS08HvIpSLg5Aa+AIhFiM0G+kpRSItcBSNJVwC7JKmLk1rmQhmQKoCKX26+nvyAzA==", + "dev": true, + "requires": { + "@parcel/plugin": "2.9.3" + } }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true + "@parcel/plugin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.9.3.tgz", + "integrity": "sha512-qN85Gqr2GMuxX1dT1mnuO9hOcvlEv1lrYrCxn7CJN2nUhbwcfG+LEvcrCzCOJ6XtIHm+ZBV9h9p7FfoPLvpw+g==", + "dev": true, + "requires": { + "@parcel/types": "2.9.3" + } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "@parcel/profiler": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.9.3.tgz", + "integrity": "sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3", + "chrome-trace-event": "^1.0.2" } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "@parcel/reporter-cli": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.9.3.tgz", + "integrity": "sha512-pZiEvQpuXFuQBafMHxkDmwH8CnnK9sWHwa3bSbsnt385aUahtE8dpY0LKt+K1zfB6degKoczN6aWVj9WycQuZQ==", "dev": true, "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "@parcel/plugin": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "chalk": "^4.1.0", + "term-size": "^2.2.1" }, "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "glob": "^7.1.3" + "has-flag": "^4.0.0" } } } }, - "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", - "dev": true - }, - "fontfaceobserver": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", - "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "@parcel/reporter-dev-server": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.9.3.tgz", + "integrity": "sha512-s6eboxdLEtRSvG52xi9IiNbcPKC0XMVmvTckieue2EqGDbDcaHQoHmmwkk0rNq0/Z/UxelGcQXoIYC/0xq3ykQ==", "dev": true, "requires": { - "map-cache": "^0.2.2" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "@parcel/reporter-tracer": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.9.3.tgz", + "integrity": "sha512-9cXpKWk0m6d6d+4+TlAdOe8XIPaFEIKGWMWG+5SFAQE08u3olet4PSvd49F4+ZZo5ftRE7YI3j6xNbXvJT8KGw==", "dev": true, - "optional": true, "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "chrome-trace-event": "^1.0.3", + "nullthrows": "^1.1.1" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "@parcel/resolver-default": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.9.3.tgz", + "integrity": "sha512-8ESJk1COKvDzkmOnppNXoDamNMlYVIvrKc2RuFPmp8nKVj47R6NwMgvwxEaatyPzvkmyTpq5RvG9I3HFc+r4Cw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "@parcel/node-resolver-core": "3.0.3", + "@parcel/plugin": "2.9.3" } }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "@parcel/runtime-browser-hmr": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.9.3.tgz", + "integrity": "sha512-EgiDIDrVAWpz7bOzWXqVinQkaFjLwT34wsonpXAbuI7f7r00d52vNAQC9AMu+pTijA3gyKoJ+Q4NWPMZf7ACDA==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3" } }, - "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "@parcel/runtime-js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.9.3.tgz", + "integrity": "sha512-EvIy+qXcKnB5qxHhe96zmJpSAViNVXHfQI5RSdZ2a7CPwORwhTI+zPNT9sb7xb/WwFw/WuTTgzT40b41DceU6Q==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "@parcel/runtime-react-refresh": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.9.3.tgz", + "integrity": "sha512-XBgryZQIyCmi6JwEfMUCmINB3l1TpTp9a2iFxmYNpzHlqj4Ve0saKaqWOVRLvC945ZovWIBzcSW2IYqWKGtbAA==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "react-error-overlay": "6.0.9", + "react-refresh": "^0.9.0" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true + "@parcel/runtime-service-worker": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.9.3.tgz", + "integrity": "sha512-qLJLqv1mMdWL7gyh8aKBFFAuEiJkhUUgLKpdn6eSfH/R7kTtb76WnOwqUrhvEI9bZFUM/8Pa1bzJnPpqSOM+Sw==", + "dev": true, + "requires": { + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "@parcel/source-map": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", + "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3" + } }, - "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "@parcel/transformer-babel": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.9.3.tgz", + "integrity": "sha512-pURtEsnsp3h6tOBDuzh9wRvVtw4PgIlqwAArIWdrG7iwqOUYv9D8ME4+ePWEu7MQWAp58hv9pTJtqWv4T+Sq8A==", "dev": true, "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "browserslist": "^4.6.6", + "json5": "^2.2.0", + "nullthrows": "^1.1.1", + "semver": "^7.5.2" }, "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "is-number": "^7.0.0" + "lru-cache": "^6.0.0" } } } }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "grapheme-breaker": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", - "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "@parcel/transformer-css": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.9.3.tgz", + "integrity": "sha512-duWMdbEBBPjg3fQdXF16iWIdThetDZvCs2TpUD7xOlXH6kR0V5BJy8ONFT15u1RCqIV9hSNGaS3v3I9YRNY5zQ==", "dev": true, "requires": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "browserslist": "^4.6.6", + "lightningcss": "^1.16.1", + "nullthrows": "^1.1.1" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "@parcel/transformer-html": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.9.3.tgz", + "integrity": "sha512-0NU4omcHzFXA1seqftAXA2KNZaMByoKaNdXnLgBgtCGDiYvOcL+6xGHgY6pw9LvOh5um10KI5TxSIMILoI7VtA==", "dev": true, "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2", + "srcset": "4" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "@parcel/transformer-image": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.9.3.tgz", + "integrity": "sha512-7CEe35RaPadQzLIuxzTtIxnItvOoy46hcbXtOdDt6lmVa4omuOygZYRIya2lsGIP4JHvAaALMb5nt99a1uTwJg==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "nullthrows": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "@parcel/transformer-js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.9.3.tgz", + "integrity": "sha512-Z2MVVg5FYcPOfxlUwxqb5l9yjTMEqE3KI3zq2MBRUme6AV07KxLmCDF23b6glzZlHWQUE8MXzYCTAkOPCcPz+Q==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.9.3", + "@parcel/workers": "2.9.3", + "@swc/helpers": "^0.5.0", + "browserslist": "^4.6.6", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.13.7", + "semver": "^7.5.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "@parcel/transformer-json": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.9.3.tgz", + "integrity": "sha512-yNL27dbOLhkkrjaQjiQ7Im9VOxmkfuuSNSmS0rA3gEjVcm07SLKRzWkAaPnyx44Lb6bzyOTWwVrb9aMmxgADpA==", "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "@parcel/plugin": "2.9.3", + "json5": "^2.2.0" + }, + "dependencies": { + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + } } }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "@parcel/transformer-postcss": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.9.3.tgz", + "integrity": "sha512-HoDvPqKzhpmvMmHqQhDnt8F1vH61m6plpGiYaYnYv2Om4HHi5ZIq9bO+9QLBnTKfaZ7ndYSefTKOxTYElg7wyw==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "clone": "^2.1.1", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.2" }, "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "lru-cache": "^6.0.0" } } } }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "@parcel/transformer-posthtml": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.9.3.tgz", + "integrity": "sha512-2fQGgrzRmaqbWf3y2/T6xhqrNjzqMMKksqJzvc8TMfK6f2kg3Ddjv158eaSW2JdkV39aY7tvAOn5f1uzo74BMA==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "lru-cache": "^6.0.0" } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true } } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "@parcel/transformer-raw": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.9.3.tgz", + "integrity": "sha512-oqdPzMC9QzWRbY9J6TZEqltknjno+dY24QWqf8ondmdF2+W+/2mRDu59hhCzQrqUHgTq4FewowRZmSfpzHxwaQ==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "@parcel/plugin": "2.9.3" } }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true + "@parcel/transformer-react-refresh-wrap": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.9.3.tgz", + "integrity": "sha512-cb9NyU6oJlDblFIlzqIE8AkvRQVGl2IwJNKwD4PdE7Y6sq2okGEPG4hOw3k/Y9JVjM4/2pUORqvjSRhWwd9oVQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.9.3", + "@parcel/utils": "2.9.3", + "react-refresh": "^0.9.0" + } }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "@parcel/transformer-svg": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.9.3.tgz", + "integrity": "sha512-ypmE+dzB09IMCdEAkOsSxq1dEIm2A3h67nAFz4qbfHbwNgXBUuy/jB3ZMwXN/cO0f7SBh/Ap8Jhq6vmGqB5tWw==", "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/plugin": "2.9.3", + "nullthrows": "^1.1.1", + "posthtml": "^0.16.5", + "posthtml-parser": "^0.10.1", + "posthtml-render": "^3.0.0", + "semver": "^7.5.2" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true + "@parcel/transformer-typescript-tsc": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-tsc/-/transformer-typescript-tsc-2.9.3.tgz", + "integrity": "sha512-kQUts/PVFhEb9JoyJBlKvaa5qR/3bEiyZSjn8qE3S+97CUOIVun8fNxGiDPwpaPd90BgPcgU43gSAQwlY9rIMQ==", + "dev": true, + "requires": { + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/ts-utils": "2.9.3" + } }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true + "@parcel/transformer-typescript-types": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.9.3.tgz", + "integrity": "sha512-W+Ze3aUTdZuBQokXlkEQ/1hUApUm6VRyYzPqEs9jcqCqU8mv18i5ZGAz4bMuIJOBprp7M2wt10SJJx/SC1pl1A==", + "dev": true, + "requires": { + "@parcel/diagnostic": "2.9.3", + "@parcel/plugin": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/ts-utils": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" + } }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "@parcel/ts-utils": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.9.3.tgz", + "integrity": "sha512-MiQoXFV8I4IWZT/q5yolKN/gnEY5gZfGB2X7W9WHJbRgyjlT/A5cPERXzVBj6mc3/VM1GdZJz76w637GUcQhow==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "nullthrows": "^1.1.1" } }, - "html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true + "@parcel/types": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.9.3.tgz", + "integrity": "sha512-NSNY8sYtRhvF1SqhnIGgGvJocyWt1K8Tnw5cVepm0g38ywtX6mwkBvMkmeehXkII4mSUn+frD9wGsydTunezvA==", + "dev": true, + "requires": { + "@parcel/cache": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/package-manager": "2.9.3", + "@parcel/source-map": "^2.1.1", + "@parcel/workers": "2.9.3", + "utility-types": "^3.10.0" + } }, - "htmlnano": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.9.tgz", - "integrity": "sha512-jWTtP3dCd7R8x/tt9DK3pvpcQd7HDMcRPUqPxr/i9989q2k5RHIhmlRDFeyQ/LSd8IKrteG8Ce5g0Ig4eGIipg==", + "@parcel/utils": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.9.3.tgz", + "integrity": "sha512-cesanjtj/oLehW8Waq9JFPmAImhoiHX03ihc3JTWkrvJYSbD7wYKCDgPAM3JiRAqvh1LZ6P699uITrYWNoRLUg==", "dev": true, "requires": { - "cssnano": "^4.1.11", - "posthtml": "^0.15.1", - "purgecss": "^2.3.0", - "relateurl": "^0.2.7", - "srcset": "^3.0.0", - "svgo": "^1.3.2", - "terser": "^5.6.1", - "timsort": "^0.3.0", - "uncss": "^0.17.3" + "@parcel/codeframe": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/hash": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/markdown-ansi": "2.9.3", + "@parcel/source-map": "^2.1.1", + "chalk": "^4.1.0", + "nullthrows": "^1.1.1" }, "dependencies": { - "dom-serializer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", - "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "entities": "^2.0.0" + "color-convert": "^2.0.1" } }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "domelementtype": "^2.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "domutils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", - "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "color-name": "~1.1.4" } }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "posthtml": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.15.2.tgz", - "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==", - "dev": true, - "requires": { - "posthtml-parser": "^0.7.2", - "posthtml-render": "^1.3.1" - } - }, - "posthtml-parser": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.7.2.tgz", - "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==", - "dev": true, - "requires": { - "htmlparser2": "^6.0.0" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "terser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", - "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "has-flag": "^4.0.0" } } } }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "@parcel/watcher": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", + "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "dev": true, + "requires": { + "@parcel/watcher-android-arm64": "2.3.0", + "@parcel/watcher-darwin-arm64": "2.3.0", + "@parcel/watcher-darwin-x64": "2.3.0", + "@parcel/watcher-freebsd-x64": "2.3.0", + "@parcel/watcher-linux-arm-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-musl": "2.3.0", + "@parcel/watcher-linux-x64-glibc": "2.3.0", + "@parcel/watcher-linux-x64-musl": "2.3.0", + "@parcel/watcher-win32-arm64": "2.3.0", + "@parcel/watcher-win32-ia32": "2.3.0", + "@parcel/watcher-win32-x64": "2.3.0", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + } + }, + "@parcel/watcher-android-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", + "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } + "optional": true }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "@parcel/watcher-darwin-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", + "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", + "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "dev": true, + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", + "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", + "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", + "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", + "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", + "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", + "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-arm64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", + "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-ia32": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", + "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", + "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "dev": true, + "optional": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "@parcel/workers": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.9.3.tgz", + "integrity": "sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "@parcel/diagnostic": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/profiler": "2.9.3", + "@parcel/types": "2.9.3", + "@parcel/utils": "2.9.3", + "nullthrows": "^1.1.1" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true + "@pixi/accessibility": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-6.5.5.tgz", + "integrity": "sha512-mDGDVkNCA1w28zzCT/8x2euxHX55y6ftdDte6FytBwHJHxTzfOKyS6GPqJNrXQB2muu1E/bySqzguiYy1gW/lw==", + "requires": {} }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "@pixi/app": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/app/-/app-6.5.5.tgz", + "integrity": "sha512-VW2kzgj/eNZqGaf+24eL5BGPTHlCDjCYVrKXuFPmPnj48ucUOOKdMQrA8ezmC3LDXsraavwhru8F+JPLUbRtzg==", + "requires": {} }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true + "@pixi/canvas-display": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-display/-/canvas-display-6.5.5.tgz", + "integrity": "sha512-MSI52p5WN1TcaK6GbPbT5+QkMU+mOL+VOJUDlhZoAWeem72iY6MxZfRXc5x0FAZWRU3k7AyIoZEntOah4UWmng==", + "requires": {} }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "@pixi/canvas-extract": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-extract/-/canvas-extract-6.5.5.tgz", + "integrity": "sha512-MCki+iONWfOULhPaYi6/FRHIyDE4TFYho1a0J+dKXj3ghMeAh6D2v2o12NcdsQ19SrbnRN9edKSxnG4+SqN5Ow==", + "requires": {} }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true + "@pixi/canvas-graphics": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-graphics/-/canvas-graphics-6.5.5.tgz", + "integrity": "sha512-ssKrUYYqdmFpJPBghe/2qQsKd6cxeaZqDTjwFceviZuSvUHGNsaOYMsDfg98NQlCivYuTvQVDcIF3cHN/+fnaA==", + "requires": {} }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } + "@pixi/canvas-mesh": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-mesh/-/canvas-mesh-6.5.5.tgz", + "integrity": "sha512-2n7J+UVktgRZjHCJX3ysK1Xi3Jmcw/uWYdf27Cn9k94tWwiK+LjKyq0Kv3XybIEgKOky+7/bVlolBNzVxcOpAw==", + "requires": {} }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "@pixi/canvas-particle-container": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-particle-container/-/canvas-particle-container-6.5.5.tgz", + "integrity": "sha512-R1f9INc72S35+H5sFx7EZTsZUKU3arXRNMYeLlruPZRe5gENl7X5EvRwbVggUE23PnwL89yRfomREYFPqYNY2w==", + "requires": {} }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true + "@pixi/canvas-prepare": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-prepare/-/canvas-prepare-6.5.5.tgz", + "integrity": "sha512-UZyVmLE1UuMpLUdaEcKwxuF57Ibn86S2yGgKty+yyfC9FXY+YwlVdl62XEhVYOtQ+Kp488InY1LSrc7YGp/pEw==", + "requires": {} }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } + "@pixi/canvas-renderer": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-renderer/-/canvas-renderer-6.5.5.tgz", + "integrity": "sha512-MdQA5ZvRZGcsX7bA2V3KPUH7zfqpmYY1ILUdgP1mmz4zsS0lkqB3Ao6XQCLKCnVz5QeVKhRYzRgMJ/39IlM+qA==", + "requires": {} }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "@pixi/canvas-sprite": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite/-/canvas-sprite-6.5.5.tgz", + "integrity": "sha512-5K54PMGoSAlc7Wr7sY/08TT20o+eNbIWgC7Elc/vP4QMiJ389Shnq8Pkd2MhLs/qSbJfwti/cUj4Xiki7C86Lg==", + "requires": {} }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true + "@pixi/canvas-sprite-tiling": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-sprite-tiling/-/canvas-sprite-tiling-6.5.5.tgz", + "integrity": "sha512-Tu92dpawYVo7vGPaDJnLL39gmEZRNlG/Pxn0ZW/r2FsewC+7VCODnufTuxNhg9pRgg/ax5QnNVdft17YY/zq/w==", + "requires": {} }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "@pixi/canvas-text": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/canvas-text/-/canvas-text-6.5.5.tgz", + "integrity": "sha512-6CvB9NUZWsSvAx85kIZGEVCDFc6gsMXmAesPZfrPiebSVhUkuQmX20Qtqhhl88axB0OuLmw31+Cza2nW4IapMA==", + "requires": {} }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "@pixi/compressed-textures": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-6.5.5.tgz", + "integrity": "sha512-e6T1Kg1o9HLVMniSyHcpgtj2VWQV3cdDizIIvdQs7jbrtZCO5ouehViLP2PWm1ZD63hDj6nyVwmZGvkD7FgH1w==", + "requires": {} }, - "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true + "@pixi/constants": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-6.5.5.tgz", + "integrity": "sha512-tuiN6aeMuQv77UHzGNeJiAUiOrt22dybZYrXAVLOF7mDG+zxT96r7R43DvqrWG3GuNh/VCKE5hQLGQybR21nBA==" }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, + "@pixi/core": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/core/-/core-6.5.5.tgz", + "integrity": "sha512-Vdod5c5oByqBuqSQq+j+aiLtAUzFGQblCm9Awmuyjsu7Hygyh8080GeAduS4YuCIHEGz5aP9KS/KP92pM+m4Cg==", "requires": { - "binary-extensions": "^1.0.0" + "@types/offscreencanvas": "^2019.6.4" } }, - "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } + "@pixi/display": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/display/-/display-6.5.5.tgz", + "integrity": "sha512-+WnIR9+vrMc6fgdfOPvmsUIggwdAZvjZ0eX3uEEyS6mjFkZCcC8b0fjfpBaTq8dtWWs+sS7ZZqew9TzAlA9o1w==", + "requires": {} }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "@pixi/extensions": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-6.5.5.tgz", + "integrity": "sha512-b85GH6xzh0SgPejLguCLBhq9zoq6gizW8Zwyb+W1s1Q+B6sP6LtAMeir3ZefiXT3nOakeUGEv7bLp76Aon3lyw==" }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true + "@pixi/extract": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-6.5.5.tgz", + "integrity": "sha512-dlGS4BoMAQeMLv2HyfwvLWn4E5/YPuHF32CsclNWvm0A72y7qQYKBRzpQL3Yzo26uflCwNECbTwhcUXaQ3V2tg==", + "requires": {} }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } + "@pixi/filter-alpha": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-6.5.5.tgz", + "integrity": "sha512-voFl8Euf+amn6/iyNpEfKA7MUV1moylJVe28HBvMuyx5xHp7N/HlcJ2zh2LNxXH2nPu55E1oOWl69+5eYpP+9Q==", + "requires": {} }, - "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } + "@pixi/filter-blur": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-6.5.5.tgz", + "integrity": "sha512-Xu0593Fu463VBk730x0RxnoVPmYhMV16izjCv8E2VVOFG357yUECHuPsc0L+/LCCjT53wxa3JOzNTJVUJ4HjSg==", + "requires": {} }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "@pixi/filter-color-matrix": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-6.5.5.tgz", + "integrity": "sha512-NGAZ11mwYegovolym0Iw/i/Tg0aXkRW1nhZMe/5AnWYg81tDpBeUfJkHXErLBZO1Kx7+8EJzMpMv3oEhSYvrug==", + "requires": {} }, - "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true + "@pixi/filter-displacement": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-6.5.5.tgz", + "integrity": "sha512-GfmsdZmFFSlcBapUp2ElaIJE1Sy14RdxdqTA7PV72U2RL2gzBSD7rOasBoWynkPv3ILsVMGVleuuRitjPhRBDw==", + "requires": {} }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } + "@pixi/filter-fxaa": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-6.5.5.tgz", + "integrity": "sha512-luW5Rhu9i0FdC2+L+dc/dMf4ImC+yG4CdIuK9zgXwYGb6WLyCuEXI5fhdrpdYU9SmTfdwa5eNWqO0mXplJBAig==", + "requires": {} }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true + "@pixi/filter-noise": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-6.5.5.tgz", + "integrity": "sha512-3ttFuNfMim+Fd7ccZF69UAPnMsF+5AivX6i1V8WUj75Ei/Fq6JQK+PPbZ2FQQHOYa1e1B6Ej4uvNCkSXs87/UA==", + "requires": {} }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "@pixi/graphics": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-6.5.5.tgz", + "integrity": "sha512-gBhznqpNv5IX7exnq3dgdjGaGfyi9quIFnjMC2pBihSJLc+WokM00rhRxz6IfNknDBQG0vkTXkc0WOPbVlt9Nw==", + "requires": {} }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "@pixi/interaction": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-6.5.5.tgz", + "integrity": "sha512-YARy4jeU8EbDQSqtDUguMwQS/wPZjFDAKpuOyraF+DeSN+21+hTRcU3YR4Cq2gqb74uBr5ods4fN9BevyaBjcw==", + "requires": {} }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "@pixi/loaders": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-6.5.5.tgz", + "integrity": "sha512-fFvdXYh5ije/pHi4XghF3lF71F/ng/yE2+V3n8w/i7SpYI/CDmwjgfbVNtMJ4LaflJAyPcF8NF7r+eKr/1vDFQ==", + "requires": {} }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } + "@pixi/math": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/math/-/math-6.5.5.tgz", + "integrity": "sha512-3Y8mfcPjmhIBlcUPTlQXuBBl+cyKWHp2mdXtJg3+E72poO0wTnW175oi38alxSgfKE4jZIDtoUaUoAAuJxmMoA==" }, - "is-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", - "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", - "dev": true, - "requires": { - "html-tags": "^1.0.0" - } + "@pixi/mesh": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-6.5.5.tgz", + "integrity": "sha512-IdI8+jIggDoYSCwdxFQqWekWt5eKvL0kFmrseEIABe3HdHBOuROCz2xTXffqdy9RznsbFSRkmpgiO9fZWibzOg==", + "requires": {} }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true + "@pixi/mesh-extras": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-6.5.5.tgz", + "integrity": "sha512-j0shm5Sbn1OvtBDQ56uSc6vYkkRXSVrYr7ywSNY05/0yE3cbLWiuA8ZC7fd5iLbDCxvgl3QaYwtz2ao9V8Sn9A==", + "requires": {} }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "@pixi/mixin-cache-as-bitmap": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-6.5.5.tgz", + "integrity": "sha512-rlHW5IbJV6aUhiQpDDjUBtlR5Fn+LhJjpHWHmeurhFMyMFNFGm6BNLfAIoxUe6VMm6oZOYOB6y3MNcAZeg+fXg==", + "requires": {} }, - "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true + "@pixi/mixin-get-child-by-name": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-6.5.5.tgz", + "integrity": "sha512-Oz/6wCmJQqPwI8W0Cs7b0QGjCcQtI7THStkm5TlqcQS7quyAnRsaaZ9yh7BPLnZnaVGXaFZ0+WmYAoc0FCc9Lw==", + "requires": {} }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true + "@pixi/mixin-get-global-position": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-6.5.5.tgz", + "integrity": "sha512-8fftShp18r/imrgAcaL441VegywrX1rOX/XaYa5EU2pUXi37WRBmn5q3HKY0K/SV0d+EduzDQsdxzFkNuG82Zw==", + "requires": {} }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } + "@pixi/particle-container": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/particle-container/-/particle-container-6.5.5.tgz", + "integrity": "sha512-2r/YD1ilSML3BGBPeL08IW6wwqy201xRRQuOV+/AIDFOy4CXbGhoA2hEP9AvNr3DDCPApM53BECppjcihPyMEA==", + "requires": {} }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, + "@pixi/polyfill": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/polyfill/-/polyfill-6.5.5.tgz", + "integrity": "sha512-hyOs05hw191uizq5PNRNfO3xgZu5N0lRdaGJi72gvNX2N16pHnjpruazx/ae4eoS3H242+W4N63CvfxJ16ezyg==", "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "object-assign": "^4.1.1", + "promise-polyfill": "^8.2.0" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true + "@pixi/prepare": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-6.5.5.tgz", + "integrity": "sha512-IXPjIP8xtGkwOhrAxPcxRPvj9wdeA007QDZcDie1ufHOJhHPvB1ryfT1jtEMSF7xPQ/F8589UVgDM+hY8Ij/Qg==", + "requires": {} }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } + "@pixi/runner": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-6.5.5.tgz", + "integrity": "sha512-IrfkNSgFTMnzO3zbPIYTsRPETu3s9mEGIyjAu34OShrg7GxgLtXjV9H04ssqkIONsQ73idnwm9/s6pT5lNFZ1Q==" }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "@pixi/settings": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-6.5.5.tgz", + "integrity": "sha512-U6xeE9Ri10Rm0Ttjhxc0vc2Qzu2NhB9j/YjvO5NwtW6Adx1SsGz71Pgmebt/FoR4OKU4rtDnRKZOfem7LCFoCA==" }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true + "@pixi/sprite": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-6.5.5.tgz", + "integrity": "sha512-s8T5D4zoDgj9DWnPGSHoMwJ4uLs9CDp9cgfzTOhwIirqTeoajpywfNFS5RAFAyVCdh4ltSG2oujP8a86eWF0+A==", + "requires": {} }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "@pixi/sprite-animated": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-6.5.5.tgz", + "integrity": "sha512-pvjeOkMrlbvKKO4ZDRKdO97ZKt2LUfLNUCfjU+PyEgJww/6vWeY9IQj89fc2QXGPOYIGrZeT8AuYqPCtJMktHw==", + "requires": {} }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "@pixi/sprite-tiling": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-6.5.5.tgz", + "integrity": "sha512-noxIGDvsq5tmINElqjcCnfFofY5CRTWOgLPyL9vI2zk1QhTBW5T/XHENoWFWyuCZgFkEdI1BcO1Yug0q6u+OgQ==", + "requires": {} }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "@pixi/spritesheet": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-6.5.5.tgz", + "integrity": "sha512-LCfR1iVYSh0pJUM+PDP/FcP45AV6II3zkt8ojtHHcgsDN1qeggbmIEJ/ohvSMLSpKcLHYXv984wu0wp/fB6NdA==", + "requires": {} }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "@pixi/text": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/text/-/text-6.5.5.tgz", + "integrity": "sha512-u33ESpNqtZ4IaBiQkq5BT2KeQYcqokfr5VNatYXIMO8jbHktm0Lwqca9pdr+GhS2/DUyyiRfCmNaPHoabjPo6Q==", + "requires": {} }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "@pixi/text-bitmap": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-6.5.5.tgz", + "integrity": "sha512-nMi7lb3sYAnPPZ9jF/DxmOo0rjh8/Xmc0YYslagvqFJSlowcF+N9HjMOO5WKyP1OBa/gGrpwrLp9FTmdV4T+MQ==", + "requires": {} }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "@pixi/ticker": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-6.5.5.tgz", + "integrity": "sha512-S/LALaHQJTldEpFqgAUgi/fc6/XnDUg5k0DXJLfWT2p1hzuo8q009Izpi/wxd4hPZiOlViQtWyrstjMtrQz2AQ==", + "requires": {} }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "@pixi/unsafe-eval": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/unsafe-eval/-/unsafe-eval-6.5.5.tgz", + "integrity": "sha512-2I2KfyEa4JghrszuR5/birHqWkknVj/Rs09eULHomytSiOGdId7CEsq8XjHZ/9SCsmFrEOaL1Fcvn9K9KkWB0Q==", + "requires": {} }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, + "@pixi/utils": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-6.5.5.tgz", + "integrity": "sha512-QtcRR+/Y/F49rQ1vVLsc6dMoLLyLTIJxHDSHxYvlGpQWZG+mRvaWYPZZwFgjdCKzzft1RiwkXI2vL4Zxqfg9CQ==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@types/earcut": "^2.1.0", + "earcut": "^2.2.4", + "eventemitter3": "^3.1.0", + "url": "^0.11.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", "dev": true, "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } } } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "@swc/core": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.83.tgz", + "integrity": "sha512-PccHDgGQlFjpExgJxH91qA3a4aifR+axCFJ4RieCoiI0m5gURE4nBhxzTBY5YU/YKTBmPO8Gc5Q6inE3+NquWg==", "dev": true, "requires": { - "minimist": "^1.2.0" + "@swc/core-darwin-arm64": "1.3.83", + "@swc/core-darwin-x64": "1.3.83", + "@swc/core-linux-arm-gnueabihf": "1.3.83", + "@swc/core-linux-arm64-gnu": "1.3.83", + "@swc/core-linux-arm64-musl": "1.3.83", + "@swc/core-linux-x64-gnu": "1.3.83", + "@swc/core-linux-x64-musl": "1.3.83", + "@swc/core-win32-arm64-msvc": "1.3.83", + "@swc/core-win32-ia32-msvc": "1.3.83", + "@swc/core-win32-x64-msvc": "1.3.83", + "@swc/types": "^0.1.4" } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "@swc/core-darwin-arm64": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.83.tgz", + "integrity": "sha512-Plz2IKeveVLivbXTSCC3OZjD2MojyKYllhPrn9RotkDIZEFRYJZtW5/Ik1tJW/2rzu5HVKuGYrDKdScVVTbOxQ==", "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "optional": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "@swc/core-darwin-x64": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.83.tgz", + "integrity": "sha512-FBGVg5IPF/8jQ6FbK60iDUHjv0H5+LwfpJHKH6wZnRaYWFtm7+pzYgreLu3NTsm3m7/1a7t0+7KURwBGUaJCCw==", "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } + "optional": true }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.83.tgz", + "integrity": "sha512-EZcsuRYhGkzofXtzwDjuuBC/suiX9s7zeg2YYXOVjWwyebb6BUhB1yad3mcykFQ20rTLO9JUyIaiaMYDHGobqw==", "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "optional": true }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true + "@swc/core-linux-arm64-gnu": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.83.tgz", + "integrity": "sha512-khI41szLHrCD/cFOcN4p2SYvZgHjhhHlcMHz5BksRrDyteSJKu0qtWRZITVom0N/9jWoAleoFhMnFTUs0H8IWA==", + "dev": true, + "optional": true }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true + "@swc/core-linux-arm64-musl": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.83.tgz", + "integrity": "sha512-zgT7yNOdbjHcGAwvys79mbfNLK65KBlPJWzeig+Yk7I8TVzmaQge7B6ZS/gwF9/p+8TiLYo/tZ5aF2lqlgdSVw==", + "dev": true, + "optional": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true + "@swc/core-linux-x64-gnu": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.83.tgz", + "integrity": "sha512-x+mH0Y3NC/G0YNlFmGi3vGD4VOm7IPDhh+tGrx6WtJp0BsShAbOpxtfU885rp1QweZe4qYoEmGqiEjE2WrPIdA==", + "dev": true, + "optional": true }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true + "@swc/core-linux-x64-musl": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.83.tgz", + "integrity": "sha512-s5AYhAOmetUwUZwS5g9qb92IYgNHHBGiY2mTLImtEgpAeBwe0LPDj6WrujxCBuZnaS55mKRLLOuiMZE5TpjBNA==", + "dev": true, + "optional": true }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "@swc/core-win32-arm64-msvc": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.83.tgz", + "integrity": "sha512-yw2rd/KVOGs95lRRB+killLWNaO1dy4uVa8Q3/4wb5txlLru07W1m041fZLzwOg/1Sh0TMjJgGxj0XHGR3ZXhQ==", "dev": true, - "requires": { - "chalk": "^2.0.1" - } + "optional": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "@swc/core-win32-ia32-msvc": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.83.tgz", + "integrity": "sha512-POW+rgZ6KWqBpwPGIRd2/3pcf46P+UrKBm4HLt5IwbHvekJ4avIM8ixJa9kK0muJNVJcDpaZgxaU1ELxtJ1j8w==", "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } + "optional": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "@swc/core-win32-x64-msvc": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.83.tgz", + "integrity": "sha512-CiWQtkFnZElXQUalaHp+Wacw0Jd+24ncRYhqaJ9YKnEQP1H82CxIIuQqLM8IFaLpn5dpY6SgzaeubWF46hjcLA==", "dev": true, - "requires": { - "yallist": "^4.0.0" - } + "optional": true }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", "dev": true, "requires": { - "vlq": "^0.2.2" + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "@swc/types": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.4.tgz", + "integrity": "sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@turf/clone": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.3.0.tgz", + "integrity": "sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==", "dev": true, "requires": { - "object-visit": "^1.0.0" + "@turf/helpers": "^6.3.0" } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "@turf/clusters-kmeans": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-6.3.0.tgz", + "integrity": "sha512-cyHtW5nsOcs1p8l3mflX2805fOxR99FanXCP95U+001S4AwVSgxiOfTg8PUHg9nui2Qcq/PMBRQz80exb2UzyA==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "@turf/clone": "^6.3.0", + "@turf/helpers": "^6.3.0", + "@turf/invariant": "^6.3.0", + "@turf/meta": "^6.3.0", + "skmeans": "0.9.7" } }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "@turf/helpers": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.3.0.tgz", + "integrity": "sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==", "dev": true }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "@turf/invariant": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.3.0.tgz", + "integrity": "sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "@turf/helpers": "^6.3.0" } }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "@turf/meta": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.3.0.tgz", + "integrity": "sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==", "dev": true, "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@turf/helpers": "^6.3.0" } }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "@types/d3-force": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.5.tgz", + "integrity": "sha512-EGG+IWx93ESSXBwfh/5uPuR9Hp8M6o6qEGU7bBQslxCvrdUBQZha/EFpu/VMdLU4B0y4Oe4h175nSm7p9uqFug==", + "dev": true + }, + "@types/d3-hierarchy": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.3.tgz", + "integrity": "sha512-GpSK308Xj+HeLvogfEc7QsCOcIxkDwLhFYnOoohosEzOqv7/agxwvJER1v/kTC+CY1nfazR0F7gnHo7GE41/fw==", + "dev": true + }, + "@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "@types/d3-color": "*" + } + }, + "@types/d3-scale": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", + "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } + "@types/d3-time": "*" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", "dev": true }, - "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "@types/d3-time": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.0.10.tgz", + "integrity": "sha512-aKf62rRQafDQmSiv1NylKhIMmznsjRN+MnXRXTqHoqm0U/UZzVpdrtRnSIfdiLS616OuC1soYeX1dBg2n1u8Xw==", "dev": true }, - "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, - "requires": { - "mime-db": "1.47.0" - } + "@types/earcut": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", + "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "@types/fontfaceobserver": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/fontfaceobserver/-/fontfaceobserver-0.0.6.tgz", + "integrity": "sha512-QJ1znjr9CDax2L17rgBnDOfNHsC1XtVAMswu+lRWvWb+kANhHA0slUNSSBsG8FVNvM4I4yXlN9doJRot3A2hkQ==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "@types/offscreencanvas": { + "version": "2019.6.4", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.6.4.tgz", + "integrity": "sha512-u8SAgdZ8ROtkTF+mfZGOscl0or6BSj9A4g37e6nvxDc+YB/oDut0wHkK2PBBiC2bNR8TS0CPV+1gAk4fNisr1Q==" + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", "dev": true }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "@types/react": { + "version": "16.9.34", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.34.tgz", + "integrity": "sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "@types/prop-types": "*", + "csstype": "^2.2.0" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "@types/react-dom": { + "version": "16.9.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", + "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "dev": true, + "requires": { + "@types/react": "*" + } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "@types/react-resize-detector": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/react-resize-detector/-/react-resize-detector-5.0.0.tgz", + "integrity": "sha512-JTqR0G+RcC6Guqi/JXQBq3jewflumUGd4fDUucmZN9L1d8TZuRHzDTtrmgYWrgLvRTBTV6FjegmLeV1UnrIuzw==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "@types/react": "*" + } + }, + "@types/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "dev": true + }, + "@types/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "lru-cache": "^6.0.0" } } } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "@typescript-eslint/parser": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", + "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", "dev": true, "requires": { - "minimist": "^1.2.5" + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "@typescript-eslint/scope-manager": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", "dev": true, - "optional": true - }, - "nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", - "dev": true + "requires": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" + } }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "@typescript-eslint/type-utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", + "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "@typescript-eslint/types": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", "dev": true }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true + "@typescript-eslint/typescript-estree": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "@typescript-eslint/utils": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", "dev": true, "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, - "node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", - "dev": true + "@typescript-eslint/visitor-keys": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" + } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", "dev": true }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "color-convert": "^1.9.0" } }, - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "safe-buffer": "^5.0.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true }, - "object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - } + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "dev": true, "requires": { - "wrappy": "1" + "big-integer": "^1.6.44" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "fill-range": "^7.0.1" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" } }, - "ora": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", - "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", "dev": true, "requires": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "run-applescript": "^5.0.0" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "caniuse-lite": { + "version": "1.0.30001529", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001529.tgz", + "integrity": "sha512-n2pUQYGAkrLG4QYj2desAh+NqsJpHbNmVZz87imptDdxLAtjxary7Df/psdfyDGmskJK/9Dt9cPnx5RZ3CU4Og==", "dev": true }, - "parcel-bundler": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz", - "integrity": "sha512-hpku8mW67U6PXQIenW6NBbphBOMb8XzW6B9r093DUhYj5GN2FUB/CXCiz5hKoPYUsusZ35BpProH8AUF9bh5IQ==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/plugin-transform-flow-strip-types": "^7.4.4", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.4.4", - "@babel/runtime": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.1", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.12.1", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "core-js": "^2.6.5", - "cross-spawn": "^6.0.4", - "css-modules-loader-core": "^1.1.0", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^5.1.0", - "envinfo": "^7.3.1", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.2.2", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.10.0", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.11", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^3.0.0", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "color-name": "1.1.3" } }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "path-browserify": { + "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "path-dirname": { + "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pixi.js-legacy": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/pixi.js-legacy/-/pixi.js-legacy-6.5.5.tgz", - "integrity": "sha512-l343BwQ+t3VOHUqNZCHBa0n/eNBhTiBtJOQJTRg0a2hK1jsJ7dV63FKgEuL8siGrKf7MnNXUTe2iYzOQulPMTg==", + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "optional": true, + "peer": true, "requires": { - "@pixi/canvas-display": "6.5.5", - "@pixi/canvas-extract": "6.5.5", - "@pixi/canvas-graphics": "6.5.5", - "@pixi/canvas-mesh": "6.5.5", - "@pixi/canvas-particle-container": "6.5.5", - "@pixi/canvas-prepare": "6.5.5", - "@pixi/canvas-renderer": "6.5.5", - "@pixi/canvas-sprite": "6.5.5", - "@pixi/canvas-sprite-tiling": "6.5.5", - "@pixi/canvas-text": "6.5.5", - "pixi.js": "6.5.5" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, "dependencies": { - "pixi.js": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-6.5.5.tgz", - "integrity": "sha512-SfvUFl0RNnuELbU4IschzWGPSP1yRidEffQlbHnsXY1xvaCE7MG5snQzlufzAyiyiwRID1I5plSKtVjNvZfk9Q==", + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "optional": true, + "peer": true, "requires": { - "@pixi/accessibility": "6.5.5", - "@pixi/app": "6.5.5", - "@pixi/compressed-textures": "6.5.5", - "@pixi/constants": "6.5.5", - "@pixi/core": "6.5.5", - "@pixi/display": "6.5.5", - "@pixi/extensions": "6.5.5", - "@pixi/extract": "6.5.5", - "@pixi/filter-alpha": "6.5.5", - "@pixi/filter-blur": "6.5.5", - "@pixi/filter-color-matrix": "6.5.5", - "@pixi/filter-displacement": "6.5.5", - "@pixi/filter-fxaa": "6.5.5", - "@pixi/filter-noise": "6.5.5", - "@pixi/graphics": "6.5.5", - "@pixi/interaction": "6.5.5", - "@pixi/loaders": "6.5.5", - "@pixi/math": "6.5.5", - "@pixi/mesh": "6.5.5", - "@pixi/mesh-extras": "6.5.5", - "@pixi/mixin-cache-as-bitmap": "6.5.5", - "@pixi/mixin-get-child-by-name": "6.5.5", - "@pixi/mixin-get-global-position": "6.5.5", - "@pixi/particle-container": "6.5.5", - "@pixi/polyfill": "6.5.5", - "@pixi/prepare": "6.5.5", - "@pixi/runner": "6.5.5", - "@pixi/settings": "6.5.5", - "@pixi/sprite": "6.5.5", - "@pixi/sprite-animated": "6.5.5", - "@pixi/sprite-tiling": "6.5.5", - "@pixi/spritesheet": "6.5.5", - "@pixi/text": "6.5.5", - "@pixi/text-bitmap": "6.5.5", - "@pixi/ticker": "6.5.5", - "@pixi/utils": "6.5.5" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "optional": true, + "peer": true + } + } + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "css-tree": "~2.2.0" + }, + "dependencies": { + "css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" } + }, + "mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "optional": true, + "peer": true } } }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", "dev": true }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.2.tgz", + "integrity": "sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww==", "dev": true }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "d3-color": "1 - 3" } }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "internmap": "1 - 2" } }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dev": true, + "requires": { + "d3-array": "2" + }, + "dependencies": { + "d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, + "requires": { + "internmap": "^1.0.0" + } + } + } + }, + "internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", "dev": true } } }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" } }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", + "dev": true + }, + "d3-time-format": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.2.tgz", + "integrity": "sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "d3-time": "1" } }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "ms": "2.1.2" } }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", "dev": true, "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" } }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", "dev": true, "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" } }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "path-type": "^4.0.0" } }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "esutils": "^2.0.2" } }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true } } }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "electron-to-chromium": { + "version": "1.4.512", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.512.tgz", + "integrity": "sha512-1W8wRbYlQE4ph7eoj3TJ+uqwO6+xvAE/L+KGU7WTQQvX3tnSIGZAb90MTsMoJqzntamiwJhBAj4WZmygXhsOUg==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "prr": "~1.0.1" } }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "color-convert": "^2.0.1" } - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "color-name": "~1.1.4" } }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "has-flag": "^4.0.0" } } } }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "requires": {} + }, + "eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "requires": { - "postcss": "^6.0.1" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" } }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" + "estraverse": "^5.1.0" } }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "estraverse": "^5.2.0" } }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" } }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "is-glob": "^4.0.1" } } } }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "reusify": "^1.0.4" } }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "flat-cache": "^3.0.4" } }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "to-regex-range": "^5.0.1" } }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", "dev": true, "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" } }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } - } + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fontfaceobserver": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", + "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "is-glob": "^4.0.3" } }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "type-fest": "^0.20.2" }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } } }, - "postcss-selector-parser": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", - "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" } }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "htmlnano": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.4.tgz", + "integrity": "sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA==", "dev": true, "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" + "cosmiconfig": "^8.0.0", + "posthtml": "^0.16.5", + "timsort": "^0.3.0" }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "cosmiconfig": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.4.tgz", + "integrity": "sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" } } } }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - } + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true }, - "posthtml": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", - "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { - "htmlparser2": "^3.9.2" + "once": "^1.3.0", + "wrappy": "1" } }, - "posthtml-render": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", - "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "promise-polyfill": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", - "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "is-docker": "^3.0.0" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", "dev": true }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true }, - "purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" + "is-docker": "^2.0.0" }, "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" + "argparse": "^2.0.1" } }, - "raf-schd": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", - "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==", + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, - "react-dom": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", - "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "minimist": "^1.2.0" } }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "react-resize-detector": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-5.2.0.tgz", - "integrity": "sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A==", + "keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", "dev": true, "requires": { - "lodash": "^4.17.20", - "prop-types": "^15.7.2", - "raf-schd": "^4.0.2", - "resize-observer-polyfill": "^1.5.1" + "json-buffer": "3.0.1" } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "lightningcss": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.21.7.tgz", + "integrity": "sha512-xITZyh5sLFwRPYUSw15T00Rm7gcQ1qOPuQwNOcvHsTm6nLWTQ723w7zl42wrC5t+xtdg6FPmnXHml1nZxxvp1w==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "detect-libc": "^1.0.3", + "lightningcss-darwin-arm64": "1.21.7", + "lightningcss-darwin-x64": "1.21.7", + "lightningcss-freebsd-x64": "1.21.7", + "lightningcss-linux-arm-gnueabihf": "1.21.7", + "lightningcss-linux-arm64-gnu": "1.21.7", + "lightningcss-linux-arm64-musl": "1.21.7", + "lightningcss-linux-x64-gnu": "1.21.7", + "lightningcss-linux-x64-musl": "1.21.7", + "lightningcss-win32-x64-msvc": "1.21.7" } }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "lightningcss-darwin-arm64": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.21.7.tgz", + "integrity": "sha512-tt7hIsFio9jZofTVHtCACz6rB6c9RyABMXfA9A/VcKOjS3sq+koX/QkRJWY06utwOImbJIXBC5hbg9t3RkPUAQ==", + "dev": true, + "optional": true }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "lightningcss-darwin-x64": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.21.7.tgz", + "integrity": "sha512-F4gS4bf7eWekfPT+TxJNm/pF+QRgZiTrTkQH6cw4/UWfdeZISfuhD5El2dm16giFnY0K5ylIwO+ZusgYNkGSXA==", "dev": true, - "requires": { - "regenerate": "^1.4.0" - } + "optional": true }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true + "lightningcss-freebsd-x64": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.21.7.tgz", + "integrity": "sha512-RMfNzJWXCSfPnL55fcLWEAadcY6QUFT0S8NceNKYzp1KiCZtkJIy6RQ5SaVxPzRqd3iMsahUf5sfnG8N1UQSNQ==", + "dev": true, + "optional": true }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "lightningcss-linux-arm-gnueabihf": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.21.7.tgz", + "integrity": "sha512-biSRUDZNx7vubWP1jArw/qqfZKPGpkV/qzunasZzxmqijbZ43sW9faDQYxWNcxPWljJJdF/qs6qcurYFovWtrQ==", "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } + "optional": true }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "lightningcss-linux-arm64-gnu": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.21.7.tgz", + "integrity": "sha512-PENY8QekqL9TG3AY/A7rkUBb5ymefGxea7Oe7+x7Hbw4Bz4Hpj5cec5OoMypMqFbURPmpi0fTWx4vSWUPzpDcA==", "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } + "optional": true }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true + "lightningcss-linux-arm64-musl": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.21.7.tgz", + "integrity": "sha512-pfOipKvA/0X1OjRaZt3870vnV9UGBSjayIqHh0fGx/+aRz3O0MVFHE/60P2UWXpM3YGJEw/hMWtNkrFwqOge8A==", + "dev": true, + "optional": true }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "lightningcss-linux-x64-gnu": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.21.7.tgz", + "integrity": "sha512-dgcsis4TAA7s0ia4f31QHX+G4PWPwxk+wJaEQLaV0NdJs09O5hHoA8DpLEr8nrvc/tsRTyVNBP1rDtgzySjpXg==", "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } + "optional": true }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "lightningcss-linux-x64-musl": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.21.7.tgz", + "integrity": "sha512-A+9dXpxld3p4Cd6fxev2eqEvaauYtrgNpXV3t7ioCJy30Oj9nYiNGwiGusM+4MJVcEpUPGUGiuAqY4sWilRDwA==", + "dev": true, + "optional": true + }, + "lightningcss-win32-x64-msvc": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.21.7.tgz", + "integrity": "sha512-07/8vogEq+C/mF99pdMhh/f19/xreq8N9Ca6AWeVHZIdODyF/pt6KdKSCWDZWIn+3CUxI8gCJWuUWyOc3xymvw==", + "dev": true, + "optional": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "lmdb": { + "version": "2.7.11", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.7.11.tgz", + "integrity": "sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "@lmdb/lmdb-darwin-arm64": "2.7.11", + "@lmdb/lmdb-darwin-x64": "2.7.11", + "@lmdb/lmdb-linux-arm": "2.7.11", + "@lmdb/lmdb-linux-arm64": "2.7.11", + "@lmdb/lmdb-linux-x64": "2.7.11", + "@lmdb/lmdb-win32-x64": "2.7.11", + "msgpackr": "1.8.5", + "node-addon-api": "^4.3.0", + "node-gyp-build-optional-packages": "5.0.6", + "ordered-binary": "^1.4.0", + "weak-lru-cache": "^1.2.2" }, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "msgpackr": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", + "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", + "dev": true, + "requires": { + "msgpackr-extract": "^3.0.1" + } + }, + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", "dev": true } } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "requires": { - "lodash": "^4.17.19" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" + "p-locate": "^5.0.0" } }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "js-tokens": "^3.0.0 || ^4.0.0" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "yallist": "^4.0.0" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true, - "requires": { - "glob": "^7.1.3" - } + "optional": true, + "peer": true }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, - "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "tslib": "^1.9.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "ret": "~0.1.10" + "brace-expansion": "^1.1.7" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "msgpackr": { + "version": "1.9.9", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.9.tgz", + "integrity": "sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==", "dev": true, "requires": { - "xmlchars": "^2.1.1" + "msgpackr-extract": "^3.0.2" } }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "msgpackr-extract": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", + "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", "dev": true, + "optional": true, "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", + "node-gyp-build-optional-packages": "5.0.7" + }, + "dependencies": { + "node-gyp-build-optional-packages": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", + "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", + "dev": true, + "optional": true + } } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } + "node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", + "dev": true }, - "serialize-to-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", - "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", + "node-gyp-build-optional-packages": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.6.tgz", + "integrity": "sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==", "dev": true }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } + "node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "path-key": "^4.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } }, - "setprototypeof": { + "nullthrows": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "mimic-fn": "^4.0.0" } }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "ordered-binary": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", + "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==", "dev": true }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } + "yocto-queue": "^0.1.0" } }, - "skmeans": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", - "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "parcel": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.9.3.tgz", + "integrity": "sha512-2GTVocFkwblV/TIg9AmT7TI2fO4xdWkyN8aFUEVtiVNWt96GTR3FgQyHFValfCbcj1k9Xf962Ws2hYXYUr9k1Q==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "@parcel/config-default": "2.9.3", + "@parcel/core": "2.9.3", + "@parcel/diagnostic": "2.9.3", + "@parcel/events": "2.9.3", + "@parcel/fs": "2.9.3", + "@parcel/logger": "2.9.3", + "@parcel/package-manager": "2.9.3", + "@parcel/reporter-cli": "2.9.3", + "@parcel/reporter-dev-server": "2.9.3", + "@parcel/reporter-tracer": "2.9.3", + "@parcel/utils": "2.9.3", + "chalk": "^4.1.0", + "commander": "^7.0.0", + "get-port": "^4.2.0" }, "dependencies": { "ansi-styles": { @@ -19103,6 +11056,16 @@ "color-convert": "^2.0.1" } }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -19117,922 +11080,735 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "has-flag": "^4.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pixi.js-legacy": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/pixi.js-legacy/-/pixi.js-legacy-6.5.5.tgz", + "integrity": "sha512-l343BwQ+t3VOHUqNZCHBa0n/eNBhTiBtJOQJTRg0a2hK1jsJ7dV63FKgEuL8siGrKf7MnNXUTe2iYzOQulPMTg==", + "requires": { + "@pixi/canvas-display": "6.5.5", + "@pixi/canvas-extract": "6.5.5", + "@pixi/canvas-graphics": "6.5.5", + "@pixi/canvas-mesh": "6.5.5", + "@pixi/canvas-particle-container": "6.5.5", + "@pixi/canvas-prepare": "6.5.5", + "@pixi/canvas-renderer": "6.5.5", + "@pixi/canvas-sprite": "6.5.5", + "@pixi/canvas-sprite-tiling": "6.5.5", + "@pixi/canvas-text": "6.5.5", + "pixi.js": "6.5.5" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, + "pixi.js": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-6.5.5.tgz", + "integrity": "sha512-SfvUFl0RNnuELbU4IschzWGPSP1yRidEffQlbHnsXY1xvaCE7MG5snQzlufzAyiyiwRID1I5plSKtVjNvZfk9Q==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@pixi/accessibility": "6.5.5", + "@pixi/app": "6.5.5", + "@pixi/compressed-textures": "6.5.5", + "@pixi/constants": "6.5.5", + "@pixi/core": "6.5.5", + "@pixi/display": "6.5.5", + "@pixi/extensions": "6.5.5", + "@pixi/extract": "6.5.5", + "@pixi/filter-alpha": "6.5.5", + "@pixi/filter-blur": "6.5.5", + "@pixi/filter-color-matrix": "6.5.5", + "@pixi/filter-displacement": "6.5.5", + "@pixi/filter-fxaa": "6.5.5", + "@pixi/filter-noise": "6.5.5", + "@pixi/graphics": "6.5.5", + "@pixi/interaction": "6.5.5", + "@pixi/loaders": "6.5.5", + "@pixi/math": "6.5.5", + "@pixi/mesh": "6.5.5", + "@pixi/mesh-extras": "6.5.5", + "@pixi/mixin-cache-as-bitmap": "6.5.5", + "@pixi/mixin-get-child-by-name": "6.5.5", + "@pixi/mixin-get-global-position": "6.5.5", + "@pixi/particle-container": "6.5.5", + "@pixi/polyfill": "6.5.5", + "@pixi/prepare": "6.5.5", + "@pixi/runner": "6.5.5", + "@pixi/settings": "6.5.5", + "@pixi/sprite": "6.5.5", + "@pixi/sprite-animated": "6.5.5", + "@pixi/sprite-tiling": "6.5.5", + "@pixi/spritesheet": "6.5.5", + "@pixi/text": "6.5.5", + "@pixi/text-bitmap": "6.5.5", + "@pixi/ticker": "6.5.5", + "@pixi/utils": "6.5.5" } } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", "dev": true, "requires": { - "kind-of": "^3.2.0" + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "htmlparser2": "^7.1.1" } } } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "posthtml-parser": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", "dev": true, "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "htmlparser2": "^7.1.1" } }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "is-json": "^2.0.1" } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "requires": { - "extend-shallow": "^3.0.0" + "fast-diff": "^1.1.2" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true }, - "srcset": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.1.tgz", - "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ==", + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", - "dev": true, - "requires": { - "escodegen": "^1.11.1" - }, - "dependencies": { - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - } - } + "raf-schd": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", + "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==", + "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" } }, - "static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", "dev": true, "requires": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" } }, - "stats.js": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", - "integrity": "sha1-scPcRtlEmLV4t/05hbgaznExzH0=", + "react-error-overlay": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", "dev": true }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "react-refresh": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", "dev": true }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "react-resize-detector": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-5.2.0.tgz", + "integrity": "sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A==", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "lodash": "^4.17.20", + "prop-types": "^15.7.2", + "raf-schd": "^4.0.2", + "resize-observer-polyfill": "^1.5.1" } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, - "string.prototype.trimstart": { + "reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "glob": "^7.1.3" } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "execa": "^5.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" } }, - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "mimic-fn": "^2.1.0" } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true } } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "queue-microtask": "^1.2.2" } }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "table": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.6.tgz", - "integrity": "sha512-OInCtPmDNieVBkVFi6C8RwU2S2H0h8mF3e3TQK4nreaUNCpooQUkI+A/KuEkm5FawfhWIfNqG+qfelVVR+V00g==", + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } + "tslib": "^1.9.0" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dev": true, "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "shebang-regex": "^3.0.0" } }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "skmeans": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", + "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==", "dev": true }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "optional": true, + "peer": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "dev": true + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha1-scPcRtlEmLV4t/05hbgaznExzH0=", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "safe-buffer": "~5.1.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "ansi-regex": "^5.0.1" } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "has-flag": "^3.0.0" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "svgo": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", "dev": true, + "optional": true, + "peer": true, "requires": { - "punycode": "^2.1.0" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" } }, - "ts-loader": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", - "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", "dev": true, "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" }, "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, - "typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", "dev": true }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" + "is-number": "^7.0.0" } }, - "uncss": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", - "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, - "requires": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "dependencies": { - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "postcss": { - "version": "7.0.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", - "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", - "dev": true, - "requires": { - "nanocolors": "^0.2.2", - "source-map": "^0.6.1" - } - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true + "requires": {} }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "ts-loader": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", + "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" } }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, - "unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "dev": true, - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "prelude-ls": "^1.2.1" } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } + "escalade": "^3.1.1", + "picocolors": "^1.0.0" } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + } } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -20049,208 +11825,43 @@ } } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", "dev": true }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "xxhash-wasm": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", + "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", "dev": true }, "yallist": { @@ -20258,6 +11869,12 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 8697b5a8..53267ea7 100644 --- a/package.json +++ b/package.json @@ -2,66 +2,72 @@ "name": "@sayari/trellis", "version": "0.6.0", "description": "High-performance network visualization library, rendering to WebGL as well as other targets", - "main": "./index.js", - "types": "./index.d.ts", + "source": "src/index.ts", + "main": "./dist/main.js", + "module": "./dist/module.js", + "types": "./dist/types.d.ts", "scripts": { + "clean": "rm -rf dist && rm -rf .parcel-cache", + "format": "prettier . --write", "test": "echo \"Error: no test specified\" && exit 1", + "typecheck": "tsc --noEmit", "lint": "eslint \"src/**/*.ts\"", "lint:fix": "eslint \"src/**/**.{ts,tsx}\" --fix", "perf": "parcel perf/index.html", "build:tsc": "tsc --project ./tsconfig.json", - "build:umd": "parcel build src/index.umd.ts --out-file dist/index.umd.min.js --global trellis", - "build": "rm -rf ./dist/ && npm run build:tsc && npm run build:umd && npm run docs:build", - "examples:dev": "parcel examples/index.html", - "docs:dev": "parcel docs-src/index.html", - "docs:build": "rm -rf ./docs/ && parcel build docs-src/index.html --out-dir docs/ --public-url https://sayari-analytics.github.io/trellis/ && cp ./docs-src/assets/og-image.png ./docs/" + "build": "npm run clean && npm run build:tsc && parcel build", + "examples:dev": "npm run clean && parcel examples/index.html", + "docs:dev": "npm run clean && parcel docs-src/index.html", + "docs:build": "rm -rf ./docs/ && parcel build ./docs-src/index.html --dist-dir docs/ --public-url https://sayari-analytics.github.io/trellis/ && cp ./docs-src/assets/og-image.png ./docs/" }, "author": "James Conkling jameslaneconkling.github.io", "license": "ISC", "dependencies": { "@pixi/unsafe-eval": "^6.5.5", "d3-color": "^3.1.0", - "d3-force": "^2.0.1", - "d3-hierarchy": "^2.0.0", - "d3-interpolate": "^1.4.0", + "d3-force": "^3.0.0", + "d3-hierarchy": "^3.1.2", + "d3-interpolate": "^3.0.1", "fontfaceobserver": "^2.1.0", "pixi.js-legacy": "^6.5.5" }, "devDependencies": { + "@parcel/packager-ts": "^2.9.3", + "@parcel/transformer-typescript-tsc": "^2.9.3", + "@parcel/transformer-typescript-types": "^2.9.3", "@turf/clusters-kmeans": "^6.3.0", - "@types/d3-color": "^1.2.2", - "@types/d3-force": "^1.2.1", - "@types/d3-hierarchy": "^2.0.0", - "@types/d3-interpolate": "^1.3.1", - "@types/d3-scale": "^2.2.0", - "@types/d3-scale-chromatic": "^1.5.0", + "@types/d3-color": "^3.1.0", + "@types/d3-force": "^3.0.5", + "@types/d3-hierarchy": "^3.1.3", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.4", + "@types/d3-scale-chromatic": "^3.0.0", "@types/fontfaceobserver": "0.0.6", "@types/react": "^16.9.34", "@types/react-dom": "^16.9.8", "@types/react-resize-detector": "^5.0.0", - "@types/stats": "^0.16.30", - "@typescript-eslint/eslint-plugin": "^4.11.1", - "@typescript-eslint/parser": "^4.11.1", - "d3-scale": "^3.2.1", - "d3-scale-chromatic": "^1.5.0", - "eslint": "^7.17.0", - "parcel-bundler": "^1.12.4", + "@types/stats.js": "^0.17.0", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "d3-scale": "^4.0.2", + "d3-scale-chromatic": "^3.0.0", + "eslint": "^8.49.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0", + "parcel": "^2.9.3", + "prettier": "^3.0.3", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", "react": "^16.13.1", "react-dom": "^16.13.1", "react-resize-detector": "^5.2.0", "rxjs": "^6.5.5", "stats.js": "^0.17.0", "ts-loader": "^6.2.2", - "typescript": "^4.9.3" + "typescript": "^5.2.2" }, - "keywords": [ - "graph", - "network", - "infovis", - "visualization", - "react", - "webgl" - ], + "keywords": ["graph", "network", "infovis", "visualization", "react", "webgl"], "peerDependencies": { "react": ">=16.0" }, diff --git a/perf/index.html b/perf/index.html index 9acadea3..bb724a8c 100644 --- a/perf/index.html +++ b/perf/index.html @@ -1,19 +1,19 @@ - - - Graph - - - - - - + + + Graph + + + + + + diff --git a/perf/webWorker/index.html b/perf/webWorker/index.html index e281286f..d66cb942 100644 --- a/perf/webWorker/index.html +++ b/perf/webWorker/index.html @@ -1,22 +1,22 @@ - - - Graph - - - - -
    - - + + + Graph + + + + +
    + + diff --git a/perf/webWorker/index.ts b/perf/webWorker/index.ts index a98303ee..9840d836 100644 --- a/perf/webWorker/index.ts +++ b/perf/webWorker/index.ts @@ -4,7 +4,6 @@ // import { map, mergeMap, tap, take } from 'rxjs/operators' // import { LayoutOptions } from '../../src/simulation' - // const nodes = Object.values(graphData.nodes) // .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_2` }))) // .concat(Object.values(graphData.nodes).map((node) => ({ ...node, id: `${node.id}_3` }))) @@ -31,7 +30,6 @@ // label: field.replace(/_/g, ' '), // })) - // const layout = (graph: Graph) => ( // graphData$: Observable<{ nodes: Node[], edges: Edge[], options?: Partial }> // ) => { @@ -48,11 +46,9 @@ // ) // } - // const NODES_PER_TICK = 50 // const COUNT = Math.ceil(nodes.length / NODES_PER_TICK) - // console.time('Initialize Graph') // const graph = new Graph() // console.timeEnd('Initialize Graph') diff --git a/src/bindings/native/download.ts b/src/bindings/native/download.ts index 36118acd..f0565e2e 100644 --- a/src/bindings/native/download.ts +++ b/src/bindings/native/download.ts @@ -8,7 +8,6 @@ export type Options = { onClick?: () => Promise } - const DEFAULT_TOP = '20px' const DEFAULT_LEFT = '20px' const DEFAULT_BG = '#fff' @@ -19,7 +18,6 @@ const DEFAULT_COLOR = '#666' // const DEFAULT_COLOR_HOVER_SELECTED = '#222' // const DEFAULT_DISABLED = '#aaa' - const styleButton = (button: HTMLButtonElement) => { button.style.border = '1px solid #aaa' button.style.borderRadius = '4px' @@ -37,7 +35,6 @@ const styleButton = (button: HTMLButtonElement) => { return button } - export const Control = ({ container }: { container: HTMLDivElement }) => { const controlContainer = document.createElement('div') controlContainer.style.position = 'absolute' @@ -47,10 +44,10 @@ export const Control = ({ container }: { container: HTMLDivElement }) => { download.textContent = 'd' download.setAttribute('aria-label', 'Download') download.setAttribute('title', 'Download') - download.onmouseenter = () => download.style.background = DEFAULT_BG_HOVER - download.onmouseleave = () => download.style.background = DEFAULT_BG - download.onfocus = () => download.style.boxShadow = '0px 0px 0px 1px #aaa inset' - download.onblur = () => download.style.boxShadow = 'none' + download.onmouseenter = () => (download.style.background = DEFAULT_BG_HOVER) + download.onmouseleave = () => (download.style.background = DEFAULT_BG) + download.onfocus = () => (download.style.boxShadow = '0px 0px 0px 1px #aaa inset') + download.onblur = () => (download.style.boxShadow = 'none') download.onpointerdown = () => { download.style.background = DEFAULT_BG download.style.color = DEFAULT_COLOR @@ -60,7 +57,6 @@ export const Control = ({ container }: { container: HTMLDivElement }) => { container.style.position = 'relative' container.appendChild(controlContainer) - return (options: Options) => { controlContainer.style.display = 'block' controlContainer.className = options.className ?? 'download-container' diff --git a/src/bindings/native/selection.ts b/src/bindings/native/selection.ts index 3969c16c..180c3d48 100644 --- a/src/bindings/native/selection.ts +++ b/src/bindings/native/selection.ts @@ -1,6 +1,5 @@ import { ViewportDragDecelerateEvent, ViewportDragEvent, ViewportPointerEvent } from '../../renderers/webgl' - const DEFAULT_TOP = '100px' const DEFAULT_LEFT = '20px' const DEFAULT_BG = '#fff' @@ -10,9 +9,7 @@ const DEFAULT_BG_HOVER_SELECTED = '#ccc' const DEFAULT_COLOR = '#666' const DEFAULT_COLOR_SELECTED = '#222' - -export type SelectionChangeEvent = { type: 'selectionChange', x: number, y: number, radius: number } - +export type SelectionChangeEvent = { type: 'selectionChange'; x: number; y: number; radius: number } export type Options = Partial<{ className: string @@ -26,7 +23,6 @@ export type Options = Partial<{ onViewportPointerUp: (event: ViewportPointerEvent) => void }> - const styleButton = (button: HTMLButtonElement) => { button.style.border = '1px solid #aaa' button.style.borderRadius = '4px' @@ -44,7 +40,6 @@ const styleButton = (button: HTMLButtonElement) => { return button } - export const Control = ({ container }: { container: HTMLDivElement }) => { let select = false let selectionStartX: number | undefined @@ -58,10 +53,10 @@ export const Control = ({ container }: { container: HTMLDivElement }) => { toggleSelection.textContent = '●' toggleSelection.setAttribute('aria-label', 'Select') toggleSelection.setAttribute('title', 'Select') - toggleSelection.onmouseenter = () => toggleSelection.style.background = select ? DEFAULT_BG_HOVER_SELECTED : DEFAULT_BG_HOVER - toggleSelection.onmouseleave = () => toggleSelection.style.background = select ? DEFAULT_BG_SELECTED : DEFAULT_BG - toggleSelection.onfocus = () => toggleSelection.style.boxShadow = '0px 0px 0px 1px #aaa inset' - toggleSelection.onblur = () => toggleSelection.style.boxShadow = 'none' + toggleSelection.onmouseenter = () => (toggleSelection.style.background = select ? DEFAULT_BG_HOVER_SELECTED : DEFAULT_BG_HOVER) + toggleSelection.onmouseleave = () => (toggleSelection.style.background = select ? DEFAULT_BG_SELECTED : DEFAULT_BG) + toggleSelection.onfocus = () => (toggleSelection.style.boxShadow = '0px 0px 0px 1px #aaa inset') + toggleSelection.onblur = () => (toggleSelection.style.boxShadow = 'none') const toggleButtonPointerDown = () => { if (select) { select = false @@ -131,7 +126,7 @@ export const Control = ({ container }: { container: HTMLDivElement }) => { toggleButtonPointerDown() } options.onViewportPointerUp?.(event) - }, + } } } } diff --git a/src/bindings/native/zoom.ts b/src/bindings/native/zoom.ts index 67391834..02be98c3 100644 --- a/src/bindings/native/zoom.ts +++ b/src/bindings/native/zoom.ts @@ -12,11 +12,9 @@ export type ViewportChangeOptions = Partial<{ padding: number }> - const DEFAULT_TOP = '20px' const DEFAULT_LEFT = '20px' - const styleButton = (button: HTMLButtonElement) => { button.style.border = '1px solid #aaa' button.style.background = '#fff' @@ -29,18 +27,16 @@ const styleButton = (button: HTMLButtonElement) => { button.style.boxSizing = 'border-box' button.style.fontWeight = 'bold' button.style.color = '#666' - button.onmouseenter = () => button.style.background = '#eee' - button.onmouseleave = () => button.style.background = '#fff' - button.onfocus = () => button.style.boxShadow = '0px 0px 0px 1px #aaa inset' - button.onblur = () => button.style.boxShadow = 'none' + button.onmouseenter = () => (button.style.background = '#eee') + button.onmouseleave = () => (button.style.background = '#fff') + button.onfocus = () => (button.style.boxShadow = '0px 0px 0px 1px #aaa inset') + button.onblur = () => (button.style.boxShadow = 'none') return button } - export const clampZoom = (min: number, max: number, zoom: number) => Math.max(min, Math.min(max, zoom)) - /** * TODO * - disable on min/max zoom @@ -91,7 +87,6 @@ export const Control = ({ container }: { container: HTMLDivElement }) => { controlContainer.style.left = DEFAULT_LEFT } - zoomIn.onpointerdown = options.onZoomIn ?? null zoomOut.onpointerdown = options.onZoomOut ?? null } diff --git a/src/bindings/react/button.ts b/src/bindings/react/button.ts index 8fdb45c1..51bae3f0 100644 --- a/src/bindings/react/button.ts +++ b/src/bindings/react/button.ts @@ -1,6 +1,5 @@ import { createElement, FunctionComponent, useCallback, useState } from 'react' - export type Props = { selected?: boolean disabled?: boolean @@ -9,7 +8,6 @@ export type Props = { onClick?: () => void } - const STYLE = { border: '1px solid #aaa', borderRadius: '4px', @@ -24,91 +22,94 @@ const STYLE = { fontWeight: 'bold', color: '#666', marginLeft: '12px', - marginBottom: '12px', + marginBottom: '12px' } const HOVER_STYLE = { - background: '#eee', + background: '#eee' } const FOCUS_STYLE = { - boxShadow: '0px 0px 0px 1px #aaa inset', + boxShadow: '0px 0px 0px 1px #aaa inset' } const SELECTED_STYLE = { background: '#ccc', - color: '#222', + color: '#222' } const SELECTED_HOVER_FOCUS_STYLE = { background: '#eee', color: '#222', - boxShadow: '0px 0px 0px 1px #aaa inset', + boxShadow: '0px 0px 0px 1px #aaa inset' } const SELECTED_HOVER_STYLE = { background: '#eee', - color: '#222', + color: '#222' } const SELECTED_FOCUS_STYLE = { background: '#ccc', color: '#222', - boxShadow: '0px 0px 0px 1px #aaa inset', + boxShadow: '0px 0px 0px 1px #aaa inset' } const HOVER_FOCUS_STYLE = { background: '#eee', - boxShadow: '0px 0px 0px 1px #aaa inset', + boxShadow: '0px 0px 0px 1px #aaa inset' } const DISABLED_STYLE = { background: '#eee', - color: '#aaa', + color: '#aaa' } - // TODO - memoize style computation const buttonStyle = (disabled?: boolean, selected?: boolean, hover?: boolean, focus?: boolean, group?: 'top' | 'middle' | 'bottom') => { - const _STYLE = group === undefined ? ( - STYLE - ) : group === 'top' ? { - ...STYLE, - borderBottomLeftRadius: '0', - borderBottomRightRadius: '0', - marginBottom: '0', - borderBottom: '0', - } : group === 'middle' ? { - ...STYLE, - borderRadius: '0', - marginBottom: '0', - borderBottom: '0', - } : { - ...STYLE, - borderTopLeftRadius: '0', - borderTopRightRadius: '0', - } - - return disabled ? ( - { ..._STYLE, ...DISABLED_STYLE } - ) : selected && hover && focus ? ( - { ..._STYLE, ...SELECTED_HOVER_FOCUS_STYLE } - ) : selected && hover ? ( - { ..._STYLE, ...SELECTED_HOVER_STYLE } - ) : selected && focus ? ( - { ..._STYLE, ...SELECTED_FOCUS_STYLE } - ) : hover && focus ? ( - { ..._STYLE, ...HOVER_FOCUS_STYLE } - ) : selected ? ( - { ..._STYLE, ...SELECTED_STYLE } - ) : hover ? ( - { ..._STYLE, ...HOVER_STYLE } - ) : focus ? ( - { ..._STYLE, ...FOCUS_STYLE} - ) : _STYLE + const _STYLE = + group === undefined + ? STYLE + : group === 'top' + ? { + ...STYLE, + borderBottomLeftRadius: '0', + borderBottomRightRadius: '0', + marginBottom: '0', + borderBottom: '0' + } + : group === 'middle' + ? { + ...STYLE, + borderRadius: '0', + marginBottom: '0', + borderBottom: '0' + } + : { + ...STYLE, + borderTopLeftRadius: '0', + borderTopRightRadius: '0' + } + + return disabled + ? { ..._STYLE, ...DISABLED_STYLE } + : selected && hover && focus + ? { ..._STYLE, ...SELECTED_HOVER_FOCUS_STYLE } + : selected && hover + ? { ..._STYLE, ...SELECTED_HOVER_STYLE } + : selected && focus + ? { ..._STYLE, ...SELECTED_FOCUS_STYLE } + : hover && focus + ? { ..._STYLE, ...HOVER_FOCUS_STYLE } + : selected + ? { ..._STYLE, ...SELECTED_STYLE } + : hover + ? { ..._STYLE, ...HOVER_STYLE } + : focus + ? { ..._STYLE, ...FOCUS_STYLE } + : _STYLE } - export const Button: FunctionComponent = (props) => { const [hover, setHover] = useState(false) const [focus, setFocus] = useState(false) @@ -118,14 +119,18 @@ export const Button: FunctionComponent = (props) => { const onFocus = useCallback(() => setFocus(true), []) const onBlur = useCallback(() => setFocus(false), []) - return createElement('button', { - style: buttonStyle(props.disabled, props.selected, hover, focus, props.group), - 'aria-label': props.title, - title: props.title, - onClick: props.onClick, - onMouseEnter, - onMouseLeave, - onFocus, - onBlur, - }, props.children) + return createElement( + 'button', + { + style: buttonStyle(props.disabled, props.selected, hover, focus, props.group), + 'aria-label': props.title, + title: props.title, + onClick: props.onClick, + onMouseEnter, + onMouseLeave, + onFocus, + onBlur + }, + props.children + ) } diff --git a/src/bindings/react/buttonGroup.ts b/src/bindings/react/buttonGroup.ts index 32af736c..96b1b32d 100644 --- a/src/bindings/react/buttonGroup.ts +++ b/src/bindings/react/buttonGroup.ts @@ -1,7 +1,6 @@ import { createElement, Fragment, FunctionComponent, ReactNode } from 'react' import { Button } from './button' - export type Props = { children: { selected?: boolean @@ -12,22 +11,23 @@ export type Props = { }[] } - export const ButtonGroup: FunctionComponent = (props) => { - return createElement(Fragment, {}, props.children.map(({ selected, disabled, title, onClick, body }, idx) => ( - createElement(Button, { - key: idx, - group: props.children.length === 0 ? ( - undefined - ) : idx === 0 ? ( - 'top' - ) : idx === props.children.length - 1 ? ( - 'bottom' - ) : 'middle', - selected, - disabled, - title, - onClick, - }, body) - ))) + return createElement( + Fragment, + {}, + props.children.map(({ selected, disabled, title, onClick, body }, idx) => + createElement( + Button, + { + key: idx, + group: props.children.length === 0 ? undefined : idx === 0 ? 'top' : idx === props.children.length - 1 ? 'bottom' : 'middle', + selected, + disabled, + title, + onClick + }, + body + ) + ) + ) } diff --git a/src/bindings/react/renderer.ts b/src/bindings/react/renderer.ts index ffa12ad9..c84eb586 100644 --- a/src/bindings/react/renderer.ts +++ b/src/bindings/react/renderer.ts @@ -1,26 +1,21 @@ import { createElement, useRef, useEffect } from 'react' import { Renderer as PixiRenderer, Options } from '../../renderers/webgl' -import { Node, Edge, Annotation } from '../..' - - -export type Props = - Partial> & - { - nodes: N[] - edges: E[] - annotations?: Annotation[], - debug?: { logPerformance?: boolean, stats?: Stats } - } - +import { Node, Edge, Annotation } from '../../trellis' +import Stats from 'stats.js' + +export type Props = Partial> & { + nodes: N[] + edges: E[] + annotations?: Annotation[] + debug?: { logPerformance?: boolean; stats?: Stats } +} const defaultNodesEqual = (prev: N[], current: N[]) => prev === current const defaultEdgesEqual = (prev: E[], current: E[]) => prev === current - export const Renderer = (props: Props) => { - const ref = useRef(null) - const renderer = useRef<(graph: { nodes: N[], edges: E[], annotations?: Annotation[], options?: Partial> }) => void>() + const renderer = useRef<(graph: { nodes: N[]; edges: E[]; annotations?: Annotation[]; options?: Partial> }) => void>() useEffect(() => { const _renderer = PixiRenderer({ container: ref.current!, debug: props.debug }) diff --git a/src/bindings/react/selection.ts b/src/bindings/react/selection.ts index 47f0253d..602a5d14 100644 --- a/src/bindings/react/selection.ts +++ b/src/bindings/react/selection.ts @@ -1,9 +1,15 @@ import { ReactNode, useCallback, useEffect, useRef, useState } from 'react' import { ViewportDragDecelerateEvent, ViewportDragEvent } from '../../renderers/webgl' -import { Annotation, Node } from '../..' - - -export type SelectionChangeEvent = { type: 'selectionChange', selection: Set, altKey: boolean, ctrlKey: boolean, metaKey: boolean, shiftKey: boolean } +import { Annotation, Node } from '../../trellis' + +export type SelectionChangeEvent = { + type: 'selectionChange' + selection: Set + altKey: boolean + ctrlKey: boolean + metaKey: boolean + shiftKey: boolean +} export type Props = { nodes: N[] @@ -29,7 +35,6 @@ export type ChildProps = { onViewportDragEnd: (event: ViewportDragEvent | ViewportDragDecelerateEvent) => void } - function setsAreEqual(a: Set, b: Set) { if (a.size !== b.size) { return false @@ -44,19 +49,23 @@ function setsAreEqual(a: Set, b: Set) { return true } - export const Selection = (props: Props) => { - const [state, setState] = useState<{ select: boolean cursor?: string - annotation?: { type: 'rectangle', x: number, y: number, width: number, height: number } - | { type: 'circle', x: number, y: number, radius: number } + annotation?: + | { type: 'rectangle'; x: number; y: number; width: number; height: number } + | { type: 'circle'; x: number; y: number; radius: number } }>({ select: false }) const _state = useRef(state) _state.current = state - const _keys = useRef<{ altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean }>({}) + const _keys = useRef<{ + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean + }>({}) const _selection = useRef>(new Set()) @@ -86,89 +95,103 @@ export const Selection = (props: Props) => { const toggleSelect = useCallback(() => setState((state) => ({ ...state, select: !state.select })), []) - const onViewportDragStart = useCallback((event: ViewportDragEvent) => { - if (_state.current.select) { - setState({ - select: true, - cursor: 'copy', - annotation: _props.current.shape === 'circle' ? - { type: 'circle', x: event.x, y: event.y, radius: 0 } : - { type: 'rectangle', x: event.x, y: event.y, width: 0, height: 0 }, - }) - } - - props.onViewportDragStart?.(event) - }, [props.onViewportDragStart]) - - const onViewportDrag = useCallback((event: ViewportDragEvent | ViewportDragDecelerateEvent) => { - if (_state.current.select && _state.current.annotation && event.type === 'viewportDrag') { - const selection = new Set() - - if (_props.current.shape === 'circle') { - const radius = Math.hypot(event.x - _state.current.annotation.x, event.y - _state.current.annotation.y) - + const onViewportDragStart = useCallback( + (event: ViewportDragEvent) => { + if (_state.current.select) { setState({ select: true, cursor: 'copy', - annotation: { type: 'circle', x: _state.current.annotation.x, y: _state.current.annotation.y, radius }, + annotation: + _props.current.shape === 'circle' + ? { type: 'circle', x: event.x, y: event.y, radius: 0 } + : { type: 'rectangle', x: event.x, y: event.y, width: 0, height: 0 } }) + } - for (const node of _props.current.nodes ?? []) { - if (Math.hypot((node.x ?? 0) - _state.current.annotation.x, (node.y ?? 0) - _state.current.annotation.y) <= radius) { - selection.add(node.id) + props.onViewportDragStart?.(event) + }, + [props.onViewportDragStart] + ) + + const onViewportDrag = useCallback( + (event: ViewportDragEvent | ViewportDragDecelerateEvent) => { + if (_state.current.select && _state.current.annotation && event.type === 'viewportDrag') { + const selection = new Set() + + if (_props.current.shape === 'circle') { + const radius = Math.hypot(event.x - _state.current.annotation.x, event.y - _state.current.annotation.y) + + setState({ + select: true, + cursor: 'copy', + annotation: { + type: 'circle', + x: _state.current.annotation.x, + y: _state.current.annotation.y, + radius + } + }) + + for (const node of _props.current.nodes ?? []) { + if (Math.hypot((node.x ?? 0) - _state.current.annotation.x, (node.y ?? 0) - _state.current.annotation.y) <= radius) { + selection.add(node.id) + } + } + } else { + const x1 = _state.current.annotation.x + const x2 = event.x + const y1 = _state.current.annotation.y + const y2 = event.y + const width = x2 - x1 + const height = y2 - y1 + + setState({ + select: true, + cursor: 'copy', + annotation: { type: 'rectangle', x: x1, y: y1, width, height } + }) + + for (const node of _props.current.nodes ?? []) { + const x = node.x ?? 0 + const y = node.y ?? 0 + + if (((x > x1 && x < x2) || (x > x2 && x < x1)) && ((y > y1 && y < y2) || (y > y2 && y < y1))) { + selection.add(node.id) + } } } - } else { - const x1 = _state.current.annotation.x - const x2 = event.x - const y1 = _state.current.annotation.y - const y2 = event.y - const width = x2 - x1 - const height = y2 - y1 - setState({ - select: true, - cursor: 'copy', - annotation: { type: 'rectangle', x: x1, y: y1, width, height }, - }) - - for (const node of _props.current.nodes ?? []) { - const x = node.x ?? 0 - const y = node.y ?? 0 - - if (((x > x1 && x < x2) || (x > x2 && x < x1)) && ((y > y1 && y < y2) || (y > y2 && y < y1))) { - selection.add(node.id) - } + if (!setsAreEqual(_selection.current, selection)) { + _selection.current = selection + + props.onSelection?.({ + type: 'selectionChange', + selection, + altKey: _keys.current.altKey ?? false, + ctrlKey: _keys.current.ctrlKey ?? false, + metaKey: _keys.current.metaKey ?? false, + shiftKey: _keys.current.shiftKey ?? false + }) } + } else { + props.onViewportDrag?.(event) } - - if (!setsAreEqual(_selection.current, selection)) { - _selection.current = selection - - props.onSelection?.({ - type: 'selectionChange', - selection, - altKey: _keys.current.altKey ?? false, - ctrlKey: _keys.current.ctrlKey ?? false, - metaKey: _keys.current.metaKey ?? false, - shiftKey: _keys.current.shiftKey ?? false, - }) + }, + [props.onSelection, props.onViewportDrag] + ) + + const onViewportDragEnd = useCallback( + (event: ViewportDragEvent | ViewportDragDecelerateEvent) => { + _selection.current = new Set() + if (_props.current.enableOnShift !== false && _keys.current.shiftKey) { + setState({ select: true }) + } else { + setState({ select: false }) } - } else { - props.onViewportDrag?.(event) - } - }, [props.onSelection, props.onViewportDrag]) - - const onViewportDragEnd = useCallback((event: ViewportDragEvent | ViewportDragDecelerateEvent) => { - _selection.current = new Set() - if (_props.current.enableOnShift !== false && _keys.current.shiftKey) { - setState({ select: true }) - } else { - setState({ select: false }) - } - props.onViewportDragEnd?.(event) - }, [props.onViewportDragEnd]) - + props.onViewportDragEnd?.(event) + }, + [props.onViewportDragEnd] + ) return props.children({ select: state.select, @@ -177,33 +200,38 @@ export const Selection = (props: Props) => { onViewportDrag, onViewportDragEnd, cursor: state.cursor, - annotation: state.annotation?.type === 'circle' ? { - type: 'circle', - id: 'selection', - x: state.annotation.x, - y: state.annotation.y, - radius: state.annotation.radius, - style: { - backgroundColor: props.color ?? '#eee', - stroke: { - color: props.strokeColor ?? '#ccc', - width: props.strokeWidth ?? 2 - } - } - } : state.annotation?.type === 'rectangle' ? { - type: 'rectangle', - id: 'selection', - x: state.annotation.x, - y: state.annotation.y, - width: state.annotation.width, - height: state.annotation.height, - style: { - backgroundColor: props.color ?? '#eee', - stroke: { - color: props.strokeColor ?? '#ccc', - width: props.strokeWidth ?? 2 - } - } - } : undefined, + annotation: + state.annotation?.type === 'circle' + ? { + type: 'circle', + id: 'selection', + x: state.annotation.x, + y: state.annotation.y, + radius: state.annotation.radius, + style: { + backgroundColor: props.color ?? '#eee', + stroke: { + color: props.strokeColor ?? '#ccc', + width: props.strokeWidth ?? 2 + } + } + } + : state.annotation?.type === 'rectangle' + ? { + type: 'rectangle', + id: 'selection', + x: state.annotation.x, + y: state.annotation.y, + width: state.annotation.width, + height: state.annotation.height, + style: { + backgroundColor: props.color ?? '#eee', + stroke: { + color: props.strokeColor ?? '#ccc', + width: props.strokeWidth ?? 2 + } + } + } + : undefined }) as unknown as JSX.Element } diff --git a/src/bindings/react/zoom.ts b/src/bindings/react/zoom.ts index f38096e3..07fb7193 100644 --- a/src/bindings/react/zoom.ts +++ b/src/bindings/react/zoom.ts @@ -1,30 +1,27 @@ import { createElement, FunctionComponent } from 'react' import { ButtonGroup } from './buttonGroup' - export type Props = { onZoomIn?: () => void onZoomOut?: () => void } - export const clampZoom = (min: number, max: number, zoom: number) => Math.max(min, Math.min(max, zoom)) - // TODO - memoize, disable on min/max zoom export const Zoom: FunctionComponent = (props) => { - - return ( - createElement(ButtonGroup, { - children: [{ + return createElement(ButtonGroup, { + children: [ + { body: '+', title: 'Zoom In', onClick: props.onZoomIn - }, { + }, + { body: '-', title: 'Zoom Out', onClick: props.onZoomOut - }] - }) - ) + } + ] + }) } diff --git a/src/index.ts b/src/index.ts index f95a93f6..e33461bb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,415 +1,33 @@ -export type Node = { - id: string - radius: number - x?: number - y?: number - fx?: number - fy?: number - label?: string - style?: NodeStyle - subgraph?: { - nodes: Node[] - edges: Edge[] - options?: {} +import * as Cluster from './layout/cluster' +import * as Force from './layout/force' +import * as Hierarchy from './layout/hierarchy' +import * as Collide from './layout/collide' +import * as Components from './layout/components' +import * as Fisheye from './layout/fisheye' +import * as WebGL from './renderers/webgl' +import * as ReactWebGLBindings from './bindings/react/renderer' +import * as ReactSelectionBindings from './bindings/react/selection' +import * as ReactZoomBindings from './bindings/react/zoom' +import * as NativeDownloadBindings from './bindings/native/download' +import * as NativeSelectionBindings from './bindings/native/selection' +import * as NativeZoomBindings from './bindings/native/zoom' +import * as Image from './renderers/image' + +export * from './trellis' + +export const layout = { Cluster, Force, Hierarchy, Fisheye, Collide, Components } + +export const renderers = { WebGL, Image } + +export const bindings = { + react: { + Renderer: ReactWebGLBindings, + Selection: ReactSelectionBindings, + Zoom: ReactZoomBindings + }, + native: { + Download: NativeDownloadBindings, + Selection: NativeSelectionBindings, + Zoom: NativeZoomBindings } } - -export type Edge = { - id: string - source: string - target: string - label?: string - style?: EdgeStyle -} - -export type TextIcon = { - type: 'textIcon' - family: string - text: string - color: string - size: number -} - -export type ImageIcon = { - type: 'imageIcon' - url: string - scale?: number - offsetX?: number - offsetY?: number -} - -type LabelStyle = Partial<{ - color: string - fontFamily: string - fontSize: number - wordWrap: number - background: string - backgroundOpacity: number -}> - -export type NodeStyle = { - color?: string - icon?: TextIcon | ImageIcon - stroke?: { - color?: string - width?: number - }[] - badge?: { - position: number - radius?: number - color?: string - stroke?: string - strokeWidth?: number - icon?: TextIcon | ImageIcon - }[] - label?: LabelStyle -} - -export type EdgeStyle = { - width?: number - stroke?: string - strokeOpacity?: number - arrow?: 'forward' | 'reverse' | 'both' | 'none' - label?: LabelStyle -} - -export type CircleAnnotation = { - type: 'circle' - id: string - x: number - y: number - radius: number - style: { - backgroundColor: string - stroke: { - color: string - width: number - } - } -} - -export type RectangleAnnotation = { - type: 'rectangle' - id: string - x: number - y: number - width: number - height: number - resize?: boolean - style: { - backgroundColor: string - stroke: { - color: string - width: number - } - } -} - -export type TextAnnotation = { - type: 'text' - id: string - x: number - y: number - width: number - height: number - content: string - resize?: boolean - style: Partial<{ - backgroundColor: string - padding: number - stroke: { - color: string - width: number - } - text: Partial<{ - fontName: string - fontSize: number - fontWeight: - | 'normal' - | 'bold' - | 'bolder' - | 'lighter' - | '100' - | '200' - | '300' - | '400' - | '500' - | '600' - | '700' - | '800' - | '900' - fontStyle: 'normal' | 'italic' | 'oblique' - weight: string - color: string - align: 'left' | 'center' | 'right' | 'justify' - letterSpacing: number - lineSpacing: number - maxWidth: number - }> - }> -} - -export type Annotation = CircleAnnotation | RectangleAnnotation | TextAnnotation - -export type Bounds = { - left: number - top: number - right: number - bottom: number -} - -export type Dimensions = { width: number; height: number } - -export type Viewport = { x: number; y: number; zoom: number } - -export const getSelectionBounds = ( - elements: (Node | Annotation)[], - padding: number = 0 -): Bounds => { - let left = 0 - let top = 0 - let right = 0 - let bottom = 0 - - for (const el of elements) { - if ('radius' in el) { - const elementLeft = (el.x ?? 0) - el.radius - const elementTop = (el.y ?? 0) - el.radius - const elementRight = (el.x ?? 0) + el.radius - const elementBottom = (el.y ?? 0) + el.radius - if (elementLeft < left) left = elementLeft - if (elementTop < top) top = elementTop - if (elementRight > right) right = elementRight - if (elementBottom > bottom) bottom = elementBottom - } else if ('width' in el && 'height' in el) { - const elementLeft = el.x ?? 0 - const elementTop = el.y ?? 0 - const elementRight = (el.x ?? 0) + el.width - const elementBottom = (el.x ?? 0) + el.height - if (elementLeft < left) left = elementLeft - if (elementTop < top) top = elementTop - if (elementRight > right) right = elementRight - if (elementBottom > bottom) bottom = elementBottom - } - } - - return { - left: left - padding, - top: top - padding, - right: right + padding, - bottom: bottom + padding, - } -} - -export const mergeBounds = ( - a: Bounds, - b: Bounds, - padding: number = 0 -): Bounds => { - return { - left: Math.min(a.left, b.left) - padding, - top: Math.min(a.top, b.top) - padding, - right: Math.max(a.right, b.right) + padding, - bottom: Math.max(a.bottom, b.bottom) + padding, - } -} - -export const viewportToBounds = ( - { x, y, zoom }: Viewport, - { width, height }: Dimensions -): Bounds => { - const xOffset = width / 2 / zoom - const yOffset = height / 2 / zoom - return { - left: -(x + xOffset), - top: -(y + yOffset), - right: -(x - xOffset), - bottom: -(y - yOffset), - } -} - -export const boundsToViewport = ( - { left, top, right, bottom }: Bounds, - { width, height }: Dimensions -): Viewport => { - const targetWidth = right - left - const targetHeight = bottom - top - const x = targetWidth / 2 - right - const y = targetHeight / 2 - bottom - - if (targetWidth / targetHeight > width / height) { - // fit to width - return { x, y, zoom: width / targetWidth } - } else { - // fit to height - return { x, y, zoom: height / targetHeight } - } -} - -export const boundsToDimensions = ( - { left, top, right, bottom }: Bounds, - zoom: number -): Dimensions => { - return { - width: (right - left) / zoom, - height: (bottom - top) / zoom, - } -} - -export const clamp = (min: number, max: number, value: number) => - Math.max(min, Math.min(max, value)) - -export const equals = (a: T, b: T) => { - if (a === b) { - return true - } else if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) { - return false - } - - for (let i = 0; i < a.length; i++) { - if (!equals(a[i], b[i])) { - return false - } - } - - return true - } else if (typeof a === 'object' && typeof b === 'object') { - if (Object.keys(a ?? {}).length !== Object.keys(b ?? {}).length) { - return false - } - - for (const key in a) { - if (!equals(a[key], b?.[key])) { - return false - } - } - - return true - } - - return false -} - -export const connectedComponents = (graph: { - nodes: N[] - edges: E[] -}): { nodes: N[]; edges: E[] }[] => { - const adjacencyList: Record> = {} - const nodes: Record = {} - const visited = new Set() - const components: { nodes: Record; edges: Record }[] = - [] - - for (const edge of graph.edges) { - if (adjacencyList[edge.source] === undefined) { - adjacencyList[edge.source] = {} - } - if (adjacencyList[edge.source][edge.target] === undefined) { - adjacencyList[edge.source][edge.target] = [] - } - if (adjacencyList[edge.target] === undefined) { - adjacencyList[edge.target] = {} - } - if (adjacencyList[edge.target][edge.source] === undefined) { - adjacencyList[edge.target][edge.source] = [] - } - - adjacencyList[edge.source][edge.target].push(edge) - adjacencyList[edge.target][edge.source].push(edge) - } - - for (const node of graph.nodes) { - nodes[node.id] = node - } - - for (const { id } of graph.nodes) { - if (visited.has(id)) { - continue - } - - visited.add(id) - const toVisit = [id] - const component: { nodes: Record; edges: Record } = { - nodes: { [id]: nodes[id] }, - edges: {}, - } - - while (toVisit.length > 0) { - const next = adjacencyList[toVisit.pop()!] - if (next === undefined) { - continue - } - - for (const [adjacentNode, edges] of Object.entries(next)) { - for (const edge of edges) { - component.edges[edge.id] = edge - } - component.nodes[adjacentNode] = nodes[adjacentNode] - - if (!visited.has(adjacentNode)) { - toVisit.push(adjacentNode) - visited.add(adjacentNode) - } - } - } - - components.push(component) - } - - return components.map(({ nodes, edges }) => ({ - nodes: Object.values(nodes), - edges: Object.values(edges), - })) -} - -export function* bfs( - predicate: (node: N) => boolean, - graph: { nodes: N[]; edges: E[] } -): Generator { - const adjacencyList: Record = {} - const nodes: Record = {} - const visited = new Set() - const queue = [graph.nodes[0].id] - - for (const edge of graph.edges) { - if (adjacencyList[edge.source] === undefined) { - adjacencyList[edge.source] = [] - } - if (adjacencyList[edge.target] === undefined) { - adjacencyList[edge.target] = [] - } - - adjacencyList[edge.source].push(edge.target) - adjacencyList[edge.target].push(edge.source) - } - - for (const node of graph.nodes) { - nodes[node.id] = node - } - - while (queue.length > 0) { - const node = queue.shift()! - - if (visited.has(node)) { - continue - } - - visited.add(node) - - if (predicate(nodes[node])) { - yield nodes[node] - } - - if (adjacencyList[node]) { - for (const adjacentNode of adjacencyList[node]) { - if (!visited.has(adjacentNode)) { - queue.push(adjacentNode) - } - } - } - } -} - -export const distance = (x0: number, y0: number, x1: number, y1: number) => - Math.hypot(x1 - x0, y1 - y0) diff --git a/src/index.umd.ts b/src/index.umd.ts deleted file mode 100644 index fb003fc6..00000000 --- a/src/index.umd.ts +++ /dev/null @@ -1,39 +0,0 @@ -import * as Cluster from './layout/cluster' -import * as Force from './layout/force' -import * as Hierarchy from './layout/hierarchy' -import * as Collide from './layout/collide' -import * as Components from './layout/components' -import * as Fisheye from './layout/fisheye' -import * as WebGL from './renderers/webgl' -import * as ReactWebGLBindings from './bindings/react/renderer' -import * as ReactSelectionBindings from './bindings/react/selection' -import * as ReactZoomBindings from './bindings/react/zoom' -import * as NativeDownloadBindings from './bindings/native/download' -import * as NativeSelectionBindings from './bindings/native/selection' -import * as NativeZoomBindings from './bindings/native/zoom' -import * as Image from './renderers/image' - - -export { - getSelectionBounds, - mergeBounds, - viewportToBounds, - boundsToViewport, - boundsToDimensions, - clamp, - equals, - bfs, - distance -} from './' - - -export const layout = { Cluster, Force, Hierarchy, Fisheye, Collide, Components } - - -export const renderers = { WebGL, Image } - - -export const bindings = { - react: { Renderer: ReactWebGLBindings, Selection: ReactSelectionBindings, Zoom: ReactZoomBindings }, - native: { Download: NativeDownloadBindings, Selection: NativeSelectionBindings, Zoom: NativeZoomBindings }, -} diff --git a/src/layout/cluster/index.ts b/src/layout/cluster/index.ts index ae5e6efe..098027dd 100644 --- a/src/layout/cluster/index.ts +++ b/src/layout/cluster/index.ts @@ -1,16 +1,19 @@ import { pack, hierarchy } from 'd3-hierarchy' -import { Node } from '../../' - +import { Node } from '../../trellis' export const Layout = () => { return (nodes: N[]) => { const positions: Record = {} // TODO - is packSiblings a better fit here? - pack<{ id: string, radius: number }>() + pack<{ id: string; radius: number; children: { id: string; radius: number }[] }>() .padding(20) .radius((node) => node.data.radius)( - hierarchy({ id: '_root_', radius: 200, children: nodes.map(({ id, radius }) => ({ id, radius })) }) + hierarchy({ + id: '_root_', + radius: 200, + children: nodes.map(({ id, radius }) => ({ id, radius })) + }) ) .children?.forEach(({ x, y, data: { id } }) => { positions[id] = [x, y] diff --git a/src/layout/collide/index.ts b/src/layout/collide/index.ts index 5302f3f9..e300f5b0 100644 --- a/src/layout/collide/index.ts +++ b/src/layout/collide/index.ts @@ -1,13 +1,11 @@ import { forceCollide, forceSimulation, SimulationNodeDatum } from 'd3-force' -import { Node, Edge } from '../../' - +import { Node, Edge } from '../../trellis' export type Options = Partial<{ nodePadding: number tick: number }> - type SimulationNode = { id: string radius: number @@ -15,14 +13,18 @@ type SimulationNode = { const COLLIDE_LAYOUT_OPTIONS = { nodePadding: 8, - tick: 50, + tick: 50 } - export const Layout = () => { - return (graph: { nodes: N[], edges: E[], options?: Options }) => { + return (graph: { nodes: N[]; edges: E[]; options?: Options }) => { forceSimulation(graph.nodes) - .force('collide', forceCollide().radius(d => d.radius + (graph.options?.nodePadding ?? COLLIDE_LAYOUT_OPTIONS.nodePadding)).iterations(3)) + .force( + 'collide', + forceCollide() + .radius((d) => d.radius + (graph.options?.nodePadding ?? COLLIDE_LAYOUT_OPTIONS.nodePadding)) + .iterations(3) + ) .stop() .tick(graph.options?.tick ?? COLLIDE_LAYOUT_OPTIONS.tick) diff --git a/src/layout/components/index.ts b/src/layout/components/index.ts index 8ead4011..71709a67 100644 --- a/src/layout/components/index.ts +++ b/src/layout/components/index.ts @@ -1,17 +1,14 @@ import { packEnclose, packSiblings } from 'd3-hierarchy' -import { Node, Edge, connectedComponents } from '../../' - +import { Node, Edge, connectedComponents } from '../../trellis' export type Options = Partial<{ padding: number }> - const DEFAULT_PADDING = 18 - export const Layout = () => { - return (graph: { nodes: N[], edges: E[], options?: Options }) => { + return (graph: { nodes: N[]; edges: E[]; options?: Options }) => { const padding = graph.options?.padding ?? DEFAULT_PADDING const components = connectedComponents(graph).map(({ nodes, edges }) => { @@ -19,18 +16,21 @@ export const Layout = () => { return { x0: x, y0: y, r: r + padding, nodes, edges } }) - return packSiblings(components).reduce<{ nodes: N[], edges: E[] }>((graph, { x0, y0, x, y, nodes, edges }) => { - const xOffset = x0 - x - const yOffset = y0 - y - - nodes.forEach((node) => { - graph.nodes.push({ ...node, x: (node.x ?? 0) - xOffset, y: (node.y ?? 0) - yOffset }) - }) - edges.forEach((edge) => { - graph.edges.push(edge) - }) - - return graph - }, { nodes: [], edges: [] }) + return packSiblings(components).reduce<{ nodes: N[]; edges: E[] }>( + (graph, { x0, y0, x, y, nodes, edges }) => { + const xOffset = x0 - x + const yOffset = y0 - y + + nodes.forEach((node) => { + graph.nodes.push({ ...node, x: (node.x ?? 0) - xOffset, y: (node.y ?? 0) - yOffset }) + }) + edges.forEach((edge) => { + graph.edges.push(edge) + }) + + return graph + }, + { nodes: [], edges: [] } + ) } } diff --git a/src/layout/fisheye/index.ts b/src/layout/fisheye/index.ts index 2aff015e..a0830cd9 100644 --- a/src/layout/fisheye/index.ts +++ b/src/layout/fisheye/index.ts @@ -1,4 +1,4 @@ -import { Node } from '../..' +import { Node } from '../../trellis' export const Layout = () => { return (previousNodes: N[], nextNodes: N[]) => { @@ -32,8 +32,8 @@ export const Layout = () => { nodeX = node.x ?? 0 nodeY = node.y ?? 0 theta = Math.atan2(collapseNodeY - nodeY, collapseNodeX - nodeX) - node.x = node.fx ?? (nodeX + (Math.cos(theta) * radius)) - node.y = node.fy ?? (nodeY + (Math.sin(theta) * radius)) + node.x = node.fx ?? nodeX + Math.cos(theta) * radius + node.y = node.fy ?? nodeY + Math.sin(theta) * radius } } } @@ -55,8 +55,8 @@ export const Layout = () => { nodeX = node.x ?? 0 nodeY = node.y ?? 0 theta = Math.atan2(nodeY - expandNodeY, nodeX - expandNodeX) - node.x = node.fx ?? (nodeX + (Math.cos(theta) * radius)) - node.y = node.fy ?? (nodeY + (Math.sin(theta) * radius)) + node.x = node.fx ?? nodeX + Math.cos(theta) * radius + node.y = node.fy ?? nodeY + Math.sin(theta) * radius } } } diff --git a/src/layout/force/index.ts b/src/layout/force/index.ts index 0f09a9bd..b058a97a 100644 --- a/src/layout/force/index.ts +++ b/src/layout/force/index.ts @@ -1,8 +1,18 @@ /* eslint-disable no-useless-escape */ -import { forceSimulation, forceManyBody, forceCenter, forceLink, forceCollide, forceRadial, forceX, forceY, SimulationLinkDatum, SimulationNodeDatum } from 'd3-force' +import { + forceSimulation, + forceManyBody, + forceCenter, + forceLink, + forceCollide, + forceRadial, + forceX, + forceY, + SimulationLinkDatum, + SimulationNodeDatum +} from 'd3-force' import { Extend } from '../../types' -import { Node, Edge } from '../../' - +import { Node, Edge } from '../../trellis' export type Options = Partial<{ nodeStrength: number @@ -42,20 +52,18 @@ type LayoutEvent = { type LayoutResultEvent = { v: number - nodes: Extend[] + nodes: Extend[] } - export const LAYOUT_OPTIONS = { nodeStrength: -600, linkDistance: 180, linkStrength: undefined, centerStrength: 0.02, nodePadding: 8, - tick: 300, + tick: 300 } - const d3ForceScript = ` // https://d3js.org/d3-dispatch/ v1.0.5 Copyright 2018 Mike Bostock !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(n.d3=n.d3||{})}(this,function(n){"use strict";var e={value:function(){}};function t(){for(var n,e=0,t=arguments.length,o={};e=0&&(e=n.slice(t+1),n=n.slice(0,t)),n&&!r.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:e}})),a=-1,u=l.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a0)for(var t,r,o=new Array(t),i=0;iv+c||ey+c||il.index){var h=v-o.x-o.vx,g=y-o.y-o.vy,s=h*h+g*g;sn.r&&(n.r=n[t].r)}function v(){if(r){var t,i,u=r.length;for(e=new Array(u),t=0;t[l(n,t,e),n]));for(i=0,o=new Array(a);i=c)){(n.data!==r||n.next)&&(0===l&&(d+=(l=u())*l),0===h&&(d+=(h=u())*h),d1?(null==r?c.delete(n):c.set(n,s(r)),t):c.get(n)},find:function(t,r,e){var i,u,o,f,a,c=0,l=n.length;for(null==e?e=1/0:e*=e,c=0;c1?(h.on(n,r),t):h.on(n)}}},n.forceX=function(n){var t,r,e,u=i(.1);function o(n){for(var i,u=0,o=t.length;u { const layout = ({ nodes, @@ -78,8 +85,8 @@ const workerScript = (DEFAULT_OPTIONS: typeof LAYOUT_OPTIONS) => { linkStrength = DEFAULT_OPTIONS.linkStrength, centerStrength = DEFAULT_OPTIONS.centerStrength, nodePadding = DEFAULT_OPTIONS.nodePadding, - tick = DEFAULT_OPTIONS.tick, - } = DEFAULT_OPTIONS, + tick = DEFAULT_OPTIONS.tick + } = DEFAULT_OPTIONS }: LayoutEvent) => { /** * TODO - `forceCollide().radius(...)` should be `(node) => node.radius + node.totalStrokeWidth + this.nodePadding` @@ -92,21 +99,28 @@ const workerScript = (DEFAULT_OPTIONS: typeof LAYOUT_OPTIONS) => { */ d3.forceSimulation() .force('charge', d3.forceManyBody().distanceMax(4000).theta(0.5).strength(nodeStrength)) - .force('collision', d3.forceCollide().radius((node) => node.radius + nodePadding)) + .force( + 'collision', + d3.forceCollide().radius((node) => node.radius + nodePadding) + ) .force('x', d3.forceX(0).strength(centerStrength)) .force('y', d3.forceY(0).strength(centerStrength)) .force('center', d3.forceCenter()) .nodes(nodes) - .force('link', linkStrength === undefined ? - d3.forceLink>() - .id((node) => node.id) - .distance(linkDistance) - .links(edges) : - d3.forceLink>() - .id((node) => node.id) - .distance(linkDistance) - .strength(linkStrength) - .links(edges) + .force( + 'link', + linkStrength === undefined + ? d3 + .forceLink>() + .id((node) => node.id) + .distance(linkDistance) + .links(edges) + : d3 + .forceLink>() + .id((node) => node.id) + .distance(linkDistance) + .strength(linkStrength) + .links(edges) ) .stop() .tick(tick) @@ -133,9 +147,9 @@ const workerScript = (DEFAULT_OPTIONS: typeof LAYOUT_OPTIONS) => { } } - -const blob = new Blob([`${d3ForceScript}(${workerScript})(${JSON.stringify(LAYOUT_OPTIONS)})`], { type: 'application/javascript' }) - +const blob = new Blob([`${d3ForceScript}(${workerScript})(${JSON.stringify(LAYOUT_OPTIONS)})`], { + type: 'application/javascript' +}) /** * TODO - add debugging perf logs @@ -145,13 +159,18 @@ export const Layout = () => { const worker = new Worker(workerUrl) let v = 0 - const layout = (graph: { nodes: N[], edges: E[], options?: Options }) => { + const layout = (graph: { nodes: N[]; edges: E[]; options?: Options }) => { const edges = graph.edges const version = v++ - worker.postMessage({ nodes: graph.nodes, edges: graph.edges, options: graph.options, v: version } as LayoutEvent) + worker.postMessage({ + nodes: graph.nodes, + edges: graph.edges, + options: graph.options, + v: version + } as LayoutEvent) - return new Promise<{ nodes: Extend[], edges: E[] }>((resolve, reject) => { + return new Promise<{ nodes: Extend[]; edges: E[] }>((resolve, reject) => { const successHandler = ({ data }: Message>) => { if (data.v === version) { worker.removeEventListener('message', successHandler) diff --git a/src/layout/hierarchy/index.ts b/src/layout/hierarchy/index.ts index b592afd6..a68e2549 100644 --- a/src/layout/hierarchy/index.ts +++ b/src/layout/hierarchy/index.ts @@ -1,6 +1,5 @@ import { hierarchy, HierarchyPointNode, tree } from 'd3-hierarchy' -import { Node, Edge } from '../../' - +import { Node, Edge } from '../../trellis' export type Options = Partial<{ x: number @@ -12,14 +11,12 @@ export type Options = Partial<{ }> type Hierarchy = { - id: string, + id: string children: Hierarchy[] } - const DEFAULT_NODE_SIZE: [number, number] = [120, 240] - /** * utils */ @@ -65,7 +62,10 @@ const graphToBFSHierarchy = (edgeIndex: Record, id: string): H } } -const _hierarchyToGraph = (hierarchy: HierarchyPointNode, nodesById: Record | undefined>) => { +const _hierarchyToGraph = ( + hierarchy: HierarchyPointNode, + nodesById: Record | undefined> +) => { nodesById[hierarchy.data.id] = hierarchy if (hierarchy.children !== undefined) { @@ -80,7 +80,7 @@ const _hierarchyToGraph = (hierarchy: HierarchyPointNode, nodesById: const hierarchyToGraph = (hierarchy: HierarchyPointNode) => _hierarchyToGraph(hierarchy, {}) const containsSubgraphNode = (nodes: Node[], id: string): boolean => { - for(const node of nodes) { + for (const node of nodes) { if (node.id === id) return true if (node.subgraph !== undefined) { @@ -105,9 +105,8 @@ const findAncestor = (nodes: Node[], id: string): string | undefined => { return undefined } - export const Layout = () => { - return (rootId: string, graph: { nodes: N[], edges: E[], options?: Options }) => { + return (rootId: string, graph: { nodes: N[]; edges: E[]; options?: Options }) => { const edgeIndex = graph.edges.reduce>((edgeIndex, edge) => { if (edgeIndex[edge.source] === undefined) { edgeIndex[edge.source] = [] @@ -122,28 +121,23 @@ export const Layout = () => { return edgeIndex }, {}) - const root = edgeIndex[rootId] === undefined ? (findAncestor(graph.nodes, rootId) ?? rootId) : rootId + const root = edgeIndex[rootId] === undefined ? findAncestor(graph.nodes, rootId) ?? rootId : rootId if (edgeIndex[root] === undefined) { return { nodes: graph.nodes, edges: graph.edges } } - const layout = graph.options?.size !== undefined ? - tree().size(graph.options.size) : - tree().nodeSize(graph.options?.nodeSize ?? DEFAULT_NODE_SIZE) + const layout = + graph.options?.size !== undefined + ? tree().size(graph.options.size) + : tree().nodeSize(graph.options?.nodeSize ?? DEFAULT_NODE_SIZE) if (graph.options?.separation !== undefined) { layout.separation(graph.options.separation) } const positionedDataById = hierarchyToGraph( - layout( - hierarchy( - graph.options?.bfs !== false ? - graphToBFSHierarchy(edgeIndex, root) : - graphToDFSHierarchy(edgeIndex, root) - ) - ) + layout(hierarchy(graph.options?.bfs !== false ? graphToBFSHierarchy(edgeIndex, root) : graphToDFSHierarchy(edgeIndex, root))) ) // const positionedDataById = compose( @@ -159,19 +153,18 @@ export const Layout = () => { const xOffset = (graph.options?.x ?? 0) + (x ?? 0) const yOffset = (graph.options?.y ?? 0) - (y ?? 0) - return { edges: graph.edges, nodes: graph.nodes.map((node) => { const positionedNode = positionedDataById[node.id] - return positionedNode === undefined ? - node : - { - ...node, - x: positionedNode.x + xOffset, - y: positionedNode.y - yOffset, - } + return positionedNode === undefined + ? node + : { + ...node, + x: positionedNode.x + xOffset, + y: positionedNode.y - yOffset + } }) } } diff --git a/src/layout/radial/index.ts b/src/layout/radial/index.ts index b46f28f7..9af67b7f 100644 --- a/src/layout/radial/index.ts +++ b/src/layout/radial/index.ts @@ -1,6 +1,5 @@ import * as Hierarchy from '../hierarchy' -import { Node, Edge } from '../../' - +import { Node, Edge } from '../../trellis' export type Options = Partial<{ x: number @@ -11,23 +10,19 @@ export type Options = Partial<{ const TWO_PI = Math.PI * 2 - export const Layout = () => { const layout = Hierarchy.Layout() - return (root: string, graph: { nodes: N[], edges: E[], options?: Options }) => { - const { nodes, edges } = layout( - root, - { - nodes: graph.nodes, - edges: graph.edges, - options: { - bfs: graph.options?.bfs, - size: [TWO_PI, graph.options?.radius ?? 600], - separation: (a, b) => (a.parent == b.parent ? 1 : 2) / a.depth - } + return (root: string, graph: { nodes: N[]; edges: E[]; options?: Options }) => { + const { nodes, edges } = layout(root, { + nodes: graph.nodes, + edges: graph.edges, + options: { + bfs: graph.options?.bfs, + size: [TWO_PI, graph.options?.radius ?? 600], + separation: (a, b) => (a.parent == b.parent ? 1 : 2) / a.depth } - ) + }) return { nodes: nodes.map((node) => { @@ -37,10 +32,10 @@ export const Layout = () => { return { ...node, x: Math.cos(theta) * radius + (graph.options?.x ?? 0), - y: Math.sin(theta) * radius - (graph.options?.y ?? 0), + y: Math.sin(theta) * radius - (graph.options?.y ?? 0) } }), - edges, + edges } } } diff --git a/src/renderers/image/index.ts b/src/renderers/image/index.ts index 2cd99554..7c17d1c0 100644 --- a/src/renderers/image/index.ts +++ b/src/renderers/image/index.ts @@ -1,25 +1,20 @@ import * as WebGL from '../webgl' -import { Node, Edge, Annotation } from '../../' +import { Node, Edge, Annotation } from '../../trellis' export type Options = { - width?: number; - height?: number; - x?: number; - y?: number; - zoom?: number; - resolution?: number; - mimetype?: string; -}; + width?: number + height?: number + x?: number + y?: number + zoom?: number + resolution?: number + mimetype?: string +} export const Renderer = () => { - return (graph: { - nodes: N[]; - edges: E[]; - annotations?: Annotation[]; - options?: Options; - }) => { + return (graph: { nodes: N[]; edges: E[]; annotations?: Annotation[]; options?: Options }) => { const pixiRenderer = new WebGL.InternalRenderer({ - container: document.createElement('div'), + container: document.createElement('div') }) pixiRenderer.update({ ...graph, @@ -28,28 +23,21 @@ export const Renderer = () => { animateNodePosition: false, animateNodeRadius: false, animateViewportPosition: false, - animateViewportZoom: false, - }, + animateViewportZoom: false + } }) - return pixiRenderer - .base64(graph.options?.resolution, graph.options?.mimetype) - .then((dataURL) => { - pixiRenderer.delete() - return dataURL - }) + return pixiRenderer.base64(graph.options?.resolution, graph.options?.mimetype).then((dataURL) => { + pixiRenderer.delete() + return dataURL + }) } } export const BlobRenderer = () => { - return (graph: { - nodes: N[]; - edges: E[]; - annotations?: Annotation[]; - options?: Exclude; - }) => { + return (graph: { nodes: N[]; edges: E[]; annotations?: Annotation[]; options?: Exclude }) => { const pixiRenderer = new WebGL.InternalRenderer({ - container: document.createElement('div'), + container: document.createElement('div') }) pixiRenderer.update({ ...graph, @@ -58,8 +46,8 @@ export const BlobRenderer = () => { animateNodePosition: false, animateNodeRadius: false, animateViewportPosition: false, - animateViewportZoom: false, - }, + animateViewportZoom: false + } }) return pixiRenderer.blob(graph.options?.resolution).then((dataURL) => { diff --git a/src/renderers/webgl/Loader.ts b/src/renderers/webgl/Loader.ts index d9f9ec3e..1a11d170 100644 --- a/src/renderers/webgl/Loader.ts +++ b/src/renderers/webgl/Loader.ts @@ -2,7 +2,6 @@ import * as PIXI from 'pixi.js-legacy' import FontFaceObserver from 'fontfaceobserver' import { throttle } from '../../utils' - const warn = throttle((err) => console.warn(err), 0) /** @@ -22,20 +21,21 @@ const warn = throttle((err) => console.warn(err), 0) * const delay = new Promise((resolve) => setTimeout(() => resolve('done'), 1000)) * delay.then((message) => console.log(message)) */ -export const Async = (executor: (resolve: (result: T) => void) => void) => (onfulfilled: (result: T) => void) => { - let cancelled = false +export const Async = + (executor: (resolve: (result: T) => void) => void) => + (onfulfilled: (result: T) => void) => { + let cancelled = false - executor((result) => { - if (!cancelled) { - onfulfilled(result) - } - }) + executor((result) => { + if (!cancelled) { + onfulfilled(result) + } + }) - return () => { - cancelled = true + return () => { + cancelled = true + } } -} - export const FontLoader = () => { const fontCache: { [family: string]: boolean } = {} @@ -51,7 +51,7 @@ export const FontLoader = () => { loading.add(_loadId) return Async((resolve) => { - (document as any).fonts.load(`${weight} 1em ${family}`).then(() => { + ;(document as any).fonts.load(`${weight} 1em ${family}`).then(() => { fontCache[family] = true loading.delete(_loadId) resolve(family) @@ -82,7 +82,6 @@ export const FontLoader = () => { } } - export const ImageLoader = () => { const image_cache: { [url: string]: PIXI.Loader } = {} let loadId = 0 @@ -97,7 +96,6 @@ export const ImageLoader = () => { return Async((resolve) => { const _loadId = loadId++ loading.add(_loadId) - ;(image_cache[url] as PIXI.Loader).load(() => { loading.delete(_loadId) resolve(url) diff --git a/src/renderers/webgl/annotations/circle.ts b/src/renderers/webgl/annotations/circle.ts index 7be7e963..6084eaa2 100644 --- a/src/renderers/webgl/annotations/circle.ts +++ b/src/renderers/webgl/annotations/circle.ts @@ -1,11 +1,9 @@ import * as PIXI from 'pixi.js-legacy' import { InternalRenderer } from '..' -import { CircleAnnotation } from '../../..' +import { CircleAnnotation } from '../../../trellis' import { colorToNumber } from '../utils' - export class CircleAnnotationRenderer { - private circle: CircleAnnotation private renderer: InternalRenderer private circleGraphic = new PIXI.Graphics() @@ -36,7 +34,6 @@ export class CircleAnnotationRenderer { } } - // export const CircleAnnotationRenderer: AnnotationRendererConstructor = (renderer: InternalRenderer, annotation: CircleAnnotation) => { // return new InternalCircleAnnotationRenderer(renderer, annotation) // } diff --git a/src/renderers/webgl/annotations/index.ts b/src/renderers/webgl/annotations/index.ts index e1ef964f..ee1770a7 100644 --- a/src/renderers/webgl/annotations/index.ts +++ b/src/renderers/webgl/annotations/index.ts @@ -1,5 +1,4 @@ import { CircleAnnotationRenderer } from './circle' import { RectangleAnnotationRenderer } from './rectangle' -export type AnnotationRenderer = CircleAnnotationRenderer - | RectangleAnnotationRenderer +export type AnnotationRenderer = CircleAnnotationRenderer | RectangleAnnotationRenderer diff --git a/src/renderers/webgl/annotations/rectangle.ts b/src/renderers/webgl/annotations/rectangle.ts index 191f6d18..0f96b7b1 100644 --- a/src/renderers/webgl/annotations/rectangle.ts +++ b/src/renderers/webgl/annotations/rectangle.ts @@ -1,9 +1,8 @@ import * as PIXI from 'pixi.js-legacy' import { InternalRenderer } from '..' -import { RectangleAnnotation, TextAnnotation } from '../../..' +import { RectangleAnnotation, TextAnnotation } from '../../../trellis' import { clientPositionFromEvent, colorToNumber, pointerKeysFromEvent } from '../utils' - const DEFAULT_PADDING = 4 const MIN_WIDTH = 5 const MIN_HEIGHT = 5 @@ -19,16 +18,21 @@ type ResizeControl = { position: 'nw' | 'ne' | 'sw' | 'se' } -const getResizeControlOrigin = (hitBox: ResizeControl, rectOrigin: { x: number, y: number }, width: number, height: number): [x: number, y: number] | undefined => { - switch(hitBox.position) { - case 'nw' : - return [rectOrigin.x, rectOrigin.y] - case 'sw': - return [rectOrigin.x, rectOrigin.y + height] - case 'ne': - return [rectOrigin.x + width, rectOrigin.y] - case 'se': - return [rectOrigin.x + width, rectOrigin.y + height] +const getResizeControlOrigin = ( + hitBox: ResizeControl, + rectOrigin: { x: number; y: number }, + width: number, + height: number +): [x: number, y: number] | undefined => { + switch (hitBox.position) { + case 'nw': + return [rectOrigin.x, rectOrigin.y] + case 'sw': + return [rectOrigin.x, rectOrigin.y + height] + case 'ne': + return [rectOrigin.x + width, rectOrigin.y] + case 'se': + return [rectOrigin.x + width, rectOrigin.y + height] } } @@ -48,7 +52,6 @@ const getResizeControlOrigin = (hitBox: ResizeControl, rectOrigin: { x: number, // TODO: do we want pointerEnter/Leave events for the resize circles? export class RectangleAnnotationRenderer { - x: number y: number dirty = false @@ -67,7 +70,7 @@ export class RectangleAnnotationRenderer { { graphic: new PIXI.Graphics(), position: 'ne' }, { graphic: new PIXI.Graphics(), position: 'sw' }, { graphic: new PIXI.Graphics(), position: 'se' } - ] + ] private interaction: 'drag' | 'resize' | undefined private resizeClicked: ResizeControl | undefined @@ -91,7 +94,7 @@ export class RectangleAnnotationRenderer { this.resizeContainer.addChild(hitBox.graphic) hitBox.graphic.interactive = true hitBox.graphic.buttonMode = true - + hitBox.graphic .on('pointerdown', this.resizePointerDown(idx)) .on('pointerup', this.resizePointerUp(idx)) @@ -135,7 +138,6 @@ export class RectangleAnnotationRenderer { this.annotation = annotation - this.x = this.annotation.x this.y = this.annotation.y @@ -146,9 +148,8 @@ export class RectangleAnnotationRenderer { .drawRect(this.annotation.x, this.annotation.y, this.annotation.width, this.annotation.height) .endFill() - if (toggleResize || this.annotation.resize) { - if (this.annotation.resize) this.handleHitBoxes(false) + if (this.annotation.resize) this.handleHitBoxes(false) else this.handleHitBoxes(true) } @@ -175,16 +176,15 @@ export class RectangleAnnotationRenderer { leading: annotation.style.text?.lineSpacing ?? 0, wordWrap: true, //account for padding - wordWrapWidth: annotation.style.text?.maxWidth ?? annotation.width - (2 * padding) ?? 0, + wordWrapWidth: annotation.style.text?.maxWidth ?? annotation.width - 2 * padding ?? 0, breakWords: true, align: annotation.style.text?.align ?? 'left' }) - const metrics = PIXI.TextMetrics.measureText(annotation.content, style, true) - if (metrics.height > annotation.height - (2 * padding)) { - const numLines = Math.floor((annotation.height - (2 * padding)) / metrics.lineHeight) + if (metrics.height > annotation.height - 2 * padding) { + const numLines = Math.floor((annotation.height - 2 * padding) / metrics.lineHeight) text = metrics.lines .slice(0, numLines) // not sure about if I should join with the whitespace or not @@ -192,7 +192,6 @@ export class RectangleAnnotationRenderer { .slice(undefined, -3) .concat('...') } - this.textSprite.x = annotation.x + padding this.textSprite.y = annotation.y + padding @@ -206,7 +205,12 @@ export class RectangleAnnotationRenderer { private handleHitBoxes(hide: boolean) { this.resizeControls.forEach((hitBox) => { - const origin = getResizeControlOrigin(hitBox, { x: this.annotation.x, y: this.annotation.y }, this.annotation.width, this.annotation.height) + const origin = getResizeControlOrigin( + hitBox, + { x: this.annotation.x, y: this.annotation.y }, + this.annotation.width, + this.annotation.height + ) if (origin === undefined) return if (hide) { @@ -217,8 +221,8 @@ export class RectangleAnnotationRenderer { .beginFill(colorToNumber(this.annotation.style.backgroundColor ?? DEFAULT_FILL)) .lineStyle(this.annotation.style.stroke?.width ?? 1, colorToNumber(this.annotation.style.stroke?.color ?? DEFAULT_STROKE)) .drawCircle(origin[0], origin[1], RESIZE_RADIUS) - .endFill() - } + .endFill() + } }) return @@ -239,11 +243,18 @@ export class RectangleAnnotationRenderer { const { x, y } = this.renderer.root.toLocal(event.data.global) const client = clientPositionFromEvent(event.data.originalEvent) - this.renderer.onAnnotationPointerEnter?.({ type: 'annotationPointer', x, y, clientX: client.x, clientY: client.y, target: this.annotation, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.renderer.onAnnotationPointerEnter?.({ + type: 'annotationPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: this.annotation, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } private pointerDown = (event: PIXI.InteractionEvent) => { - if (this.doubleClickTimeout === undefined) { this.doubleClickTimeout = setTimeout(this.clearDoubleClick, 500) } else { @@ -259,7 +270,15 @@ export class RectangleAnnotationRenderer { const client = clientPositionFromEvent(event.data.originalEvent) this.moveOffsetX = x - this.x this.moveOffsetY = y - this.y - this.renderer.onAnnotationPointerDown?.({ type: 'annotationPointer', x, y, clientX: client.x, clientY: client.y, target: this.annotation, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.renderer.onAnnotationPointerDown?.({ + type: 'annotationPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: this.annotation, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } private pointerMove = (event: PIXI.InteractionEvent) => { @@ -285,7 +304,7 @@ export class RectangleAnnotationRenderer { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } else { this.renderer.onAnnotationDrag?.({ @@ -300,7 +319,7 @@ export class RectangleAnnotationRenderer { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } } @@ -334,16 +353,40 @@ export class RectangleAnnotationRenderer { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } else { - this.renderer.onAnnotationPointerUp?.({ type: 'annotationPointer', x, y, clientX: client.x, clientY: client.y, target: this.annotation, ...pointerKeysFromEvent(event.data.originalEvent) }) - this.renderer.onAnnotationClick?.({ type: 'annotationPointer', x, y, clientX: client.x, clientY: client.y, target: this.annotation, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.renderer.onAnnotationPointerUp?.({ + type: 'annotationPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: this.annotation, + ...pointerKeysFromEvent(event.data.originalEvent) + }) + this.renderer.onAnnotationClick?.({ + type: 'annotationPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: this.annotation, + ...pointerKeysFromEvent(event.data.originalEvent) + }) if (this.doubleClick) { this.doubleClick = false this.doubleClickTimeout = undefined - this.renderer.onAnnotationDoubleClick?.({ type: 'annotationPointer', x, y, clientX: client.x, clientY: client.y, target: this.annotation, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.renderer.onAnnotationDoubleClick?.({ + type: 'annotationPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: this.annotation, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } } } @@ -363,11 +406,18 @@ export class RectangleAnnotationRenderer { const { x, y } = this.renderer.root.toLocal(event.data.global) const client = clientPositionFromEvent(event.data.originalEvent) - this.renderer.onAnnotationPointerLeave?.({ type: 'annotationPointer', x, y, clientX: client.x, clientY: client.y, target: this.annotation, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.renderer.onAnnotationPointerLeave?.({ + type: 'annotationPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: this.annotation, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } private resizePointerDown = (hitBoxIdx: number) => (_: PIXI.InteractionEvent) => { - this.resizeClicked = this.resizeControls[hitBoxIdx] this.renderer.clickedAnnotation = this ;(this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager).on('pointermove', this.resizePointerMove(hitBoxIdx)) @@ -384,21 +434,26 @@ export class RectangleAnnotationRenderer { this.resizeClicked === undefined || this.resizeClicked.position !== this.resizeControls[hitBoxIdx].position || this.interaction === 'drag' - ) return + ) + return const { x, y } = this.renderer.root.toLocal(event.data.global) - + if (!this.renderer.dragging) { this.renderer.dragging = true this.interaction = 'resize' } const hitBox = this.resizeControls[hitBoxIdx] - const hitBoxOrigin = getResizeControlOrigin(hitBox, { x: this.annotation.x, y: this.annotation.y }, this.annotation.width, this.annotation.height) + const hitBoxOrigin = getResizeControlOrigin( + hitBox, + { x: this.annotation.x, y: this.annotation.y }, + this.annotation.width, + this.annotation.height + ) if (hitBoxOrigin === undefined) return // idk we need to have a safeguard in case something wonky happens - let newWidth = this.annotation.width let newHeight = this.annotation.height @@ -423,7 +478,6 @@ export class RectangleAnnotationRenderer { newX = x newY = y - newHeight - } else if (hitBox.position === 'ne') { const dx = x - hitBoxOrigin[0] const dy = hitBoxOrigin[1] - y @@ -433,7 +487,6 @@ export class RectangleAnnotationRenderer { newX = x - newWidth newY = y - } else if (hitBox.position === 'se') { const dx = x - hitBoxOrigin[0] const dy = y - hitBoxOrigin[1] @@ -442,7 +495,6 @@ export class RectangleAnnotationRenderer { newHeight = this.annotation.height + dy } - let minHeight = MIN_HEIGHT let minWidth = MIN_WIDTH @@ -457,21 +509,30 @@ export class RectangleAnnotationRenderer { leading: this.annotation.style.text?.lineSpacing ?? 0, wordWrap: true, //account for padding - wordWrapWidth: this.annotation.style.text?.maxWidth ?? this.annotation.width - (2 * (this.annotation.style.padding ?? DEFAULT_PADDING)) ?? 0, + wordWrapWidth: + this.annotation.style.text?.maxWidth ?? this.annotation.width - 2 * (this.annotation.style.padding ?? DEFAULT_PADDING) ?? 0, breakWords: true, align: this.annotation.style.text?.align ?? 'left' }) - - + const metrics = PIXI.TextMetrics.measureText(this.annotation.content, style, true) - - // for text annotations min width determined by multiplying the fontSize by 2 to account for the ellipsis + the padding - minWidth = (2 * metrics.fontProperties.fontSize) + (2 * (this.annotation.style.padding ?? DEFAULT_PADDING)) + + // for text annotations min width determined by multiplying the fontSize by 2 to account for the ellipsis + the padding + minWidth = 2 * metrics.fontProperties.fontSize + 2 * (this.annotation.style.padding ?? DEFAULT_PADDING) // for text annotations min height should be the lineHeight of 1 row of text + padding - minHeight = metrics.lineHeight + (2 * (this.annotation.style.padding ?? DEFAULT_PADDING)) + minHeight = metrics.lineHeight + 2 * (this.annotation.style.padding ?? DEFAULT_PADDING) } - this.renderer.onAnnotationResize?.({ type: 'annotationResize', position: hitBox.position, x: newWidth < minWidth ? this.annotation.x : newX, y: newHeight < minHeight ? this.annotation.y : newY, width: newWidth < minWidth ? this.annotation.width : newWidth, height: newHeight < minHeight ? this.annotation.height : newHeight, target: this.annotation, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.renderer.onAnnotationResize?.({ + type: 'annotationResize', + position: hitBox.position, + x: newWidth < minWidth ? this.annotation.x : newX, + y: newHeight < minHeight ? this.annotation.y : newY, + width: newWidth < minWidth ? this.annotation.width : newWidth, + height: newHeight < minHeight ? this.annotation.height : newHeight, + target: this.annotation, + ...pointerKeysFromEvent(event.data.originalEvent) + }) return } @@ -481,7 +542,6 @@ export class RectangleAnnotationRenderer { this.renderer.clickedAnnotation = undefined this.resizeClicked = undefined - ;(this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager).off('pointermove', this.resizePointerMove(hitBoxIdx)) this.renderer.zoomInteraction.resume() this.renderer.dragInteraction.resume() @@ -500,7 +560,6 @@ export class RectangleAnnotationRenderer { this.doubleClick = false } - delete() { this.renderer.annotationsBottomLayer.removeChild(this.annotationContainer) this.renderer.annotationsBottomLayer.removeChild(this.resizeContainer) diff --git a/src/renderers/webgl/edge.ts b/src/renderers/webgl/edge.ts index de427f85..db7a93ef 100644 --- a/src/renderers/webgl/edge.ts +++ b/src/renderers/webgl/edge.ts @@ -10,9 +10,9 @@ import { HALF_PI, THREE_HALF_PI, clientPositionFromEvent, - pointerKeysFromEvent, + pointerKeysFromEvent } from './utils' -import { Node, Edge, EdgeStyle } from '../..' +import { Node, Edge, EdgeStyle } from '../../trellis' import { ArrowSprite } from './sprites/arrowSprite' const LINE_HOVER_RADIUS = 4 @@ -127,21 +127,14 @@ export class EdgeRenderer { /** * Stroke */ - const stroke = - edge.style?.stroke === undefined - ? DEFAULT_EDGE_COLOR - : colorToNumber(edge.style?.stroke) + const stroke = edge.style?.stroke === undefined ? DEFAULT_EDGE_COLOR : colorToNumber(edge.style?.stroke) if (this.stroke !== stroke) { this.stroke = stroke if (this.arrow === 'forward' && this.forwardArrow !== undefined) { this.forwardArrow.tint = this.stroke } else if (this.arrow === 'reverse' && this.reverseArrow !== undefined) { this.reverseArrow.tint = this.stroke - } else if ( - this.arrow === 'both' && - this.forwardArrow !== undefined && - this.reverseArrow !== undefined - ) { + } else if (this.arrow === 'both' && this.forwardArrow !== undefined && this.reverseArrow !== undefined) { this.reverseArrow.tint = this.stroke this.forwardArrow.tint = this.stroke } @@ -157,11 +150,7 @@ export class EdgeRenderer { this.forwardArrow.alpha = this.strokeOpacity } else if (this.arrow === 'reverse' && this.reverseArrow !== undefined) { this.reverseArrow.alpha = this.strokeOpacity - } else if ( - this.arrow === 'both' && - this.forwardArrow !== undefined && - this.reverseArrow !== undefined - ) { + } else if (this.arrow === 'both' && this.forwardArrow !== undefined && this.reverseArrow !== undefined) { this.reverseArrow.alpha = this.strokeOpacity this.forwardArrow.alpha = this.strokeOpacity } @@ -170,10 +159,7 @@ export class EdgeRenderer { * Label */ const labelFamily = edge.style?.label?.fontFamily ?? DEFAULT_LABEL_FAMILY - const labelColor = - edge.style?.label?.color === undefined - ? DEFAULT_LABEL_COLOR - : colorToNumber(edge.style.label.color) + const labelColor = edge.style?.label?.color === undefined ? DEFAULT_LABEL_COLOR : colorToNumber(edge.style.label.color) const labelSize = edge.style?.label?.fontSize ?? DEFAULT_LABEL_SIZE const labelWordWrap = edge.style?.label?.wordWrap const labelBackground = edge.style?.label?.background @@ -219,7 +205,7 @@ export class EdgeRenderer { strokeThickness: 2.5 * 2.5, align: 'center', wordWrap: labelWordWrap !== undefined, - wordWrapWidth: labelWordWrap, + wordWrapWidth: labelWordWrap }) this.labelSprite.scale.set(0.4) @@ -230,9 +216,7 @@ export class EdgeRenderer { this.labelBackgroundSprite = new PIXI.Sprite(PIXI.Texture.WHITE) this.labelBackgroundSprite.width = this.labelSprite.width + 4 this.labelBackgroundSprite.height = this.labelSprite.height - this.labelBackgroundSprite.tint = colorToNumber( - this.labelBackground - ) + this.labelBackgroundSprite.tint = colorToNumber(this.labelBackground) this.labelBackgroundSprite.alpha = this.labelBackgroundOpacity ?? 1 this.labelBackgroundSprite.anchor.set(0.5, 0.5) this.labelContainer.addChild(this.labelBackgroundSprite) @@ -247,11 +231,9 @@ export class EdgeRenderer { * Curve * TODO - expose edge curve in style spec */ - const parallelEdges = - this.renderer.edgeIndex[this.edge.source][this.edge.target] + const parallelEdges = this.renderer.edgeIndex[this.edge.source][this.edge.target] // curve will be 0 for 1 self edge and negative for the rest, making it easy to render a single self edge - this.curve = - this.edge.source === this.edge.target ? 0 : parallelEdges.size - 1 + this.curve = this.edge.source === this.edge.target ? 0 : parallelEdges.size - 1 for (const edgeId of parallelEdges) { if (edgeId === this.edge.id) { break @@ -270,18 +252,8 @@ export class EdgeRenderer { targetContainer = this.renderer.nodesById[this.edge.target], sourceRadius = sourceContainer.radius + sourceContainer.strokeWidth, targetRadius = targetContainer.radius + targetContainer.strokeWidth, - theta = angle( - sourceContainer.x, - sourceContainer.y, - targetContainer.x, - targetContainer.y - ), - start = movePoint( - sourceContainer.x, - sourceContainer.y, - theta, - -sourceRadius - ), + theta = angle(sourceContainer.x, sourceContainer.y, targetContainer.x, targetContainer.y), + start = movePoint(sourceContainer.x, sourceContainer.y, theta, -sourceRadius), end = movePoint(targetContainer.x, targetContainer.y, theta, targetRadius) let center = midPoint(start[0], start[1], end[0], end[1]) @@ -298,38 +270,24 @@ export class EdgeRenderer { this.x1 = sourceContainer.x this.y1 = sourceContainer.y - this.renderer.edgesGraphic - .moveTo(this.x0, this.y0) - .lineStyle(this.width, this.stroke, this.strokeOpacity) - .drawShape(circle) + this.renderer.edgesGraphic.moveTo(this.x0, this.y0).lineStyle(this.width, this.stroke, this.strokeOpacity).drawShape(circle) this.labelContainer.x = center[0] - r this.labelContainer.y = center[1] if ((this.labelSprite?.width ?? 0) > 2 * r) { this.labelContainer.visible = false - if (this.labelBackgroundSprite) - this.labelBackgroundSprite.visible = false + if (this.labelBackgroundSprite) this.labelBackgroundSprite.visible = false } this.line.hitArea = circle } } else if (this.curve === 0) { const startArrowOffset = this.reverseArrow - ? movePoint( - sourceContainer.x, - sourceContainer.y, - theta, - -sourceRadius - ArrowSprite.ARROW_HEIGHT - ) + ? movePoint(sourceContainer.x, sourceContainer.y, theta, -sourceRadius - ArrowSprite.ARROW_HEIGHT) : start const endArrowOffset = this.forwardArrow - ? movePoint( - targetContainer.x, - targetContainer.y, - theta, - targetRadius + ArrowSprite.ARROW_HEIGHT - ) + ? movePoint(targetContainer.x, targetContainer.y, theta, targetRadius + ArrowSprite.ARROW_HEIGHT) : end /** * edge start/end is source/target node's center, offset by radius and, if rendered on edge source and/or target, arrow height @@ -340,15 +298,11 @@ export class EdgeRenderer { this.x1 = endArrowOffset[0] this.y1 = endArrowOffset[1] - this.renderer.edgesGraphic - .moveTo(this.x0, this.y0) - .lineStyle(this.width, this.stroke, this.strokeOpacity) - .lineTo(this.x1, this.y1) + this.renderer.edgesGraphic.moveTo(this.x0, this.y0).lineStyle(this.width, this.stroke, this.strokeOpacity).lineTo(this.x1, this.y1) this.labelContainer.x = center[0] this.labelContainer.y = center[1] - this.labelContainer.rotation = - theta > HALF_PI && theta < THREE_HALF_PI ? theta - Math.PI : theta + this.labelContainer.rotation = theta > HALF_PI && theta < THREE_HALF_PI ? theta - Math.PI : theta if (this.forwardArrow) { this.forwardArrow.x = end[0] @@ -387,107 +341,42 @@ export class EdgeRenderer { theta > TWO_PI || theta < 0 ? theta - HALF_PI : theta + HALF_PI, this.edge.source > this.edge.target ? this.curve * 10 : this.curve * -10 ) - const thetaCurveStart = angle( - sourceContainer.x, - sourceContainer.y, - this.curvePeak[0], - this.curvePeak[1] - ) - const thetaCurveEnd = angle( - this.curvePeak[0], - this.curvePeak[1], - targetContainer.x, - targetContainer.y - ) + const thetaCurveStart = angle(sourceContainer.x, sourceContainer.y, this.curvePeak[0], this.curvePeak[1]) + const thetaCurveEnd = angle(this.curvePeak[0], this.curvePeak[1], targetContainer.x, targetContainer.y) const curveStart = this.reverseArrow - ? movePoint( - sourceContainer.x, - sourceContainer.y, - thetaCurveStart, - -sourceRadius - ArrowSprite.ARROW_HEIGHT - ) - : movePoint( - sourceContainer.x, - sourceContainer.y, - thetaCurveStart, - -sourceRadius - ) + ? movePoint(sourceContainer.x, sourceContainer.y, thetaCurveStart, -sourceRadius - ArrowSprite.ARROW_HEIGHT) + : movePoint(sourceContainer.x, sourceContainer.y, thetaCurveStart, -sourceRadius) const curveEnd = this.forwardArrow - ? movePoint( - targetContainer.x, - targetContainer.y, - thetaCurveEnd, - targetRadius + ArrowSprite.ARROW_HEIGHT - ) - : movePoint( - targetContainer.x, - targetContainer.y, - thetaCurveEnd, - targetRadius - ) + ? movePoint(targetContainer.x, targetContainer.y, thetaCurveEnd, targetRadius + ArrowSprite.ARROW_HEIGHT) + : movePoint(targetContainer.x, targetContainer.y, thetaCurveEnd, targetRadius) this.x0 = curveStart[0] this.y0 = curveStart[1] this.x1 = curveEnd[0] this.y1 = curveEnd[1] const edgeLength = length(this.x0, this.y0, this.x1, this.y1) - this.curveControlPointA = movePoint( - this.curvePeak[0], - this.curvePeak[1], - theta, - edgeLength / 4 - ) - this.curveControlPointB = movePoint( - this.curvePeak[0], - this.curvePeak[1], - theta, - edgeLength / -4 - ) + this.curveControlPointA = movePoint(this.curvePeak[0], this.curvePeak[1], theta, edgeLength / 4) + this.curveControlPointB = movePoint(this.curvePeak[0], this.curvePeak[1], theta, edgeLength / -4) this.renderer.edgesGraphic .moveTo(this.x0, this.y0) .lineStyle(this.width, this.stroke, this.strokeOpacity) - .bezierCurveTo( - this.x0, - this.y0, - this.curveControlPointA[0], - this.curveControlPointA[1], - this.curvePeak[0], - this.curvePeak[1] - ) - .bezierCurveTo( - this.curveControlPointB[0], - this.curveControlPointB[1], - this.x1, - this.y1, - this.x1, - this.y1 - ) + .bezierCurveTo(this.x0, this.y0, this.curveControlPointA[0], this.curveControlPointA[1], this.curvePeak[0], this.curvePeak[1]) + .bezierCurveTo(this.curveControlPointB[0], this.curveControlPointB[1], this.x1, this.y1, this.x1, this.y1) this.labelContainer.x = this.curvePeak[0] this.labelContainer.y = this.curvePeak[1] - this.labelContainer.rotation = - theta > HALF_PI && theta < THREE_HALF_PI ? theta - Math.PI : theta + this.labelContainer.rotation = theta > HALF_PI && theta < THREE_HALF_PI ? theta - Math.PI : theta if (this.forwardArrow) { - const [x, y] = movePoint( - targetContainer.x, - targetContainer.y, - thetaCurveEnd, - targetRadius - ) + const [x, y] = movePoint(targetContainer.x, targetContainer.y, thetaCurveEnd, targetRadius) this.forwardArrow.x = x this.forwardArrow.y = y this.forwardArrow.rotation = thetaCurveEnd } if (this.reverseArrow) { - const [x, y] = movePoint( - sourceContainer.x, - sourceContainer.y, - thetaCurveStart, - -sourceRadius - ) + const [x, y] = movePoint(sourceContainer.x, sourceContainer.y, thetaCurveStart, -sourceRadius) this.reverseArrow.x = x this.reverseArrow.y = y this.reverseArrow.rotation = thetaCurveStart + Math.PI @@ -498,20 +387,10 @@ export class EdgeRenderer { */ const hoverRadius = Math.max(this.width, LINE_HOVER_RADIUS) const hitAreaVertices: number[] = new Array(12) - let point = movePoint( - this.x0, - this.y0, - thetaCurveStart + HALF_PI, - hoverRadius - ) + let point = movePoint(this.x0, this.y0, thetaCurveStart + HALF_PI, hoverRadius) hitAreaVertices[0] = point[0] hitAreaVertices[1] = point[1] - point = movePoint( - this.curvePeak[0], - this.curvePeak[1], - theta + HALF_PI, - hoverRadius - ) + point = movePoint(this.curvePeak[0], this.curvePeak[1], theta + HALF_PI, hoverRadius) hitAreaVertices[2] = point[0] hitAreaVertices[3] = point[1] point = movePoint(this.x1, this.y1, thetaCurveEnd + HALF_PI, hoverRadius) @@ -520,20 +399,10 @@ export class EdgeRenderer { point = movePoint(this.x1, this.y1, theta + HALF_PI, -hoverRadius) hitAreaVertices[6] = point[0] hitAreaVertices[7] = point[1] - point = movePoint( - this.curvePeak[0], - this.curvePeak[1], - theta + HALF_PI, - -hoverRadius - ) + point = movePoint(this.curvePeak[0], this.curvePeak[1], theta + HALF_PI, -hoverRadius) hitAreaVertices[8] = point[0] hitAreaVertices[9] = point[1] - point = movePoint( - this.x0, - this.y0, - thetaCurveStart + HALF_PI, - -hoverRadius - ) + point = movePoint(this.x0, this.y0, thetaCurveStart + HALF_PI, -hoverRadius) hitAreaVertices[10] = point[0] hitAreaVertices[11] = point[1] this.line.hitArea = new PIXI.Polygon(hitAreaVertices) @@ -566,17 +435,12 @@ export class EdgeRenderer { const edgeLength = length(this.x0, this.y0, this.x1, this.y1) // For self edges using edgeLength like this won't work, so there is logic in the // if clause handling drawing self edges to hide labels when necessary - if ( - this.labelSprite.width > edgeLength && - this.edge.target !== this.edge.source - ) { + if (this.labelSprite.width > edgeLength && this.edge.target !== this.edge.source) { this.labelSprite.visible = false - if (this.labelBackgroundSprite) - this.labelBackgroundSprite.visible = false + if (this.labelBackgroundSprite) this.labelBackgroundSprite.visible = false } else { this.labelSprite.visible = true - if (this.labelBackgroundSprite) - this.labelBackgroundSprite.visible = true + if (this.labelBackgroundSprite) this.labelBackgroundSprite.visible = true } } } @@ -615,7 +479,7 @@ export class EdgeRenderer { clientX: client.x, clientY: client.y, target: this.edge, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } @@ -639,7 +503,7 @@ export class EdgeRenderer { clientX: client.x, clientY: client.y, target: this.edge, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } @@ -669,7 +533,7 @@ export class EdgeRenderer { clientX: client.x, clientY: client.y, target: this.edge, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } @@ -690,7 +554,7 @@ export class EdgeRenderer { clientX: client.x, clientY: client.y, target: this.edge, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) this.renderer.onEdgeClick?.({ type: 'edgePointer', @@ -699,7 +563,7 @@ export class EdgeRenderer { clientX: client.x, clientY: client.y, target: this.edge, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) if (this.doubleClick) { @@ -712,7 +576,7 @@ export class EdgeRenderer { clientX: client.x, clientY: client.y, target: this.edge, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } } diff --git a/src/renderers/webgl/index.ts b/src/renderers/webgl/index.ts index d8774de0..deb1fc1f 100644 --- a/src/renderers/webgl/index.ts +++ b/src/renderers/webgl/index.ts @@ -1,6 +1,7 @@ +import Stats from 'stats.js' import * as PIXI from 'pixi.js-legacy' import { install } from '@pixi/unsafe-eval' -import * as Graph from '../..' +import * as Graph from '../../trellis' import { animationFrameLoop, interpolate } from '../../utils' import { NodeRenderer } from './node' import { EdgeRenderer } from './edge' @@ -10,49 +11,158 @@ import { Zoom } from './interaction/zoom' import { ArrowSprite } from './sprites/arrowSprite' import { CircleSprite } from './sprites/circleSprite' import { ImageSprite } from './sprites/ImageSprite' -import { FontIconSprite } from './sprites/FontIconSprite' +import { FontIconSprite } from './sprites/fontIconSprite' import { FontLoader, ImageLoader } from './Loader' import { CircleAnnotationRenderer } from './annotations/circle' import { clientPositionFromEvent, pointerKeysFromEvent } from './utils' import { AnnotationRenderer } from './annotations' import { RectangleAnnotationRenderer } from './annotations/rectangle' - install(PIXI) +export type NodePointerEvent = { + type: 'nodePointer' + x: number + y: number + clientX: number + clientY: number + target: Graph.Node + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} -export type NodePointerEvent = { type: 'nodePointer', x: number, y: number, clientX: number, clientY: number, target: Graph.Node, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } - - -export type NodeDragEvent = { type: 'nodeDrag', x: number, y: number, clientX: number, clientY: number, nodeX: number, nodeY: number, target: Graph.Node, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } - - -export type EdgePointerEvent = { type: 'edgePointer', x: number, y: number, clientX: number, clientY: number, target: Graph.Edge, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } - - -export type AnnotationPointerEvent = { type: 'annotationPointer', x: number, y: number, clientX: number, clientY: number, target: Graph.Annotation, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } - - -export type AnnotationResizePointerEvent = { type: 'annotationPointer', position: 'nw' | 'ne' | 'se' | 'sw', x: number, y: number, clientX: number, clientY: number, target: Graph.Annotation, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } - - -export type AnnotationDragEvent = { type: 'annotationDrag', x: number, y: number, clientX: number, clientY: number, annotationX: number, annotationY: number, target: Graph.Annotation, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } - - -export type AnnotationResizeEvent = { type: 'annotationResize', position: 'nw' | 'ne' | 'se' | 'sw', x: number, y: number, width: number, height: number, target: Graph.Annotation, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } +export type NodeDragEvent = { + type: 'nodeDrag' + x: number + y: number + clientX: number + clientY: number + nodeX: number + nodeY: number + target: Graph.Node + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} +export type EdgePointerEvent = { + type: 'edgePointer' + x: number + y: number + clientX: number + clientY: number + target: Graph.Edge + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} -export type ViewportPointerEvent = { type: 'viewportPointer', x: number, y: number, clientX: number, clientY: number, target: Graph.Viewport, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } +export type AnnotationPointerEvent = { + type: 'annotationPointer' + x: number + y: number + clientX: number + clientY: number + target: Graph.Annotation + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} +export type AnnotationResizePointerEvent = { + type: 'annotationPointer' + position: 'nw' | 'ne' | 'se' | 'sw' + x: number + y: number + clientX: number + clientY: number + target: Graph.Annotation + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} -export type ViewportDragEvent = { type: 'viewportDrag', x: number, y: number, clientX: number, clientY: number, viewportX: number, viewportY: number, target: Graph.Viewport, altKey?: boolean, ctrlKey?: boolean, metaKey?: boolean, shiftKey?: boolean } +export type AnnotationDragEvent = { + type: 'annotationDrag' + x: number + y: number + clientX: number + clientY: number + annotationX: number + annotationY: number + target: Graph.Annotation + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} +export type AnnotationResizeEvent = { + type: 'annotationResize' + position: 'nw' | 'ne' | 'se' | 'sw' + x: number + y: number + width: number + height: number + target: Graph.Annotation + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} -export type ViewportDragDecelerateEvent = { type: 'viewportDragDecelarate', viewportX: number, viewportY: number, target: Graph.Viewport } +export type ViewportPointerEvent = { + type: 'viewportPointer' + x: number + y: number + clientX: number + clientY: number + target: Graph.Viewport + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} +export type ViewportDragEvent = { + type: 'viewportDrag' + x: number + y: number + clientX: number + clientY: number + viewportX: number + viewportY: number + target: Graph.Viewport + altKey?: boolean + ctrlKey?: boolean + metaKey?: boolean + shiftKey?: boolean +} -export type ViewportWheelEvent = { type: 'viewportWheel', x: number, y: number, clientX: number, clientY: number, viewportX: number, viewportY: number, viewportZoom: number, target: Graph.Viewport } +export type ViewportDragDecelerateEvent = { + type: 'viewportDragDecelarate' + viewportX: number + viewportY: number + target: Graph.Viewport +} +export type ViewportWheelEvent = { + type: 'viewportWheel' + x: number + y: number + clientX: number + clientY: number + viewportX: number + viewportY: number + viewportZoom: number + target: Graph.Viewport +} export type Options = { width?: number @@ -99,14 +209,13 @@ export type Options void onAnnotationClick?: (event: AnnotationPointerEvent) => void onAnnotationDoubleClick?: (event: AnnotationPointerEvent) => void - + onAnnotationResizePointerUp?: (event: AnnotationResizePointerEvent) => void onAnnotationResizePointerLeave?: (event: AnnotationResizePointerEvent) => void onAnnotationResize?: (event: AnnotationResizeEvent) => void onAnnotationResizePointerEnter?: (event: AnnotationResizePointerEvent) => void onAnnotationResizePointerDown?: (event: AnnotationResizePointerEvent) => void - onViewportPointerEnter?: (event: ViewportPointerEvent) => void onViewportPointerDown?: (event: ViewportPointerEvent) => void onViewportPointerMove?: (event: ViewportPointerEvent) => void @@ -120,18 +229,28 @@ export type Options void } - export const RENDERER_OPTIONS = { - width: 800, height: 600, x: 0, y: 0, zoom: 1, minZoom: 0.1, maxZoom: 2.5, - animateViewportPosition: 600, animateViewportZoom: 600, animateNodePosition: 800, animateNodeRadius: 800, dragInertia: 0.88, - nodesEqual: () => false, edgesEqual: () => false, nodeIsEqual: () => false, edgeIsEqual: () => false, + width: 800, + height: 600, + x: 0, + y: 0, + zoom: 1, + minZoom: 0.1, + maxZoom: 2.5, + animateViewportPosition: 600, + animateViewportZoom: 600, + animateNodePosition: 800, + animateNodeRadius: 800, + dragInertia: 0.88, + nodesEqual: () => false, + edgesEqual: () => false, + nodeIsEqual: () => false, + edgeIsEqual: () => false } PIXI.utils.skipHello() - -export class InternalRenderer{ - +export class InternalRenderer { width = RENDERER_OPTIONS.width height = RENDERER_OPTIONS.height minZoom = RENDERER_OPTIONS.minZoom @@ -191,13 +310,13 @@ export class InternalRenderer{ private clickedContainer = false private previousTime = performance.now() - private debug?: { logPerformance?: boolean, stats?: Stats } + private debug?: { logPerformance?: boolean; stats?: Stats } private cancelAnimationLoop: () => void - private interpolateX?: (time: number) => { value: number, done: boolean } + private interpolateX?: (time: number) => { value: number; done: boolean } private targetX = RENDERER_OPTIONS.x - private interpolateY?: (time: number) => { value: number, done: boolean } + private interpolateY?: (time: number) => { value: number; done: boolean } private targetY = RENDERER_OPTIONS.y - private interpolateZoom?: (time: number) => { value: number, done: boolean } + private interpolateZoom?: (time: number) => { value: number; done: boolean } private targetZoom = RENDERER_OPTIONS.zoom private firstRender = true private doubleClickTimeout?: number @@ -252,9 +371,9 @@ export class InternalRenderer{ onViewportPointerLeave?: (event: ViewportPointerEvent) => void onViewportWheel?: (event: ViewportWheelEvent) => void - update: (graph: { nodes: N[], edges: E[], options?: Options, annotations?: Graph.Annotation[] }) => void + update: (graph: { nodes: N[]; edges: E[]; options?: Options; annotations?: Graph.Annotation[] }) => void - constructor(options: { container: HTMLDivElement, debug?: { logPerformance?: boolean, stats?: Stats } }) { + constructor(options: { container: HTMLDivElement; debug?: { logPerformance?: boolean; stats?: Stats } }) { if (!(options.container instanceof HTMLDivElement)) { throw new Error('container must be an instance of HTMLDivElement') } @@ -274,7 +393,7 @@ export class InternalRenderer{ autoStart: false, powerPreference: 'high-performance', preserveDrawingBuffer: false, - transparent: true, + transparent: true }) this.labelsLayer.interactiveChildren = false @@ -294,7 +413,6 @@ export class InternalRenderer{ this.zoomInteraction = new Zoom(this) this.dragInteraction = new Drag(this) this.decelerateInteraction = new Decelerate(this) - ;(this.app.renderer.plugins.interaction as PIXI.InteractionManager) .on('pointerenter', this.pointerEnter) .on('pointerdown', this.pointerDown) @@ -328,18 +446,67 @@ export class InternalRenderer{ nodes, edges, options: { - width = RENDERER_OPTIONS.width, height = RENDERER_OPTIONS.height, x = RENDERER_OPTIONS.x, y = RENDERER_OPTIONS.y, zoom = RENDERER_OPTIONS.zoom, - minZoom = RENDERER_OPTIONS.minZoom, maxZoom = RENDERER_OPTIONS.maxZoom, cursor, - animateNodePosition = RENDERER_OPTIONS.animateNodePosition, animateNodeRadius = RENDERER_OPTIONS.animateNodeRadius, - animateViewportPosition = RENDERER_OPTIONS.animateViewportPosition, animateViewportZoom = RENDERER_OPTIONS.animateViewportZoom, dragInertia = RENDERER_OPTIONS.dragInertia, - nodesEqual = RENDERER_OPTIONS.nodesEqual, edgesEqual = RENDERER_OPTIONS.edgesEqual, nodeIsEqual = RENDERER_OPTIONS.nodeIsEqual, edgeIsEqual = RENDERER_OPTIONS.edgeIsEqual, - onNodePointerEnter, onNodePointerDown, onNodeDragStart, onNodeDrag, onNodeDragEnd, onNodePointerUp, onNodeClick, onNodeDoubleClick, onNodePointerLeave, - onEdgePointerEnter, onEdgePointerDown, onEdgePointerUp, onEdgeClick, onEdgeDoubleClick, onEdgePointerLeave, - onAnnotationPointerEnter, onAnnotationPointerDown, onAnnotationDragStart, onAnnotationDrag, onAnnotationDragEnd, onAnnotationResize, onAnnotationPointerUp, onAnnotationClick, onAnnotationDoubleClick, onAnnotationPointerLeave, - onViewportPointerEnter, onViewportPointerDown, onViewportDragStart, onViewportDrag, onViewportDragEnd, onViewportPointerMove, onViewportPointerUp, onViewportClick, onViewportDoubleClick, onViewportPointerLeave, onViewportWheel, + width = RENDERER_OPTIONS.width, + height = RENDERER_OPTIONS.height, + x = RENDERER_OPTIONS.x, + y = RENDERER_OPTIONS.y, + zoom = RENDERER_OPTIONS.zoom, + minZoom = RENDERER_OPTIONS.minZoom, + maxZoom = RENDERER_OPTIONS.maxZoom, + cursor, + animateNodePosition = RENDERER_OPTIONS.animateNodePosition, + animateNodeRadius = RENDERER_OPTIONS.animateNodeRadius, + animateViewportPosition = RENDERER_OPTIONS.animateViewportPosition, + animateViewportZoom = RENDERER_OPTIONS.animateViewportZoom, + dragInertia = RENDERER_OPTIONS.dragInertia, + nodesEqual = RENDERER_OPTIONS.nodesEqual, + edgesEqual = RENDERER_OPTIONS.edgesEqual, + nodeIsEqual = RENDERER_OPTIONS.nodeIsEqual, + edgeIsEqual = RENDERER_OPTIONS.edgeIsEqual, + onNodePointerEnter, + onNodePointerDown, + onNodeDragStart, + onNodeDrag, + onNodeDragEnd, + onNodePointerUp, + onNodeClick, + onNodeDoubleClick, + onNodePointerLeave, + onEdgePointerEnter, + onEdgePointerDown, + onEdgePointerUp, + onEdgeClick, + onEdgeDoubleClick, + onEdgePointerLeave, + onAnnotationPointerEnter, + onAnnotationPointerDown, + onAnnotationDragStart, + onAnnotationDrag, + onAnnotationDragEnd, + onAnnotationResize, + onAnnotationPointerUp, + onAnnotationClick, + onAnnotationDoubleClick, + onAnnotationPointerLeave, + onViewportPointerEnter, + onViewportPointerDown, + onViewportDragStart, + onViewportDrag, + onViewportDragEnd, + onViewportPointerMove, + onViewportPointerUp, + onViewportClick, + onViewportDoubleClick, + onViewportPointerLeave, + onViewportWheel } = RENDERER_OPTIONS, annotations - }: { nodes: N[], edges: E[], options?: Options, annotations?: Graph.Annotation[] }) => { + }: { + nodes: N[] + edges: E[] + options?: Options + annotations?: Graph.Annotation[] + }) => { this.onNodePointerEnter = onNodePointerEnter this.onNodePointerDown = onNodePointerDown this.onNodeDragStart = onNodeDragStart @@ -435,8 +602,8 @@ export class InternalRenderer{ this.viewportDirty = true } - this.root.x = (this.x * this.zoom) + (this.width / 2) - this.root.y = (this.y * this.zoom) + (this.height / 2) + this.root.x = this.x * this.zoom + this.width / 2 + this.root.y = this.y * this.zoom + this.height / 2 const edgesAreEqual = edgesEqual(this.edges, edges) const nodesAreEqual = nodesEqual(this.nodes, nodes) @@ -445,7 +612,7 @@ export class InternalRenderer{ * Build edge indices */ if (!edgesAreEqual) { - this.edgeIndex = { } + this.edgeIndex = {} for (const edge of edges) { if (this.edgeIndex[edge.source] === undefined) { @@ -466,7 +633,6 @@ export class InternalRenderer{ } } - /** * Node enter/update/exit */ @@ -482,12 +648,19 @@ export class InternalRenderer{ if (this.edgeIndex[node.id]) { // nodes w edges from existing positioned nodes enter from one of those nodes - adjacentNode = Object.keys(this.edgeIndex[node.id]).find((adjacentNodeId) => ( - this.nodesById[adjacentNodeId]?.node.x !== undefined && this.nodesById[adjacentNodeId]?.node.y !== undefined - )) + adjacentNode = Object.keys(this.edgeIndex[node.id]).find( + (adjacentNodeId) => + this.nodesById[adjacentNodeId]?.node.x !== undefined && this.nodesById[adjacentNodeId]?.node.y !== undefined + ) } - nodesById[node.id] = new NodeRenderer(this, node, this.nodesById[adjacentNode ?? '']?.x ?? 0, this.nodesById[adjacentNode ?? '']?.y ?? 0, node.radius) + nodesById[node.id] = new NodeRenderer( + this, + node, + this.nodesById[adjacentNode ?? '']?.x ?? 0, + this.nodesById[adjacentNode ?? '']?.y ?? 0, + node.radius + ) this.dirty = true } else if (!nodeIsEqual(this.nodesById[node.id].node, node)) { // node update @@ -509,7 +682,6 @@ export class InternalRenderer{ this.nodesById = nodesById } - /** * Edge enter/update/exit */ @@ -543,7 +715,6 @@ export class InternalRenderer{ this.edgesById = edgesById } - /** * Annotation enter/update/exit */ @@ -663,7 +834,6 @@ export class InternalRenderer{ this.viewportDirty = true } - let dirty = false if (this.dirty) { @@ -691,8 +861,8 @@ export class InternalRenderer{ } if (this.viewportDirty || this.dirty) { - this.root.x = (this.x * this.zoom) + (this.width / 2) - this.root.y = (this.y * this.zoom) + (this.height / 2) + this.root.x = this.x * this.zoom + this.width / 2 + this.root.y = this.y * this.zoom + this.height / 2 this.app.render() } @@ -701,7 +871,7 @@ export class InternalRenderer{ } private _measurePerformance?: true - private _debugUpdate = (graph: { nodes: N[], edges: E[], options?: Options, annotations?: Graph.Annotation[] }) => { + private _debugUpdate = (graph: { nodes: N[]; edges: E[]; options?: Options; annotations?: Graph.Annotation[] }) => { if (this._measurePerformance) { performance.measure('external', 'external') } @@ -753,7 +923,6 @@ export class InternalRenderer{ this.viewportDirty = true } - let dirty = false if (this.dirty) { @@ -774,8 +943,8 @@ export class InternalRenderer{ if (this.viewportDirty || this.dirty) { performance.mark('draw') - this.root.x = (this.x * this.zoom) + (this.width / 2) - this.root.y = (this.y * this.zoom) + (this.height / 2) + this.root.x = this.x * this.zoom + this.width / 2 + this.root.y = this.y * this.zoom + this.height / 2 this.app.render() performance.measure('draw', 'draw') } @@ -807,7 +976,9 @@ export class InternalRenderer{ // green: 50+ frames/sec, pink: 30 frames/sec, red: 20 frames/sec // eslint-disable-next-line no-console console.log( - `%c${total.toFixed(1)}ms%c (update: %c${update.toFixed(1)}%c, render: %c${render.toFixed(1)}%c, draw: %c${draw.toFixed(1)}%c, external: %c${external.toFixed(1)}%c)`, + `%c${total.toFixed(1)}ms%c (update: %c${update.toFixed(1)}%c, render: %c${render.toFixed(1)}%c, draw: %c${draw.toFixed( + 1 + )}%c, external: %c${external.toFixed(1)}%c)`, `color: ${total <= 20 ? '#6c6' : total <= 33 ? '#f88' : total <= 50 ? '#e22' : '#a00'}`, 'color: #666', `color: ${update <= 5 ? '#6c6' : update <= 10 ? '#f88' : update <= 20 ? '#e22' : '#a00'}`, @@ -817,7 +988,7 @@ export class InternalRenderer{ `color: ${draw <= 5 ? '#6c6' : draw <= 10 ? '#f88' : draw <= 20 ? '#e22' : '#a00'}`, 'color: #666', `color: ${external <= 5 ? '#6c6' : external <= 10 ? '#f88' : external <= 20 ? '#e22' : '#a00'}`, - 'color: #666', + 'color: #666' ) } @@ -862,7 +1033,7 @@ export class InternalRenderer{ // const bounds = Graph.viewportToBounds({ x: this.x, y: this.y, zoom: this.zoom }, { width: this.width, height: this.height }) const background = new PIXI.Graphics() .beginFill(0xffffff) - .drawRect((-this.x * this.zoom) - (this.width / 2), (-this.y * this.zoom) - (this.height / 2), this.width, this.height) + .drawRect(-this.x * this.zoom - this.width / 2, -this.y * this.zoom - this.height / 2, this.width, this.height) .endFill() this.root.addChildAt(background, 0) @@ -871,7 +1042,7 @@ export class InternalRenderer{ const imageTexture = this.app.renderer.generateTexture( this.root, PIXI.SCALE_MODES.LINEAR, - resolution ?? 2, + resolution ?? 2 // new PIXI.Rectangle(this.x, this.y, this.width, this.height) // TODO - crop to background ) @@ -902,22 +1073,19 @@ export class InternalRenderer{ // const bounds = Graph.viewportToBounds({ x: this.x, y: this.y, zoom: this.zoom }, { width: this.width, height: this.height }) const background = new PIXI.Graphics() .beginFill(0xffffff) - .drawRect((-this.x * this.zoom) - (this.width / 2), (-this.y * this.zoom) - (this.height / 2), this.width, this.height) + .drawRect(-this.x * this.zoom - this.width / 2, -this.y * this.zoom - this.height / 2, this.width, this.height) .endFill() this.root.addChildAt(background, 0) // what causes this to throw on some machines? https://github.com/sayari-analytics/graph-ui/issues/1557 - const imageTexture = this.app.renderer.generateTexture( - this.root, - { - scaleMode: PIXI.SCALE_MODES.LINEAR, - resolution, - // region: new PIXI.Rectangle(this.x, this.y, this.width, this.height) // TODO - crop to background - } - ) + const imageTexture = this.app.renderer.generateTexture(this.root, { + scaleMode: PIXI.SCALE_MODES.LINEAR, + resolution + // region: new PIXI.Rectangle(this.x, this.y, this.width, this.height) // TODO - crop to background + }) - return (this.app.renderer.plugins.extract as PIXI.Extract).canvas(imageTexture).toBlob(blob => { + return (this.app.renderer.plugins.extract as PIXI.Extract).canvas(imageTexture).toBlob((blob) => { imageTexture.destroy() this.root.removeChild(background) background.destroy() @@ -937,7 +1105,15 @@ export class InternalRenderer{ private pointerEnter = (event: PIXI.InteractionEvent) => { const { x, y } = this.root.toLocal(event.data.global) const client = clientPositionFromEvent(event.data.originalEvent) - this.onViewportPointerEnter?.({ type: 'viewportPointer', x, y, clientX: client.x, clientY: client.y, target: { x: this.x, y: this.y, zoom: this.zoom }, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.onViewportPointerEnter?.({ + type: 'viewportPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: { x: this.x, y: this.y, zoom: this.zoom }, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } private pointerDown = (event: PIXI.InteractionEvent) => { @@ -950,14 +1126,26 @@ export class InternalRenderer{ this.dragInteraction.down(event) this.decelerateInteraction.down() - if (this.hoveredNode === undefined && this.clickedNode === undefined && - this.hoveredEdge === undefined && this.clickedEdge === undefined && - this.hoveredAnnotation === undefined && this.clickedAnnotation == undefined + if ( + this.hoveredNode === undefined && + this.clickedNode === undefined && + this.hoveredEdge === undefined && + this.clickedEdge === undefined && + this.hoveredAnnotation === undefined && + this.clickedAnnotation == undefined ) { this.clickedContainer = true const { x, y } = this.root.toLocal(event.data.global) const client = clientPositionFromEvent(event.data.originalEvent) - this.onViewportPointerDown?.({ type: 'viewportPointer', x, y, clientX: client.x, clientY: client.y, target: { x: this.x, y: this.y, zoom: this.zoom }, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.onViewportPointerDown?.({ + type: 'viewportPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: { x: this.x, y: this.y, zoom: this.zoom }, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } } @@ -968,7 +1156,15 @@ export class InternalRenderer{ const { x, y } = this.root.toLocal(event.data.global) const client = clientPositionFromEvent(event.data.originalEvent) - this.onViewportPointerMove?.({ type: 'viewportPointer', x, y, clientX: client.x, clientY: client.y, target: { x: this.x, y: this.y, zoom: this.zoom }, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.onViewportPointerMove?.({ + type: 'viewportPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: { x: this.x, y: this.y, zoom: this.zoom }, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } private pointerUp = (event: PIXI.InteractionEvent) => { @@ -998,13 +1194,37 @@ export class InternalRenderer{ }) } else if (this.clickedContainer) { this.clickedContainer = false - this.onViewportPointerUp?.({ type: 'viewportPointer', x, y, clientX: client.x, clientY: client.y, target: { x: this.x, y: this.y, zoom: this.zoom }, ...pointerKeysFromEvent(event.data.originalEvent) }) - this.onViewportClick?.({ type: 'viewportPointer', x, y, clientX: client.x, clientY: client.y, target: { x: this.x, y: this.y, zoom: this.zoom }, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.onViewportPointerUp?.({ + type: 'viewportPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: { x: this.x, y: this.y, zoom: this.zoom }, + ...pointerKeysFromEvent(event.data.originalEvent) + }) + this.onViewportClick?.({ + type: 'viewportPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: { x: this.x, y: this.y, zoom: this.zoom }, + ...pointerKeysFromEvent(event.data.originalEvent) + }) if (this.doubleClick) { this.doubleClick = false this.doubleClickTimeout = undefined - this.onViewportDoubleClick?.({ type: 'viewportPointer', x, y, clientX: client.x, clientY: client.y, target: { x: this.x, y: this.y, zoom: this.zoom }, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.onViewportDoubleClick?.({ + type: 'viewportPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: { x: this.x, y: this.y, zoom: this.zoom }, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } } } @@ -1012,7 +1232,15 @@ export class InternalRenderer{ private pointerLeave = (event: PIXI.InteractionEvent) => { const { x, y } = this.root.toLocal(event.data.global) const client = clientPositionFromEvent(event.data.originalEvent) - this.onViewportPointerLeave?.({ type: 'viewportPointer', x, y, clientX: client.x, clientY: client.y, target: { x: this.x, y: this.y, zoom: this.zoom }, ...pointerKeysFromEvent(event.data.originalEvent) }) + this.onViewportPointerLeave?.({ + type: 'viewportPointer', + x, + y, + clientX: client.x, + clientY: client.y, + target: { x: this.x, y: this.y, zoom: this.zoom }, + ...pointerKeysFromEvent(event.data.originalEvent) + }) } private clearDoubleClick = () => { @@ -1021,12 +1249,16 @@ export class InternalRenderer{ } } - -export const Renderer = (options: { container: HTMLDivElement, debug?: { logPerformance?: boolean, stats?: Stats } }) => { +export const Renderer = (options: { container: HTMLDivElement; debug?: { logPerformance?: boolean; stats?: Stats } }) => { const pixiRenderer = new InternalRenderer(options) - const render = (graph: { nodes: N[], edges: E[], options?: Options, annotations?: Graph.Annotation[] }) => { - (pixiRenderer as unknown as InternalRenderer).update(graph) + const render = (graph: { + nodes: N[] + edges: E[] + options?: Options + annotations?: Graph.Annotation[] + }) => { + ;(pixiRenderer as unknown as InternalRenderer).update(graph) } render.delete = pixiRenderer.delete diff --git a/src/renderers/webgl/interaction/decelerate.ts b/src/renderers/webgl/interaction/decelerate.ts index 517a7ee0..0c2fffa7 100644 --- a/src/renderers/webgl/interaction/decelerate.ts +++ b/src/renderers/webgl/interaction/decelerate.ts @@ -1,16 +1,14 @@ import { InternalRenderer } from '..' -import { Node, Edge } from '../../..' - +import { Node, Edge } from '../../../trellis' /** * deceleration logic is based largely on the excellent [pixi-viewport](https://github.com/davidfig/pixi-viewport) * specificially, the [Decelerate Plugin](https://github.com/davidfig/pixi-viewport/blob/eb00aafebca6f9d9233a6b537d7d418616bb866e/src/plugins/decelerate.js) */ -export class Decelerate { - +export class Decelerate { private renderer: InternalRenderer private paused = false - private saved: { x: number, y: number, time: number }[] = [] + private saved: { x: number; y: number; time: number }[] = [] private x?: number private y?: number private minSpeed = 0.01 diff --git a/src/renderers/webgl/interaction/drag.ts b/src/renderers/webgl/interaction/drag.ts index 6226871a..f51eee53 100644 --- a/src/renderers/webgl/interaction/drag.ts +++ b/src/renderers/webgl/interaction/drag.ts @@ -1,18 +1,16 @@ import * as PIXI from 'pixi.js-legacy' import { InternalRenderer } from '..' -import { Node, Edge } from '../../..' +import { Node, Edge } from '../../../trellis' import { clientPositionFromEvent } from '../utils' - /** * drag logic is based largely on the excellent [pixi-viewport](https://github.com/davidfig/pixi-viewport) * specificially, the [Drag Plugin](https://github.com/davidfig/pixi-viewport/blob/eb00aafebca6f9d9233a6b537d7d418616bb866e/src/plugins/drag.js) */ -export class Drag { - +export class Drag { private renderer: InternalRenderer private paused = false - private last?: { x: number, y: number } + private last?: { x: number; y: number } private current?: number private moved = false @@ -43,8 +41,8 @@ export class Drag { const dy = y - this.last.y if (this.moved || Math.abs(dx) >= 5 || Math.abs(dy) >= 5) { - const viewportX = this.renderer.x + (dx / this.renderer.zoom) - const viewportY = this.renderer.y + (dy / this.renderer.zoom) + const viewportX = this.renderer.x + dx / this.renderer.zoom + const viewportY = this.renderer.y + dy / this.renderer.zoom this.last = { x, y } this.moved = true @@ -68,7 +66,7 @@ export class Drag { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } @@ -84,7 +82,7 @@ export class Drag { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } } diff --git a/src/renderers/webgl/interaction/zoom.ts b/src/renderers/webgl/interaction/zoom.ts index eaeb5dff..148359bf 100644 --- a/src/renderers/webgl/interaction/zoom.ts +++ b/src/renderers/webgl/interaction/zoom.ts @@ -1,14 +1,12 @@ import * as PIXI from 'pixi.js-legacy' import { InternalRenderer } from '..' -import { Node, Edge } from '../../..' - +import { Node, Edge } from '../../../trellis' /** * zoom logic is based largely on the excellent [pixi-viewport](https://github.com/davidfig/pixi-viewport) * specificially, the [Wheel Plugin](https://github.com/davidfig/pixi-viewport/blob/eb00aafebca6f9d9233a6b537d7d418616bb866e/src/plugins/wheel.js) */ -export class Zoom { - +export class Zoom { private renderer: InternalRenderer private paused = false @@ -23,20 +21,21 @@ export class Zoom { return } - const step = -event.deltaY * (event.deltaMode ? 20 : 1) / 500 + const step = (-event.deltaY * (event.deltaMode ? 20 : 1)) / 500 const change = Math.pow(2, 1.1 * step) const zoomStart = this.renderer.zoom const zoomEnd = Math.max(this.renderer.minZoom, Math.min(this.renderer.maxZoom, zoomStart * change)) - if ( - (step > 0 && zoomStart >= this.renderer.maxZoom) || - (step < 0 && zoomStart <= this.renderer.minZoom) - ) { + if ((step > 0 && zoomStart >= this.renderer.maxZoom) || (step < 0 && zoomStart <= this.renderer.minZoom)) { return } const globalStart = new PIXI.Point() - ;(this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager).mapPositionToPoint(globalStart, event.clientX, event.clientY) + ;(this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager).mapPositionToPoint( + globalStart, + event.clientX, + event.clientY + ) const localStart = this.renderer.root.toLocal(globalStart) this.renderer.root.scale.set(zoomEnd) @@ -45,8 +44,8 @@ export class Zoom { const rootY = this.renderer.root.y + globalStart.y - globalEnd.y this.renderer.root.scale.set(zoomStart) - const viewportX = (rootX - (this.renderer.width / 2)) / zoomEnd - const viewportY = (rootY - (this.renderer.height / 2)) / zoomEnd + const viewportX = (rootX - this.renderer.width / 2) / zoomEnd + const viewportY = (rootY - this.renderer.height / 2) / zoomEnd this.renderer.expectedViewportXPosition = viewportX this.renderer.expectedViewportYPosition = viewportY diff --git a/src/renderers/webgl/node.ts b/src/renderers/webgl/node.ts index 6bfd3ba2..6bb9bcc6 100644 --- a/src/renderers/webgl/node.ts +++ b/src/renderers/webgl/node.ts @@ -7,9 +7,9 @@ import { movePoint, parentInFront, clientPositionFromEvent, - pointerKeysFromEvent, + pointerKeysFromEvent } from './utils' -import { Node, Edge, NodeStyle, equals } from '../..' +import { Node, Edge, NodeStyle, equals } from '../../trellis' import { interpolate } from '../../utils' import { CircleSprite } from './sprites/circleSprite' @@ -79,14 +79,7 @@ export class NodeRenderer { private nodeMoveXOffset: number = 0 private nodeMoveYOffset: number = 0 - constructor( - renderer: InternalRenderer, - node: N, - x: number, - y: number, - radius?: number, - parent?: NodeRenderer - ) { + constructor(renderer: InternalRenderer, node: N, x: number, y: number, radius?: number, parent?: NodeRenderer) { this.renderer = renderer this.parent = parent @@ -131,20 +124,11 @@ export class NodeRenderer { const x = this.node.x ?? 0 if (x !== this.targetX) { - if ( - x === this.expectedNodeXPosition || - !this.renderer.animateNodePosition || - this.renderer.clickedNode - ) { + if (x === this.expectedNodeXPosition || !this.renderer.animateNodePosition || this.renderer.clickedNode) { this.interpolateX = undefined this.x = x } else { - this.interpolateX = interpolate( - this.x, - x, - this.renderer.animateNodePosition, - this.renderer.time - ) + this.interpolateX = interpolate(this.x, x, this.renderer.animateNodePosition, this.renderer.time) } this.expectedNodeXPosition = undefined @@ -153,20 +137,11 @@ export class NodeRenderer { const y = this.node.y ?? 0 if (y !== this.targetY) { - if ( - y === this.expectedNodeYPosition || - !this.renderer.animateNodePosition || - this.renderer.clickedNode - ) { + if (y === this.expectedNodeYPosition || !this.renderer.animateNodePosition || this.renderer.clickedNode) { this.interpolateY = undefined this.y = y } else { - this.interpolateY = interpolate( - this.y, - y, - this.renderer.animateNodePosition, - this.renderer.time - ) + this.interpolateY = interpolate(this.y, y, this.renderer.animateNodePosition, this.renderer.time) } this.expectedNodeYPosition = undefined @@ -179,12 +154,7 @@ export class NodeRenderer { this.interpolateRadius = undefined this.radius = radius } else { - this.interpolateRadius = interpolate( - this.radius, - radius, - this.renderer.animateNodeRadius, - this.renderer.time - ) + this.interpolateRadius = interpolate(this.radius, radius, this.renderer.animateNodeRadius, this.renderer.time) } this.targetRadius = radius @@ -193,20 +163,14 @@ export class NodeRenderer { /** * Styles */ - this.fillSprite.tint = - this.node.style?.color === undefined - ? DEFAULT_NODE_FILL - : colorToNumber(this.node.style?.color) + this.fillSprite.tint = this.node.style?.color === undefined ? DEFAULT_NODE_FILL : colorToNumber(this.node.style?.color) // this.fillOpacity = this.fillSprite.alpha = this.node.style?.fillOpacity ?? NODE_STYLES.fillOpacity // TODO - to enable fill opacity, mask out center of strokeSprite /** * Label */ const labelFamily = node.style?.label?.fontFamily ?? DEFAULT_LABEL_FAMILY - const labelColor = - node.style?.label?.color === undefined - ? DEFAULT_LABEL_COLOR - : colorToNumber(node.style.label.color) + const labelColor = node.style?.label?.color === undefined ? DEFAULT_LABEL_COLOR : colorToNumber(node.style.label.color) const labelSize = node.style?.label?.fontSize ?? DEFAULT_LABEL_SIZE const labelWordWrap = node.style?.label?.wordWrap const labelBackground = node.style?.label?.background @@ -252,7 +216,7 @@ export class NodeRenderer { strokeThickness: this.labelBackground === undefined ? 2.5 * 2.5 : 0, align: 'center', wordWrap: labelWordWrap !== undefined, - wordWrapWidth: labelWordWrap, + wordWrapWidth: labelWordWrap }) this.labelSprite.anchor.set(0.5, 0) this.labelSprite.scale.set(0.4) @@ -262,9 +226,7 @@ export class NodeRenderer { this.labelBackgroundSprite = new PIXI.Sprite(PIXI.Texture.WHITE) this.labelBackgroundSprite.width = this.labelSprite.width + 4 this.labelBackgroundSprite.height = this.labelSprite.height - this.labelBackgroundSprite.tint = colorToNumber( - this.labelBackground - ) + this.labelBackgroundSprite.tint = colorToNumber(this.labelBackground) this.labelBackgroundSprite.alpha = this.labelBackgroundOpacity ?? 1 this.labelBackgroundSprite.anchor.set(0.5, 0) this.labelContainer.addChild(this.labelBackgroundSprite) @@ -289,20 +251,14 @@ export class NodeRenderer { this.strokeWidth = 0 if (this.stroke) { - this.strokeWidth = this.stroke.reduce( - (sum, { width = DEFAULT_NODE_STROKE_WIDTH }) => sum + width, - 0 - ) + this.strokeWidth = this.stroke.reduce((sum, { width = DEFAULT_NODE_STROKE_WIDTH }) => sum + width, 0) for (const stroke of this.stroke) { const strokeSprite = this.renderer.circle.create() - strokeSprite.tint = - stroke.color === undefined - ? DEFAULT_NODE_STROKE - : colorToNumber(stroke.color) + strokeSprite.tint = stroke.color === undefined ? DEFAULT_NODE_STROKE : colorToNumber(stroke.color) this.strokeSprites.push({ sprite: strokeSprite, - width: stroke.width ?? DEFAULT_NODE_STROKE_WIDTH, + width: stroke.width ?? DEFAULT_NODE_STROKE_WIDTH }) const container = new PIXI.Container() @@ -336,36 +292,21 @@ export class NodeRenderer { badge.icon.family, 'bold' )((family) => { - if ( - this.badgeSpriteContainer === undefined || - badge.icon?.type !== 'textIcon' || - badge.icon?.family !== family - ) - return + if (this.badgeSpriteContainer === undefined || badge.icon?.type !== 'textIcon' || badge.icon?.family !== family) return this.dirty = true this.renderer.dirty = true const badgeRadius = badge.radius ?? DEFAULT_BADGE_RADIUS - const badgeStrokeRadius = - badgeRadius + - (badge.strokeWidth ?? DEFAULT_BADGE_STROKE_WIDTH) + const badgeStrokeRadius = badgeRadius + (badge.strokeWidth ?? DEFAULT_BADGE_STROKE_WIDTH) const badgeFillSprite = this.renderer.circle.create() - badgeFillSprite.tint = - badge.color === undefined - ? DEFAULT_NODE_FILL - : colorToNumber(badge.color) + badgeFillSprite.tint = badge.color === undefined ? DEFAULT_NODE_FILL : colorToNumber(badge.color) badgeFillSprite.scale.set(badgeRadius / CircleSprite.radius) const badgeStrokeSprite = this.renderer.circle.create() - badgeStrokeSprite.tint = - badge.stroke === undefined - ? DEFAULT_NODE_STROKE - : colorToNumber(badge.stroke) - badgeStrokeSprite.scale.set( - badgeStrokeRadius / CircleSprite.radius - ) + badgeStrokeSprite.tint = badge.stroke === undefined ? DEFAULT_NODE_STROKE : colorToNumber(badge.stroke) + badgeStrokeSprite.scale.set(badgeStrokeRadius / CircleSprite.radius) const badgeIconSprite = this.renderer.fontIcon.create( badge.icon.text, @@ -379,55 +320,34 @@ export class NodeRenderer { fill: badgeFillSprite, stroke: badgeStrokeSprite, icon: badgeIconSprite, - angle: badge.position * RADIANS_PER_DEGREE - HALF_PI, + angle: badge.position * RADIANS_PER_DEGREE - HALF_PI }) this.badgeSpriteContainer.addChild(badgeStrokeSprite) this.badgeSpriteContainer.addChild(badgeFillSprite) - badgeIconSprite !== undefined && - this.badgeSpriteContainer.addChild(badgeIconSprite) + badgeIconSprite !== undefined && this.badgeSpriteContainer.addChild(badgeIconSprite) this.nodeContainer.addChild(this.badgeSpriteContainer) // add to top }) ) } else if (badge.icon?.type === 'imageIcon') { this.badgeIconLoader.push( this.renderer.imageLoader.load(badge.icon.url)((url) => { - if ( - this.badgeSpriteContainer === undefined || - badge.icon?.type !== 'imageIcon' || - badge.icon?.url !== url - ) - return + if (this.badgeSpriteContainer === undefined || badge.icon?.type !== 'imageIcon' || badge.icon?.url !== url) return this.dirty = true this.renderer.dirty = true const badgeRadius = badge.radius ?? DEFAULT_BADGE_RADIUS - const badgeStrokeRadius = - badgeRadius + - (badge.strokeWidth ?? DEFAULT_BADGE_STROKE_WIDTH) + const badgeStrokeRadius = badgeRadius + (badge.strokeWidth ?? DEFAULT_BADGE_STROKE_WIDTH) const badgeFillSprite = this.renderer.circle.create() - badgeFillSprite.tint = - badge.color === undefined - ? DEFAULT_NODE_FILL - : colorToNumber(badge.color) + badgeFillSprite.tint = badge.color === undefined ? DEFAULT_NODE_FILL : colorToNumber(badge.color) badgeFillSprite.scale.set(badgeRadius / CircleSprite.radius) const badgeStrokeSprite = this.renderer.circle.create() - badgeStrokeSprite.tint = - badge.stroke === undefined - ? DEFAULT_NODE_STROKE - : colorToNumber(badge.stroke) - badgeStrokeSprite.scale.set( - badgeStrokeRadius / CircleSprite.radius - ) + badgeStrokeSprite.tint = badge.stroke === undefined ? DEFAULT_NODE_STROKE : colorToNumber(badge.stroke) + badgeStrokeSprite.scale.set(badgeStrokeRadius / CircleSprite.radius) - const badgeIconSprite = this.renderer.image.create( - badge.icon.url, - badge.icon.scale, - badge.icon.offsetX, - badge.icon.offsetY - ) + const badgeIconSprite = this.renderer.image.create(badge.icon.url, badge.icon.scale, badge.icon.offsetX, badge.icon.offsetY) this.badgeSprites.push({ fill: badgeFillSprite, @@ -435,12 +355,11 @@ export class NodeRenderer { icon: badgeIconSprite, angle: badge.position * RADIANS_PER_DEGREE - HALF_PI, iconXOffset: badge.icon.offsetX, - iconYOffset: badge.icon.offsetY, + iconYOffset: badge.icon.offsetY }) this.badgeSpriteContainer.addChild(badgeStrokeSprite) this.badgeSpriteContainer.addChild(badgeFillSprite) - badgeIconSprite !== undefined && - this.badgeSpriteContainer.addChild(badgeIconSprite) + badgeIconSprite !== undefined && this.badgeSpriteContainer.addChild(badgeIconSprite) this.nodeContainer.addChild(this.badgeSpriteContainer) // add to top }) ) @@ -474,40 +393,26 @@ export class NodeRenderer { this.icon.family, 'normal' )((family) => { - if (this.icon?.type !== 'textIcon' || this.icon.family !== family) - return + if (this.icon?.type !== 'textIcon' || this.icon.family !== family) return this.dirty = true this.renderer.dirty = true - this.iconSprite = this.renderer.fontIcon.create( - this.icon.text, - this.icon.family, - this.icon.size, - 'normal', - this.icon.color - ) + this.iconSprite = this.renderer.fontIcon.create(this.icon.text, this.icon.family, this.icon.size, 'normal', this.icon.color) this.nodeContainer.addChild(this.iconSprite) }) } else if (this.icon?.type === 'imageIcon') { - this.iconLoader = this.renderer.imageLoader.load(this.icon.url)( - (url) => { - if (this.icon?.type !== 'imageIcon' || this.icon.url !== url) return - - this.dirty = true - this.renderer.dirty = true - - this.iconSprite = this.renderer.image.create( - this.icon.url, - this.icon.scale, - this.icon.offsetX, - this.icon.offsetY - ) + this.iconLoader = this.renderer.imageLoader.load(this.icon.url)((url) => { + if (this.icon?.type !== 'imageIcon' || this.icon.url !== url) return - this.nodeContainer.addChild(this.iconSprite) - } - ) + this.dirty = true + this.renderer.dirty = true + + this.iconSprite = this.renderer.image.create(this.icon.url, this.icon.scale, this.icon.offsetX, this.icon.offsetY) + + this.nodeContainer.addChild(this.iconSprite) + }) } } @@ -519,18 +424,10 @@ export class NodeRenderer { for (const subgraphNode of node.subgraph.nodes as N[]) { if (this.subgraphNodes[subgraphNode.id] === undefined) { // enter subgraph node - subgraphNodes[subgraphNode.id] = new NodeRenderer( - this.renderer, - subgraphNode, - 0, - 0, - subgraphNode.radius, - this - ) + subgraphNodes[subgraphNode.id] = new NodeRenderer(this.renderer, subgraphNode, 0, 0, subgraphNode.radius, this) } else { // update subgraph node - subgraphNodes[subgraphNode.id] = - this.subgraphNodes[subgraphNode.id].update(subgraphNode) + subgraphNodes[subgraphNode.id] = this.subgraphNodes[subgraphNode.id].update(subgraphNode) } } } @@ -603,14 +500,7 @@ export class NodeRenderer { } if (this.badge !== undefined) { - for (const { - fill, - stroke, - icon, - angle, - iconXOffset = 0, - iconYOffset = 0, - } of this.badgeSprites) { + for (const { fill, stroke, icon, angle, iconXOffset = 0, iconYOffset = 0 } of this.badgeSprites) { const [x, y] = movePoint(0, 0, angle, this.radius + this.strokeWidth) fill.position.set(x, y) stroke.position.set(x, y) @@ -618,19 +508,14 @@ export class NodeRenderer { } } - this.nodeContainer.hitArea = new PIXI.Circle( - 0, - 0, - this.radius + this.strokeWidth - ) + this.nodeContainer.hitArea = new PIXI.Circle(0, 0, this.radius + this.strokeWidth) if (this.labelSprite) { this.labelSprite.y = this.radius + this.strokeWidth + LABEL_Y_PADDING } if (this.labelBackgroundSprite) { - this.labelBackgroundSprite.y = - this.radius + this.strokeWidth + LABEL_Y_PADDING + this.labelBackgroundSprite.y = this.radius + this.strokeWidth + LABEL_Y_PADDING } for (const subgraphNodeId in this.subgraphNodes) { @@ -659,12 +544,7 @@ export class NodeRenderer { } private pointerEnter = (event: PIXI.InteractionEvent) => { - if ( - this.renderer.hoveredNode === this || - this.renderer.clickedNode !== undefined || - this.renderer.dragging - ) - return + if (this.renderer.hoveredNode === this || this.renderer.clickedNode !== undefined || this.renderer.dragging) return this.renderer.hoveredNode = this @@ -676,18 +556,10 @@ export class NodeRenderer { this.renderer.frontLabelLayer.addChild(this.labelContainer) for (const subgraphNodeId in this.subgraphNodes) { - this.renderer.nodesLayer.removeChild( - this.subgraphNodes[subgraphNodeId].nodeContainer - ) - this.renderer.labelsLayer.removeChild( - this.subgraphNodes[subgraphNodeId].labelContainer - ) - this.renderer.frontNodeLayer.addChild( - this.subgraphNodes[subgraphNodeId].nodeContainer - ) - this.renderer.frontLabelLayer.addChild( - this.subgraphNodes[subgraphNodeId].labelContainer - ) + this.renderer.nodesLayer.removeChild(this.subgraphNodes[subgraphNodeId].nodeContainer) + this.renderer.labelsLayer.removeChild(this.subgraphNodes[subgraphNodeId].labelContainer) + this.renderer.frontNodeLayer.addChild(this.subgraphNodes[subgraphNodeId].nodeContainer) + this.renderer.frontLabelLayer.addChild(this.subgraphNodes[subgraphNodeId].labelContainer) } const { x, y } = this.renderer.root.toLocal(event.data.global) @@ -699,7 +571,7 @@ export class NodeRenderer { clientX: client.x, clientY: client.y, target: this.node, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } @@ -711,9 +583,7 @@ export class NodeRenderer { } this.renderer.clickedNode = this - ;( - this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager - ).on('pointermove', this.pointerMove) + ;(this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager).on('pointermove', this.pointerMove) this.renderer.zoomInteraction.pause() this.renderer.dragInteraction.pause() this.renderer.decelerateInteraction.pause() @@ -728,7 +598,7 @@ export class NodeRenderer { clientX: client.x, clientY: client.y, target: this.node, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } @@ -757,7 +627,7 @@ export class NodeRenderer { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } @@ -773,7 +643,7 @@ export class NodeRenderer { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } @@ -781,9 +651,7 @@ export class NodeRenderer { if (this.renderer.clickedNode === undefined) return this.renderer.clickedNode = undefined - ;( - this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager - ).off('pointermove', this.pointerMove) + ;(this.renderer.app.renderer.plugins.interaction as PIXI.InteractionManager).off('pointermove', this.pointerMove) this.renderer.zoomInteraction.resume() this.renderer.dragInteraction.resume() this.renderer.decelerateInteraction.resume() @@ -807,7 +675,7 @@ export class NodeRenderer { altKey: this.renderer.altKey, ctrlKey: this.renderer.ctrlKey, metaKey: this.renderer.metaKey, - shiftKey: this.renderer.shiftKey, + shiftKey: this.renderer.shiftKey }) } else { this.renderer.onNodePointerUp?.({ @@ -817,7 +685,7 @@ export class NodeRenderer { clientX: client.x, clientY: client.y, target: this.node, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) this.renderer.onNodeClick?.({ type: 'nodePointer', @@ -826,7 +694,7 @@ export class NodeRenderer { clientX: client.x, clientY: client.y, target: this.node, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) if (this.doubleClick) { @@ -839,19 +707,14 @@ export class NodeRenderer { clientX: client.x, clientY: client.y, target: this.node, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } } } private pointerLeave = (event: PIXI.InteractionEvent) => { - if ( - this.renderer.clickedNode !== undefined || - this.renderer.hoveredNode !== this || - this.renderer.dragging - ) - return + if (this.renderer.clickedNode !== undefined || this.renderer.hoveredNode !== this || this.renderer.dragging) return this.renderer.hoveredNode = undefined @@ -863,18 +726,10 @@ export class NodeRenderer { this.renderer.labelsLayer.addChild(this.labelContainer) for (const subgraphNodeId in this.subgraphNodes) { - this.renderer.frontNodeLayer.removeChild( - this.subgraphNodes[subgraphNodeId].nodeContainer - ) - this.renderer.frontLabelLayer.removeChild( - this.subgraphNodes[subgraphNodeId].labelContainer - ) - this.renderer.nodesLayer.addChild( - this.subgraphNodes[subgraphNodeId].nodeContainer - ) - this.renderer.labelsLayer.addChild( - this.subgraphNodes[subgraphNodeId].labelContainer - ) + this.renderer.frontNodeLayer.removeChild(this.subgraphNodes[subgraphNodeId].nodeContainer) + this.renderer.frontLabelLayer.removeChild(this.subgraphNodes[subgraphNodeId].labelContainer) + this.renderer.nodesLayer.addChild(this.subgraphNodes[subgraphNodeId].nodeContainer) + this.renderer.labelsLayer.addChild(this.subgraphNodes[subgraphNodeId].labelContainer) } const { x, y } = this.renderer.root.toLocal(event.data.global) @@ -886,7 +741,7 @@ export class NodeRenderer { clientX: client.x, clientY: client.y, target: this.node, - ...pointerKeysFromEvent(event.data.originalEvent), + ...pointerKeysFromEvent(event.data.originalEvent) }) } diff --git a/src/renderers/webgl/sprites/ImageSprite.ts b/src/renderers/webgl/sprites/ImageSprite.ts index 854b3c13..9c81bb0e 100644 --- a/src/renderers/webgl/sprites/ImageSprite.ts +++ b/src/renderers/webgl/sprites/ImageSprite.ts @@ -1,6 +1,5 @@ import * as PIXI from 'pixi.js-legacy' - // export class ImageSprite { // cache: { [url: string]: PIXI.Texture } = {} @@ -17,13 +16,11 @@ import * as PIXI from 'pixi.js-legacy' // delete() {} // } - /** * TODO - cacheing textures doesn't always work on initial render * need to use pixi loader */ export class ImageSprite { - cache: { [url: string]: PIXI.Texture } = {} create(url: string, scale: number = 1, offsetX: number = 0, offsetY: number = 0) { diff --git a/src/renderers/webgl/sprites/arrowSprite.ts b/src/renderers/webgl/sprites/arrowSprite.ts index 501575d9..0dcbacf4 100644 --- a/src/renderers/webgl/sprites/arrowSprite.ts +++ b/src/renderers/webgl/sprites/arrowSprite.ts @@ -1,10 +1,8 @@ import * as PIXI from 'pixi.js-legacy' import { InternalRenderer } from '..' -import { Node, Edge } from '../../..' - +import { Node, Edge } from '../../../trellis' export class ArrowSprite { - static ARROW_HEIGHT = 12 static ARROW_WIDTH = 6 @@ -15,9 +13,9 @@ export class ArrowSprite { new PIXI.Graphics() .beginFill(0xffffff) .lineTo(ArrowSprite.ARROW_HEIGHT * 2, ArrowSprite.ARROW_WIDTH) - .lineTo(ArrowSprite.ARROW_HEIGHT * 2, - ArrowSprite.ARROW_WIDTH), + .lineTo(ArrowSprite.ARROW_HEIGHT * 2, -ArrowSprite.ARROW_WIDTH), PIXI.SCALE_MODES.LINEAR, - 2, // window.devicePixelRatio, + 2 // window.devicePixelRatio, ) } diff --git a/src/renderers/webgl/sprites/circleSprite.ts b/src/renderers/webgl/sprites/circleSprite.ts index 9ff36714..214fe3aa 100644 --- a/src/renderers/webgl/sprites/circleSprite.ts +++ b/src/renderers/webgl/sprites/circleSprite.ts @@ -1,21 +1,17 @@ import * as PIXI from 'pixi.js-legacy' import { InternalRenderer } from '..' -import { Node, Edge } from '../../..' - +import { Node, Edge } from '../../../trellis' export class CircleSprite { - static radius = 500 private texture: PIXI.RenderTexture constructor(renderer: InternalRenderer) { this.texture = renderer.app.renderer.generateTexture( - new PIXI.Graphics() - .beginFill(0xffffff) - .drawCircle(0, 0, CircleSprite.radius), + new PIXI.Graphics().beginFill(0xffffff).drawCircle(0, 0, CircleSprite.radius), PIXI.SCALE_MODES.LINEAR, - 2, + 2 ) } @@ -31,7 +27,6 @@ export class CircleSprite { } } - /** * TODO - generate circle sprites on the fly scaled to the max scale they can be rendered at */ @@ -48,7 +43,6 @@ export class CircleSprite { // } // } - // export class CircleSpriteFactory { // private textures: { [radius: number]: PIXI.Texture } = {} diff --git a/src/renderers/webgl/sprites/fontIconSprite.ts b/src/renderers/webgl/sprites/fontIconSprite.ts index afb3b897..faee1e63 100644 --- a/src/renderers/webgl/sprites/fontIconSprite.ts +++ b/src/renderers/webgl/sprites/fontIconSprite.ts @@ -1,9 +1,7 @@ import * as PIXI from 'pixi.js-legacy' import { TextStyleFontWeight } from 'pixi.js-legacy' - export class FontIconSprite { - cache: { [icon: string]: PIXI.Texture } = {} create(text: string, fontFamily: string, fontSize: number, fontWeight: TextStyleFontWeight, fill: string) { @@ -32,4 +30,3 @@ export class FontIconSprite { this.cache = {} } } - diff --git a/src/renderers/webgl/utils.ts b/src/renderers/webgl/utils.ts index 5761baf4..7f230022 100644 --- a/src/renderers/webgl/utils.ts +++ b/src/renderers/webgl/utils.ts @@ -1,8 +1,7 @@ import { color } from 'd3-color' import { InternalRenderer } from '.' import { NodeRenderer } from './node' -import { Node, Edge } from '../..' - +import { Node, Edge } from '../../trellis' export const colorToNumber = (colorString: string): number => { const c = color(colorString) @@ -13,7 +12,6 @@ export const colorToNumber = (colorString: string): number => { return parseInt(c.hex().slice(1), 16) } - export const parentInFront = (renderer: InternalRenderer, parent: NodeRenderer | undefined) => { while (parent) { if (renderer.hoveredNode === parent) { @@ -25,49 +23,45 @@ export const parentInFront = (renderer: Internal return false } - -export const movePoint = (x: number, y: number, angle: number, distance: number): [number, number] => [x + Math.cos(angle) * distance, y + Math.sin(angle) * distance] - +export const movePoint = (x: number, y: number, angle: number, distance: number): [number, number] => [ + x + Math.cos(angle) * distance, + y + Math.sin(angle) * distance +] export const midPoint = (x0: number, y0: number, x1: number, y1: number): [number, number] => [(x0 + x1) / 2, (y0 + y1) / 2] - export const length = (x0: number, y0: number, x1: number, y1: number) => Math.hypot(x1 - x0, y1 - y0) - export const angle = (x0: number, y0: number, x1: number, y1: number) => { const angle = Math.atan2(y0 - y1, x0 - x1) return angle < 0 ? angle + TWO_PI : angle } - /** * Warning, TouchEvent does not exist in some browsers (e.g. Safari Version 14.0.2 (15610.3.7.1.10, 15610)) * so don't reference it directly */ -export const clientPositionFromEvent = (event: MouseEvent | PointerEvent | TouchEvent) => ( - event instanceof MouseEvent || event instanceof PointerEvent ? - { x: event.clientX, y: event.clientY } : - event.type === 'touchend' ? - { x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY } : - { x: event.touches[0].clientX, y: event.touches[0].clientY } -) - - -export const pointerKeysFromEvent = (event: MouseEvent | PointerEvent | TouchEvent) => ( - event instanceof MouseEvent || event instanceof PointerEvent ? - { altKey: event.altKey, ctrlKey: event.ctrlKey, metaKey: event.metaKey, shiftKey: event.shiftKey } : - {} -) - +export const clientPositionFromEvent = (event: MouseEvent | PointerEvent | TouchEvent) => + event instanceof MouseEvent || event instanceof PointerEvent + ? { x: event.clientX, y: event.clientY } + : event.type === 'touchend' + ? { x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY } + : { x: event.touches[0].clientX, y: event.touches[0].clientY } + +export const pointerKeysFromEvent = (event: MouseEvent | PointerEvent | TouchEvent) => + event instanceof MouseEvent || event instanceof PointerEvent + ? { + altKey: event.altKey, + ctrlKey: event.ctrlKey, + metaKey: event.metaKey, + shiftKey: event.shiftKey + } + : {} export const HALF_PI = Math.PI / 2 - export const TWO_PI = Math.PI * 2 - export const THREE_HALF_PI = HALF_PI * 3 - export const RADIANS_PER_DEGREE = Math.PI / 180 diff --git a/src/trellis.ts b/src/trellis.ts new file mode 100644 index 00000000..9e3fb1ca --- /dev/null +++ b/src/trellis.ts @@ -0,0 +1,380 @@ +export type Node = { + id: string + radius: number + x?: number + y?: number + fx?: number + fy?: number + label?: string + style?: NodeStyle + subgraph?: { + nodes: Node[] + edges: Edge[] + options?: {} + } +} + +export type Edge = { + id: string + source: string + target: string + label?: string + style?: EdgeStyle +} + +export type TextIcon = { + type: 'textIcon' + family: string + text: string + color: string + size: number +} + +export type ImageIcon = { + type: 'imageIcon' + url: string + scale?: number + offsetX?: number + offsetY?: number +} + +type LabelStyle = Partial<{ + color: string + fontFamily: string + fontSize: number + wordWrap: number + background: string + backgroundOpacity: number +}> + +export type NodeStyle = { + color?: string + icon?: TextIcon | ImageIcon + stroke?: { + color?: string + width?: number + }[] + badge?: { + position: number + radius?: number + color?: string + stroke?: string + strokeWidth?: number + icon?: TextIcon | ImageIcon + }[] + label?: LabelStyle +} + +export type EdgeStyle = { + width?: number + stroke?: string + strokeOpacity?: number + arrow?: 'forward' | 'reverse' | 'both' | 'none' + label?: LabelStyle +} + +export type CircleAnnotation = { + type: 'circle' + id: string + x: number + y: number + radius: number + style: { + backgroundColor: string + stroke: { + color: string + width: number + } + } +} + +export type RectangleAnnotation = { + type: 'rectangle' + id: string + x: number + y: number + width: number + height: number + resize?: boolean + style: { + backgroundColor: string + stroke: { + color: string + width: number + } + } +} + +export type TextAnnotation = { + type: 'text' + id: string + x: number + y: number + width: number + height: number + content: string + resize?: boolean + style: Partial<{ + backgroundColor: string + padding: number + stroke: { + color: string + width: number + } + text: Partial<{ + fontName: string + fontSize: number + fontWeight: 'normal' | 'bold' | 'bolder' | 'lighter' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' + fontStyle: 'normal' | 'italic' | 'oblique' + weight: string + color: string + align: 'left' | 'center' | 'right' | 'justify' + letterSpacing: number + lineSpacing: number + maxWidth: number + }> + }> +} + +export type Annotation = CircleAnnotation | RectangleAnnotation | TextAnnotation + +export type Bounds = { + left: number + top: number + right: number + bottom: number +} + +export type Dimensions = { width: number; height: number } + +export type Viewport = { x: number; y: number; zoom: number } + +export const getSelectionBounds = (elements: (Node | Annotation)[], padding: number = 0): Bounds => { + let left = 0 + let top = 0 + let right = 0 + let bottom = 0 + + for (const el of elements) { + if ('radius' in el) { + const elementLeft = (el.x ?? 0) - el.radius + const elementTop = (el.y ?? 0) - el.radius + const elementRight = (el.x ?? 0) + el.radius + const elementBottom = (el.y ?? 0) + el.radius + if (elementLeft < left) left = elementLeft + if (elementTop < top) top = elementTop + if (elementRight > right) right = elementRight + if (elementBottom > bottom) bottom = elementBottom + } else if ('width' in el && 'height' in el) { + const elementLeft = el.x ?? 0 + const elementTop = el.y ?? 0 + const elementRight = (el.x ?? 0) + el.width + const elementBottom = (el.x ?? 0) + el.height + if (elementLeft < left) left = elementLeft + if (elementTop < top) top = elementTop + if (elementRight > right) right = elementRight + if (elementBottom > bottom) bottom = elementBottom + } + } + + return { + left: left - padding, + top: top - padding, + right: right + padding, + bottom: bottom + padding + } +} + +export const mergeBounds = (a: Bounds, b: Bounds, padding: number = 0): Bounds => { + return { + left: Math.min(a.left, b.left) - padding, + top: Math.min(a.top, b.top) - padding, + right: Math.max(a.right, b.right) + padding, + bottom: Math.max(a.bottom, b.bottom) + padding + } +} + +export const viewportToBounds = ({ x, y, zoom }: Viewport, { width, height }: Dimensions): Bounds => { + const xOffset = width / 2 / zoom + const yOffset = height / 2 / zoom + return { + left: -(x + xOffset), + top: -(y + yOffset), + right: -(x - xOffset), + bottom: -(y - yOffset) + } +} + +export const boundsToViewport = ({ left, top, right, bottom }: Bounds, { width, height }: Dimensions): Viewport => { + const targetWidth = right - left + const targetHeight = bottom - top + const x = targetWidth / 2 - right + const y = targetHeight / 2 - bottom + + if (targetWidth / targetHeight > width / height) { + // fit to width + return { x, y, zoom: width / targetWidth } + } else { + // fit to height + return { x, y, zoom: height / targetHeight } + } +} + +export const boundsToDimensions = ({ left, top, right, bottom }: Bounds, zoom: number): Dimensions => { + return { + width: (right - left) / zoom, + height: (bottom - top) / zoom + } +} + +export const clamp = (min: number, max: number, value: number) => Math.max(min, Math.min(max, value)) + +export const equals = (a: T, b: T) => { + if (a === b) { + return true + } else if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) { + return false + } + + for (let i = 0; i < a.length; i++) { + if (!equals(a[i], b[i])) { + return false + } + } + + return true + } else if (typeof a === 'object' && typeof b === 'object') { + if (Object.keys(a ?? {}).length !== Object.keys(b ?? {}).length) { + return false + } + + for (const key in a) { + if (!equals(a[key], b?.[key])) { + return false + } + } + + return true + } + + return false +} + +export const connectedComponents = (graph: { nodes: N[]; edges: E[] }): { nodes: N[]; edges: E[] }[] => { + const adjacencyList: Record> = {} + const nodes: Record = {} + const visited = new Set() + const components: { nodes: Record; edges: Record }[] = [] + + for (const edge of graph.edges) { + if (adjacencyList[edge.source] === undefined) { + adjacencyList[edge.source] = {} + } + if (adjacencyList[edge.source][edge.target] === undefined) { + adjacencyList[edge.source][edge.target] = [] + } + if (adjacencyList[edge.target] === undefined) { + adjacencyList[edge.target] = {} + } + if (adjacencyList[edge.target][edge.source] === undefined) { + adjacencyList[edge.target][edge.source] = [] + } + + adjacencyList[edge.source][edge.target].push(edge) + adjacencyList[edge.target][edge.source].push(edge) + } + + for (const node of graph.nodes) { + nodes[node.id] = node + } + + for (const { id } of graph.nodes) { + if (visited.has(id)) { + continue + } + + visited.add(id) + const toVisit = [id] + const component: { nodes: Record; edges: Record } = { + nodes: { [id]: nodes[id] }, + edges: {} + } + + while (toVisit.length > 0) { + const next = adjacencyList[toVisit.pop()!] + if (next === undefined) { + continue + } + + for (const [adjacentNode, edges] of Object.entries(next)) { + for (const edge of edges) { + component.edges[edge.id] = edge + } + component.nodes[adjacentNode] = nodes[adjacentNode] + + if (!visited.has(adjacentNode)) { + toVisit.push(adjacentNode) + visited.add(adjacentNode) + } + } + } + + components.push(component) + } + + return components.map(({ nodes, edges }) => ({ + nodes: Object.values(nodes), + edges: Object.values(edges) + })) +} + +export function* bfs( + predicate: (node: N) => boolean, + graph: { nodes: N[]; edges: E[] } +): Generator { + const adjacencyList: Record = {} + const nodes: Record = {} + const visited = new Set() + const queue = [graph.nodes[0].id] + + for (const edge of graph.edges) { + if (adjacencyList[edge.source] === undefined) { + adjacencyList[edge.source] = [] + } + if (adjacencyList[edge.target] === undefined) { + adjacencyList[edge.target] = [] + } + + adjacencyList[edge.source].push(edge.target) + adjacencyList[edge.target].push(edge.source) + } + + for (const node of graph.nodes) { + nodes[node.id] = node + } + + while (queue.length > 0) { + const node = queue.shift()! + + if (visited.has(node)) { + continue + } + + visited.add(node) + + if (predicate(nodes[node])) { + yield nodes[node] + } + + if (adjacencyList[node]) { + for (const adjacentNode of adjacencyList[node]) { + if (!visited.has(adjacentNode)) { + queue.push(adjacentNode) + } + } + } + } +} + +export const distance = (x0: number, y0: number, x1: number, y1: number) => Math.hypot(x1 - x0, y1 - y0) diff --git a/src/types.ts b/src/types.ts index 042087fa..6ea3977d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,3 +1,3 @@ export type Extend = { - [K in Exclude]: T[K]; + [K in Exclude]: T[K] } & R diff --git a/src/unsafe-eval.d.ts b/src/unsafe-eval.d.ts index b97ba8dc..2a45a844 100644 --- a/src/unsafe-eval.d.ts +++ b/src/unsafe-eval.d.ts @@ -1,5 +1,3 @@ declare module '@pixi/unsafe-eval' { - export function install(pixi: unknown): void - } diff --git a/src/utils.ts b/src/utils.ts index c92857b6..6ee3fb42 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,9 +1,7 @@ import { interpolateBasis, interpolateNumber } from 'd3-interpolate' - export const noop = () => {} - export const throttle = (cb: (...args: T) => void, duration: number) => { let clear = true @@ -19,7 +17,6 @@ export const throttle = (cb: (...args: T) => void, duration } } - export const batch = (cb: (args: T[]) => void, duration: number) => { let values: T[] = [] let clear = true @@ -39,7 +36,6 @@ export const batch = (cb: (args: T[]) => void, duration: numb } } - export const animationFrameLoop = (cb: (time: number) => void) => { let frame: number @@ -53,7 +49,6 @@ export const animationFrameLoop = (cb: (time: number) => void) => { return () => cancelAnimationFrame(frame) } - export const throttleAnimationFrame = (cb: (...args: T) => void) => { let tailArgs: T | undefined let clear = true @@ -76,10 +71,8 @@ export const throttleAnimationFrame = (cb: (...args: T) => } } - export const identity = (value: T) => value - export const interpolateInterval = (count: number, duration: number) => { let i = 0 let interval: number | undefined = undefined @@ -101,7 +94,6 @@ export const interpolateInterval = (count: number, duration: number) => { } } - export const interpolateDuration = (duration: number) => { let start: number | undefined let end: number | undefined @@ -132,7 +124,6 @@ export const interpolateDuration = (duration: number) => { } } - export const interpolate = (from: number, to: number, duration: number, time: number) => { let elapsed = 0 let t1 = time diff --git a/tsconfig.json b/tsconfig.json index 6754c4d6..2da2a4ab 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,35 +2,35 @@ "compilerOptions": { /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ - "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ - "lib": ["es2015","es2017","dom"], /* Specify library files to be included in the compilation. */ + "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": ["es2015", "es2017", "dom"] /* Specify library files to be included in the compilation. */, // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ + "sourceMap": true /* Generates corresponding '.map' file. */, // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./dist", /* Redirect output structure to the directory. */ + "outDir": "./dist" /* Redirect output structure to the directory. */, // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ // "composite": true, /* Enable project compilation */ // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ // "removeComments": true, /* Do not emit comments to output. */ // "noEmit": true, /* Do not emit outputs. */ // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + "downlevelIteration": true /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */, // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - "strictNullChecks": true, /* Enable strict null checks. */ - "strictFunctionTypes": true, /* Enable strict checking of function types. */ - "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, + "strictNullChecks": true /* Enable strict null checks. */, + "strictFunctionTypes": true /* Enable strict checking of function types. */, + "strictBindCallApply": true /* Enable strict 'bind', 'call', and 'apply' methods on functions. */, + "strictPropertyInitialization": true /* Enable strict checking of property initialization in classes. */, + "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, + "alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, /* Additional Checks */ // "noUnusedLocals": true, /* Report errors on unused locals. */ @@ -46,7 +46,7 @@ // "typeRoots": [], /* List of folders to include type definitions from. */ // "types": [], /* Type declaration files to be included in compilation. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ @@ -60,10 +60,6 @@ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ }, - "include": [ - "src/**/*" - ], - "exclude": [ - "src/index.umd.ts" - ] + "include": ["src/**/*"], + "exclude": ["src/index.ts"] }