├── .gitignore ├── Blockchain ├── .gitignore ├── Backend │ ├── core │ │ ├── .gitignore │ │ ├── block.js │ │ ├── blockHeader.js │ │ └── blockchain.js │ ├── util │ │ └── util.js │ └── database │ │ ├── model │ │ ├── demos.js │ │ └── blockSchema.js │ │ ├── dbtest.js │ │ └── read.js ├── frontend │ ├── .eslintrc.json │ ├── styles │ │ ├── globals.css │ │ └── Home.module.css │ ├── public │ │ ├── logo.png │ │ ├── cover.png │ │ ├── favicon.ico │ │ └── vercel.svg │ ├── postcss.config.js │ ├── next.config.js │ ├── pages │ │ ├── api │ │ │ ├── hello.js │ │ │ └── fetchBlocks.js │ │ ├── _app.js │ │ ├── index.js │ │ ├── scroll.js │ │ ├── blocks │ │ │ └── [block].js │ │ ├── test.js │ │ └── blocks.js │ ├── tailwind.config.js │ ├── .gitignore │ ├── package.json │ ├── README.md │ ├── components │ │ └── Navbar.js │ └── package-lock.json └── demo.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env -------------------------------------------------------------------------------- /Blockchain/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env -------------------------------------------------------------------------------- /Blockchain/Backend/core/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env -------------------------------------------------------------------------------- /Blockchain/frontend/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /Blockchain/frontend/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /Blockchain/frontend/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anni1236012/blockchain-explorer/HEAD/Blockchain/frontend/public/logo.png -------------------------------------------------------------------------------- /Blockchain/frontend/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /Blockchain/frontend/public/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anni1236012/blockchain-explorer/HEAD/Blockchain/frontend/public/cover.png -------------------------------------------------------------------------------- /Blockchain/frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anni1236012/blockchain-explorer/HEAD/Blockchain/frontend/public/favicon.ico -------------------------------------------------------------------------------- /Blockchain/frontend/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: false, 4 | }; 5 | 6 | module.exports = nextConfig; 7 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/api/hello.js: -------------------------------------------------------------------------------- 1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction 2 | 3 | export default function handler(req, res) { 4 | res.status(200).json({ name: 'John Doe' }) 5 | } 6 | -------------------------------------------------------------------------------- /Blockchain/frontend/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | "./pages/**/*.{js,ts,jsx,tsx}", 4 | "./components/**/*.{js,ts,jsx,tsx}", 5 | ], 6 | theme: { 7 | extend: {}, 8 | }, 9 | plugins: [], 10 | }; 11 | -------------------------------------------------------------------------------- /Blockchain/Backend/util/util.js: -------------------------------------------------------------------------------- 1 | const crypto = require("crypto"); 2 | 3 | // Return hash256 for a given message 4 | const hash256 = (message) => { 5 | return crypto.createHash("sha256").update(message).digest("hex"); 6 | }; 7 | 8 | module.exports = { hash256 }; 9 | -------------------------------------------------------------------------------- /Blockchain/Backend/database/model/demos.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | const Schema = mongoose.Schema; 3 | 4 | const userSchema = Schema({ 5 | email: String, 6 | userName: String, 7 | }); 8 | 9 | module.exports = mongoose.model("users", userSchema); 10 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/_app.js: -------------------------------------------------------------------------------- 1 | import "../styles/globals.css"; 2 | import Navbar from "../components/Navbar"; 3 | 4 | function MyApp({ Component, pageProps }) { 5 | return ( 6 | <> 7 | 8 | 9 | 10 | ); 11 | } 12 | 13 | export default MyApp; 14 | -------------------------------------------------------------------------------- /Blockchain/Backend/core/block.js: -------------------------------------------------------------------------------- 1 | class Block { 2 | /* Block is a Storage Container that stores transactions */ 3 | constructor(Height, BlockSize, BlockHeader, TxCount, Txs) { 4 | this.Height = Height; 5 | this.BlockSize = BlockSize; 6 | this.blockHeader = BlockHeader; 7 | this.TxCount = TxCount; 8 | this.Txs = Txs; 9 | } 10 | } 11 | 12 | module.exports = { Block }; 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Blockchain_js", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.0.0", 14 | "hashlib": "^1.0.1", 15 | "mongoose": "^6.2.6", 16 | "sqlite3": "^5.0.2" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Blockchain/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | -------------------------------------------------------------------------------- /Blockchain/Backend/database/dbtest.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const mongoose = require("mongoose"); 3 | 4 | const connectDB = async () => { 5 | try { 6 | await mongoose.connect(process.env.DATABASE_URI, { 7 | keepAlive: 1, 8 | useUnifiedTopology: true, 9 | useNewUrlParser: true, 10 | }); 11 | 12 | console.log("CONNECTED to MONGODB DATABASE"); 13 | return mongoose; 14 | } catch (err) { 15 | console.error(err); 16 | } 17 | }; 18 | 19 | if (require.main === module) { 20 | connectDB(); 21 | } 22 | 23 | module.exports = connectDB; 24 | -------------------------------------------------------------------------------- /Blockchain/frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "axios": "^0.26.1", 13 | "next": "12.1.5", 14 | "react": "18.0.0", 15 | "react-dom": "18.0.0" 16 | }, 17 | "devDependencies": { 18 | "autoprefixer": "^10.4.4", 19 | "eslint": "8.13.0", 20 | "eslint-config-next": "12.1.5", 21 | "postcss": "^8.4.12", 22 | "tailwindcss": "^3.0.24" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/api/fetchBlocks.js: -------------------------------------------------------------------------------- 1 | const Block = require("../../../Backend/database/model/blockSchema"); 2 | 3 | export default async function fetchBlocks(req, res) { 4 | const PAGE_SIZE = 20; 5 | const currentBlock = req.query.blockHeight 6 | ? parseInt(req.query.blockHeight) 7 | : PAGE_SIZE; 8 | 9 | const latest = req.query.latest; 10 | 11 | if (currentBlock === 20 || latest === "1") { 12 | res.status(200).json( 13 | await Block.find({ Height: { $gt: currentBlock } }) 14 | .sort({ _id: -1 }) 15 | .limit(PAGE_SIZE) 16 | ); 17 | } else { 18 | res.status(200).json( 19 | await Block.find({ Height: { $lt: currentBlock } }) 20 | .sort({ _id: -1 }) 21 | .limit(PAGE_SIZE) 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Blockchain/demo.js: -------------------------------------------------------------------------------- 1 | const connect = require("./Backend/database/dbtest"); 2 | const Block = require("./Backend/database/model/blockSchema"); 3 | 4 | const createConnection = async () => { 5 | try { 6 | mongoose = await connect(); 7 | while (true) { 8 | let BlockObj = { 9 | Height: 1, 10 | BlockSize: 1, 11 | blockHeader: { 12 | version: 1, 13 | prevBlockHash: "00000", 14 | timestamp: Date.now(), 15 | bits: "dafdaf", 16 | nonce: 56463, 17 | blockHash: "adsfadfs", 18 | }, 19 | TxCount: 1, 20 | Transactions: "Test Transactions", 21 | }; 22 | 23 | await new Block(BlockObj).save(); 24 | console.log("Block Written Successfully"); 25 | } 26 | } catch (err) { 27 | console.log("Error while con", err); 28 | } 29 | }; 30 | 31 | createConnection(); 32 | -------------------------------------------------------------------------------- /Blockchain/Backend/database/read.js: -------------------------------------------------------------------------------- 1 | const connect = require("./dbtest"); 2 | const Block = require("./model/blockSchema"); 3 | 4 | const main = async (returnLast = false, filter = false, latestRecs = false) => { 5 | try { 6 | if (returnLast) { 7 | return await Block.find().sort({ _id: -1 }).limit(1); 8 | } 9 | 10 | if (filter) { 11 | // Create dynamic query to fetch data from database 12 | const query = {}; 13 | query[Object.keys(filter)[0]] = Object.values(filter)[0]; 14 | return Block.find(query); 15 | } 16 | 17 | if (latestRecs) { 18 | return await Block.find().sort({ _id: -1 }).limit(latestRecs); 19 | } 20 | // if no paramter is passed, return all data 21 | return Block.find(); 22 | } catch (err) { 23 | console.log("Error while con", err); 24 | } 25 | }; 26 | 27 | if (require.main === module) { 28 | main(); 29 | } 30 | 31 | exports.main = main; 32 | -------------------------------------------------------------------------------- /Blockchain/frontend/public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /Blockchain/Backend/database/model/blockSchema.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | const Schema = mongoose.Schema; 3 | 4 | const blockHeader = new Schema({ 5 | version: { 6 | type: Number, 7 | required: true, 8 | }, 9 | prevBlockHash: { 10 | type: String, 11 | required: true, 12 | }, 13 | merkleroot: { 14 | type: String, 15 | required: true, 16 | }, 17 | timestamp: { 18 | type: Number, 19 | required: true, 20 | }, 21 | bits: { 22 | type: String, 23 | required: true, 24 | }, 25 | nonce: { 26 | type: Number, 27 | required: true, 28 | }, 29 | blockhash: { 30 | type: String, 31 | required: true, 32 | }, 33 | }); 34 | 35 | const blockSchema = new Schema({ 36 | Height: { 37 | type: Number, 38 | required: true, 39 | }, 40 | BlockSize: { 41 | type: Number, 42 | require: true, 43 | }, 44 | blockHeader: blockHeader, 45 | TxCount: { 46 | type: Number, 47 | required: true, 48 | }, 49 | Transactions: { 50 | type: String, 51 | required: true, 52 | }, 53 | }); 54 | 55 | module.exports = 56 | mongoose.models.blockSchema || mongoose.model("blockSchema", blockSchema); 57 | -------------------------------------------------------------------------------- /Blockchain/Backend/core/blockHeader.js: -------------------------------------------------------------------------------- 1 | const { hash256 } = require("../util/util.js"); 2 | 3 | class BlockHeader { 4 | constructor(version, prevBlockhash, merkleRoot, timestamp, bits) { 5 | this.version = version; 6 | this.prevBlockhash = prevBlockhash; 7 | this.timestamp = timestamp; 8 | this.merkleRoot = merkleRoot; 9 | this.bits = bits; 10 | this.nonce = 0; 11 | this.blockhash = ""; 12 | } 13 | 14 | mine() { 15 | while (this.blockhash.substring(0, 4) != "0000") { 16 | // Generate Block Hashes by changing the Nonce Value 17 | this.blockhash = hash256( 18 | this.version.toString() + 19 | this.prevBlockhash + 20 | this.merkleRoot + 21 | this.timestamp.toString() + 22 | this.bits.toString() + 23 | this.nonce.toString() 24 | ); 25 | // Increment the Nonce Value 26 | this.nonce += 1; 27 | 28 | process.stdout.write( 29 | `Mining Started ${this.nonce} and Hash Value is ${this.blockhash} \r` 30 | ); 31 | } 32 | } 33 | } 34 | 35 | // Execute only if it is called from the same file 36 | // This won't get executed when imported in another file 37 | if (require.main === module) { 38 | const blockheader = new BlockHeader(1, 1, Date.now(), 1); 39 | blockheader.mine(); 40 | } 41 | 42 | module.exports = { BlockHeader }; 43 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/index.js: -------------------------------------------------------------------------------- 1 | import Head from "next/head"; 2 | 3 | export default function Home() { 4 | return ( 5 |
6 | 7 | Create Next App 8 | 9 | 10 | 11 | 12 |
13 |
14 |

18 | Blockchain Explorer, Analytics and Web services 19 |

20 |

21 | Explore data stored on 7 blockchains. Blockchain information for 22 | Bitcoin (BTC) including historical prices, the most recently mined 23 | blocks, the mempool size of unconfirmed transactions, and data for 24 | the latest transactions. 25 |

26 |
27 |
28 |
29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /Blockchain/frontend/README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | ``` 12 | 13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 14 | 15 | You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. 16 | 17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. 18 | 19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. 20 | 21 | ## Learn More 22 | 23 | To learn more about Next.js, take a look at the following resources: 24 | 25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 27 | 28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 29 | 30 | ## Deploy on Vercel 31 | 32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 33 | 34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 35 | -------------------------------------------------------------------------------- /Blockchain/frontend/components/Navbar.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | import { useRouter } from "next/router"; 4 | export default function Navbar() { 5 | const router = useRouter(); 6 | return ( 7 | 63 | ); 64 | } 65 | -------------------------------------------------------------------------------- /Blockchain/frontend/styles/Home.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | padding: 0 2rem; 3 | } 4 | 5 | .main { 6 | min-height: 100vh; 7 | padding: 4rem 0; 8 | flex: 1; 9 | display: flex; 10 | flex-direction: column; 11 | justify-content: center; 12 | align-items: center; 13 | } 14 | 15 | .footer { 16 | display: flex; 17 | flex: 1; 18 | padding: 2rem 0; 19 | border-top: 1px solid #eaeaea; 20 | justify-content: center; 21 | align-items: center; 22 | } 23 | 24 | .footer a { 25 | display: flex; 26 | justify-content: center; 27 | align-items: center; 28 | flex-grow: 1; 29 | } 30 | 31 | .title a { 32 | color: #0070f3; 33 | text-decoration: none; 34 | } 35 | 36 | .title a:hover, 37 | .title a:focus, 38 | .title a:active { 39 | text-decoration: underline; 40 | } 41 | 42 | .title { 43 | margin: 0; 44 | line-height: 1.15; 45 | font-size: 4rem; 46 | } 47 | 48 | .title, 49 | .description { 50 | text-align: center; 51 | } 52 | 53 | .description { 54 | margin: 4rem 0; 55 | line-height: 1.5; 56 | font-size: 1.5rem; 57 | } 58 | 59 | .code { 60 | background: #fafafa; 61 | border-radius: 5px; 62 | padding: 0.75rem; 63 | font-size: 1.1rem; 64 | font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, 65 | Bitstream Vera Sans Mono, Courier New, monospace; 66 | } 67 | 68 | .grid { 69 | display: flex; 70 | align-items: center; 71 | justify-content: center; 72 | flex-wrap: wrap; 73 | max-width: 800px; 74 | } 75 | 76 | .card { 77 | margin: 1rem; 78 | padding: 1.5rem; 79 | text-align: left; 80 | color: inherit; 81 | text-decoration: none; 82 | border: 1px solid #eaeaea; 83 | border-radius: 10px; 84 | transition: color 0.15s ease, border-color 0.15s ease; 85 | max-width: 300px; 86 | } 87 | 88 | .card:hover, 89 | .card:focus, 90 | .card:active { 91 | color: #0070f3; 92 | border-color: #0070f3; 93 | } 94 | 95 | .card h2 { 96 | margin: 0 0 1rem 0; 97 | font-size: 1.5rem; 98 | } 99 | 100 | .card p { 101 | margin: 0; 102 | font-size: 1.25rem; 103 | line-height: 1.5; 104 | } 105 | 106 | .logo { 107 | height: 1em; 108 | margin-left: 0.5rem; 109 | } 110 | 111 | @media (max-width: 600px) { 112 | .grid { 113 | width: 100%; 114 | flex-direction: column; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /Blockchain/Backend/core/blockchain.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const { hash256 } = require("../util/util"); 3 | const block = require("./block"); 4 | const blockchain = require("./blockHeader"); 5 | const Block = require("../database/model/blockSchema"); 6 | const connect = require("../database/dbtest"); 7 | const getLastBlock = require("../database/read"); 8 | 9 | VERSION = 1; 10 | const ZERO_HASH = String("0").padStart(64, "0"); 11 | 12 | let mongoose = ""; 13 | 14 | class Blockchain { 15 | async GenesisBlock() { 16 | try { 17 | console.log(mongoose.connection.readyState); 18 | const BlockHeight = 0; 19 | const prevBlockHash = ZERO_HASH; 20 | await this.addBlock(BlockHeight, prevBlockHash); 21 | } catch (err) { 22 | console.log(`Error in Genesis Blockchain Function \n ${err}`); 23 | } 24 | } 25 | 26 | async addBlock(BlockHeight, prevBlockHash) { 27 | let timestamp = Date.now(); 28 | let Transaction = `Codies Alert sent ${BlockHeight} to Anni Maan`; 29 | let merkleRoot = hash256(Transaction); 30 | let bits = "ffff001f"; 31 | let blockHeader = new blockchain.BlockHeader( 32 | VERSION, 33 | prevBlockHash, 34 | merkleRoot, 35 | timestamp, 36 | bits 37 | ); 38 | blockHeader.mine(); 39 | 40 | let BlockObj = { 41 | Height: BlockHeight, 42 | BlockSize: 1, 43 | blockHeader: { 44 | version: 1, 45 | prevBlockHash: blockHeader.prevBlockhash, 46 | merkleroot: merkleRoot, 47 | timestamp: timestamp, 48 | bits: bits, 49 | nonce: blockHeader.nonce, 50 | blockhash: blockHeader.blockhash, 51 | }, 52 | TxCount: 1, 53 | Transactions: Transaction, 54 | }; 55 | 56 | // Mongoose Schema, Write data 57 | try { 58 | await new Block(BlockObj).save(); 59 | console.log(BlockObj); 60 | console.log("Block Written Successfully"); 61 | this.chain = new block.Block(BlockHeight, 1, blockHeader, 1, Transaction); 62 | } catch (err) { 63 | console.log(`Error in addBlock Function \n ${err}`); 64 | } 65 | } 66 | 67 | // Main Function to trigger the process 68 | async main() { 69 | const lastBlock = await getLastBlock.main(true); 70 | console.log(lastBlock[0]); 71 | this.chain = lastBlock[0]; 72 | 73 | if (!this.chain) { 74 | await this.GenesisBlock(); 75 | } 76 | 77 | while (true) { 78 | console.log(mongoose.connection.readyState); 79 | let lastBlock = this.chain; 80 | let Blockheight = lastBlock.Height + 1; 81 | let prevBlockHash = lastBlock.blockHeader.blockhash; 82 | await this.addBlock(Blockheight, prevBlockHash); 83 | } 84 | } 85 | } 86 | 87 | const createConnection = async () => { 88 | try { 89 | mongoose = await connect(); 90 | const blockchain = new Blockchain(); 91 | blockchain.main(); 92 | } catch (err) { 93 | console.log("Error while con", err); 94 | } 95 | }; 96 | 97 | createConnection(); 98 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/scroll.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import connect from "../../Backend/database/dbtest"; 3 | import { useEffect, useState, useRef, useCallback } from "react"; 4 | // import read from "../../Backend/database/read"; 5 | export default function Blocks({ data }) { 6 | const [blocks, setBlocks] = useState([]); 7 | 8 | const HeightRef = useRef(); 9 | const isLoading = useRef(false); 10 | 11 | const MINUTE_MS = 500000; 12 | 13 | const loadNewBlocks = async () => { 14 | if (!isLoading.current) { 15 | isLoading.current = true; 16 | 17 | const res = await fetch( 18 | `http://localhost:3000/api/fetchBlocks?blockHeight=${HeightRef.current}` 19 | ); 20 | const newBlocks = await res.json(); 21 | 22 | HeightRef.current = newBlocks[newBlocks.length - 1].Height; 23 | setBlocks((prevBlocks) => [...prevBlocks, ...newBlocks]); 24 | // setBlocks((prevBlocks) => [...new Set([...prevBlocks, ...newBlocks])]); 25 | isLoading.current = false; 26 | } 27 | }; 28 | 29 | const handleScroll = async (e) => { 30 | if ( 31 | e.target.documentElement.scrollTop + window.innerHeight >= 32 | e.target.documentElement.scrollHeight 33 | ) { 34 | await loadNewBlocks(); 35 | } 36 | }; 37 | 38 | useEffect(() => { 39 | setBlocks(data); 40 | HeightRef.current = data[data.length - 1].Height; 41 | window.addEventListener("scroll", handleScroll); 42 | return () => { 43 | console.log("Listeners removed"); 44 | window.removeEventListener("scroll", handleScroll); 45 | }; 46 | }, []); 47 | 48 | useEffect(() => { 49 | const interval = setInterval(async () => { 50 | loadNewBlocks(); 51 | }, MINUTE_MS); 52 | 53 | return () => clearInterval(interval); // This represents the unmount function, in which you need to clear your interval to prevent memory leaks. 54 | }, []); 55 | 56 | return ( 57 |
58 |
59 |
60 | Latest Blocks 61 |
62 |
63 |
64 |
Block Height
65 |
Block Header
66 |
Transactions
67 |
Block Size
68 |
69 | {blocks.map((block) => ( 70 |
75 |
{block.Height}
76 |
77 | 78 |
79 | {block.blockHeader.blockhash} 80 |
81 | 82 |
83 |
{block.TxCount}
84 |
{block.BlockSize}
85 |
86 | ))} 87 |
88 |
89 |
90 | ); 91 | } 92 | 93 | export async function getServerSideProps() { 94 | const connection = await connect(); 95 | // const blocks = JSON.parse(JSON.stringify(await read.main(false, false, 20))); 96 | const res = await fetch("http://localhost:3000/api/fetchBlocks"); 97 | const data = await res.json(); 98 | 99 | return { 100 | props: { data }, 101 | }; 102 | } 103 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/blocks/[block].js: -------------------------------------------------------------------------------- 1 | import { useRouter } from "next/router"; 2 | import { useEffect, useState } from "react"; 3 | import Link from "next/link"; 4 | import read from "../../../Backend/database/read"; 5 | import connect from "../../../Backend/database/dbtest"; 6 | export default function Block({ block }) { 7 | const { Height, BlockSize, TxCount, Transactions } = block[0]; 8 | const { bits, timestamp, nonce, merkleroot, prevBlockHash } = 9 | block[0].blockHeader; 10 | const router = useRouter(); 11 | 12 | const { blockhash } = router.query; 13 | 14 | return ( 15 |
16 |
17 |
18 | {/* Populate Block Numner*/} 19 |
20 | Block #{Height} 21 |
22 | {/* Block Header*/} 23 | 24 |
25 | {blockhash} 26 |
27 | 28 | {/* Block Field Names*/} 29 |
30 |
31 |

Previous Block Hash

32 |
33 |
34 |

Merkle Root

35 |
36 |
37 |

Timestamp

38 |
39 |
40 |

Nonce

41 |
42 |
43 |

Number of Transactions

44 |
45 |
46 |

Bits

47 |
48 |
49 |

Blocksize

50 |
51 |
52 | {/* Populate Block Data*/} 53 |
54 | 55 |
56 |

{prevBlockHash}

57 |
58 | 59 | 60 |
61 |

{merkleroot}

62 |
63 |
64 |

{timestamp}

65 |
66 |
67 |

{nonce}

68 |
69 |
70 |

{TxCount}

71 |
72 |
73 |

{bits}

74 |
75 |
76 |

{BlockSize}

77 |
78 |
79 |
80 |
81 | 82 |
86 |
87 | Transactions 88 |
89 |
{Transactions}
90 |
91 |
92 | ); 93 | } 94 | 95 | export async function getServerSideProps(context) { 96 | const { blockhash } = context.query; 97 | const filter = { "blockHeader.blockhash": blockhash }; 98 | const connection = await connect(); 99 | const block = JSON.parse(JSON.stringify(await read.main(false, filter))); 100 | console.log("block", block); 101 | return { 102 | props: { block }, 103 | }; 104 | } 105 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/test.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import connect from "../../Backend/database/dbtest"; 3 | import { useEffect, useState, useRef, useCallback } from "react"; 4 | // import read from "../../Backend/database/read"; 5 | export default function Blocks({ data }) { 6 | const [blocks, setBlocks] = useState([]); 7 | const [pageNumber, setPageNumber] = useState(0); 8 | 9 | const HeightRef = useRef(); 10 | const LatestBlockHeight = useRef(); 11 | const isLoading = useRef(false); 12 | 13 | const MINUTE_MS = 10000; 14 | 15 | const loadOnScroll = async () => { 16 | isLoading.current = true; 17 | 18 | const res = await fetch( 19 | `http://localhost:3000/api/fetchBlocks?blockHeight=${HeightRef.current}` 20 | ); 21 | const newBlocks = await res.json(); 22 | 23 | HeightRef.current = newBlocks[newBlocks.length - 1].Height; 24 | setBlocks((prevBlocks) => [...prevBlocks, ...newBlocks]); 25 | isLoading.current = false; 26 | }; 27 | 28 | const loadLatestBlocks = async () => { 29 | const res = await fetch( 30 | `http://localhost:3000/api/fetchBlocks?blockHeight=${LatestBlockHeight.current}&latest=1` 31 | ); 32 | 33 | const newBlocks = await res.json(); 34 | console.log(newBlocks); 35 | // HeightRef.current = newBlocks[newBlocks.length - 1].Height; 36 | if (newBlocks[0].Height > LatestBlockHeight.current) { 37 | setBlocks((prevBlocks) => [...new Set([...newBlocks, ...prevBlocks])]); 38 | LatestBlockHeight.current = newBlocks[0].Height; 39 | } 40 | }; 41 | 42 | const observer = useRef(); 43 | const lastBlockRef = useCallback( 44 | (node) => { 45 | if (isLoading.current) return; 46 | if (observer.current) observer.current.disconnect(); 47 | observer.current = new IntersectionObserver((entries) => { 48 | if (entries[0].isIntersecting) { 49 | setPageNumber((prevPageNumber) => prevPageNumber + 20); 50 | } 51 | }); 52 | if (node) observer.current.observe(node); 53 | }, 54 | [isLoading.current] 55 | ); 56 | 57 | useEffect(() => { 58 | setBlocks(data); 59 | HeightRef.current = data[data.length - 1].Height; 60 | LatestBlockHeight.current = data[0].Height; 61 | }, []); 62 | 63 | useEffect(() => { 64 | loadOnScroll(); 65 | console.log("loadscroll calleed"); 66 | }, [pageNumber]); 67 | 68 | useEffect(() => { 69 | const interval = setInterval(async () => { 70 | loadLatestBlocks(); 71 | }, MINUTE_MS); 72 | 73 | return () => clearInterval(interval); // This represents the unmount function, in which you need to clear your interval to prevent memory leaks. 74 | }, []); 75 | 76 | return ( 77 |
78 |
79 |
80 | Latest Blocks 81 |
82 |
83 |
84 |
Block Height
85 |
Block Header
86 |
Transactions
87 |
Block Size
88 |
89 | {blocks.map((block, index) => { 90 | if (blocks.length === index + 1) { 91 | return ( 92 |
97 |
{block.Height}
98 |
99 | 102 |
103 | {block.blockHeader.blockhash} 104 |
105 | 106 |
107 |
{block.TxCount}
108 |
{block.BlockSize}
109 |
110 | ); 111 | } else { 112 | return ( 113 |
117 |
{block.Height}
118 |
119 | 122 |
123 | {block.blockHeader.blockhash} 124 |
125 | 126 |
127 |
{block.TxCount}
128 |
{block.BlockSize}
129 |
130 | ); 131 | } 132 | })} 133 |
134 |
135 |
136 | ); 137 | } 138 | 139 | export async function getServerSideProps() { 140 | const connection = await connect(); 141 | // const blocks = JSON.parse(JSON.stringify(await read.main(false, false, 20))); 142 | const res = await fetch("http://localhost:3000/api/fetchBlocks"); 143 | const data = await res.json(); 144 | 145 | return { 146 | props: { data }, 147 | }; 148 | } 149 | -------------------------------------------------------------------------------- /Blockchain/frontend/pages/blocks.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import connect from "../../Backend/database/dbtest"; 3 | import { useEffect, useState, useRef, useCallback } from "react"; 4 | 5 | export default function Blocks({ data }) { 6 | const [blocks, setBlocks] = useState([]); 7 | const [pageNumber, setPageNumber] = useState(0); 8 | 9 | const HeightRef = useRef(); 10 | const LatestBlockHeight = useRef(); 11 | const isLoading = useRef(false); 12 | 13 | const MINUTE_MS = 1000; 14 | 15 | const loadOnScroll = async () => { 16 | isLoading.current = true; 17 | 18 | const res = await fetch( 19 | `http://localhost:3000/api/fetchBlocks?blockHeight=${HeightRef.current}` 20 | ); 21 | const newBlocks = await res.json(); 22 | 23 | HeightRef.current = newBlocks[newBlocks.length - 1].Height; 24 | setBlocks((prevBlocks) => [...prevBlocks, ...newBlocks]); 25 | isLoading.current = false; 26 | }; 27 | 28 | const loadLatestBlocks = async () => { 29 | const res = await fetch( 30 | `http://localhost:3000/api/fetchBlocks?blockHeight=${LatestBlockHeight.current}&latest=1` 31 | ); 32 | 33 | const newBlocks = await res.json(); 34 | 35 | if ( 36 | newBlocks.length > 0 && 37 | newBlocks[0].Height > LatestBlockHeight.current 38 | ) { 39 | setBlocks((prevBlocks) => [...new Set([...newBlocks, ...prevBlocks])]); 40 | LatestBlockHeight.current = newBlocks[0].Height; 41 | } 42 | }; 43 | 44 | const observer = useRef(); 45 | const lastBlockRef = useCallback( 46 | (node) => { 47 | if (isLoading.current) return; 48 | if (observer.current) observer.current.disconnect(); 49 | observer.current = new IntersectionObserver((entries) => { 50 | if (entries[0].isIntersecting) { 51 | setPageNumber((prevPageNumber) => prevPageNumber + 20); 52 | } 53 | }); 54 | if (node) observer.current.observe(node); 55 | }, 56 | [isLoading.current] 57 | ); 58 | 59 | useEffect(() => { 60 | setBlocks(data); 61 | HeightRef.current = data[data.length - 1].Height; 62 | LatestBlockHeight.current = data[0].Height; 63 | }, []); 64 | 65 | useEffect(() => { 66 | loadOnScroll(); 67 | console.log("loadscroll calleed"); 68 | }, [pageNumber]); 69 | 70 | useEffect(() => { 71 | const interval = setInterval(async () => { 72 | loadLatestBlocks(); 73 | }, MINUTE_MS); 74 | 75 | return () => clearInterval(interval); // This represents the unmount function, in which you need to clear your interval to prevent memory leaks. 76 | }, []); 77 | 78 | return ( 79 |
80 |
81 |
82 | Latest Blocks 83 |
84 |
85 |
86 |
Block Height
87 |
Block Header
88 |
Transactions
89 |
Block Size
90 |
91 | {blocks.map((block, index) => { 92 | if (blocks.length === index + 1) { 93 | return ( 94 |
99 |
{block.Height}
100 | 105 |
106 |
107 | {block.blockHeader.blockhash} 108 |
109 |
110 | 111 |
{block.TxCount}
112 |
{block.BlockSize}
113 |
114 | ); 115 | } else { 116 | return ( 117 |
121 |
{block.Height}
122 | 127 |
128 |
129 | {block.blockHeader.blockhash} 130 |
131 |
132 | 133 |
{block.TxCount}
134 |
{block.BlockSize}
135 |
136 | ); 137 | } 138 | })} 139 |
140 |
141 |
142 | ); 143 | } 144 | 145 | export async function getServerSideProps() { 146 | const connection = await connect(); 147 | // const blocks = JSON.parse(JSON.stringify(await read.main(false, false, 20))); 148 | const res = await fetch("http://localhost:3000/api/fetchBlocks"); 149 | const data = await res.json(); 150 | 151 | return { 152 | props: { data }, 153 | }; 154 | } 155 | -------------------------------------------------------------------------------- /Blockchain/frontend/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/runtime": { 8 | "version": "7.17.9", 9 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", 10 | "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", 11 | "dev": true, 12 | "requires": { 13 | "regenerator-runtime": "^0.13.4" 14 | } 15 | }, 16 | "@babel/runtime-corejs3": { 17 | "version": "7.17.9", 18 | "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", 19 | "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", 20 | "dev": true, 21 | "requires": { 22 | "core-js-pure": "^3.20.2", 23 | "regenerator-runtime": "^0.13.4" 24 | } 25 | }, 26 | "@eslint/eslintrc": { 27 | "version": "1.2.1", 28 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", 29 | "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", 30 | "dev": true, 31 | "requires": { 32 | "ajv": "^6.12.4", 33 | "debug": "^4.3.2", 34 | "espree": "^9.3.1", 35 | "globals": "^13.9.0", 36 | "ignore": "^5.2.0", 37 | "import-fresh": "^3.2.1", 38 | "js-yaml": "^4.1.0", 39 | "minimatch": "^3.0.4", 40 | "strip-json-comments": "^3.1.1" 41 | } 42 | }, 43 | "@humanwhocodes/config-array": { 44 | "version": "0.9.5", 45 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", 46 | "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", 47 | "dev": true, 48 | "requires": { 49 | "@humanwhocodes/object-schema": "^1.2.1", 50 | "debug": "^4.1.1", 51 | "minimatch": "^3.0.4" 52 | } 53 | }, 54 | "@humanwhocodes/object-schema": { 55 | "version": "1.2.1", 56 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 57 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 58 | "dev": true 59 | }, 60 | "@next/env": { 61 | "version": "12.1.5", 62 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.5.tgz", 63 | "integrity": "sha512-+34yUJslfJi7Lyx6ELuN8nWcOzi27izfYnZIC1Dqv7kmmfiBVxgzR3BXhlvEMTKC2IRJhXVs2FkMY+buQe3k7Q==" 64 | }, 65 | "@next/eslint-plugin-next": { 66 | "version": "12.1.5", 67 | "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.5.tgz", 68 | "integrity": "sha512-Cnb8ERC5bNKBFrnMH6203sp/b0Y78QRx1XsFu+86oBtDBmQmOFoHu7teQjHm69ER73XKK3aGaeoLiXacHoUFsg==", 69 | "dev": true, 70 | "requires": { 71 | "glob": "7.1.7" 72 | }, 73 | "dependencies": { 74 | "glob": { 75 | "version": "7.1.7", 76 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 77 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 78 | "dev": true, 79 | "requires": { 80 | "fs.realpath": "^1.0.0", 81 | "inflight": "^1.0.4", 82 | "inherits": "2", 83 | "minimatch": "^3.0.4", 84 | "once": "^1.3.0", 85 | "path-is-absolute": "^1.0.0" 86 | } 87 | } 88 | } 89 | }, 90 | "@next/swc-android-arm-eabi": { 91 | "version": "12.1.5", 92 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5.tgz", 93 | "integrity": "sha512-SKnGTdYcoN04Y2DvE0/Y7/MjkA+ltsmbuH/y/hR7Ob7tsj+8ZdOYuk+YvW1B8dY20nDPHP58XgDTSm2nA8BzzA==", 94 | "optional": true 95 | }, 96 | "@next/swc-android-arm64": { 97 | "version": "12.1.5", 98 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.5.tgz", 99 | "integrity": "sha512-YXiqgQ/9Rxg1dXp6brXbeQM1JDx9SwUY/36JiE+36FXqYEmDYbxld9qkX6GEzkc5rbwJ+RCitargnzEtwGW0mw==", 100 | "optional": true 101 | }, 102 | "@next/swc-darwin-arm64": { 103 | "version": "12.1.5", 104 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5.tgz", 105 | "integrity": "sha512-y8mhldb/WFZ6lFeowkGfi0cO/lBdiBqDk4T4LZLvCpoQp4Or/NzUN6P5NzBQZ5/b4oUHM/wQICEM+1wKA4qIVw==", 106 | "optional": true 107 | }, 108 | "@next/swc-darwin-x64": { 109 | "version": "12.1.5", 110 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.5.tgz", 111 | "integrity": "sha512-wqJ3X7WQdTwSGi0kIDEmzw34QHISRIQ5uvC+VXmsIlCPFcMA+zM5723uh8NfuKGquDMiEMS31a83QgkuHMYbwQ==", 112 | "optional": true 113 | }, 114 | "@next/swc-linux-arm-gnueabihf": { 115 | "version": "12.1.5", 116 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5.tgz", 117 | "integrity": "sha512-WnhdM5duONMvt2CncAl+9pim0wBxDS2lHoo7ub/o/i1bRbs11UTzosKzEXVaTDCUkCX2c32lIDi1WcN2ZPkcdw==", 118 | "optional": true 119 | }, 120 | "@next/swc-linux-arm64-gnu": { 121 | "version": "12.1.5", 122 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5.tgz", 123 | "integrity": "sha512-Jq2H68yQ4bLUhR/XQnbw3LDW0GMQn355qx6rU36BthDLeGue7YV7MqNPa8GKvrpPocEMW77nWx/1yI6w6J07gw==", 124 | "optional": true 125 | }, 126 | "@next/swc-linux-arm64-musl": { 127 | "version": "12.1.5", 128 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5.tgz", 129 | "integrity": "sha512-KgPjwdbhDqXI7ghNN8V/WAiLquc9Ebe8KBrNNEL0NQr+yd9CyKJ6KqjayVkmX+hbHzbyvbui/5wh/p3CZQ9xcQ==", 130 | "optional": true 131 | }, 132 | "@next/swc-linux-x64-gnu": { 133 | "version": "12.1.5", 134 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5.tgz", 135 | "integrity": "sha512-O2ErUTvCJ6DkNTSr9pbu1n3tcqykqE/ebty1rwClzIYdOgpB3T2MfEPP+K7GhUR87wmN/hlihO9ch7qpVFDGKw==", 136 | "optional": true 137 | }, 138 | "@next/swc-linux-x64-musl": { 139 | "version": "12.1.5", 140 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5.tgz", 141 | "integrity": "sha512-1eIlZmlO/VRjxxzUBcVosf54AFU3ltAzHi+BJA+9U/lPxCYIsT+R4uO3QksRzRjKWhVQMRjEnlXyyq5SKJm7BA==", 142 | "optional": true 143 | }, 144 | "@next/swc-win32-arm64-msvc": { 145 | "version": "12.1.5", 146 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5.tgz", 147 | "integrity": "sha512-oromsfokbEuVb0CBLLE7R9qX3KGXucZpsojLpzUh1QJjuy1QkrPJncwr8xmWQnwgtQ6ecMWXgXPB+qtvizT9Tw==", 148 | "optional": true 149 | }, 150 | "@next/swc-win32-ia32-msvc": { 151 | "version": "12.1.5", 152 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5.tgz", 153 | "integrity": "sha512-a/51L5KzBpeZSW9LbekMo3I3Cwul+V+QKwbEIMA+Qwb2qrlcn1L9h3lt8cHqNTFt2y72ce6aTwDTw1lyi5oIRA==", 154 | "optional": true 155 | }, 156 | "@next/swc-win32-x64-msvc": { 157 | "version": "12.1.5", 158 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5.tgz", 159 | "integrity": "sha512-/SoXW1Ntpmpw3AXAzfDRaQidnd8kbZ2oSni8u5z0yw6t4RwJvmdZy1eOaAADRThWKV+2oU90++LSnXJIwBRWYQ==", 160 | "optional": true 161 | }, 162 | "@nodelib/fs.scandir": { 163 | "version": "2.1.5", 164 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 165 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 166 | "dev": true, 167 | "requires": { 168 | "@nodelib/fs.stat": "2.0.5", 169 | "run-parallel": "^1.1.9" 170 | } 171 | }, 172 | "@nodelib/fs.stat": { 173 | "version": "2.0.5", 174 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 175 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 176 | "dev": true 177 | }, 178 | "@nodelib/fs.walk": { 179 | "version": "1.2.8", 180 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 181 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 182 | "dev": true, 183 | "requires": { 184 | "@nodelib/fs.scandir": "2.1.5", 185 | "fastq": "^1.6.0" 186 | } 187 | }, 188 | "@rushstack/eslint-patch": { 189 | "version": "1.0.8", 190 | "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz", 191 | "integrity": "sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw==", 192 | "dev": true 193 | }, 194 | "@types/json5": { 195 | "version": "0.0.29", 196 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 197 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", 198 | "dev": true 199 | }, 200 | "@typescript-eslint/parser": { 201 | "version": "5.10.1", 202 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.1.tgz", 203 | "integrity": "sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA==", 204 | "dev": true, 205 | "requires": { 206 | "@typescript-eslint/scope-manager": "5.10.1", 207 | "@typescript-eslint/types": "5.10.1", 208 | "@typescript-eslint/typescript-estree": "5.10.1", 209 | "debug": "^4.3.2" 210 | } 211 | }, 212 | "@typescript-eslint/scope-manager": { 213 | "version": "5.10.1", 214 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz", 215 | "integrity": "sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==", 216 | "dev": true, 217 | "requires": { 218 | "@typescript-eslint/types": "5.10.1", 219 | "@typescript-eslint/visitor-keys": "5.10.1" 220 | } 221 | }, 222 | "@typescript-eslint/types": { 223 | "version": "5.10.1", 224 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.1.tgz", 225 | "integrity": "sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==", 226 | "dev": true 227 | }, 228 | "@typescript-eslint/typescript-estree": { 229 | "version": "5.10.1", 230 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz", 231 | "integrity": "sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==", 232 | "dev": true, 233 | "requires": { 234 | "@typescript-eslint/types": "5.10.1", 235 | "@typescript-eslint/visitor-keys": "5.10.1", 236 | "debug": "^4.3.2", 237 | "globby": "^11.0.4", 238 | "is-glob": "^4.0.3", 239 | "semver": "^7.3.5", 240 | "tsutils": "^3.21.0" 241 | } 242 | }, 243 | "@typescript-eslint/visitor-keys": { 244 | "version": "5.10.1", 245 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz", 246 | "integrity": "sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==", 247 | "dev": true, 248 | "requires": { 249 | "@typescript-eslint/types": "5.10.1", 250 | "eslint-visitor-keys": "^3.0.0" 251 | } 252 | }, 253 | "acorn": { 254 | "version": "8.7.0", 255 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 256 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", 257 | "dev": true 258 | }, 259 | "acorn-jsx": { 260 | "version": "5.3.2", 261 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 262 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 263 | "dev": true 264 | }, 265 | "acorn-node": { 266 | "version": "1.8.2", 267 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", 268 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", 269 | "dev": true, 270 | "requires": { 271 | "acorn": "^7.0.0", 272 | "acorn-walk": "^7.0.0", 273 | "xtend": "^4.0.2" 274 | }, 275 | "dependencies": { 276 | "acorn": { 277 | "version": "7.4.1", 278 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 279 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 280 | "dev": true 281 | } 282 | } 283 | }, 284 | "acorn-walk": { 285 | "version": "7.2.0", 286 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 287 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 288 | "dev": true 289 | }, 290 | "ajv": { 291 | "version": "6.12.6", 292 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 293 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 294 | "dev": true, 295 | "requires": { 296 | "fast-deep-equal": "^3.1.1", 297 | "fast-json-stable-stringify": "^2.0.0", 298 | "json-schema-traverse": "^0.4.1", 299 | "uri-js": "^4.2.2" 300 | } 301 | }, 302 | "ansi-regex": { 303 | "version": "5.0.1", 304 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 305 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 306 | "dev": true 307 | }, 308 | "ansi-styles": { 309 | "version": "4.3.0", 310 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 311 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 312 | "dev": true, 313 | "requires": { 314 | "color-convert": "^2.0.1" 315 | } 316 | }, 317 | "anymatch": { 318 | "version": "3.1.2", 319 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 320 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 321 | "dev": true, 322 | "requires": { 323 | "normalize-path": "^3.0.0", 324 | "picomatch": "^2.0.4" 325 | } 326 | }, 327 | "arg": { 328 | "version": "5.0.1", 329 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", 330 | "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", 331 | "dev": true 332 | }, 333 | "argparse": { 334 | "version": "2.0.1", 335 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 336 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 337 | "dev": true 338 | }, 339 | "aria-query": { 340 | "version": "4.2.2", 341 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", 342 | "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", 343 | "dev": true, 344 | "requires": { 345 | "@babel/runtime": "^7.10.2", 346 | "@babel/runtime-corejs3": "^7.10.2" 347 | } 348 | }, 349 | "array-includes": { 350 | "version": "3.1.4", 351 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", 352 | "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", 353 | "dev": true, 354 | "requires": { 355 | "call-bind": "^1.0.2", 356 | "define-properties": "^1.1.3", 357 | "es-abstract": "^1.19.1", 358 | "get-intrinsic": "^1.1.1", 359 | "is-string": "^1.0.7" 360 | } 361 | }, 362 | "array-union": { 363 | "version": "2.1.0", 364 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 365 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 366 | "dev": true 367 | }, 368 | "array.prototype.flat": { 369 | "version": "1.3.0", 370 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", 371 | "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", 372 | "dev": true, 373 | "requires": { 374 | "call-bind": "^1.0.2", 375 | "define-properties": "^1.1.3", 376 | "es-abstract": "^1.19.2", 377 | "es-shim-unscopables": "^1.0.0" 378 | } 379 | }, 380 | "array.prototype.flatmap": { 381 | "version": "1.3.0", 382 | "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", 383 | "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", 384 | "dev": true, 385 | "requires": { 386 | "call-bind": "^1.0.2", 387 | "define-properties": "^1.1.3", 388 | "es-abstract": "^1.19.2", 389 | "es-shim-unscopables": "^1.0.0" 390 | } 391 | }, 392 | "ast-types-flow": { 393 | "version": "0.0.7", 394 | "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", 395 | "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", 396 | "dev": true 397 | }, 398 | "autoprefixer": { 399 | "version": "10.4.4", 400 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", 401 | "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", 402 | "dev": true, 403 | "requires": { 404 | "browserslist": "^4.20.2", 405 | "caniuse-lite": "^1.0.30001317", 406 | "fraction.js": "^4.2.0", 407 | "normalize-range": "^0.1.2", 408 | "picocolors": "^1.0.0", 409 | "postcss-value-parser": "^4.2.0" 410 | } 411 | }, 412 | "axe-core": { 413 | "version": "4.4.1", 414 | "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", 415 | "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", 416 | "dev": true 417 | }, 418 | "axios": { 419 | "version": "0.26.1", 420 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 421 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 422 | "requires": { 423 | "follow-redirects": "^1.14.8" 424 | } 425 | }, 426 | "axobject-query": { 427 | "version": "2.2.0", 428 | "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", 429 | "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", 430 | "dev": true 431 | }, 432 | "balanced-match": { 433 | "version": "1.0.2", 434 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 435 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 436 | "dev": true 437 | }, 438 | "binary-extensions": { 439 | "version": "2.2.0", 440 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 441 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 442 | "dev": true 443 | }, 444 | "brace-expansion": { 445 | "version": "1.1.11", 446 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 447 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 448 | "dev": true, 449 | "requires": { 450 | "balanced-match": "^1.0.0", 451 | "concat-map": "0.0.1" 452 | } 453 | }, 454 | "braces": { 455 | "version": "3.0.2", 456 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 457 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 458 | "dev": true, 459 | "requires": { 460 | "fill-range": "^7.0.1" 461 | } 462 | }, 463 | "browserslist": { 464 | "version": "4.20.2", 465 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", 466 | "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", 467 | "dev": true, 468 | "requires": { 469 | "caniuse-lite": "^1.0.30001317", 470 | "electron-to-chromium": "^1.4.84", 471 | "escalade": "^3.1.1", 472 | "node-releases": "^2.0.2", 473 | "picocolors": "^1.0.0" 474 | } 475 | }, 476 | "call-bind": { 477 | "version": "1.0.2", 478 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 479 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 480 | "dev": true, 481 | "requires": { 482 | "function-bind": "^1.1.1", 483 | "get-intrinsic": "^1.0.2" 484 | } 485 | }, 486 | "callsites": { 487 | "version": "3.1.0", 488 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 489 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 490 | "dev": true 491 | }, 492 | "camelcase-css": { 493 | "version": "2.0.1", 494 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 495 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 496 | "dev": true 497 | }, 498 | "caniuse-lite": { 499 | "version": "1.0.30001332", 500 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", 501 | "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==" 502 | }, 503 | "chalk": { 504 | "version": "4.1.2", 505 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 506 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 507 | "dev": true, 508 | "requires": { 509 | "ansi-styles": "^4.1.0", 510 | "supports-color": "^7.1.0" 511 | } 512 | }, 513 | "chokidar": { 514 | "version": "3.5.3", 515 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 516 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 517 | "dev": true, 518 | "requires": { 519 | "anymatch": "~3.1.2", 520 | "braces": "~3.0.2", 521 | "fsevents": "~2.3.2", 522 | "glob-parent": "~5.1.2", 523 | "is-binary-path": "~2.1.0", 524 | "is-glob": "~4.0.1", 525 | "normalize-path": "~3.0.0", 526 | "readdirp": "~3.6.0" 527 | }, 528 | "dependencies": { 529 | "glob-parent": { 530 | "version": "5.1.2", 531 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 532 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 533 | "dev": true, 534 | "requires": { 535 | "is-glob": "^4.0.1" 536 | } 537 | } 538 | } 539 | }, 540 | "color-convert": { 541 | "version": "2.0.1", 542 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 543 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 544 | "dev": true, 545 | "requires": { 546 | "color-name": "~1.1.4" 547 | } 548 | }, 549 | "color-name": { 550 | "version": "1.1.4", 551 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 552 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 553 | "dev": true 554 | }, 555 | "concat-map": { 556 | "version": "0.0.1", 557 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 558 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 559 | "dev": true 560 | }, 561 | "core-js-pure": { 562 | "version": "3.22.0", 563 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.0.tgz", 564 | "integrity": "sha512-ylOC9nVy0ak1N+fPIZj00umoZHgUVqmucklP5RT5N+vJof38klKn8Ze6KGyvchdClvEBr6LcQqJpI216LUMqYA==", 565 | "dev": true 566 | }, 567 | "cross-spawn": { 568 | "version": "7.0.3", 569 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 570 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 571 | "dev": true, 572 | "requires": { 573 | "path-key": "^3.1.0", 574 | "shebang-command": "^2.0.0", 575 | "which": "^2.0.1" 576 | } 577 | }, 578 | "cssesc": { 579 | "version": "3.0.0", 580 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 581 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 582 | "dev": true 583 | }, 584 | "damerau-levenshtein": { 585 | "version": "1.0.8", 586 | "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", 587 | "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", 588 | "dev": true 589 | }, 590 | "debug": { 591 | "version": "4.3.4", 592 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 593 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 594 | "dev": true, 595 | "requires": { 596 | "ms": "2.1.2" 597 | } 598 | }, 599 | "deep-is": { 600 | "version": "0.1.4", 601 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 602 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 603 | "dev": true 604 | }, 605 | "define-properties": { 606 | "version": "1.1.4", 607 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 608 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 609 | "dev": true, 610 | "requires": { 611 | "has-property-descriptors": "^1.0.0", 612 | "object-keys": "^1.1.1" 613 | } 614 | }, 615 | "defined": { 616 | "version": "1.0.0", 617 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 618 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 619 | "dev": true 620 | }, 621 | "detective": { 622 | "version": "5.2.0", 623 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", 624 | "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", 625 | "dev": true, 626 | "requires": { 627 | "acorn-node": "^1.6.1", 628 | "defined": "^1.0.0", 629 | "minimist": "^1.1.1" 630 | } 631 | }, 632 | "didyoumean": { 633 | "version": "1.2.2", 634 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 635 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 636 | "dev": true 637 | }, 638 | "dir-glob": { 639 | "version": "3.0.1", 640 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 641 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 642 | "dev": true, 643 | "requires": { 644 | "path-type": "^4.0.0" 645 | } 646 | }, 647 | "dlv": { 648 | "version": "1.1.3", 649 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 650 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 651 | "dev": true 652 | }, 653 | "doctrine": { 654 | "version": "3.0.0", 655 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 656 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 657 | "dev": true, 658 | "requires": { 659 | "esutils": "^2.0.2" 660 | } 661 | }, 662 | "electron-to-chromium": { 663 | "version": "1.4.110", 664 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.110.tgz", 665 | "integrity": "sha512-TvHZrkj9anfWkxgblHlNr4IMQdm2N6D0o8Wu1BDpSL/RKT4DHyUt/tvDFtApgZ+LGFL3U9EO4LRZ1eSlQ8xMYA==", 666 | "dev": true 667 | }, 668 | "emoji-regex": { 669 | "version": "9.2.2", 670 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 671 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 672 | "dev": true 673 | }, 674 | "es-abstract": { 675 | "version": "1.19.5", 676 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", 677 | "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", 678 | "dev": true, 679 | "requires": { 680 | "call-bind": "^1.0.2", 681 | "es-to-primitive": "^1.2.1", 682 | "function-bind": "^1.1.1", 683 | "get-intrinsic": "^1.1.1", 684 | "get-symbol-description": "^1.0.0", 685 | "has": "^1.0.3", 686 | "has-symbols": "^1.0.3", 687 | "internal-slot": "^1.0.3", 688 | "is-callable": "^1.2.4", 689 | "is-negative-zero": "^2.0.2", 690 | "is-regex": "^1.1.4", 691 | "is-shared-array-buffer": "^1.0.2", 692 | "is-string": "^1.0.7", 693 | "is-weakref": "^1.0.2", 694 | "object-inspect": "^1.12.0", 695 | "object-keys": "^1.1.1", 696 | "object.assign": "^4.1.2", 697 | "string.prototype.trimend": "^1.0.4", 698 | "string.prototype.trimstart": "^1.0.4", 699 | "unbox-primitive": "^1.0.1" 700 | } 701 | }, 702 | "es-shim-unscopables": { 703 | "version": "1.0.0", 704 | "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", 705 | "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", 706 | "dev": true, 707 | "requires": { 708 | "has": "^1.0.3" 709 | } 710 | }, 711 | "es-to-primitive": { 712 | "version": "1.2.1", 713 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 714 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 715 | "dev": true, 716 | "requires": { 717 | "is-callable": "^1.1.4", 718 | "is-date-object": "^1.0.1", 719 | "is-symbol": "^1.0.2" 720 | } 721 | }, 722 | "escalade": { 723 | "version": "3.1.1", 724 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 725 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 726 | "dev": true 727 | }, 728 | "escape-string-regexp": { 729 | "version": "4.0.0", 730 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 731 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 732 | "dev": true 733 | }, 734 | "eslint": { 735 | "version": "8.13.0", 736 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", 737 | "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", 738 | "dev": true, 739 | "requires": { 740 | "@eslint/eslintrc": "^1.2.1", 741 | "@humanwhocodes/config-array": "^0.9.2", 742 | "ajv": "^6.10.0", 743 | "chalk": "^4.0.0", 744 | "cross-spawn": "^7.0.2", 745 | "debug": "^4.3.2", 746 | "doctrine": "^3.0.0", 747 | "escape-string-regexp": "^4.0.0", 748 | "eslint-scope": "^7.1.1", 749 | "eslint-utils": "^3.0.0", 750 | "eslint-visitor-keys": "^3.3.0", 751 | "espree": "^9.3.1", 752 | "esquery": "^1.4.0", 753 | "esutils": "^2.0.2", 754 | "fast-deep-equal": "^3.1.3", 755 | "file-entry-cache": "^6.0.1", 756 | "functional-red-black-tree": "^1.0.1", 757 | "glob-parent": "^6.0.1", 758 | "globals": "^13.6.0", 759 | "ignore": "^5.2.0", 760 | "import-fresh": "^3.0.0", 761 | "imurmurhash": "^0.1.4", 762 | "is-glob": "^4.0.0", 763 | "js-yaml": "^4.1.0", 764 | "json-stable-stringify-without-jsonify": "^1.0.1", 765 | "levn": "^0.4.1", 766 | "lodash.merge": "^4.6.2", 767 | "minimatch": "^3.0.4", 768 | "natural-compare": "^1.4.0", 769 | "optionator": "^0.9.1", 770 | "regexpp": "^3.2.0", 771 | "strip-ansi": "^6.0.1", 772 | "strip-json-comments": "^3.1.0", 773 | "text-table": "^0.2.0", 774 | "v8-compile-cache": "^2.0.3" 775 | } 776 | }, 777 | "eslint-config-next": { 778 | "version": "12.1.5", 779 | "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.1.5.tgz", 780 | "integrity": "sha512-P+DCt5ti63KhC0qNLzrAmPcwRGq8pYqgcf/NNr1E+WjCrMkWdCAXkIANTquo+kcO1adR2k1lTo5GCrNUtKy4hQ==", 781 | "dev": true, 782 | "requires": { 783 | "@next/eslint-plugin-next": "12.1.5", 784 | "@rushstack/eslint-patch": "1.0.8", 785 | "@typescript-eslint/parser": "5.10.1", 786 | "eslint-import-resolver-node": "0.3.4", 787 | "eslint-import-resolver-typescript": "2.4.0", 788 | "eslint-plugin-import": "2.25.2", 789 | "eslint-plugin-jsx-a11y": "6.5.1", 790 | "eslint-plugin-react": "7.29.1", 791 | "eslint-plugin-react-hooks": "4.3.0" 792 | } 793 | }, 794 | "eslint-import-resolver-node": { 795 | "version": "0.3.4", 796 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", 797 | "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", 798 | "dev": true, 799 | "requires": { 800 | "debug": "^2.6.9", 801 | "resolve": "^1.13.1" 802 | }, 803 | "dependencies": { 804 | "debug": { 805 | "version": "2.6.9", 806 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 807 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 808 | "dev": true, 809 | "requires": { 810 | "ms": "2.0.0" 811 | } 812 | }, 813 | "ms": { 814 | "version": "2.0.0", 815 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 816 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 817 | "dev": true 818 | } 819 | } 820 | }, 821 | "eslint-import-resolver-typescript": { 822 | "version": "2.4.0", 823 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz", 824 | "integrity": "sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA==", 825 | "dev": true, 826 | "requires": { 827 | "debug": "^4.1.1", 828 | "glob": "^7.1.6", 829 | "is-glob": "^4.0.1", 830 | "resolve": "^1.17.0", 831 | "tsconfig-paths": "^3.9.0" 832 | } 833 | }, 834 | "eslint-module-utils": { 835 | "version": "2.7.3", 836 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", 837 | "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", 838 | "dev": true, 839 | "requires": { 840 | "debug": "^3.2.7", 841 | "find-up": "^2.1.0" 842 | }, 843 | "dependencies": { 844 | "debug": { 845 | "version": "3.2.7", 846 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 847 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 848 | "dev": true, 849 | "requires": { 850 | "ms": "^2.1.1" 851 | } 852 | } 853 | } 854 | }, 855 | "eslint-plugin-import": { 856 | "version": "2.25.2", 857 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", 858 | "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", 859 | "dev": true, 860 | "requires": { 861 | "array-includes": "^3.1.4", 862 | "array.prototype.flat": "^1.2.5", 863 | "debug": "^2.6.9", 864 | "doctrine": "^2.1.0", 865 | "eslint-import-resolver-node": "^0.3.6", 866 | "eslint-module-utils": "^2.7.0", 867 | "has": "^1.0.3", 868 | "is-core-module": "^2.7.0", 869 | "is-glob": "^4.0.3", 870 | "minimatch": "^3.0.4", 871 | "object.values": "^1.1.5", 872 | "resolve": "^1.20.0", 873 | "tsconfig-paths": "^3.11.0" 874 | }, 875 | "dependencies": { 876 | "debug": { 877 | "version": "2.6.9", 878 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 879 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 880 | "dev": true, 881 | "requires": { 882 | "ms": "2.0.0" 883 | } 884 | }, 885 | "doctrine": { 886 | "version": "2.1.0", 887 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 888 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 889 | "dev": true, 890 | "requires": { 891 | "esutils": "^2.0.2" 892 | } 893 | }, 894 | "eslint-import-resolver-node": { 895 | "version": "0.3.6", 896 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", 897 | "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", 898 | "dev": true, 899 | "requires": { 900 | "debug": "^3.2.7", 901 | "resolve": "^1.20.0" 902 | }, 903 | "dependencies": { 904 | "debug": { 905 | "version": "3.2.7", 906 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 907 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 908 | "dev": true, 909 | "requires": { 910 | "ms": "^2.1.1" 911 | } 912 | }, 913 | "ms": { 914 | "version": "2.1.3", 915 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 916 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 917 | "dev": true 918 | } 919 | } 920 | }, 921 | "ms": { 922 | "version": "2.0.0", 923 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 924 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 925 | "dev": true 926 | } 927 | } 928 | }, 929 | "eslint-plugin-jsx-a11y": { 930 | "version": "6.5.1", 931 | "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", 932 | "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", 933 | "dev": true, 934 | "requires": { 935 | "@babel/runtime": "^7.16.3", 936 | "aria-query": "^4.2.2", 937 | "array-includes": "^3.1.4", 938 | "ast-types-flow": "^0.0.7", 939 | "axe-core": "^4.3.5", 940 | "axobject-query": "^2.2.0", 941 | "damerau-levenshtein": "^1.0.7", 942 | "emoji-regex": "^9.2.2", 943 | "has": "^1.0.3", 944 | "jsx-ast-utils": "^3.2.1", 945 | "language-tags": "^1.0.5", 946 | "minimatch": "^3.0.4" 947 | } 948 | }, 949 | "eslint-plugin-react": { 950 | "version": "7.29.1", 951 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.1.tgz", 952 | "integrity": "sha512-WtzRpHMhsOX05ZrkyaaqmLl2uXGqmYooCfBxftJKlkYdsltiufGgfU7uuoHwR2lBam2Kh/EIVID4aU9e3kbCMA==", 953 | "dev": true, 954 | "requires": { 955 | "array-includes": "^3.1.4", 956 | "array.prototype.flatmap": "^1.2.5", 957 | "doctrine": "^2.1.0", 958 | "estraverse": "^5.3.0", 959 | "jsx-ast-utils": "^2.4.1 || ^3.0.0", 960 | "minimatch": "^3.1.2", 961 | "object.entries": "^1.1.5", 962 | "object.fromentries": "^2.0.5", 963 | "object.hasown": "^1.1.0", 964 | "object.values": "^1.1.5", 965 | "prop-types": "^15.8.1", 966 | "resolve": "^2.0.0-next.3", 967 | "semver": "^6.3.0", 968 | "string.prototype.matchall": "^4.0.6" 969 | }, 970 | "dependencies": { 971 | "doctrine": { 972 | "version": "2.1.0", 973 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 974 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 975 | "dev": true, 976 | "requires": { 977 | "esutils": "^2.0.2" 978 | } 979 | }, 980 | "resolve": { 981 | "version": "2.0.0-next.3", 982 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 983 | "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 984 | "dev": true, 985 | "requires": { 986 | "is-core-module": "^2.2.0", 987 | "path-parse": "^1.0.6" 988 | } 989 | }, 990 | "semver": { 991 | "version": "6.3.0", 992 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 993 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 994 | "dev": true 995 | } 996 | } 997 | }, 998 | "eslint-plugin-react-hooks": { 999 | "version": "4.3.0", 1000 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", 1001 | "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", 1002 | "dev": true 1003 | }, 1004 | "eslint-scope": { 1005 | "version": "7.1.1", 1006 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 1007 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 1008 | "dev": true, 1009 | "requires": { 1010 | "esrecurse": "^4.3.0", 1011 | "estraverse": "^5.2.0" 1012 | } 1013 | }, 1014 | "eslint-utils": { 1015 | "version": "3.0.0", 1016 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1017 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1018 | "dev": true, 1019 | "requires": { 1020 | "eslint-visitor-keys": "^2.0.0" 1021 | }, 1022 | "dependencies": { 1023 | "eslint-visitor-keys": { 1024 | "version": "2.1.0", 1025 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1026 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1027 | "dev": true 1028 | } 1029 | } 1030 | }, 1031 | "eslint-visitor-keys": { 1032 | "version": "3.3.0", 1033 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 1034 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 1035 | "dev": true 1036 | }, 1037 | "espree": { 1038 | "version": "9.3.1", 1039 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", 1040 | "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", 1041 | "dev": true, 1042 | "requires": { 1043 | "acorn": "^8.7.0", 1044 | "acorn-jsx": "^5.3.1", 1045 | "eslint-visitor-keys": "^3.3.0" 1046 | } 1047 | }, 1048 | "esquery": { 1049 | "version": "1.4.0", 1050 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1051 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1052 | "dev": true, 1053 | "requires": { 1054 | "estraverse": "^5.1.0" 1055 | } 1056 | }, 1057 | "esrecurse": { 1058 | "version": "4.3.0", 1059 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1060 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1061 | "dev": true, 1062 | "requires": { 1063 | "estraverse": "^5.2.0" 1064 | } 1065 | }, 1066 | "estraverse": { 1067 | "version": "5.3.0", 1068 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1069 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1070 | "dev": true 1071 | }, 1072 | "esutils": { 1073 | "version": "2.0.3", 1074 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1075 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1076 | "dev": true 1077 | }, 1078 | "fast-deep-equal": { 1079 | "version": "3.1.3", 1080 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1081 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1082 | "dev": true 1083 | }, 1084 | "fast-glob": { 1085 | "version": "3.2.11", 1086 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 1087 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 1088 | "dev": true, 1089 | "requires": { 1090 | "@nodelib/fs.stat": "^2.0.2", 1091 | "@nodelib/fs.walk": "^1.2.3", 1092 | "glob-parent": "^5.1.2", 1093 | "merge2": "^1.3.0", 1094 | "micromatch": "^4.0.4" 1095 | }, 1096 | "dependencies": { 1097 | "glob-parent": { 1098 | "version": "5.1.2", 1099 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1100 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1101 | "dev": true, 1102 | "requires": { 1103 | "is-glob": "^4.0.1" 1104 | } 1105 | } 1106 | } 1107 | }, 1108 | "fast-json-stable-stringify": { 1109 | "version": "2.1.0", 1110 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1111 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1112 | "dev": true 1113 | }, 1114 | "fast-levenshtein": { 1115 | "version": "2.0.6", 1116 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1117 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1118 | "dev": true 1119 | }, 1120 | "fastq": { 1121 | "version": "1.13.0", 1122 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 1123 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 1124 | "dev": true, 1125 | "requires": { 1126 | "reusify": "^1.0.4" 1127 | } 1128 | }, 1129 | "file-entry-cache": { 1130 | "version": "6.0.1", 1131 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1132 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1133 | "dev": true, 1134 | "requires": { 1135 | "flat-cache": "^3.0.4" 1136 | } 1137 | }, 1138 | "fill-range": { 1139 | "version": "7.0.1", 1140 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1141 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1142 | "dev": true, 1143 | "requires": { 1144 | "to-regex-range": "^5.0.1" 1145 | } 1146 | }, 1147 | "find-up": { 1148 | "version": "2.1.0", 1149 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1150 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1151 | "dev": true, 1152 | "requires": { 1153 | "locate-path": "^2.0.0" 1154 | } 1155 | }, 1156 | "flat-cache": { 1157 | "version": "3.0.4", 1158 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1159 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1160 | "dev": true, 1161 | "requires": { 1162 | "flatted": "^3.1.0", 1163 | "rimraf": "^3.0.2" 1164 | } 1165 | }, 1166 | "flatted": { 1167 | "version": "3.2.5", 1168 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 1169 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 1170 | "dev": true 1171 | }, 1172 | "follow-redirects": { 1173 | "version": "1.14.9", 1174 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", 1175 | "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" 1176 | }, 1177 | "fraction.js": { 1178 | "version": "4.2.0", 1179 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 1180 | "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 1181 | "dev": true 1182 | }, 1183 | "fs.realpath": { 1184 | "version": "1.0.0", 1185 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1186 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1187 | "dev": true 1188 | }, 1189 | "fsevents": { 1190 | "version": "2.3.2", 1191 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1192 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1193 | "dev": true, 1194 | "optional": true 1195 | }, 1196 | "function-bind": { 1197 | "version": "1.1.1", 1198 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1199 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1200 | "dev": true 1201 | }, 1202 | "functional-red-black-tree": { 1203 | "version": "1.0.1", 1204 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1205 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1206 | "dev": true 1207 | }, 1208 | "functions-have-names": { 1209 | "version": "1.2.2", 1210 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz", 1211 | "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==", 1212 | "dev": true 1213 | }, 1214 | "get-intrinsic": { 1215 | "version": "1.1.1", 1216 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1217 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1218 | "dev": true, 1219 | "requires": { 1220 | "function-bind": "^1.1.1", 1221 | "has": "^1.0.3", 1222 | "has-symbols": "^1.0.1" 1223 | } 1224 | }, 1225 | "get-symbol-description": { 1226 | "version": "1.0.0", 1227 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1228 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1229 | "dev": true, 1230 | "requires": { 1231 | "call-bind": "^1.0.2", 1232 | "get-intrinsic": "^1.1.1" 1233 | } 1234 | }, 1235 | "glob": { 1236 | "version": "7.2.0", 1237 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1238 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1239 | "dev": true, 1240 | "requires": { 1241 | "fs.realpath": "^1.0.0", 1242 | "inflight": "^1.0.4", 1243 | "inherits": "2", 1244 | "minimatch": "^3.0.4", 1245 | "once": "^1.3.0", 1246 | "path-is-absolute": "^1.0.0" 1247 | } 1248 | }, 1249 | "glob-parent": { 1250 | "version": "6.0.2", 1251 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1252 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1253 | "dev": true, 1254 | "requires": { 1255 | "is-glob": "^4.0.3" 1256 | } 1257 | }, 1258 | "globals": { 1259 | "version": "13.13.0", 1260 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", 1261 | "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", 1262 | "dev": true, 1263 | "requires": { 1264 | "type-fest": "^0.20.2" 1265 | } 1266 | }, 1267 | "globby": { 1268 | "version": "11.1.0", 1269 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1270 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1271 | "dev": true, 1272 | "requires": { 1273 | "array-union": "^2.1.0", 1274 | "dir-glob": "^3.0.1", 1275 | "fast-glob": "^3.2.9", 1276 | "ignore": "^5.2.0", 1277 | "merge2": "^1.4.1", 1278 | "slash": "^3.0.0" 1279 | } 1280 | }, 1281 | "has": { 1282 | "version": "1.0.3", 1283 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1284 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1285 | "dev": true, 1286 | "requires": { 1287 | "function-bind": "^1.1.1" 1288 | } 1289 | }, 1290 | "has-bigints": { 1291 | "version": "1.0.1", 1292 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 1293 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 1294 | "dev": true 1295 | }, 1296 | "has-flag": { 1297 | "version": "4.0.0", 1298 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1299 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1300 | "dev": true 1301 | }, 1302 | "has-property-descriptors": { 1303 | "version": "1.0.0", 1304 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 1305 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 1306 | "dev": true, 1307 | "requires": { 1308 | "get-intrinsic": "^1.1.1" 1309 | } 1310 | }, 1311 | "has-symbols": { 1312 | "version": "1.0.3", 1313 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1314 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1315 | "dev": true 1316 | }, 1317 | "has-tostringtag": { 1318 | "version": "1.0.0", 1319 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1320 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1321 | "dev": true, 1322 | "requires": { 1323 | "has-symbols": "^1.0.2" 1324 | } 1325 | }, 1326 | "ignore": { 1327 | "version": "5.2.0", 1328 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 1329 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 1330 | "dev": true 1331 | }, 1332 | "import-fresh": { 1333 | "version": "3.3.0", 1334 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1335 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1336 | "dev": true, 1337 | "requires": { 1338 | "parent-module": "^1.0.0", 1339 | "resolve-from": "^4.0.0" 1340 | } 1341 | }, 1342 | "imurmurhash": { 1343 | "version": "0.1.4", 1344 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1345 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1346 | "dev": true 1347 | }, 1348 | "inflight": { 1349 | "version": "1.0.6", 1350 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1351 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1352 | "dev": true, 1353 | "requires": { 1354 | "once": "^1.3.0", 1355 | "wrappy": "1" 1356 | } 1357 | }, 1358 | "inherits": { 1359 | "version": "2.0.4", 1360 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1361 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1362 | "dev": true 1363 | }, 1364 | "internal-slot": { 1365 | "version": "1.0.3", 1366 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 1367 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 1368 | "dev": true, 1369 | "requires": { 1370 | "get-intrinsic": "^1.1.0", 1371 | "has": "^1.0.3", 1372 | "side-channel": "^1.0.4" 1373 | } 1374 | }, 1375 | "is-bigint": { 1376 | "version": "1.0.4", 1377 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1378 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1379 | "dev": true, 1380 | "requires": { 1381 | "has-bigints": "^1.0.1" 1382 | } 1383 | }, 1384 | "is-binary-path": { 1385 | "version": "2.1.0", 1386 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1387 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1388 | "dev": true, 1389 | "requires": { 1390 | "binary-extensions": "^2.0.0" 1391 | } 1392 | }, 1393 | "is-boolean-object": { 1394 | "version": "1.1.2", 1395 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1396 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1397 | "dev": true, 1398 | "requires": { 1399 | "call-bind": "^1.0.2", 1400 | "has-tostringtag": "^1.0.0" 1401 | } 1402 | }, 1403 | "is-callable": { 1404 | "version": "1.2.4", 1405 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 1406 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 1407 | "dev": true 1408 | }, 1409 | "is-core-module": { 1410 | "version": "2.8.1", 1411 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 1412 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 1413 | "dev": true, 1414 | "requires": { 1415 | "has": "^1.0.3" 1416 | } 1417 | }, 1418 | "is-date-object": { 1419 | "version": "1.0.5", 1420 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1421 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1422 | "dev": true, 1423 | "requires": { 1424 | "has-tostringtag": "^1.0.0" 1425 | } 1426 | }, 1427 | "is-extglob": { 1428 | "version": "2.1.1", 1429 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1430 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1431 | "dev": true 1432 | }, 1433 | "is-glob": { 1434 | "version": "4.0.3", 1435 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1436 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1437 | "dev": true, 1438 | "requires": { 1439 | "is-extglob": "^2.1.1" 1440 | } 1441 | }, 1442 | "is-negative-zero": { 1443 | "version": "2.0.2", 1444 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1445 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 1446 | "dev": true 1447 | }, 1448 | "is-number": { 1449 | "version": "7.0.0", 1450 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1451 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1452 | "dev": true 1453 | }, 1454 | "is-number-object": { 1455 | "version": "1.0.7", 1456 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1457 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1458 | "dev": true, 1459 | "requires": { 1460 | "has-tostringtag": "^1.0.0" 1461 | } 1462 | }, 1463 | "is-regex": { 1464 | "version": "1.1.4", 1465 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1466 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1467 | "dev": true, 1468 | "requires": { 1469 | "call-bind": "^1.0.2", 1470 | "has-tostringtag": "^1.0.0" 1471 | } 1472 | }, 1473 | "is-shared-array-buffer": { 1474 | "version": "1.0.2", 1475 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 1476 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 1477 | "dev": true, 1478 | "requires": { 1479 | "call-bind": "^1.0.2" 1480 | } 1481 | }, 1482 | "is-string": { 1483 | "version": "1.0.7", 1484 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1485 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1486 | "dev": true, 1487 | "requires": { 1488 | "has-tostringtag": "^1.0.0" 1489 | } 1490 | }, 1491 | "is-symbol": { 1492 | "version": "1.0.4", 1493 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1494 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1495 | "dev": true, 1496 | "requires": { 1497 | "has-symbols": "^1.0.2" 1498 | } 1499 | }, 1500 | "is-weakref": { 1501 | "version": "1.0.2", 1502 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1503 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1504 | "dev": true, 1505 | "requires": { 1506 | "call-bind": "^1.0.2" 1507 | } 1508 | }, 1509 | "isexe": { 1510 | "version": "2.0.0", 1511 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1512 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1513 | "dev": true 1514 | }, 1515 | "js-tokens": { 1516 | "version": "4.0.0", 1517 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1518 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1519 | }, 1520 | "js-yaml": { 1521 | "version": "4.1.0", 1522 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1523 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1524 | "dev": true, 1525 | "requires": { 1526 | "argparse": "^2.0.1" 1527 | } 1528 | }, 1529 | "json-schema-traverse": { 1530 | "version": "0.4.1", 1531 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1532 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1533 | "dev": true 1534 | }, 1535 | "json-stable-stringify-without-jsonify": { 1536 | "version": "1.0.1", 1537 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1538 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1539 | "dev": true 1540 | }, 1541 | "json5": { 1542 | "version": "1.0.1", 1543 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1544 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1545 | "dev": true, 1546 | "requires": { 1547 | "minimist": "^1.2.0" 1548 | } 1549 | }, 1550 | "jsx-ast-utils": { 1551 | "version": "3.2.2", 1552 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", 1553 | "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", 1554 | "dev": true, 1555 | "requires": { 1556 | "array-includes": "^3.1.4", 1557 | "object.assign": "^4.1.2" 1558 | } 1559 | }, 1560 | "language-subtag-registry": { 1561 | "version": "0.3.21", 1562 | "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", 1563 | "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", 1564 | "dev": true 1565 | }, 1566 | "language-tags": { 1567 | "version": "1.0.5", 1568 | "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", 1569 | "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", 1570 | "dev": true, 1571 | "requires": { 1572 | "language-subtag-registry": "~0.3.2" 1573 | } 1574 | }, 1575 | "levn": { 1576 | "version": "0.4.1", 1577 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1578 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1579 | "dev": true, 1580 | "requires": { 1581 | "prelude-ls": "^1.2.1", 1582 | "type-check": "~0.4.0" 1583 | } 1584 | }, 1585 | "lilconfig": { 1586 | "version": "2.0.5", 1587 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", 1588 | "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", 1589 | "dev": true 1590 | }, 1591 | "locate-path": { 1592 | "version": "2.0.0", 1593 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1594 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1595 | "dev": true, 1596 | "requires": { 1597 | "p-locate": "^2.0.0", 1598 | "path-exists": "^3.0.0" 1599 | } 1600 | }, 1601 | "lodash.merge": { 1602 | "version": "4.6.2", 1603 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1604 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1605 | "dev": true 1606 | }, 1607 | "loose-envify": { 1608 | "version": "1.4.0", 1609 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1610 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1611 | "requires": { 1612 | "js-tokens": "^3.0.0 || ^4.0.0" 1613 | } 1614 | }, 1615 | "lru-cache": { 1616 | "version": "6.0.0", 1617 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1618 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1619 | "dev": true, 1620 | "requires": { 1621 | "yallist": "^4.0.0" 1622 | } 1623 | }, 1624 | "merge2": { 1625 | "version": "1.4.1", 1626 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1627 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1628 | "dev": true 1629 | }, 1630 | "micromatch": { 1631 | "version": "4.0.5", 1632 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1633 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1634 | "dev": true, 1635 | "requires": { 1636 | "braces": "^3.0.2", 1637 | "picomatch": "^2.3.1" 1638 | } 1639 | }, 1640 | "minimatch": { 1641 | "version": "3.1.2", 1642 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1643 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1644 | "dev": true, 1645 | "requires": { 1646 | "brace-expansion": "^1.1.7" 1647 | } 1648 | }, 1649 | "minimist": { 1650 | "version": "1.2.6", 1651 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1652 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1653 | "dev": true 1654 | }, 1655 | "ms": { 1656 | "version": "2.1.2", 1657 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1658 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1659 | "dev": true 1660 | }, 1661 | "nanoid": { 1662 | "version": "3.3.2", 1663 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 1664 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 1665 | }, 1666 | "natural-compare": { 1667 | "version": "1.4.0", 1668 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1669 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1670 | "dev": true 1671 | }, 1672 | "next": { 1673 | "version": "12.1.5", 1674 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.5.tgz", 1675 | "integrity": "sha512-YGHDpyfgCfnT5GZObsKepmRnne7Kzp7nGrac07dikhutWQug7hHg85/+sPJ4ZW5Q2pDkb+n0FnmLkmd44htIJQ==", 1676 | "requires": { 1677 | "@next/env": "12.1.5", 1678 | "@next/swc-android-arm-eabi": "12.1.5", 1679 | "@next/swc-android-arm64": "12.1.5", 1680 | "@next/swc-darwin-arm64": "12.1.5", 1681 | "@next/swc-darwin-x64": "12.1.5", 1682 | "@next/swc-linux-arm-gnueabihf": "12.1.5", 1683 | "@next/swc-linux-arm64-gnu": "12.1.5", 1684 | "@next/swc-linux-arm64-musl": "12.1.5", 1685 | "@next/swc-linux-x64-gnu": "12.1.5", 1686 | "@next/swc-linux-x64-musl": "12.1.5", 1687 | "@next/swc-win32-arm64-msvc": "12.1.5", 1688 | "@next/swc-win32-ia32-msvc": "12.1.5", 1689 | "@next/swc-win32-x64-msvc": "12.1.5", 1690 | "caniuse-lite": "^1.0.30001283", 1691 | "postcss": "8.4.5", 1692 | "styled-jsx": "5.0.1" 1693 | }, 1694 | "dependencies": { 1695 | "postcss": { 1696 | "version": "8.4.5", 1697 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 1698 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 1699 | "requires": { 1700 | "nanoid": "^3.1.30", 1701 | "picocolors": "^1.0.0", 1702 | "source-map-js": "^1.0.1" 1703 | } 1704 | } 1705 | } 1706 | }, 1707 | "node-releases": { 1708 | "version": "2.0.3", 1709 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", 1710 | "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", 1711 | "dev": true 1712 | }, 1713 | "normalize-path": { 1714 | "version": "3.0.0", 1715 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1716 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1717 | "dev": true 1718 | }, 1719 | "normalize-range": { 1720 | "version": "0.1.2", 1721 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 1722 | "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", 1723 | "dev": true 1724 | }, 1725 | "object-assign": { 1726 | "version": "4.1.1", 1727 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1728 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1729 | "dev": true 1730 | }, 1731 | "object-hash": { 1732 | "version": "3.0.0", 1733 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 1734 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 1735 | "dev": true 1736 | }, 1737 | "object-inspect": { 1738 | "version": "1.12.0", 1739 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1740 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 1741 | "dev": true 1742 | }, 1743 | "object-keys": { 1744 | "version": "1.1.1", 1745 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1746 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1747 | "dev": true 1748 | }, 1749 | "object.assign": { 1750 | "version": "4.1.2", 1751 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1752 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1753 | "dev": true, 1754 | "requires": { 1755 | "call-bind": "^1.0.0", 1756 | "define-properties": "^1.1.3", 1757 | "has-symbols": "^1.0.1", 1758 | "object-keys": "^1.1.1" 1759 | } 1760 | }, 1761 | "object.entries": { 1762 | "version": "1.1.5", 1763 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", 1764 | "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", 1765 | "dev": true, 1766 | "requires": { 1767 | "call-bind": "^1.0.2", 1768 | "define-properties": "^1.1.3", 1769 | "es-abstract": "^1.19.1" 1770 | } 1771 | }, 1772 | "object.fromentries": { 1773 | "version": "2.0.5", 1774 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", 1775 | "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", 1776 | "dev": true, 1777 | "requires": { 1778 | "call-bind": "^1.0.2", 1779 | "define-properties": "^1.1.3", 1780 | "es-abstract": "^1.19.1" 1781 | } 1782 | }, 1783 | "object.hasown": { 1784 | "version": "1.1.0", 1785 | "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", 1786 | "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", 1787 | "dev": true, 1788 | "requires": { 1789 | "define-properties": "^1.1.3", 1790 | "es-abstract": "^1.19.1" 1791 | } 1792 | }, 1793 | "object.values": { 1794 | "version": "1.1.5", 1795 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", 1796 | "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", 1797 | "dev": true, 1798 | "requires": { 1799 | "call-bind": "^1.0.2", 1800 | "define-properties": "^1.1.3", 1801 | "es-abstract": "^1.19.1" 1802 | } 1803 | }, 1804 | "once": { 1805 | "version": "1.4.0", 1806 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1807 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1808 | "dev": true, 1809 | "requires": { 1810 | "wrappy": "1" 1811 | } 1812 | }, 1813 | "optionator": { 1814 | "version": "0.9.1", 1815 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1816 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1817 | "dev": true, 1818 | "requires": { 1819 | "deep-is": "^0.1.3", 1820 | "fast-levenshtein": "^2.0.6", 1821 | "levn": "^0.4.1", 1822 | "prelude-ls": "^1.2.1", 1823 | "type-check": "^0.4.0", 1824 | "word-wrap": "^1.2.3" 1825 | } 1826 | }, 1827 | "p-limit": { 1828 | "version": "1.3.0", 1829 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1830 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1831 | "dev": true, 1832 | "requires": { 1833 | "p-try": "^1.0.0" 1834 | } 1835 | }, 1836 | "p-locate": { 1837 | "version": "2.0.0", 1838 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1839 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1840 | "dev": true, 1841 | "requires": { 1842 | "p-limit": "^1.1.0" 1843 | } 1844 | }, 1845 | "p-try": { 1846 | "version": "1.0.0", 1847 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1848 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1849 | "dev": true 1850 | }, 1851 | "parent-module": { 1852 | "version": "1.0.1", 1853 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1854 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1855 | "dev": true, 1856 | "requires": { 1857 | "callsites": "^3.0.0" 1858 | } 1859 | }, 1860 | "path-exists": { 1861 | "version": "3.0.0", 1862 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1863 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1864 | "dev": true 1865 | }, 1866 | "path-is-absolute": { 1867 | "version": "1.0.1", 1868 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1869 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1870 | "dev": true 1871 | }, 1872 | "path-key": { 1873 | "version": "3.1.1", 1874 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1875 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1876 | "dev": true 1877 | }, 1878 | "path-parse": { 1879 | "version": "1.0.7", 1880 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1881 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1882 | "dev": true 1883 | }, 1884 | "path-type": { 1885 | "version": "4.0.0", 1886 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1887 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1888 | "dev": true 1889 | }, 1890 | "picocolors": { 1891 | "version": "1.0.0", 1892 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1893 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1894 | }, 1895 | "picomatch": { 1896 | "version": "2.3.1", 1897 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1898 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1899 | "dev": true 1900 | }, 1901 | "postcss": { 1902 | "version": "8.4.12", 1903 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", 1904 | "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", 1905 | "dev": true, 1906 | "requires": { 1907 | "nanoid": "^3.3.1", 1908 | "picocolors": "^1.0.0", 1909 | "source-map-js": "^1.0.2" 1910 | } 1911 | }, 1912 | "postcss-js": { 1913 | "version": "4.0.0", 1914 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 1915 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", 1916 | "dev": true, 1917 | "requires": { 1918 | "camelcase-css": "^2.0.1" 1919 | } 1920 | }, 1921 | "postcss-load-config": { 1922 | "version": "3.1.4", 1923 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 1924 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 1925 | "dev": true, 1926 | "requires": { 1927 | "lilconfig": "^2.0.5", 1928 | "yaml": "^1.10.2" 1929 | } 1930 | }, 1931 | "postcss-nested": { 1932 | "version": "5.0.6", 1933 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", 1934 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", 1935 | "dev": true, 1936 | "requires": { 1937 | "postcss-selector-parser": "^6.0.6" 1938 | } 1939 | }, 1940 | "postcss-selector-parser": { 1941 | "version": "6.0.10", 1942 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 1943 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 1944 | "dev": true, 1945 | "requires": { 1946 | "cssesc": "^3.0.0", 1947 | "util-deprecate": "^1.0.2" 1948 | } 1949 | }, 1950 | "postcss-value-parser": { 1951 | "version": "4.2.0", 1952 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1953 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 1954 | "dev": true 1955 | }, 1956 | "prelude-ls": { 1957 | "version": "1.2.1", 1958 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1959 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1960 | "dev": true 1961 | }, 1962 | "prop-types": { 1963 | "version": "15.8.1", 1964 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 1965 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 1966 | "dev": true, 1967 | "requires": { 1968 | "loose-envify": "^1.4.0", 1969 | "object-assign": "^4.1.1", 1970 | "react-is": "^16.13.1" 1971 | } 1972 | }, 1973 | "punycode": { 1974 | "version": "2.1.1", 1975 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1976 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1977 | "dev": true 1978 | }, 1979 | "queue-microtask": { 1980 | "version": "1.2.3", 1981 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1982 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1983 | "dev": true 1984 | }, 1985 | "quick-lru": { 1986 | "version": "5.1.1", 1987 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 1988 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 1989 | "dev": true 1990 | }, 1991 | "react": { 1992 | "version": "18.0.0", 1993 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 1994 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 1995 | "requires": { 1996 | "loose-envify": "^1.1.0" 1997 | } 1998 | }, 1999 | "react-dom": { 2000 | "version": "18.0.0", 2001 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 2002 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 2003 | "requires": { 2004 | "loose-envify": "^1.1.0", 2005 | "scheduler": "^0.21.0" 2006 | } 2007 | }, 2008 | "react-is": { 2009 | "version": "16.13.1", 2010 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2011 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 2012 | "dev": true 2013 | }, 2014 | "readdirp": { 2015 | "version": "3.6.0", 2016 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2017 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2018 | "dev": true, 2019 | "requires": { 2020 | "picomatch": "^2.2.1" 2021 | } 2022 | }, 2023 | "regenerator-runtime": { 2024 | "version": "0.13.9", 2025 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 2026 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", 2027 | "dev": true 2028 | }, 2029 | "regexp.prototype.flags": { 2030 | "version": "1.4.3", 2031 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 2032 | "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 2033 | "dev": true, 2034 | "requires": { 2035 | "call-bind": "^1.0.2", 2036 | "define-properties": "^1.1.3", 2037 | "functions-have-names": "^1.2.2" 2038 | } 2039 | }, 2040 | "regexpp": { 2041 | "version": "3.2.0", 2042 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2043 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2044 | "dev": true 2045 | }, 2046 | "resolve": { 2047 | "version": "1.22.0", 2048 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 2049 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 2050 | "dev": true, 2051 | "requires": { 2052 | "is-core-module": "^2.8.1", 2053 | "path-parse": "^1.0.7", 2054 | "supports-preserve-symlinks-flag": "^1.0.0" 2055 | } 2056 | }, 2057 | "resolve-from": { 2058 | "version": "4.0.0", 2059 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2060 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2061 | "dev": true 2062 | }, 2063 | "reusify": { 2064 | "version": "1.0.4", 2065 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2066 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2067 | "dev": true 2068 | }, 2069 | "rimraf": { 2070 | "version": "3.0.2", 2071 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2072 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2073 | "dev": true, 2074 | "requires": { 2075 | "glob": "^7.1.3" 2076 | } 2077 | }, 2078 | "run-parallel": { 2079 | "version": "1.2.0", 2080 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2081 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2082 | "dev": true, 2083 | "requires": { 2084 | "queue-microtask": "^1.2.2" 2085 | } 2086 | }, 2087 | "scheduler": { 2088 | "version": "0.21.0", 2089 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 2090 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 2091 | "requires": { 2092 | "loose-envify": "^1.1.0" 2093 | } 2094 | }, 2095 | "semver": { 2096 | "version": "7.3.7", 2097 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 2098 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 2099 | "dev": true, 2100 | "requires": { 2101 | "lru-cache": "^6.0.0" 2102 | } 2103 | }, 2104 | "shebang-command": { 2105 | "version": "2.0.0", 2106 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2107 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2108 | "dev": true, 2109 | "requires": { 2110 | "shebang-regex": "^3.0.0" 2111 | } 2112 | }, 2113 | "shebang-regex": { 2114 | "version": "3.0.0", 2115 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2116 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2117 | "dev": true 2118 | }, 2119 | "side-channel": { 2120 | "version": "1.0.4", 2121 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2122 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2123 | "dev": true, 2124 | "requires": { 2125 | "call-bind": "^1.0.0", 2126 | "get-intrinsic": "^1.0.2", 2127 | "object-inspect": "^1.9.0" 2128 | } 2129 | }, 2130 | "slash": { 2131 | "version": "3.0.0", 2132 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2133 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2134 | "dev": true 2135 | }, 2136 | "source-map-js": { 2137 | "version": "1.0.2", 2138 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2139 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 2140 | }, 2141 | "string.prototype.matchall": { 2142 | "version": "4.0.7", 2143 | "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", 2144 | "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", 2145 | "dev": true, 2146 | "requires": { 2147 | "call-bind": "^1.0.2", 2148 | "define-properties": "^1.1.3", 2149 | "es-abstract": "^1.19.1", 2150 | "get-intrinsic": "^1.1.1", 2151 | "has-symbols": "^1.0.3", 2152 | "internal-slot": "^1.0.3", 2153 | "regexp.prototype.flags": "^1.4.1", 2154 | "side-channel": "^1.0.4" 2155 | } 2156 | }, 2157 | "string.prototype.trimend": { 2158 | "version": "1.0.4", 2159 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 2160 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 2161 | "dev": true, 2162 | "requires": { 2163 | "call-bind": "^1.0.2", 2164 | "define-properties": "^1.1.3" 2165 | } 2166 | }, 2167 | "string.prototype.trimstart": { 2168 | "version": "1.0.4", 2169 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 2170 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 2171 | "dev": true, 2172 | "requires": { 2173 | "call-bind": "^1.0.2", 2174 | "define-properties": "^1.1.3" 2175 | } 2176 | }, 2177 | "strip-ansi": { 2178 | "version": "6.0.1", 2179 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2180 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2181 | "dev": true, 2182 | "requires": { 2183 | "ansi-regex": "^5.0.1" 2184 | } 2185 | }, 2186 | "strip-bom": { 2187 | "version": "3.0.0", 2188 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2189 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2190 | "dev": true 2191 | }, 2192 | "strip-json-comments": { 2193 | "version": "3.1.1", 2194 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2195 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2196 | "dev": true 2197 | }, 2198 | "styled-jsx": { 2199 | "version": "5.0.1", 2200 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 2201 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==" 2202 | }, 2203 | "supports-color": { 2204 | "version": "7.2.0", 2205 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2206 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2207 | "dev": true, 2208 | "requires": { 2209 | "has-flag": "^4.0.0" 2210 | } 2211 | }, 2212 | "supports-preserve-symlinks-flag": { 2213 | "version": "1.0.0", 2214 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2215 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2216 | "dev": true 2217 | }, 2218 | "tailwindcss": { 2219 | "version": "3.0.24", 2220 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", 2221 | "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", 2222 | "dev": true, 2223 | "requires": { 2224 | "arg": "^5.0.1", 2225 | "chokidar": "^3.5.3", 2226 | "color-name": "^1.1.4", 2227 | "detective": "^5.2.0", 2228 | "didyoumean": "^1.2.2", 2229 | "dlv": "^1.1.3", 2230 | "fast-glob": "^3.2.11", 2231 | "glob-parent": "^6.0.2", 2232 | "is-glob": "^4.0.3", 2233 | "lilconfig": "^2.0.5", 2234 | "normalize-path": "^3.0.0", 2235 | "object-hash": "^3.0.0", 2236 | "picocolors": "^1.0.0", 2237 | "postcss": "^8.4.12", 2238 | "postcss-js": "^4.0.0", 2239 | "postcss-load-config": "^3.1.4", 2240 | "postcss-nested": "5.0.6", 2241 | "postcss-selector-parser": "^6.0.10", 2242 | "postcss-value-parser": "^4.2.0", 2243 | "quick-lru": "^5.1.1", 2244 | "resolve": "^1.22.0" 2245 | } 2246 | }, 2247 | "text-table": { 2248 | "version": "0.2.0", 2249 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2250 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2251 | "dev": true 2252 | }, 2253 | "to-regex-range": { 2254 | "version": "5.0.1", 2255 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2256 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2257 | "dev": true, 2258 | "requires": { 2259 | "is-number": "^7.0.0" 2260 | } 2261 | }, 2262 | "tsconfig-paths": { 2263 | "version": "3.14.1", 2264 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", 2265 | "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", 2266 | "dev": true, 2267 | "requires": { 2268 | "@types/json5": "^0.0.29", 2269 | "json5": "^1.0.1", 2270 | "minimist": "^1.2.6", 2271 | "strip-bom": "^3.0.0" 2272 | } 2273 | }, 2274 | "tslib": { 2275 | "version": "1.14.1", 2276 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2277 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 2278 | "dev": true 2279 | }, 2280 | "tsutils": { 2281 | "version": "3.21.0", 2282 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 2283 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 2284 | "dev": true, 2285 | "requires": { 2286 | "tslib": "^1.8.1" 2287 | } 2288 | }, 2289 | "type-check": { 2290 | "version": "0.4.0", 2291 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2292 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2293 | "dev": true, 2294 | "requires": { 2295 | "prelude-ls": "^1.2.1" 2296 | } 2297 | }, 2298 | "type-fest": { 2299 | "version": "0.20.2", 2300 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2301 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2302 | "dev": true 2303 | }, 2304 | "unbox-primitive": { 2305 | "version": "1.0.1", 2306 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 2307 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 2308 | "dev": true, 2309 | "requires": { 2310 | "function-bind": "^1.1.1", 2311 | "has-bigints": "^1.0.1", 2312 | "has-symbols": "^1.0.2", 2313 | "which-boxed-primitive": "^1.0.2" 2314 | } 2315 | }, 2316 | "uri-js": { 2317 | "version": "4.4.1", 2318 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2319 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2320 | "dev": true, 2321 | "requires": { 2322 | "punycode": "^2.1.0" 2323 | } 2324 | }, 2325 | "util-deprecate": { 2326 | "version": "1.0.2", 2327 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2328 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2329 | "dev": true 2330 | }, 2331 | "v8-compile-cache": { 2332 | "version": "2.3.0", 2333 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2334 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2335 | "dev": true 2336 | }, 2337 | "which": { 2338 | "version": "2.0.2", 2339 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2340 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2341 | "dev": true, 2342 | "requires": { 2343 | "isexe": "^2.0.0" 2344 | } 2345 | }, 2346 | "which-boxed-primitive": { 2347 | "version": "1.0.2", 2348 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2349 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2350 | "dev": true, 2351 | "requires": { 2352 | "is-bigint": "^1.0.1", 2353 | "is-boolean-object": "^1.1.0", 2354 | "is-number-object": "^1.0.4", 2355 | "is-string": "^1.0.5", 2356 | "is-symbol": "^1.0.3" 2357 | } 2358 | }, 2359 | "word-wrap": { 2360 | "version": "1.2.3", 2361 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2362 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2363 | "dev": true 2364 | }, 2365 | "wrappy": { 2366 | "version": "1.0.2", 2367 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2368 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2369 | "dev": true 2370 | }, 2371 | "xtend": { 2372 | "version": "4.0.2", 2373 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2374 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 2375 | "dev": true 2376 | }, 2377 | "yallist": { 2378 | "version": "4.0.0", 2379 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2380 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2381 | "dev": true 2382 | }, 2383 | "yaml": { 2384 | "version": "1.10.2", 2385 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 2386 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 2387 | "dev": true 2388 | } 2389 | } 2390 | } 2391 | --------------------------------------------------------------------------------