From fe884796b4f40aed4b56bcc5d59f642e064bbdce Mon Sep 17 00:00:00 2001 From: bordalix Date: Fri, 24 Nov 2023 18:01:09 +0000 Subject: [PATCH 1/5] adds dev_portal to /website --- website/.gitignore | 20 + website/README.md | 41 + website/babel.config.js | 3 + .../blog/2023-11-10-liquidity-requirements.md | 343 + website/blog/authors.yml | 5 + website/docs/img/shared_output.png | Bin 0 -> 40740 bytes website/docs/intro.md | 31 + website/docs/provider/_category_.json | 4 + .../docs/provider/coordinator/_category_.json | 4 + .../provider/coordinator/configure-cli.md | 46 + .../provider/coordinator/configure-service.md | 26 + website/docs/provider/coordinator/intro.md | 17 + .../docs/provider/coordinator/run-docker.md | 30 + .../provider/coordinator/run-standalone.md | 23 + website/docs/provider/coordinator/use-cli.md | 56 + website/docs/provider/gateway/_category_.json | 4 + website/docs/provider/gateway/intro.md | 8 + website/docs/provider/intro.md | 11 + .../docs/provider/treasury/_category_.json | 4 + website/docs/provider/treasury/intro.md | 10 + website/docs/specs/00-index.md | 24 + website/docs/specs/_category_.json | 4 + website/docs/specs/nomenclature.md | 91 + website/docs/specs/timeline.md | 51 + website/docs/user/_category_.json | 4 + website/docs/user/intro.md | 8 + website/docs/user/noah-cli.md | 70 + website/docusaurus.config.js | 132 + website/package.json | 43 + website/sidebars.js | 33 + .../src/components/HomepageFeatures/index.js | 57 + .../HomepageFeatures/styles.module.css | 11 + website/src/css/custom.css | 30 + website/src/pages/index.js | 45 + website/src/pages/index.module.css | 23 + website/src/pages/markdown-page.md | 7 + website/static/.nojekyll | 0 website/static/img/ark-logo.png | Bin 0 -> 115330 bytes website/static/img/ark-og-image.png | Bin 0 -> 115330 bytes website/yarn.lock | 7711 +++++++++++++++++ 40 files changed, 9030 insertions(+) create mode 100644 website/.gitignore create mode 100644 website/README.md create mode 100644 website/babel.config.js create mode 100644 website/blog/2023-11-10-liquidity-requirements.md create mode 100644 website/blog/authors.yml create mode 100644 website/docs/img/shared_output.png create mode 100644 website/docs/intro.md create mode 100644 website/docs/provider/_category_.json create mode 100644 website/docs/provider/coordinator/_category_.json create mode 100644 website/docs/provider/coordinator/configure-cli.md create mode 100644 website/docs/provider/coordinator/configure-service.md create mode 100644 website/docs/provider/coordinator/intro.md create mode 100644 website/docs/provider/coordinator/run-docker.md create mode 100644 website/docs/provider/coordinator/run-standalone.md create mode 100644 website/docs/provider/coordinator/use-cli.md create mode 100644 website/docs/provider/gateway/_category_.json create mode 100644 website/docs/provider/gateway/intro.md create mode 100644 website/docs/provider/intro.md create mode 100644 website/docs/provider/treasury/_category_.json create mode 100644 website/docs/provider/treasury/intro.md create mode 100755 website/docs/specs/00-index.md create mode 100644 website/docs/specs/_category_.json create mode 100644 website/docs/specs/nomenclature.md create mode 100644 website/docs/specs/timeline.md create mode 100644 website/docs/user/_category_.json create mode 100644 website/docs/user/intro.md create mode 100644 website/docs/user/noah-cli.md create mode 100644 website/docusaurus.config.js create mode 100644 website/package.json create mode 100644 website/sidebars.js create mode 100644 website/src/components/HomepageFeatures/index.js create mode 100644 website/src/components/HomepageFeatures/styles.module.css create mode 100644 website/src/css/custom.css create mode 100644 website/src/pages/index.js create mode 100644 website/src/pages/index.module.css create mode 100644 website/src/pages/markdown-page.md create mode 100644 website/static/.nojekyll create mode 100644 website/static/img/ark-logo.png create mode 100644 website/static/img/ark-og-image.png create mode 100644 website/yarn.lock diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 000000000..b2d6de306 --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/website/README.md b/website/README.md new file mode 100644 index 000000000..aaba2fa1e --- /dev/null +++ b/website/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +Using SSH: + +``` +$ USE_SSH=true yarn deploy +``` + +Not using SSH: + +``` +$ GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/website/babel.config.js b/website/babel.config.js new file mode 100644 index 000000000..e00595dae --- /dev/null +++ b/website/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/website/blog/2023-11-10-liquidity-requirements.md b/website/blog/2023-11-10-liquidity-requirements.md new file mode 100644 index 000000000..3e23d9f08 --- /dev/null +++ b/website/blog/2023-11-10-liquidity-requirements.md @@ -0,0 +1,343 @@ +--- +slug: liquidity-requirements +title: Understanding Ark Liquidity Requirements +authors: bordalix +tags: [liquidity, ark, bitcoin] +--- + +## What is Ark? + +Ark is a promising second-layer solution for Bitcoin that could help improve the scalability and privacy of the network. It offers the following benefits: + +- **No incoming liquidity required**: Receivers can accept payments without having to worry about having enough funds in their wallets. +- **Maintains recipient anonymity**: Ark protects the anonymity of recipients, which is not always possible with other second-layer solutions. +- **Scalable**: Ark is a scalable solution that can help improve the scalability of Bitcoin. +- **Secure**: Ark is a secure solution that is built on top of the Bitcoin blockchain. + +All transactions within Ark must be funded by the Ark Service Provider (ASP) in order to achieve these benefits. + +This post discusses some considerations on this topic and calculates the funding needs of the ASP. + +Refer to [nomenclature docs](./docs/specs/nomenclature) for any doubt + +## Ark liquidity requirements + +How much BTC can an ASP accept from new users without risking not having enough capital to fund transfers inside Ark? In other words, what percentage of BTC in Ark is transferred in a 1-month period? + + + +This is similar to the definition of money velocity, as defined by the St. Louis Fed: + +> The velocity of money is the frequency at which one unit of currency is used to purchase domestically-produced goods and services within a given time period. + +### Money velocity (MV) + +Here are some money velocity numbers: + +- USD (Q3 2023): 1.327 +- Lightning (August 2023): 0.59 per month + +If we use a money velocity of 1.00 (for simplicity), this means that each BTC inside the Ark will be spent 1.00 of the time on a given period. Since the ASP must fund all transactions and onboarding, this means that for each 1 BTC added to the Ark, the ASP will need 1 BTC to fund the onboarding and 1 BTC to fund the transfers inside the Ark. With an initial balance of 100 BTC, this results in a limit of 50 BTC allowed to onboard (100 = 50 for onboarding + 50 for trades). + +If MV = 0.59, this means that those initial 100 BTC would allow for 62.89 BTC of onboarding, where (100 = 62.89 for onboarding + (69.89 \* 0.59 = 37.11) for trades). + +In reality, the money velocity of Ark is likely to be somewhere between 1.00 and 0.59. This means that the ASP will need to have a certain amount of liquidity on hand to fund both onboarded BTC and transfers inside the Ark. The amount of liquidity required will depend on the specific money velocity of Ark, which is not yet known for sure. + +Comparison table: + +| Money velocity | Balance | +Onboard (BTC) | Inside Ark (BTC) | Transfers (BTC) | +| -------------: | ------: | -------------: | ---------------: | --------------: | +| 0.59 | 100.00 | 62.89 | 0.00 | 37.11 | +| 1.00 | 100.00 | 50.00 | 0.00 | 50.00 | +| 1.327 | 100.00 | 42.97 | 0.00 | 57.03 | + +After one month, all the funds used by the ASP, plus the funds sent by the users, become available again. This means that the ASP will have more available liquidity, so it can increase the allowed value for onboards. On the other hand, there is now more capital inside the Ark, so the ASP needs to reserve more capital to fund the transfers: + +| Money velocity | Balance | +Onboard (BTC) | Inside Ark (BTC) | Transfers (BTC) | +| -------------: | ------: | -------------: | ---------------: | --------------: | +| 0.59 | 162.89 | 79.11 | 62.89 | 83.78 | +| 1.00 | 150 | 50.00 | 50.00 | 100.00 | +| 1.327 | 142.97 | 36.93 | 42.97 | 57.03 | + +Now, what would happen in a one-year period? + +### Simulating for 1 year + +Columns definition: + +- Inside Ark = Accumulated of allowed onboards +- ASP Balance = Initial balance + Inside Ark +- Reserved for trades = Inside Ark \* MV +- Remaining = Balance - Reserved for trades +- Allowed onboards = Remaining / (1 + MV) + +Money Velocity: 0.59 + +| Month | Inside Ark | ASP Balance | Reserved for trades | Remaining | Allowed onboards | +| ----: | :--------: | :---------: | :-----------------: | :-------: | :--------------: | +| 0 | 0.00 | 100.00 | 0.00 | 100.00 | 0.00 | +| 1 | 0.00 | 100.00 | 0.00 | 100.00 | 62.89 | +| 2 | 62.89 | 162.89 | 37.11 | 125.79 | 79.11 | +| 3 | 142.00 | 242.00 | 83.78 | 158.22 | 99.51 | +| 4 | 241.51 | 341.51 | 142.49 | 199.02 | 125.17 | +| 5 | 366.68 | 466.68 | 216.34 | 250.34 | 157.45 | +| 6 | 524.13 | 624.13 | 309.24 | 314.89 | 198.05 | +| 7 | 722.18 | 822.18 | 426.09 | 396.09 | 249.12 | +| 8 | 971.29 | 1,071.29 | 573.06 | 498.23 | 313.35 | +| 9 | 1,284.65 | 1,384.65 | 757.94 | 626.70 | 394.15 | +| 10 | 1,678.80 | 1,778.80 | 990.49 | 788.31 | 495.79 | +| 11 | 2,174.59 | 2,274.59 | 1,283.01 | 991.58 | 623.64 | +| 12 | 2,798.23 | 2,898.23 | 1,650.95 | 1,247.27 | 784.45 | + +Money Velocity: 1 + +| Month | Inside Ark | ASP Balance | Reserved for trades | Remaining | Allowed onboards | +| ----: | :--------: | :---------: | :-----------------: | :-------: | :--------------: | +| 0 | 0.00 | 100.00 | 0.00 | 100.00 | 0.00 | +| 1 | 0.00 | 100.00 | 0.00 | 100.00 | 50.00 | +| 2 | 50.00 | 150.00 | 50.00 | 100.00 | 50.00 | +| 3 | 100.00 | 200.00 | 100.00 | 100.00 | 50.00 | +| 4 | 150.00 | 250.00 | 150.00 | 100.00 | 50.00 | +| 5 | 200.00 | 300.00 | 200.00 | 100.00 | 50.00 | +| 6 | 250.00 | 350.00 | 250.00 | 100.00 | 50.00 | +| 7 | 300.00 | 400.00 | 300.00 | 100.00 | 50.00 | +| 8 | 350.00 | 450.00 | 350.00 | 100.00 | 50.00 | +| 9 | 400.00 | 500.00 | 400.00 | 100.00 | 50.00 | +| 10 | 450.00 | 550.00 | 450.00 | 100.00 | 50.00 | +| 11 | 500.00 | 600.00 | 500.00 | 100.00 | 50.00 | +| 12 | 550.00 | 650.00 | 550.00 | 100.00 | 50.00 | + +Money Velocity 1.327 + +| Month | Inside Ark | ASP Balance | Reserved for trades | Remaining | Allowed onboards | +| ----: | :--------: | :---------: | :-----------------: | :-------: | :--------------: | +| 0 | 0.00 | 100.00 | 0.00 | 100.00 | 0.00 | +| 1 | 0.00 | 100.00 | 0.00 | 100.00 | 42.97 | +| 2 | 42.97 | 142.97 | 57.03 | 85.95 | 36.93 | +| 3 | 79.91 | 179.91 | 106.04 | 73.87 | 31.74 | +| 4 | 111.65 | 211.65 | 148.16 | 63.49 | 27.28 | +| 5 | 138.94 | 238.94 | 184.37 | 54.57 | 23.45 | +| 6 | 162.39 | 262.39 | 215.49 | 46.90 | 20.15 | +| 7 | 182.54 | 282.54 | 242.23 | 40.31 | 17.32 | +| 8 | 199.86 | 299.86 | 265.22 | 34.64 | 14.89 | +| 9 | 214.75 | 314.75 | 284.98 | 29.78 | 12.80 | +| 10 | 227.55 | 327.55 | 301.96 | 25.59 | 11.00 | +| 11 | 238.55 | 338.55 | 316.55 | 22.00 | 9.45 | +| 12 | 248.00 | 348.00 | 329.09 | 18.90 | 8.12 | + +:::info Results + +Simulating the three different MV values over a one-year period, we can conclude the following: + +- If MV < 1, the ASP can onboard more BTC each month than in the previous month. +- If MV = 1, the allowed value for onboarding BTC is always the same (half of the initial balance). +- If MV > 1, the value of allowed BTC to onboard converges to 0 over time, with the maximum onboard value equal to (initial balance) / (MV - 1). + +::: + +:::note + +The money velocity (MV) for USD is quarterly. Assuming that M2 is constant and GDP is evenly distributed over the three months, the MV for one month should be ⅓ of the MV for the quarter, or 0.33. + +::: + +### Algorithm + +#### Allowed onboard value + +The value of allowed onboard BTC for this round will be: + +:::info Allowed onboard formula + +(Available balance - User’s funds in Ark \* MV) / (1 + MV) + +::: + +Where: + +- Available balance = Initial ASP balance + User’s funds +- User’s funds = All BTC onboarded by users until now +- MV = Money Velocity + +#### Money velocity + +To calculate the value of Money Velocity: + +:::info Money Velocity formula + +Average for the last N rounds of (amount transferred / user’s funds) + +::: + +#### Rational + +The ASP keeps records of onboarded and transferred amounts from previous rounds, and uses them to calculate the money velocity (MV) for the current round. It then uses the MV to calculate the maximum amount that can be onboarded in the current round. + +If you've read this far, thank you! But now it's time for the bad news. + +## The UTXO model + +
+How the UTXO Model Works + +In the UTXO model, each unit of cryptocurrency is treated as a unique and indivisible entity. When a user spends cryptocurrency, they are not actually spending their entire balance. Instead, they are spending specific UTXOs that they own. + +Each UTXO has two important pieces of information: + +- The amount of cryptocurrency: This is the value of the UTXO. +- A locking script: This is a script that specifies how the UTXO can be spent. The locking script typically requires a digital signature from the owner of the UTXO. + +When a user wants to spend cryptocurrency, they create a new transaction. This transaction has two parts: + +- Inputs: These are the UTXOs that the user is spending. +- Outputs: These are the new UTXOs that will be created as a result of the transaction. + +The locking scripts of the input UTXOs must be satisfied in order for the transaction to be valid. This ensures that only the rightful owner of the cryptocurrency can spend it. + +
+ +### The change problem + +But since Ark uses a UTXO model, this MV theory doesn't work, as the ASP will also need to fund the change on each transaction. For example, if Alice has a 1 BTC VTXO and wants to pay Bob 0.2 BTC, the ASP will need to fund two new VTXOs: + +- 0.2 BTC to Bob +- 0.8 BTC to Alice (change) + +#### Some simulations + +Imagine that Alice boarded the Ark with 1 BTC. She has a 1 BTC VTXO and spends ⅓ of her money in the first month (MV = 0.33) using three payments of 0.11 BTC each. + +Let's also assume that these payments are inside Ark (to Bob), which means that the ASP will also need to fund Bob's VTXO. + +| Payment | Value | Alice VTXO | Bob VTXOs
(0.11 each) | Liquidity needed | Liquidity accum | +| :-----: | :---: | :--------: | :------------------------: | :--------------: | :-------------: | +| 0 | 0 | 1.00 | 0 | 0 | 0 | +| 1 | 0.11 | 0.89 | 1 | 1.00 | 1.00 | +| 2 | 0.11 | 0.78 | 2 | 0.89 | 1.89 | +| 3 | 0.11 | 0.67 | 3 | 0.78 | **2.67** | + +At the end of the transaction, Alice has one VTXO of 0.67 BTC and Bob has three VTXOs of 0.11 BTC each. + +:::danger Huge funding needs (factor of **8**) + +The ASP needed **2.67** of liquidity to support **0.33** traded inside Ark. + +::: + +Things get much worse if the user makes 10 payments instead of 3 (spending 0.033 BTC on each): + +| Payment | Value | Alice VTXO | Bob VTXOs
(0.033 each) | Liquidity needed | Liquidity accum | +| :-----: | :---: | :--------: | :-------------------------: | :--------------: | :-------------: | +| 0 | 0 | 1.00 | 0 | 0 | 0 | +| 1 | 0.033 | 0.97 | 1 | 1.00 | 1.00 | +| 2 | 0.033 | 0.93 | 2 | 0.97 | 1.97 | +| 3 | 0.033 | 0.90 | 3 | 0.93 | 2.90 | +| 4 | 0.033 | 0.87 | 4 | 0.90 | 3.80 | +| 5 | 0.033 | 0.84 | 5 | 0.87 | 4.67 | +| 6 | 0.033 | 0.80 | 6 | 0.84 | 5.51 | +| 7 | 0.033 | 0.77 | 7 | 0.80 | 6.31 | +| 8 | 0.033 | 0.74 | 8 | 0.77 | 7.08 | +| 9 | 0.033 | 0.70 | 9 | 0.74 | 7.81 | +| 10 | 0.033 | 0.67 | 10 | 0.70 | **8.52** | + +:::danger Huge funding needs (factor of **25**) + +The ASP needed **8.52** of liquidity to support **0.33** traded inside Ark. + +::: + +### Possible mitigations + +One can try to reduce these liquidity requirements by pushing several levers: + +- Reduce MV by reducing the timelock (e.g., 2 weeks instead of 1 month). +- Reduce transaction change by creating a set of UTXOs with a range of values on the first place, and then doing coin selection with the purpose of reducing change to the minimum possible. + +#### Reduce transaction change + +- Assuming MV = 0.33, and 10 payments of equal value during a month period +- Dividing Alice’s initial UTXO into 10, 100, and 1000 VTXOs + +Using a 1:10 ratio for VTXOs: + +| VTXO Value | Payment
number | Payment
value | VTXOs used | Alice balance | Alice VTXOs | Liquidity needed | Liquidity accum | +| :--------: | :-----------------: | :----------------: | :--------: | :-----------: | :---------: | :--------------: | :-------------: | +| 0.1 | 0 | 0.000 | 0 | 1.000 | 10 | 0.0 | 0.00 | +| 0.1 | 1 | 0.033 | 1 | 0.967 | 10 | 0.1 | 0.10 | +| 0.1 | 2 | 0.033 | 1 | 0.934 | 10 | 0.1 | 0.20 | +| 0.1 | 3 | 0.033 | 1 | 0.901 | 10 | 0.1 | 0.30 | +| 0.1 | 4 | 0.033 | 1 | 0.868 | 10 | 0.1 | 0.40 | +| 0.1 | 5 | 0.033 | 1 | 0.835 | 10 | 0.1 | 0.50 | +| 0.1 | 6 | 0.033 | 1 | 0.802 | 10 | 0.1 | 0.60 | +| 0.1 | 7 | 0.033 | 1 | 0.769 | 10 | 0.1 | 0.70 | +| 0.1 | 8 | 0.033 | 1 | 0.736 | 10 | 0.1 | 0.80 | +| 0.1 | 9 | 0.033 | 1 | 0.703 | 10 | 0.1 | 0.90 | +| 0.1 | 10 | 0.033 | 1 | 0.670 | 10 | 0.1 | 1.00 | + +Using a 1:100 ratio for VTXOs: + +| VTXO Value | Payment
number | Payment
value | VTXOs used | Alice balance | Alice VTXOs | Liquidity needed | Liquidity accum | +| :--------: | :-----------------: | :----------------: | :--------: | :-----------: | :---------: | :--------------: | :-------------: | +| 0.01 | 0 | 0.000 | 0 | 1.000 | 100 | 0.0 | 0.00 | +| 0.01 | 1 | 0.033 | 4 | 0.967 | 97 | 0.04 | 0.04 | +| 0.01 | 2 | 0.033 | 4 | 0.934 | 94 | 0.04 | 0.08 | +| 0.01 | 3 | 0.033 | 4 | 0.901 | 91 | 0.04 | 0.12 | +| 0.01 | 4 | 0.033 | 4 | 0.868 | 88 | 0.04 | 0.16 | +| 0.01 | 5 | 0.033 | 4 | 0.835 | 85 | 0.04 | 0.20 | +| 0.01 | 6 | 0.033 | 4 | 0.802 | 82 | 0.04 | 0.24 | +| 0.01 | 7 | 0.033 | 4 | 0.769 | 79 | 0.04 | 0.28 | +| 0.01 | 8 | 0.033 | 4 | 0.736 | 76 | 0.04 | 0.32 | +| 0.01 | 9 | 0.033 | 4 | 0.703 | 73 | 0.04 | 0.36 | +| 0.01 | 10 | 0.033 | 4 | 0.670 | 70 | 0.04 | 0.40 | + +Using a 1:1000 ratio for VTXOs: + +| VTXO Value | Payment
number | Payment
value | VTXOs used | Alice balance | Alice VTXOs | Liquidity needed | Liquidity accum | +| :--------: | :-----------------: | :----------------: | :--------: | :-----------: | :---------: | :--------------: | :-------------: | +| 0.001 | 0 | 0.000 | 0 | 1.000 | 1000 | 0.0 | 0.00 | +| 0.001 | 1 | 0.033 | 33 | 0.967 | 968 | 0.033 | 0.03 | +| 0.001 | 2 | 0.033 | 33 | 0.934 | 936 | 0.033 | 0.07 | +| 0.001 | 3 | 0.033 | 33 | 0.901 | 904 | 0.033 | 0.10 | +| 0.001 | 4 | 0.033 | 33 | 0.868 | 872 | 0.033 | 0.13 | +| 0.001 | 5 | 0.033 | 33 | 0.835 | 840 | 0.033 | 0.17 | +| 0.001 | 6 | 0.033 | 33 | 0.802 | 808 | 0.033 | 0.20 | +| 0.001 | 7 | 0.033 | 33 | 0.769 | 776 | 0.033 | 0.23 | +| 0.001 | 8 | 0.033 | 33 | 0.736 | 744 | 0.033 | 0.26 | +| 0.001 | 9 | 0.033 | 33 | 0.703 | 712 | 0.033 | 0.30 | +| 0.001 | 10 | 0.033 | 33 | 0.670 | 680 | 0.033 | 0.33 | + +Comparison table: + +| VTXO ratio | MV | # Payments | ASP liquidity needed | +| ---------: | ---: | ---------: | -------------------: | +| 10 | 0.33 | 10 | 1.00 | +| 100 | 0.33 | 10 | 0.40 | +| 1000 | 0.33 | 10 | 0.33 | + +:::info conclusion + +Dividing the initial UTXO into more VTXOs decreases the need for funding. + +::: + +## Conclusion + +The liquidity requirements for an ASP will depend on three major factors: + +- **Money velocity**: This is not under the control of the ASP, and if it is higher than 1, the Ark capacity will converge to a fixed value. +- **The locktime period on VTXOs**: Reducing the locktime period will return the locked liquidity sooner. However, this also means that users will need to "recycle" their VTXOs sooner, which can be seen as a worse user experience. +- **The VTXO ratio**: In other words, this is the maximum allowed value for a given VTXO. At one extreme, the ASP could force all VTXOs to be of 1 sat, which would eliminate any "wasted" liquidity on change. However, this would also require millions of signatures from the user and ASP to construct a payment, which would cause a worse user experience. + +## References + +- Velocity of M2 Money Stock + by St Louis Fed + https://fred.stlouisfed.org/series/M2V + +- Lightning Report + by River + https://river.com/learn/files/river-lightning-report-2023.pdf + +- Cryptocurrencies and the Velocity of Money + by Ingolf Gunnar Anton Pernice, Georg Gentzen, and Hermann Elendner + https://cryptoeconomicsystems.pubpub.org/pub/pernice-cryptocurrencies-velocity/release/9 diff --git a/website/blog/authors.yml b/website/blog/authors.yml new file mode 100644 index 000000000..4c42d8808 --- /dev/null +++ b/website/blog/authors.yml @@ -0,0 +1,5 @@ +bordalix: + name: João Bordalo + title: Developer + url: https://github.com/bordalix + image_url: https://github.com/bordalix.png diff --git a/website/docs/img/shared_output.png b/website/docs/img/shared_output.png new file mode 100644 index 0000000000000000000000000000000000000000..8bec03e7b975d45129ff980a6d0ba039c3a60101 GIT binary patch literal 40740 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 CzHb8n literal 0 HcmV?d00001 diff --git a/website/docs/intro.md b/website/docs/intro.md new file mode 100644 index 000000000..aebb134d9 --- /dev/null +++ b/website/docs/intro.md @@ -0,0 +1,31 @@ +--- +title: 'Introduction' +sidebar_position: 1 +slug: / +--- + +Welcome to Ark's documentation. Here you can learn more about the protocol, how to join the Ark and spend your coins off-chain in a fast and secure way. + +- Be part of the community [joining our Telegram channel](https://t.me/ark_network_community). +- To report bugs or ask for support [open an issue on the Github repository](https://github.com/ark-network/support/issues/new). +- To propose improvements on protocol [open an issue on the Github repository](https://github.com/ark-network/boats/issues/new). + +### What is Ark? + +Ark is a second-layer solution designed to help scale Bitcoin transactions by using a shared utxo model that enables anonymous, off-chain payments through an untrusted intermediary called the Ark Service Provider (ASP). ASPs are always-on servers that provide liquidity to the network, similar to how Lightning service providers work. + +Ark is a scaling category of its own and is not a state channel design or a rollup. Ark is a liquidity network like Lightning that operates without introducing liquidity constraints or a direct link between the sender and receiver. It uses virtual utxos, to enable anonymous, scalable, off-chain payments. + +## Get started + +### [Join the Ark](user/intro.md) + +### [Create the Ark](provider/intro.md) + +## Protocol Specifications + +[Learn more about Ark](specs/00-index.md) + +## Copyright + +By contributing to this repository, you agree to license your work under the MIT license unless specified otherwise at the top of the file itself. Any work contributed where you are not the original author must contain its license header with the original author(s) and source. diff --git a/website/docs/provider/_category_.json b/website/docs/provider/_category_.json new file mode 100644 index 000000000..2f9cfa409 --- /dev/null +++ b/website/docs/provider/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Create an Ark", + "position": 4 +} diff --git a/website/docs/provider/coordinator/_category_.json b/website/docs/provider/coordinator/_category_.json new file mode 100644 index 000000000..f2e68a642 --- /dev/null +++ b/website/docs/provider/coordinator/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Coordinator", + "position": 3 +} \ No newline at end of file diff --git a/website/docs/provider/coordinator/configure-cli.md b/website/docs/provider/coordinator/configure-cli.md new file mode 100644 index 000000000..0aac7ee78 --- /dev/null +++ b/website/docs/provider/coordinator/configure-cli.md @@ -0,0 +1,46 @@ +--- +sidebar_position: 5 +title: Configure the CLI +--- + +Now that your service is up and running you can configure the `coordinator` CLI to interact with it. + +The CLI makes use of a configuration file stored in its datadir - defaults to `~/.coordinator-cli` on Linux, `~/Library/Application\ Support/Coordinator-cli` on MacOS. + +You can customize the datadir path of your coordinator cli by exporting the environment variable `export ARK_COORDINATOR_CLI_DATADIR=path/to/datadir`. + +:::tip +Add this env var to your bash profile otherwise you'll need to always export it when running `coordinator` commands. +::: + +You can manage the configuration of your CLI with the features of the `coordinator config` command. Following, you can learn all what you can do with this command. + +### Initialize CLI config + +You can initialize the configuration of your CLI by the means of flags + +```bash +$ coordinator config init +``` + +This command brings the configuration of your CLI to its default status unless you don't specify a flag for those params you want to tweak. + +Run `coordinator config init --help` to see all available configuration flags. + +### Customize CLI config + +You can change granular params of the CLI's configuration by using the `set` subcommand as shown below: + +```bash +$ coordinator config set no-tls true +``` + +### Show CLI config + +You can take a look at the configuration of your CLI with: + +```bash +$ coordinator config +``` + +You've learned everything about configuring the CLI, let's see how it does let you interact with the Coordinator. \ No newline at end of file diff --git a/website/docs/provider/coordinator/configure-service.md b/website/docs/provider/coordinator/configure-service.md new file mode 100644 index 000000000..eddbc8337 --- /dev/null +++ b/website/docs/provider/coordinator/configure-service.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 4 +title: Configure the Coordinator +--- + +The Coordinator can be configured by exporting environment variables at startup, or by adding a configuration file to its datadir. + +### Configure with environment variables + +The following table lists all the environment variables available, along with a brief description and their default values: + +| Name | Description | Default Value | +|---|---|---| +| ARK_COORDINATOR_DATADIR | Let's you change the service's datadir path | `~/.coordinatord` (Linux).

`~/Library/Application\ Support/Coordinatord` (MacOS). | + +### Configure with file + +You can configure the Coordinator by adding a `config.json` file to its datadir. + +Below, you can see all the props you can add to the config file: + +```json +{ + //TBD +} +``` \ No newline at end of file diff --git a/website/docs/provider/coordinator/intro.md b/website/docs/provider/coordinator/intro.md new file mode 100644 index 000000000..d2bd8cf6d --- /dev/null +++ b/website/docs/provider/coordinator/intro.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 1 +title: Overview +--- + +# Ark Coordinator + +The Coordinator handles the perpetual creation of new Ark rounds every 5 seconds. + +It can be served in one of the following ways: + +* [Dockerized application](run-docker.md) +* [Standalone application](run-standalone.md) + + + +Once your coordinator is up and running you can [configure the CLI](configure-cli.md) to interact with it. \ No newline at end of file diff --git a/website/docs/provider/coordinator/run-docker.md b/website/docs/provider/coordinator/run-docker.md new file mode 100644 index 000000000..1bf1a29b6 --- /dev/null +++ b/website/docs/provider/coordinator/run-docker.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 3 +title: Run with Docker +--- + +The Coordinator can be served as a dockerized application by following the steps below: + +1. Install [Docker](https://docs.docker.com/engine/install) - if you're on Linux, don't forget the [post-installation steps](https://docs.docker.com/engine/install/linux-postinstall/)! +2. Download the latest image of the connector with `docker pull ghcr.io/ark-network/coordinatord:latest` +3. Create a `coordinatord/` folder in your current directory - to mount the datadir as external volume - and start the dockerized service with + +```bash +$ docker run -it -d --name coordinatord \ + -u + -v "$(pwd)/coordinatord:/home/ark/.coordinatord" \ + -e ARK_COORDINATOR_LOG_LEVEL=5 \ + ghcr.io/ark-network/coordinatord:latest +``` + +You can check the logs of the service at anytime by running `docker logs coordinatord`. + +The dockerized Coordinator can be configured by the means of environment variables or by adding a `config.json` file to the `coordinatord/` folder you've created. Learn more about this by visiting [this section](configure-service.md). + +The service comes also with an embedded CLI, so it's enough for you to create an alias like the following to use it: + +```bash +$ alias coordinator="docker exec coordinatord coordinator" +``` + +Take a look at how to [configure the CLI](configure-cli.md) before start interacting with the running Coordinator. diff --git a/website/docs/provider/coordinator/run-standalone.md b/website/docs/provider/coordinator/run-standalone.md new file mode 100644 index 000000000..e8c99fa72 --- /dev/null +++ b/website/docs/provider/coordinator/run-standalone.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 2 +title: Run Standalone +--- + +The Coordinator can be served as a standalone binary by following the steps below: + +1. Download the lastest [release](https://github.com/ark-network/ark-coordinator/releases) of the service and the CLI for Linux or MacOS. +2. Rename the binaries `coordinatord` and `coordinator` , move them to your _PATH_ (eg. `/usr/local/bin`), and grant them exec permissions with `chmod +x /usr/local/bin/coordinatord` and `chmod +x /usr/local/bin/coordinator`. +3. Start the service with + +```bash +ARK_COORDINATOR_LOG_LEVEL=5 +coordinatord & > ~/ark-logs/coordinator.logs.txt & +``` + +The command above redirects all the logs to the file `~/ark-logs/coordinator.logs.txt`. Therefore you can check the logs of the service at anytime by consulting that file. + +The Coordinator service makes use of a datadir - defaults to `~/.coordinatord` on Linux, `~/Library/Application\ Support/Coordinatord` on MacOS - that can be customized by exporting the environment variable `export ARK_COORDINATOR_DATADIR=path/to/datadir` at its startup. + +You can configure the Coordinator by the means of environment variables or by adding a `config.json` file to the service's datadir. Learn more about this by visiting [this section](configure-service.md). + +Once the service is started you can [configure the CLI](configure-cli.md) and start interacting with it. diff --git a/website/docs/provider/coordinator/use-cli.md b/website/docs/provider/coordinator/use-cli.md new file mode 100644 index 000000000..f792a9933 --- /dev/null +++ b/website/docs/provider/coordinator/use-cli.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 6 +title: Use the CLI +--- + +Now that your CLI is configured to connect with the running Coordinator, let's take a look at what it makes you capable of. + +### List pool transactions + +You can retrieve the list of pool transactions made in a certain time range with: + +```bash +$ coordinator pools --start --end +``` + +You can omit the `--end` flag if you want to retrieve all pool transactions from a certain time unitl now. + +For each pool tx, you can see details like the txid, status, and amount of liquidity added to the Ark. + +You can also list all pool transactions created so far with: + +```bash +$ coordinator pools --all +``` + +Run `coordinators pools --help` to see the full list of available flags. + +### Get pool transaction details + +You can get details about a specific pool transaction with: + +```bash +$ coordinator pool --id +``` + +### Register inputs and outptus + +You can manually register the VTXOs you're going to spend and the related receivers with: + +```bash +$ coordinator register --inputs '[{"txid": "", "vout": }]' --outputs '[{"pubkey": "", "amount": }]' +``` + +The Coordinator answers with a message containing the virtual (forfeit) transaction spending your coins and the list of all the new VTXOs created in the next round - including those you registered. + + + +### Finalize input and outputs + +Once you signed the virtual transaction you can send it back to the Coordinator and finalize the process with: + +```bash +$ coordinator finalize --vtx +``` + +In response you get the id of the pool transaction that is going to be broadcasted by the server. diff --git a/website/docs/provider/gateway/_category_.json b/website/docs/provider/gateway/_category_.json new file mode 100644 index 000000000..3180cd118 --- /dev/null +++ b/website/docs/provider/gateway/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Gateway", + "position": 2 +} \ No newline at end of file diff --git a/website/docs/provider/gateway/intro.md b/website/docs/provider/gateway/intro.md new file mode 100644 index 000000000..c2aba4701 --- /dev/null +++ b/website/docs/provider/gateway/intro.md @@ -0,0 +1,8 @@ +--- +sidebar_position: 1 +title: Overview +--- + +# Ark Gateway + +The Gateway handles users' requests to onboard (join) and offboard (leave) the Ark. diff --git a/website/docs/provider/intro.md b/website/docs/provider/intro.md new file mode 100644 index 000000000..d3bd7d9c8 --- /dev/null +++ b/website/docs/provider/intro.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 1 +--- + +# Ark Service Provider + +The Ark Service Provider (ASP) is composed by 3 services that have different responsibilities: + +- Gateway, handles (on/off)boarding requests +- Coordinator, handles coinjoin rounds and creation of pool txs (every 5 secs) +- Treasury, handles verification & approval of pool txs, and operations altering the capacity of the service diff --git a/website/docs/provider/treasury/_category_.json b/website/docs/provider/treasury/_category_.json new file mode 100644 index 000000000..8c1a4de2d --- /dev/null +++ b/website/docs/provider/treasury/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Treasury", + "position": 4 +} \ No newline at end of file diff --git a/website/docs/provider/treasury/intro.md b/website/docs/provider/treasury/intro.md new file mode 100644 index 000000000..a0f464f48 --- /dev/null +++ b/website/docs/provider/treasury/intro.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 1 +title: Overview +--- + +# Ark Treasury + +The Treasury is in charge of verifying and approving pool transactions created by the Coordinator. + +It does also handles the management of the ASP capacity - ie. depositing or removing funds - and liquidity - monitoring/sweeping expired VTXOs. diff --git a/website/docs/specs/00-index.md b/website/docs/specs/00-index.md new file mode 100755 index 000000000..99ee8d208 --- /dev/null +++ b/website/docs/specs/00-index.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 1 +title: 'BOAT#0: Index' +--- + +# Index and Overview + +Welcome! These **Basics of Ark Technology (BOAT)** documents describe the Ark protocol, a second layer solution that enables anonymous, off-chain payments through an untrusted intermediary that provides liquidity to the network. + +## Index + +- [BOAT #0: Index](00-index.md) + +## Overview + +Ark is a second-layer solution designed to help scale Bitcoin transactions by using a shared utxo model that enables anonymous, off-chain payments through an untrusted intermediary called the Ark Service Provider (**ASP**). ASPs are always-on servers that provide liquidity to the network, similar to how Lightning service providers work. + +Ark has a utxo set that lives off the chain. These utxos are referred to as virtual utxos or **VTXOs** in short. VTXOs are like short-lived notes that expire after four weeks. Users must spend their VTXOs upon receiving them within this four-week timeframe or return them to themselves to reset the four-week timer. + +Users can acquire VTXOs from someone who already owns them or use a process called **onboarding**, which is an atomic two-way peg mechanism that doesn't require trust. Onboarding lets users lift their on-chain utxos off the chain for a 1:1 virtual utxo. Users can unilaterally redeem a virtual utxo for an on-chain utxo without asking for ASP cooperation. + +‍When sending funds, users coin-select and redeem their VTXOs and create new ones for the recipient (plus change) in a coinjoin round where ASP is the blinded coordinator. ASP funds the coinjoin with their own on-chain funds in exchange for VTXO redemptions. Therefore, the coinjoin transaction that hits on-chain has only one or a few inputs provided by the ASP. + +The newly created VTXOs of the coinjoin round are bundled and nested under a shared transaction output. This shared output expires four weeks after its creation, and once it expires, the ASP who funded the shared output in the first place can solely sweep the shared output. All nested VTXOs under this shared output are expected to be redeemed in this window period. diff --git a/website/docs/specs/_category_.json b/website/docs/specs/_category_.json new file mode 100644 index 000000000..9f4903872 --- /dev/null +++ b/website/docs/specs/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Protocol", + "position": 2 +} diff --git a/website/docs/specs/nomenclature.md b/website/docs/specs/nomenclature.md new file mode 100644 index 000000000..c4fba62d0 --- /dev/null +++ b/website/docs/specs/nomenclature.md @@ -0,0 +1,91 @@ +--- +sidebar_position: 2 +title: 'Nomenclature' +--- + +## Intervenients + +### ASP + +Ark is a second-layer solution designed to help scale Bitcoin transactions by using a shared UTXO model that enables anonymous, off-chain payments through an untrusted intermediary called the **Ark Service Provider** (ASP). ASPs are always-on servers that provide liquidity to the network, similar to how Lightning service providers work. + +### Users + +Any user that onboards the Ark or receives a payment inside an Ark. + +### VTXO + +Ark has a UTXO set that lives off the chain. These utxos are referred to as virtual UTXOs or VTXOs in short. + +## Moments + +### Onboarding the Ark + +When a User sends funds to the Ark and gets VTXOs in return. + +### Unilateral exit + +When a user decides to withdraw his funds from the Ark to mainchain, without asking the ASP. + +### Round + +Periodic transaction crafted by the ASP that hits mainchain and creates new VTXOs. + +## Transactions + +**Note:** In an optimistic scenario, transactions marked with a **\*** should never hit onchain. + +### Funding transaction + +- When Alice wants to enter the Ark + +| Inputs | Outputs (locking script) | +| ------------------- | ----------------------------------- | +| Alice’s segwit UTXO | `(Alice + ASP) or (ASP in 1 month)` | + +### Redeem transaction \* + +- Insurance for Alice, in case the ASP stops responding +- Allows Alice to receive funds back from the Ark + +| Inputs | Outputs | +| ------------------------------------------ | -------------------------------------- | +| Funding transaction spending `Alice + ASP` | `(Alice + ASP) or (Alice in 24 hours)` | + +### Forfeit transaction \* + +- Insurance for the ASP, in case Alice tries to double spend her VTXO after spending it inside Ark +- Before the ASP funds Bob’s VTXO in the next Pool transaction, he must receive this transaction signed by Alice +- Uses a connector from the next Pool transaction to achieve atomicity + +| Inputs | Outputs | +| ----------------------------------------- | ------- | +| Redeem transaction spending `Alice + ASP` | `ASP` | +| Connector from next Pool transaction | + +### Pool transaction (aka Ark transaction) + +- Funded by the ASP, creates VTXOs +- After 4 weeks, the ASP can get their funds back +- Multisig `n-of-n` where `n` is the number of participants +- A new transaction is broadcasted every 5 seconds + +| Inputs | Outputs | +| -------- | ------------------------------------------- | +| ASP UTXO | Shared output: `n-of-n or (ASP in 1 month)` | + +### Shared output (aka Shared UTXO) + +- Represents a binary tree of transactions +- In an optimistic scenario, this tree is never revealed + +![Docusaurus Plushie](../img/shared_output.png) + +### VTXO \* + +- Similar to Redeem transaction +- Can be broadcasted anytime, on the condition that previous transactions on the transaction tree (up to the Pool transaction) are confirmed or broadcasted at the same time + +| Inputs | Outputs | +| --------------------------------------- | -------------------------------------- | +| Previous transaction on the binary tree | `(Alice + ASP) or (Alice in 24 hours)` | diff --git a/website/docs/specs/timeline.md b/website/docs/specs/timeline.md new file mode 100644 index 000000000..3b64a7cb0 --- /dev/null +++ b/website/docs/specs/timeline.md @@ -0,0 +1,51 @@ +--- +sidebar_position: 3 +title: 'Timeline' +--- + +### Onboarding the Ark + +1. Alice creates a [Funding transaction](#funding-transaction): + - adds any segwit output as an input (must be segwit) + - adds output locked by `(Alice + ASP) or (ASP in 1 month)` + - sends it to ASP, not signed +2. Alice receives a [Redeem transaction](#redeem-transaction-) from the ASP: + - signed by the ASP, spends Funding transaction (1) via `Alice + ASP` + - has one output locked by `(Alice + ASP) or (Alice in 24 hours)` +3. Alice signs and broadcasts Funding transaction (1) + - Is now safe for Alice to broadcast this funding transaction because now she can leave anytime with + [Redeem transaction](#redeem-transaction-) (2) spending `Alice in 24h`, i.e. Alice will be able to get + her funds back in 24 hours. +4. ASP (with Alice) prepares next [Pool transaction](#pool-transaction-aka-ark-transaction) +5. Alice creates a [Forfeit transaction](#forfeit-transaction-): + - spends from Redeem transaction (2) via `Alice + ASP` + - adds connector output from Pool transaction (4) as input + - signs (SIGHASH_ALL) and sends it to the ASP +6. ASP broadcasts [Pool transaction](#pool-transaction-aka-ark-transaction) (4) +7. Alice has now a [VTXO](#vtxo) +8. After 1 month ASP spends Funding transaction (1) via `ASP in 1 month` + +### Payment to Bob + +1. Alice tells ASP to send [VTXO](#vtxo) to Bob +2. ASP (with Alice) prepares next [Pool transaction](#pool-transaction-aka-ark-transaction) +3. Alice creates a [Forfeit transaction](#forfeit-transaction-): + - spends from VTXO (1) via `Alice + ASP` + - adds connector output from Pool transaction (2) as input + - signs (SIGHASH_ALL) and sends it to the ASP +4. ASP broadcasts [Pool transaction](#pool-transaction-aka-ark-transaction) +5. Bob has now a new [VTXO](#vtxo) +6. For at most 4 weeks, Alice will be able to double spend her’s [VTXO](#vtxo), but if she does it, the ASP will have time to grab the funds from the [VTXO](#vtxo) to itself using the [Forfeit transaction](#forfeit-transaction-) + +### Exiting the Ark + +1. Alice tells ASP she wants to trade [VTXO](#vtxo) for UTXO +2. ASP (with Alice) prepares next [Pool transaction](#pool-transaction-aka-ark-transaction): + - an additional output is added, locked by `Alice` +3. Alice creates a [Forfeit transaction](#forfeit-transaction-): + - spends from VTXO (1) with `Alice + ASP` + - adds connector output from Pool transaction (2) as input + - signs it and send it to the ASP +4. ASP broadcasts [Pool transaction](#pool-transaction-aka-ark-transaction) +5. Alice has now a new UTXO +6. For at most 4 weeks, Alice will be able to double spend her’s [VTXO](#vtxo), but if she does it, the ASP will have time (24 hours) to grab the funds from the [VTXO](#vtxo) to itself using the [Forfeit transaction](#forfeit-transaction-) diff --git a/website/docs/user/_category_.json b/website/docs/user/_category_.json new file mode 100644 index 000000000..e4b5cd3ac --- /dev/null +++ b/website/docs/user/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Join the Ark", + "position": 3 +} diff --git a/website/docs/user/intro.md b/website/docs/user/intro.md new file mode 100644 index 000000000..0ca243d10 --- /dev/null +++ b/website/docs/user/intro.md @@ -0,0 +1,8 @@ +--- +sidebar_position: 1 +title: Overview +--- + +You can join the Ark with one of the following apps: +- [Noah CLI](noah-cli.md) + diff --git a/website/docs/user/noah-cli.md b/website/docs/user/noah-cli.md new file mode 100644 index 000000000..aac01190a --- /dev/null +++ b/website/docs/user/noah-cli.md @@ -0,0 +1,70 @@ +--- +sidebar_position: 2 +title: Noah CLI +--- + +The Noah CLI allows you to interact with the Ark Service Provider (ASP). It is a command line tool that can be used to create and manage your Ark Wallet. + +## Configure the CLI + +The noah CLI requires a set of variables to be set, use flags to set them. + +```bash +noah config connect +``` + +## Set up Noah wallet + +`noah init` is a command that sets up a Noah wallet with a 32-bytes private key and a password in order to encrypt the private key. + +```bash +noah init --password [--prvkey ] +``` + +## Receive VTXO + +### Get receiving address + +You can use the noah CLI to print your Ark address. This can be used to receive VTXO. + +```bash +noah receive +``` + +:::tip +testnet only: `noah faucet ` to receive newly created VTXO from the service provider. +::: + +### Print balance + +```bash +noah balance +``` + +`balance` returns the sum of all VTXOs belonging to the Noah wallet. + +## Send VTXO(s) + +```bash +noah send --receivers '[{"to": "}, ...]' +``` + +Noah CLI is responsible to select the coins to send for the given amount. It will sync with the service provider to forfeit the VTXO(s) and create a new VTXO belonging to the recipient. A change VTXO will be created if needed. Asks user password before signing. + +## Redemption + +### Collaborative redemption + +```bash +noah redeem --address --amount +``` + +Noah CLI will sync with the service provider in order to redeem onchain the given amount in the next round, any remaining change will become a new vTXO. Asks user password before signing. + +### Unilateral redemption + +```bash +noah redeem --address --force +``` + +With the `--force` flag Noah CLI will unilateraly redeem all VTXOs by signing the psbt(s) and broadcast them. Asks user password before signing. diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js new file mode 100644 index 000000000..32b9c4aa6 --- /dev/null +++ b/website/docusaurus.config.js @@ -0,0 +1,132 @@ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github') +const darkCodeTheme = require('prism-react-renderer/themes/dracula') + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Ark', + tagline: 'TBD', + favicon: 'img/ark-logo.png', + url: 'https://dev.arkpill.me', + baseUrl: '/', + organizationName: 'Ark', + projectName: 'dev-portal', + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + 'classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: require.resolve('./sidebars.js'), + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: 'https://github.com/ark-network/dev-portal/edit/main/', + }, + blog: { + showReadingTime: true, + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: 'https://github.com/ark-network/dev-portal/edit/main/blog/', + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: 'img/ark-og-image.png', + navbar: { + title: 'Developer Portal', + logo: { + alt: 'Ark Logo', + src: 'img/ark-logo.png', + srcDark: 'img/ark-logo.png', + }, + items: [ + { + type: 'docSidebar', + sidebarId: 'tutorialSidebar', + position: 'left', + label: 'Docs', + }, + { to: '/blog', label: 'Blog', position: 'left' }, + { + href: 'https://github.com/ark-network', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + links: [ + { + title: 'DOCS', + items: [ + { + label: 'What Ark is', + to: '/docs/specs/index', + }, + { + label: 'Join the Ark', + to: '/docs/user/intro', + }, + { + label: 'Create an Ark', + to: '/docs/provider/intro', + }, + ], + }, + { + title: 'COMMUNITY', + items: [ + { + label: 'Stack Exchange', + href: 'https://bitcoin.stackexchange.com/questions/tagged/ark', + }, + { + label: 'Twitter', + href: 'https://twitter.com/ark-network', + }, + ], + }, + { + title: 'MORE', + items: [ + { + label: 'Blog', + to: '/blog', + }, + { + label: 'GitHub', + href: 'https://github.com/ark-network', + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} Ark. Built with Docusaurus.`, + }, + colorMode: { + defaultMode: 'dark', + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +} + +module.exports = config diff --git a/website/package.json b/website/package.json new file mode 100644 index 000000000..8693eca6d --- /dev/null +++ b/website/package.json @@ -0,0 +1,43 @@ +{ + "name": "dev-portal", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/preset-classic": "2.4.3", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.3" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=16.14" + } +} diff --git a/website/sidebars.js b/website/sidebars.js new file mode 100644 index 000000000..9ab54c245 --- /dev/null +++ b/website/sidebars.js @@ -0,0 +1,33 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + 'intro', + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], + */ +}; + +module.exports = sidebars; diff --git a/website/src/components/HomepageFeatures/index.js b/website/src/components/HomepageFeatures/index.js new file mode 100644 index 000000000..78026b4b5 --- /dev/null +++ b/website/src/components/HomepageFeatures/index.js @@ -0,0 +1,57 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; + +const FeatureList = [ + { + title: 'Fast', + description: ( + <> + TBD. + + ), + }, + { + title: 'Secure', + description: ( + <> + TBD. + + ), + }, + { + title: 'Convenient', + description: ( + <> + TBD. + + ), + }, +]; + +function Feature({Svg, title, description}) { + return ( +
+
+
+
+

{title}

+

{description}

+
+
+ ); +} + +export default function HomepageFeatures() { + return ( +
+
+
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/website/src/components/HomepageFeatures/styles.module.css b/website/src/components/HomepageFeatures/styles.module.css new file mode 100644 index 000000000..b248eb2e5 --- /dev/null +++ b/website/src/components/HomepageFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/website/src/css/custom.css b/website/src/css/custom.css new file mode 100644 index 000000000..2bc6a4cfd --- /dev/null +++ b/website/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #2e8555; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/website/src/pages/index.js b/website/src/pages/index.js new file mode 100644 index 000000000..5a96131b8 --- /dev/null +++ b/website/src/pages/index.js @@ -0,0 +1,45 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import Translate from '@docusaurus/Translate' +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Layout from '@theme/Layout'; +import HomepageFeatures from '@site/src/components/HomepageFeatures'; + +import styles from './index.module.css'; + +function HomepageHeader() { + const {siteConfig} = useDocusaurusContext(); + return ( +
+
+

{siteConfig.title}

+

{siteConfig.tagline}

+
+ + DOCS + + + BLOG + +
+
+
+ ); +} + +export default function Home() { + const {siteConfig} = useDocusaurusContext(); + return ( + + +
+ +
+
+ ); +} diff --git a/website/src/pages/index.module.css b/website/src/pages/index.module.css new file mode 100644 index 000000000..9f71a5da7 --- /dev/null +++ b/website/src/pages/index.module.css @@ -0,0 +1,23 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 996px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/website/src/pages/markdown-page.md b/website/src/pages/markdown-page.md new file mode 100644 index 000000000..9756c5b66 --- /dev/null +++ b/website/src/pages/markdown-page.md @@ -0,0 +1,7 @@ +--- +title: Markdown page example +--- + +# Markdown page example + +You don't need React to write simple standalone pages. diff --git a/website/static/.nojekyll b/website/static/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/website/static/img/ark-logo.png b/website/static/img/ark-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4bef5e0773975bff81f8f77ce2579c93aa8bef4f GIT binary patch literal 115330 zcmeEubzD?i_xE_cilQhXB@Ln=-5nBwAR!kjumX&P>h8&dI^X0si4*;ouYGhbT#fxn5+nmIYy39_-dy1KHua?qF``WNvFi4c*be(AL>WgceNpVineQ|J>Hb@wcUb&Dh)w?ASP1*`ZZo1{%Tt z8E5D0V1;?O5uDA~%Glc2#>o+k<@jf;otdqZt)rRk|KisFeEn|^0M=Dd_~#k_)45n% z|MLh(CutY3jNb0vI}x>fL;E#p}=p944e%9kAscif+n^O)&^k7=GF$L#%y*rrnJ=m z7*bHu*2>laJQ&Q53o{D^1;Hmaj!p(PaN{RZBD7%DtmfuMf`&#Ma9$2$4i;~h@G`La|Gp0tbdXaB z%9=ZZ?Q;Je6RO7czdu=-Q)B!<&;Snkw+Jm9+E`<-f{P!U|9@NH;(AvzV{p^|&30c5 zbF?*aay4);eq;))^?%_|Y+(9qP%K`ogzdjB67$`^#O>e10T@6Z{{bTKmw%wl*aqO2 z0{|)&ro1fJrF!lsQjgT!l2#`@y$FY@56;Wk|9th{jri664L&B^KM9q;hiHA#(vH^p zx@B#xgr?8=VIJeHr0>;x7@sEdnqJ-7(?ju@Rbge`^Mc`F^-H$6$~PXS$XOEB?HJxY8e3+}$)r40mrT+25%s(+u3;sij(82oqGXu-L z@Jqk{au*-@_m6Rc;lDrn1~ha0{wOXv3ve9s=L3!X&EFsU-tt4p5B)KdCBJ;}3C8`O z+rs{11jrfw;|c#U!UZV&#}oeJ3IFkg|D?!&;|b4;E{hw#RjIiJSV;8C1ukUo^kI7u zouF%OvC*)C=uh7>5nK8beU@RH!@!ZT{(c%iT%P9$qH8qGbuy?4&4VCtU5E_hyx^Z| z?Cm#j&8Z<`QkS44=5nS;A5OykX<@c$Z%pzHMO|givSqP(P%{7Ulq18m2F;j|YsfIm zIj&{piDa3pw*&gp<$NFE#Rk*ig(@=Or_$0>w^$?jA3uaxjdJz(Z!gMGBD)>BsSNfj z99XNP=YxT_@Og$t@7X8qU-y?ICmWYzq;y|n*&K-Vv6@Kt*?rZjFXF0iBo6MyNNtN1 zCreI82+^V(;qL5+RG-$FUA{LHwn|_{at!d<$~*W-y~IjyX7Bx0q7q}vbm}U)>}hVby%ZTw-XTz z_F<`Q{3|^^QuYc&1wDw%?bNLYH}ny%JvnqoDAcWAqK3Ar3&HT>7$0|~f|Kpq2))yh zG4ohiu-dK1|6;j5p|T|RlQ%Uh-upeG3qeJMDu?g#Vj}r_Mz#!UHOGz`$%^CI9qM%4 z7S-j|z{LVI|1x0)TU4sxS?qPJb=S>|%eR-b`lG%St~T4>-`nd+Hf-2*jaH)Y>AWICyI?FW7^JmVF_apyA+%jOnS?GN6PJzlTPX21XX3AhO7ez^Zqo_K@#{888q?|PT_ z^g!|OmHoF1KhAf}nZ6nIY4r5W%D|O-%U=;;Do<|ep;@t~WVjb3xsoFacB1-UeSpE* zVy0j$HpaG0m)9oa9PiQWh^U_0tmZX($Sqr#^p`c+t$%tuuwFNU!EmYmb^DjKoK~s= z*@Rqv?j$rke~HXs!DFr+W@0pa5bjTJUtk&;HhpzG^DX~gg{u3#a4xuw+y3Rv14~u4(R(gTcu>0D%p(W*VH&4J;TzjjI78Te>ywTD9UWlY)x2K(QI#5|L)+x=n}23vd2<2agZbC$J@i>C-1EURJ< z%IU);?>%kayB99u!zWyoL|)wGvS+T1s+2HVJW+_|C%R66 z9Ej$hiZPt!ugU(j&p$OsnA9V=JE3XUBt#YTK;LI^q7_Sh+H?&pS?wOUF{2yS9pJJ% zg5B9+sbX_EuWi{UVYh9<$jh?%tx{j^dw<_-PuF167wUEv2IG8j)yV1S)c~CQP#kQZ z(>vVrQ^G;1tJv#s5+e2Zirt=brwG2uWr9Y&3V~Ni|BiTHvdUEF&k4J^bbh$CkT1s> zL7u`}H+Vl>G$;Hga9#im*+*5kz(ZjE*+e~gy7n`sLslCKzm$m{-^wGP@~JB=G;XaT zErJ6$5uc}pP_nNx$G_BqudY7bdf?@2oxoS*Lpz1|`XcK=o=+%&>AnzR3c`BX`{u$9 z)AeA0u<<)&XwTi!31?>Tpd4XLk>_z8V8hzNzH21+y0k@JesiUwkjF||FYjAn;Pv8p zn4)m!56ItfY^`ncr{S)sj~}kdLXV)f#@wPq=f3&VO#6+;TTp>%j+veEg8G>)*^@c! zM;AZDRGiAKl%o4Ld6vICDryoBxvO-Sw;Z#oIdGZy#$#xYKRneHa-RramZ4k~yqQsu zRU_xMdqB5A?+#Y%Yj|<%fFiNoDs7^te7pft^DvDdiSFI!ay5p^Mc@( zuzQ1?#-2sj#*_D%*Oux7ToL2DQ_q}>)$!JxJAUboxN!>E?T^U0 zY(yA8JrxPuLhRa347LquI4K!y*w-QDBQ%^@2Fj>X@Qjj3GOG@AHKgYdY`;uyzL_#!^MDHL%lUbB!`hk$ao9)lnKe;Zhxy2=$pK{#X8*zU!f5x4l7$-(m_2@p&+WSP zD|dqVHu&Bjq!cjfX4%tt{<#o%#QKKdt>~ zKMWq<8dK#KX*fgtegY=nD$m9~jn4t78HZ+9zDksImbg=7+wSy7(q1E2_1z^$uZM zi*Z!o^{fK$mAGhz${o572N}^tl3)b|Ijt|ssW#Ln)m7IDdDp$C@B3e?FY};Ovxrlc zxK88pq7sh=;a)tWJMGf)A>%>XNSwRz0jrg8JVlkK6@BeKk~8ZpMe?xWh;QB8XqoAE z@Mj|PYlzIpZuef}RD82{il|+K+y8L&X-{N_!8%AFNNxdHoO61ciPwrlBQPbxW2M#>*+nPJit05=-@Gci}q4tJTUF6FS`xeHgBdRLb z^8kTLvC?4-+A-)tzzyU7{`oAdBB9}gg=#q$GC{lg#kQ1Tw%5*R`FlG~954Br;7zp; zkPTS4TD$EiAi+(J7^AAm?5#|v<|*-WEqtioaHfEE{P#Cl2}%OqXFE-|T_~*Op(v=$OH;hw5L z5=E7O?>}%WV{Y{>tGu{TdoZqXJe`~8=IF5=3YY};!3iTy%6=WljUp=&@V+_J%J3rU z*0jEkk75(cg>5b>hPQt(x>$nEz%?GOYGQS{*pBx~ zR1-1V`h)1=88v_XR9<)^JsK}^#@^5AIB^r>R9`4C&?!COG;3cxbbDgbnM7RiZon#{ z7z3R@!qw!e!!Hqv%Pk86R;QAAm&{U(h^lf(O~W0v=k=WSr^x$g2_x2I75&M<2v>wA zxd?pO+V2hOr8myTI&%CmHaexb;Y5B;(ZVAL>r_%Vsoa9KTF?@9YG*TYa@(<@nkfavp)JQb?kT$qZ=08>TVvd zKe;5+cHciHg*LoecFr)AqaY&VIFW+wxTfx}iJ7P6Am=K7JULH*I7~{cV)B69Oi=n! z;PaZR1DR7H-)X&+Wv)1We0-*K-MQu6=xs-=VI`tN4diI?dPB62r_b=P*21d0xIcv* z8G!$Qr_!JI-Cnfb+&~eTeZQ3xWNk=(!>3618i!l)WJ|eeg!OrkWFZe8w9g;nK4Mbk zmki~?>aq^g=Bk*|7LA8<s0zx$aEWrHJN{Ra*~tR;9iR1lu@v{q$#J6 z(a+6Ty!0p28l7(=Z)>G?dJ#+w5WwGH+xPPFoF0V;rTC;5!X80$dxHr9WpVi4pN*N7I3wMPDN6hSZ{ZS z*B97&L1Z1ibIxawmdf06q`3N{dFJ@G)df0-T;${M*45hS`XacmqTFcxpOi}}vtNa4 zB^DyBJkMvBX$7y*c&%-Z$7#O4YRFpgM24I?p_f9eap^L6`j_jNFcvUN5w<_epn0tu zc!{59d!)(64udlxuQB+2OHpj~FMN|6w_VR$xC)Ehbr(o@hZ2JjeniRKGc%FLt01v_ zxc6U7WMF>-9HjgHsRoCyX$w^-x>8^XZ{t{QALcbv$SzyQe5l9$TJ2|iBAW5Gf-x=~ z+5TpzRP@D!zZzh^S}9(c3e8iH;t_rMA(T+?&9sic)$U$)b)~qftimefT&3yJ?|1bg z&DmiL8T5pQci8)$%MN&wa>%Xe+M?&m&H&Q;EHS=_J4kU}`>`;K&BxVMqT>fGXK2aG zw*#d?t6jIwoH;Hpy{J2Fy{&&WHc7Q$>?|()iOf1%La)f*RDlHJRfd{^&T>r!cuhKi zm!iw!=Wf@2g`NOoxQQ_)2YCgOvakpalhZv-xhyp(fb-j<4(XtTfcw#Xs~O@VAeAZ; zv5HwYE0-Io7h<;iE!F*HkadGVD!t@&(lBAZjhFwUDQm4x!RV91cg^cr;uTI&8J9^( zlyd*%AXdh>(j=30+V}egP(eeBiE2MhrvbmfT;8kis&~H67%oc_+{L5>-w6y4xW-|5 z(66o7pw76I#SdX;n29+f-cR@76TT;nI~%V^gty|8B0gWXl%oTxzjKjysoNKT<%f zoyxA680A{pWa>Ud+uS=$E8$sJ}|QDh?3oAV$!gSbjjdqGlegpOEbV!e|L|=96 za%y3~e+=`nbme`RWW(1dAR8+8tg?55P zC9zdplmV>1q zrKyDFe@hbhoD$*<9>j?eF2t|(b1(a8tYEFLgYefNd(oJ!xpP?3sSB|XUo#b;e_mCC ztxw&8F&O8Sl9TDJeIe#dKBtC)Fm!9n1;VcZCP zjIyCd??FjXXF%0zqTI&qlnn%uM)72FEymarPCV9ORWN1~(46^4Z^_o~Pir_$y?)ca z#-ToO1*>&$l)XN!9+irTOgTB*N0BgleXBgCtEA_&L3YjR{!sczpOA_$>U|Ks5eMxt&r&2`Ll|9p}ejV4jP6oPQI zfx+H+pe-HMPAO|;tmt1G7jYP|dCHk>lx3{E*qE+D%cDGuNgu>@=HkmSRLe8umL1R) zcV|`I+#oxB{^{c}8QiPTzgSrlJyxrNmOtd>b7INDSn-FBt8<$my;p+hKHiuzf~U#qk^pn6i+uRm$PP1Cn{4X7P8fQgIXSNRArS#_Z?i@ZF; zdwbuQ!qW+m4IKlYR{HKRg~N5@a0rom3UKwNRuc7=r*(4Z+wDx@uX{^!XZiEe_(rCP zd?rHXG=t$vI?saP+wT`NXB%BR8)x|mn$~(7L|uB6QeGrVvVnzZLEz+w+3bO`1%Fq| zyn{YMWsAMh`m7;LwrRsK_=l|njH-8w%t(f&0SLUxiV#%h?iK!>uloEkdrN|FAtVv(@<~Ez^qPU_ z@1YCnLUWH=) zOJKOx>*jP>dB&v{7*tSRuHpiTaA`N;K`OtG%IRO=oPm=oS)9W(V(Bo)hjjW%t*Kn- z>cctRddFnLH0nW>_eUZ83-JP!vsRYm%&5t7?vPQ9lB|ff+;Q>rZw)<`dHGU<2)0Hx zza@=6h$py8BW`W%8!Yjie-8HlL?jEF;S#v-JkI{JA~n{&|%6fkPYeK zkb2c;ncLbrwx>&>3MNfmJxXwkc*AEz)Mska(#DD61~d*+!0%`&SgJRUH|7;9OPCOk z)(7#2GOVTvhuS9=+4~y@6PFr1OQR0uU_E!CIX2dIz(drD^p z*1@ej73TYV9?gb@)T2u_12>S|T)@uZvU3WGzJD+c-FtRySS6sBw7D}k@0n^Y z5Id|rPTI;V%F3c`26wX!S&CpfF2!HiZylJvf9$*KUQSWFy7#auBKC3XzDgG2x)tsT z@9@5TdlBlrkG_PhhFPuBhk5t9GZdSc!*0E0PX`T9BReR8J3&@Z*(wfFAlB!B5q-RF)>%z5D0*@wL*?l3VN#wbV6`rhv6j%_Me zoqA7$qh${b6r&s%r$fCEbhc*ecE?7?gG7_N?1A?y^7{L_N^HBl zTxiwZb3`voNU0v6oVz)#xP!`7Gym~6i{LwOTg4V+JT^VEZ4UUKP$-N|- zd7YAhCHKP7`*#@djRE~)&iNmb3D6CGnJDn9aO>NBi^0eM zId?9;FIj4CheRkUltJ_rM&n-mn&hPfj|$6RR92GvK1b~xw>MpeBuqGmqS-Hb8P|~| zf$N=A0lj#`8m6&-=*=6B^%7KI=NJ1X$CRY74w~ ztmKpB*0(o#HIsxKNc1^xkE_%_{o!a@crqvy$#7n!Z7V&9|~BK12lSWRy${2oKMp9Ax;j%THo>dpkJ&^}|85eO>hS4%V z@L@P_$C!cV_ef!hmYQvU6jh|7b_F(#)ZAqLdhPaMSdpY$cR{dB$ifZ9ssRkgswad> z9_0#vT$}*8aB2KZKVMlsJ@7nfa5!x9YEYG1l0W!)>ByVVqsI5`D1qTqOI$)v+o)Dc zdc{N>?K8$A?_brWb!b-d{oI{Ra=P~(={E9iapk&9)nSAwyt;)H=@Gt-XltOooK>%%2L?HC1sGOnC6AO zlq=l|b8W6W)|fQ&SQWZ0qEUMII%42fd;E?2Hj(@LdirIq z+?>a%BlK-92o(wEa~};wf_;85;c%d?_U_#0d`q$B2gBAU_F9)q z!;3vAH7ZW883^g=b!?ZTHQg%0I81s;0&*Q<*!Kw^urg*UPo7^HAHU^mIzEDAsGXr; zv$~_-aOxV#lA7Wgp5WB{VSO*w-qAfGtG=PeN6GIqxzMyFEmuQ{_MoN8p|@>U*f^l$ z$6DvyEX zT=^B^wz>ATxm(lc0k50@LR}??EZR|Jkh`;mmgyeq5 zAOiPxRUjru_mN=`!59>)jN92%E>+M*D#3*r+LMTQ>rgI zK`>u0W#9c4<{`hmt zyx5dnj+GGl;0&eV+W1kG##N*Wijv?^sUq=8EBy zq%T?~HIyP{g^p;f>ycIU>8dw#mU93Neac-9Kt40zZ#h4@Zj|nEtNh)|^?hTN(?XTF zr^4rp`&)ThtPcR@&xU7D+c;v8-zL9 z@l9c1*UrbC(aU9SrMGwd`cL_z6spVRcSyDS&Ro{W#~ad1%d_+sQZKdm1jL*s*7*dc zk3|R=ZFpW`0|4ingb_>R)ImM~%<~B31G}{4&0)yRODf(Xda6%z%R_zkRb*(6nT?|Y zZsDVRHmfd>UpX9uLhs6)R=x-1BdMkVF%|EZHP;;z62rTpDCXU0c(e9L8NnXpJuOQ$ z_nL1#Ugx*jtfPUG5~bS;R2rixdh5^3IF4AQcRklwi$rX_YB53C z5mwfnjdkZ8T7cma=#_vxmW|4D73bMFX)&9Mn+Z2gLvM**lrTC*St3YxQh%;qgR_^^ z%A9F;^N(@4CM`JG;K&&ks5j$qXQSS(;ntEUI9d^ZmWFMt3dyp~deR=~ok}ZXy(}_-MRB z4sqGKv~5;2y5KZQ#)qtuWGwD}^ut}F5Nh!~qi}ZEOO}4p3i^1M|CS>@{Cq>k&A@4X zb4T5^Xv)pfhx}v$8Rw&s=?B$h&lQ6LD6G zdykULc;>LNF3y7R7wf30l_#<%Ej-e_#dPCzalKq<;Rj+}0Rc1-Urx{l0JOO`S;0~I zxm5gp&LqABohj1{3zLm2t=!0@?WhOCtY>TT6z1W}0~sG*H}5V|xn3L^bzH(EQhZ1k zoCpY*0SQcJl>VnC@f_>H&gQZ8*$+BmNg?~M&2*g$syG0|K)(}6_4FUjyKDZtN0#tV zINJCa7KWD0PsA3w3fFEvBZk*1112&%7C$$BQEjYbsB}2r%z-Hav?Mfeu4vLOMl!pc4=hdzik!REOgrg}WLhtt#bBYa5zT7IjU0dNnr3$6(U$HSr72l}ga$=pN|L5qBuo^a7P zsLg?bY3eu1Fk(<9$wI)n3$Pkgsl>tQ>k5&EZM}x$hU%*pE7r=>|q7j7Ejy zvpC-Gxgf5&m;y8DZs~^ieogo#yZP`%c}tra-Os%vU`0huvfb}r@6Vh7-Qq8d62w0! zd>DNgwGv1|897F4ykkh@TKladJTB)ss<|N6t(KB=L+07uvyLBtxdtWG^4h-%AlX5L zC4}%zE{f#F*jnLfi0!O$qwL+f58DYWiO=^k!>h*S@w`smQxosWOtozDm@iS=pB^G7 z-;MbKmoUa0?%J6wJZrKAdi9TvZ6C&N0e@nzqk~gkpI?z^b`?k9Kx~*ZGjYa?g;E#`8M#Apy`f_kE@b5eIsPttp?}Ej(xt&* ze2~i`Ymdr?)ONdzcJ!ExfE%@z;dfzy3HOtY_w5tdAzy)Bv3^EOeSMLf9Cy*h)DX!)?U;56^k5w zC0i|okFf2JS5Qa*xWVNd6)q+%l~8^nC-)K;YRx;|AM(*r=nc!QSJ)e|lo4C-lv{R3 zEUk5qW6m~@oWHk^y4r;C09!Hsb4;FVsa3kJ%VK_0?QLSJ$BSr>0nKYPDd&#nikZ)D zf*h4Lzo}r2;gbyXm}H(8s~A6KC*3r11_i0v#t0*8;)L>|U^xH6Wc^C3aW5!`A6u{r zotl;GBt`+Q3JP##OlzXATKl9C(@<-UTIl&N!@#6*72ZLb)prgBXp#YNitY@lUqJQ3 zv>u9EK#yVfJZMWv&5Rb2pUPNG8R34UAJ5ycS?duwIfyNf#)reuB*E~VH4QWJ6b>$y z%wNsxS9v>&yuObNwLc1q2G!`4ZNrVu6BpLpluXu=%5x0=VY<}C%^RqhD$an3m2 z^D9No12B@>E|^;+Mo>dI23ojau#AOY^?Ml!w+YeV#Jr+fibJiWH+n?88-F`{7eRQ{ zh0dSp3&|?7(%U~(7nFXZF3!e@q|Rx+X?Aru9kGK;=P-RE;_w;DJ|h$OlJp=kvhm`~ z1cgbCYDxCLKJs0|bM?T^Wf{(;r4{?OZl?7rWfPyL<23!SWdvDO;e7qi$M*R9{HXMHsRuJyd2g2~KCA^3l$4^afc= z(s-&SS}~qWv;@h9FT(8qaPig3gOdgGU%<=3ny-r+?(B4B$iyzx-xb%ld?qjJk zbDp_yZokJCHAxq_vwgTFx<0BHPg#k>CjDwr&A2h(X}Wc2W4&WGNnh~=3@`W^&y2Ap z^?7%HFFCFCUOA(kb#Cw(tN&qbe8c(A0u#KmoA@wAKF=I!cTC&jg%ZGPG8r=IU_oq&nDn;u`JR>wt z5a9&buFR)ZKOJtq3rp>^q%}|EFa9dQ%y&97zgEv;&g_SKqk;X*7x@gwvj5(RJeCE{*@*4fo0X_$USzeQt)0|VFeQ(cbiIql@ zn8jvU_ehhdm$!jq4gNEstY`H#Zf(X*R$A@Q0;EkiTUEs9n#+su=QhZxy`xWTw1!WH z^^@MG!M$q>b(#6$Czlvc@-h{BY(~enes)F}osk$K>YHDveJ|ho^}Z-QcI2UH(3d z~8{p zM`ycTwTPP@RL`HPtrM5lo`9~;gKnznIzS@Kp}rb<@6w`f42imE2gF_VKQqN@Z_)9@CAq)RJnCk|!9c3)4Gis34pkK1HOLElmJ34i1qjI& z5R$T;VwKiZXu$w(3PH07hyVjj!YH^5IX40*MMMfqG5|1EN2OV=PZrU)d%IWiJngZt zjA<%~8if@i2+;z|qqRxl&x&4O-RJ2DwQY2@iA-aBf$ z5Ge0C*D#*=D5urGJT8I~V)?!|0AcZ8Nq=ZD7I0Ib))?L0h*-w^2Lt02-C8haYq=kz zQUn*j!r&jl{0A(=vi&F5P-Z&vIz5Q=80XeMk9i*Ldg0Uwm6Y`#Zn(WmWqN~_tFZY*o3mupB!2|w85_~W+6UeIl9KNM+HBKqnm z>7p=DnRtdu#!o{};0eyjqud}K_GR*DsC^Vv&0*Luan8S~I<>8QcG9HXXwD`iIzhRS zC`n))hO)2POWd{9n->fygSv-er;98v%03PZjddT-)>i->bTADYz0FxV2iBPEZSRKJ zRvEpMQpm{5@yMXeFx885TV-a9rS%e&gb`;uk`bVX?ML%Mh4t)8pnCGWV7SU=@9j#B z@4~%-YqeND+<=eOV_J9K#?9R#agdyCmkup3O;8!-iO6*g9-2bkFSABbAE}5}Y?h+a z1#u%e{MXN=2*^B~C>> ze6VIkodv{DFZXoCK%c87w?4nUw_-9#`_cT6JVI@XQc7~@%=n5`4JCqkvc#4;EcJ;c zFxAo@N%mMkV}TfhA{F8n&IJRwdU0840Aj@uD*Ot(w<+?%aDJ}F7Rq~X&*nqH(RO*C zD3q1opc+&2VJloH2XE2HOCWsnm;F@rYfUDCCAq|yKKi|b4xg^&77XH#6kpFKN#lw4SM+@5A(KbM}&or z=J-@K!fYpYx&NK~^#vgwj*KG7F|vxVsB6#DYOOV>RIVxE3!)A+UawgnzuP7+e)(0+ zW}E!MQ$zW4K91I|oq4gV17x0>$5yY!>ntjD37rY5bSAdHp*3{vO(d7NZ~41Tk{z>X z=`Wz3LJ8mFhrg>oF3%M*knO*40L+HLf_dtH1@8Z@^=CaB-3^X^XKxk0jYTFKox>v& zltIQqf@AnvW0}3&MSlu52A^b&mZM9_h~5a5jQvJ|mRDR6B43=z=V!wjE1#CLGkrW%e&MD)B#z2Ubv@v!c}&e5WPNf;a>q}WCgjRX&dpMu;;9wE z0Ec^~l~$)`a7(_La5@&c+Y{Q%2|T}Db&EbG#1&;nP32!#$^-inhJK(}J)c)Xz`9qo zoiY`JE77hC{?QeCp?JDy`D*3RBI#;VU*J?+cD-nnWY=cBNbdSM`WVj&9bYC%rs~lU zHl@Fzl=Z$F;jSe+eYdb4Ut%3!Vl0*5nB*mvNV>C z{8`GHy3H7~qLu@nt=ZPE;o0Jxqx!2WO!d9_+={Q#ucwfGwtUwxxzo5_(_=t88)2~7 zIzDw6oP&oz|Fp{Dxdi(e_;-eEcKG^9Nw?rRiK{{q`o%=+VrF36xK7)dz|%tOa=7xr zp-*A|ZZl!|$2O)c&10(C(mx`ST@w!+=Nf)32x+w3`s1;y*!j_Oi90SSo2$Yz?c>Dn z#Guyh{+(YpHi(@-_pom?1|=hj6b^Pkt>#&U;gc&G&2?BQP^~s^Gu5jxQMCo?FHnWP zVtbRXH^!fNK}D8>}IPDwROLDL9ar3+fMpiB%~|H3wDQMtcYck(3V; z7L)iJ%`O9QzJmw(-e2WT9iupL5u!y<`zY}k5OrHsMW2JJYHHy#m&|{6zP~ZD4fD3s zU-X$)g}E!1hzT|Sn>$2&B11L0;6PvnT=p2SHIKnLH1GfDf$!ecZ^Hu_cv?=(s9_)Y zwG;&%Tj|r0(@cK2-&`p73)JJkmrM+u4h=MWC@72QU*1skvgSlAA>7A2HI4&99Tikk zg8A##UR#SqES5A*rJf+9D|>Bt=hx$w$W6cPvJijGD zS5VNL6?T0bX;n+h_dtA^0`A9shI>uwwJ`5q# zu$fpDeDhsr`w)K2W}P&EY3uN%vB6WArBzoXG zd4!dlWS8fUTryqcGseHcuHTu&J=C-4z4z)z!03XvRc`{ZjM@~#7;X<$ecBu7pMy^P z?B=P)1s~@9QE`VmMIf)}H<@dF{~A(G00$(;ToI8qq-33&yE48jX-@Rz4{68k5NE?4 z-H0M*3YpBvQtb-w^G#>){K(iytTh&*?u1Vh7)JLjL&aX~DfZ8zJE9)guxr_OiHB{* ztD#1pJWGFH}L zyp{p&~o#6W{uu^8;rb z@9uvrlf*FT)=5{I_RO`F9G$2=CAk?tg7(zf$mzzmM|th z8+*W%ii9nn?hds6t|2~Q4wRceI(t@P)4cB`Av7ON(4fp5tKu#=Mtd&SgwwF_oaRYU zF@oc0kZ}Kkem90MHp**&R6~*6!OlhW$GVc5=|U-v_R~SFKeN4L*}MI4C9d^W#O7X= zK+1mFXrKLDM!dPbc7>G9+_O`-x1vEJwb)Np=FikblHyge_>U2Gp9QuK!N|g68sP_pELOo2zeK=u`MRgGzNIsi~hwjcy z-Tn`7iY+%rmO(s`^X>RTXPscu(3!O_cEwUNBXs87m^6;{@a;>^&klp*hEtc7CYJd;o}#Sym~lyyEx@D#dxbiNg_D0deu9BK-ve&d+(S{*&iy=Xl( zxz{B$L11>>l>AX}(@9&m>;=w%y`%{<5p~be8u9P=`JfPxX4TgS_|0JGsrTDtGk1 zo^M`*wS@v+Si2S#4&LcN?Cw@Pd0?1~jCm_@ow4>PXi%zAG$*CFqq23lXSiX}#yOU( zNqRY0+~er8Rc;s|ett>e-q4^-*WBcGvXA5PxZ-+930wTfH8RG*O~oTVzo0qeHD)`4 zdj8kO@Ex1!seT#@3pI>Ft;lA#xO^@osc=`2zn1owpz?4a?crUg$zQ6F*i`j=$E^Zo z*}L*%v=D(*wD09Q7jjYTBsh6=8P@muH%0Kpb~?6XgMuh*3U|q$NUS{Tb%wpW=00k_ z$C*M>%i`#Hu&7D}<{X|H(_&0$vK&o{0}i17E^Z9J#={*O>F%ivRqZSv#};~ZgYAk( zY_azXFE$@yYH3^y9V0X?PVg2XwC<>MT0Tp1xwOc+C&%fUV;w#gbV=C$L68W$zRgLN zRsrpT=-tId1zg8)`-EETU=%^BJrx0t5zdzrtREu(_KqXly_k zT%%cayc5`6p1kAgdD3^;hC!+TxaJ`wtchPS7hUGkP!zJtxi}cLCeRQ&`3}TuYEr23 zRfwps0!N(Y@!VdYG`T&$UA$-osbn8sk=OblN}<}%yJUSRAH1YD;kB4zYQcNHO$P|J z$zFR?cHVqgIcAM9VUW~FXxQI8NR^`L^U1&hJEH45R*9+n+u%5o`T(ER+6RiA@1#;x zX^gTgf+lN}RoU+Rb@bM#_euEN;?~5SWs*XWz25JC*|6;@RE>U>TIjK+PCS>jRXeNN zxDOgOdWJR@zJoI0gE*AElxZ5ct-eENxkUwt<5Ndnr0*)dF z*{fk*Yq}E$y!&{jr{~gzs=Ruq)+M*3XinUKn-y`?P?KALeH7YQ;(b_Uq zY@<~{}C_| z0bWcOUx!TC7s`^%nLhLG8Pf7aa7uGAk7a+k|C$(?NO#@?m9^`Vg99=_ZJCzbBJS^> z%a55h>8iMmrh z33tOm%N_Nf5cl*b7dhU)ol3=(_nqbCuY1|*+2o`5g{$A!DX7icDNp=qHQ@J|FV+kG zhRkPSF@xiA%kzRc3ZBPaEK0=)HNZ9#*h!*aZcLm$?OyP)A;=QrKR91fevdLsc(vIr zYJ8wpURN@#APihe1p}yY7MM^GbIPG1)W|u1n){wVrikO6&}U!yv_H)?9r(Qye_m&n zO#IStkScpDD&K1;lJ$&Z-hny2f~|S`odD5P%U|2Wklc})VB&qJ{%fyBy|-l=%C=|` z8!h?dh&b3g@KpX(^s@9|uX^Eye2_k;k;IdA{!ea=!Jtun-)>Y-o%_HK@IJ&d!z~4)thWa@aac0%Sse*X zz0$5;w&vJ)IXw-M(4FZ}pTqI$e(mbRIq8o>JNftye59hMpoS5@gjqbX;CYUc?h5FE zez^anX2@q!qTJr!Oy}q)!nMe2=mOL1`nPtYOfYZ6s0CnNF7y3nk-$D5b2K?O2^QEG zsnXmipRzhum$+j70Fk_im=@7LwmKhpm&k21y{$T6_Vjhm5Ah0N^RyH5@2%i9CM=1= zhKMovnlmncPPLfl=WI5@v8WyIa*{vik_rPapbYRVR)7QE z!`-n6h!Q@bTWQ&KygxMyH5K(8Uo79;!(b>jA4?@w0gT% zpY3Ov4G=#GBsFyyL& z^GuhILI*CK-Du zFfm?kM3=nlItu>gDk>NIo;QW6Y?_Q_WuKIx=yc03!jOs@Sd|=;3--;NDPY))%+F%V z97^_&&r~gWq0St@S6qwE4ns=S8!DvLIyRaomf=@(=EFAcmtlcse$3Ii$IFGNEL{Q1 z5t1f4yyp&&XT}*jRc>w`xx5$VQ4>YlGHrF9-nSro;gHnyp?c?elF>ep3=O~1Dd8}g zWi!ZI^41IWI^Ud`_4-V+GBGyPkfpD0e>_)QPROANj_+nLNOps~Rv$`L%CZ%IS~dhv zPc55T4o?GTjt+2lJu%o!X3~S`sYx=YPMO!~cT!Bss#nFdV~cwirS8NhKEM&>{-hW0 z{Z4ng$pm$T9yPp2Q?Ibq{lcQeEwHT>O(lbEOQs4t5^aC)xRfxrMUg5_iE5OHr)96) zI26sx5+n=VD&XAE_{26U^1!0%JNgBG|h1P+R|T$x(N=Mkdj%j&Dihl)A^KGANsf zqOlE%`(Zi6sPj|;TNkLKX9Tk8)*aM>ib4 zo_j-OdZtTS9K0X+lsPgG#i?$zWS?5AlajAWXRcZl=hp&RN=atXTG3|v;)(V-4P9vs^{`j@Zjb4 z@}N3>Geaf0ZTy(;Q7SoIw6Ekp^}Z#^q`AeiX{Go{w%12X=Ou3}qOAErW*O^V;)~Jn z`2Fgjc=n-i$%S@e33uZ2gVxgs`)!uNl6^nIjRjqrV*^6?v_hv%ZEJv22=;v-dDT0% z(knuQvAXiQZhi*GXj{LCh!xFuA4N@jgN=2o4PN7K6#0LuE(tEZ`UA zU=HA4XQP5ZPf^XVGdY8<#`#GuaQVFoAc1r37X)0gaED{wixS_sxU|fv<4r(y`U9LL zM!I3Qj?l~KZ+W6~*i3}H#kbU#rDMn!@#QD(Kl^WFy@gwoi~l~3$2tZgB7%Y-Dk3c) zC3ys;1eBJVfPl0E=~OA{?(S|zZz3@o$pM3n5JnFej2PR#&p7Y%xqjF6`vc(Go;|O+ zU-x~#%#fx(g2x(Pm>4Q?Imsn)Ka!idy`G=#oY21;QV3AD2Bh5OjeNj4x5|8$?k_P< zb*sOAY`hp+p(mnrM@1FJ1t!ojA#Ys-c3S_on9GXWlhzd?5wTNGKPB8$oQo;c_2t1p z01e({Wpt~AkMB}Cw@4#UOKJh_o<7ul{Y)b3hsy4A2KvPZ$qBJT$pSV>me#tQ{!KoE zQOx+|u#Qp`Pko6AeKm?yp8B3;_5JCU=5TS86>4)%n%UYLbKmq^yzT__{^d@CYjOhvXYl>>0Ng0YUlk#RpX9}{X0#AF|S$F;&?&5A>-w0kqAjZYc>ZXODI~(2_MDPTVC6mVzT&{0J*El z3+MhbQzB)c@%M;=^8u?F`n%`ad%E0t$$jyWh|=8$25>#-f-@K&iCv_=xVINXK4cdL zPu*mb-ys&?YVq$&J8zcGkppTlBBl(Nj!vTXvjZ+ve;fjD0We|nxe_(CrPnc3Z-*#! zAp3~RfPU|7xQeyR?C}C%uaLWc3bRxhP7xDz3w76&>Q89;5qt5)B6tiPK>0?uMW}^aEuMLL}=!(6}Q~#TbnG(`0Ol|Zx?FX5#1F2%R z!OO8s)5W%nQPD7RJ2X~tkI7=a4X7ErV;sg-{Z^lW7rmV#0Ei1Hn25BeKuAPQX&muk zQ<3}k+?fX;8Ml**0vLSIB=G2$9Z;hj4Cv$iOO%DeH%*0*RDLNU?%#LmOrx!wW^Jg^ zQjhC62T?Cx)8v=ejaN3CC@e0S6#Ov0F9()Z<4}E+bfWz==$q&f?lAu)B$7kvzKJ?h za`{92=%ial*=ECBJRHR_Di|tP#>wOFkZE4vt1|Bcg_ez}zAxB$+l}cQm-LX}%=?60 zz3rqfp1r+C@V!6EbTe}^_bhns|E`?b$->%vQeeaIm=&HhkevL$xk;^3`==GI>gqy! zQQq6b#hO5^+&zn-PF`a7?}ho20;bxs}^egxi$tY zM!0J4P%mS+l63M18%@S!r$PT{IeDC@T1)E(0EzPpIZJi7AYb~9sTr<^rpyTQEZmIm z{M+5IZ!-q>oVuO;{X=0dLnp#%?6W2gw*!GC_K1$9I`}QutKoU@c9PdLL^FY1q`%## zWlOGlJ}mYU$KNc$=IwO?Ko@0}x)9Agd>@6&2k$y_0%_5Y?1gLkp@7ngqQKv;D9DoR z6^T51>>2;^)N8Om@~vH%X%qnck!-sH6%2tsubpuHHkz>ByK%s}uEGZ#Ai`0*+4YVmWtws-^Z0(c^dUWk_m$aDjt^dC_wOWyk=D>uc- z=B{ACKV^~faAK0nC?}6;H=|j}WhWVdpb%jw?;Wz%^>>;trV7G?U*H82is|y+;vlr`W;Vo}q8{HBC5blz0aSgIePG8%Sqz+c z)V}=&^bZ@^(VndHFTx)7ax8=?S6PpxnxgnwL7Ojb?EBzIm>*sJ2IM~!{P}eH5*Xev zd=Kyn0$xOxfA@)BO2A56nGM9P+UbzzWQ8!2NLAtIu>oK?;o{E5Kl>w{%|=jwmq>dN=X7u{Fc4O)z2=P)$=?vG9e zJ|wLxBn@8Eb_8KItj;J5_iReL(a1*rDu zyu6Q6d*0|Klo*uPXkRjWR#*L+{#FH)JCOFTV{?Zv6Jc0J;~VW}!4;ED76tPRfM9KU zY}_f;4QcPN|HJ6@uHN-a$V|%m3vpLAQS8f-@tS~ogRV&kiCFTI%=fWn&TRg0|8>_+vu)}4Aq+vCQTrW+D=6`NbazvrOm#()UI)x0uNy!{5do-i z@)wqwD(=~Twj9dxM&!A0rKSC4{dxoCiJst<6SuV`bn{{WDEfJzje3PI?kYkcFaIoL zbT^P^$w!&tf4a<@6+rU=a$j4GO^MZMy2uh<@)xz%T3{PZ)d7=8#(G6by;j3j+SvHo37-ZUK`T^8oHart>j<82lwv`%fVr8XoY^=iD1 zK9DV^Kromt(Jm!a_IiTZ0=2|*HnY^xhj4!gxQ#ujic?M!E`1z+ky_4T<}RH!Y3=dm zm8w;l3qgnZG6{1e5(8p5bd^zYP(cC`Nvl!TU-5&~7Ao!@p0Da=`am7BCKwMDQ zJn>Qmoxt!EfYQ`F(*_We2;LO8q4RW?S?|=mO0#0zOLz2JW0~c|SF7Wi-auJPMcO!5 zh*4*SOs)rYAayK1xQ0>*wCr{I21(9@T2S>rotGV59R z`{|tFI*sU-o~vg4H!amA*9+tU#|poYGp=S(Mfzua&_N60Jxh41d=E!cqPj+-VVrfV z6;b;^IM5}^_&`oxfv2Tt$Td&d&bdd8=|f1X)%7%#<>+@{6o(!jXilCPeZ<|dj|kHG z>?BF`w+7HfAzw($oai11quvhrY->R)Sw?G6xJDnjCul}NJs8t!PT>zENuSfE9gY|2FmH*~>#cwe ziuUydTHJrU`NXUHa*lB(Ad7Gfxs0%9l)zLFCiOiorr8iludD&vp4avaCla69#4`^4 zD;s``)_FNtMN1{R`Cy13YVUfWY7zG5v^fgvwFaKwr+RziKW_NvKLre#)}_TIL%BiE z3vLxXen*cANV=3WY984|qa)c8o+qF@hb14a&{vo#0^<%e=XinI?yULB{~iK3P6E^L zZ{GC1W#Bc5w4u*w(GY#tRh`-JO*a{FD9NI;oM6S;usFpUu(uhSjSa?oY?7cvq{WG{ z2H5s^no%!|%Ye;)ztc7p)uOs8t?XcwQ~pxm^>WV58EK1>pK{z02Qg+gAjqyAd`R8d zVG=dXi7%TjR~s@?G=HRw@}!}B&o1<>q6Pzmszp4oOZu)ndKoQ zY5v{BT=~)NO=Y+zf>_Po?kB6Hx6>6%V}%}Bd#~B*q_!_!e}rkRRcH3lY?lDS-Tcfs zhO^mcR9xlB4e42DMmEDI6)J325vKa}Yy67_G$fA-z!fL&PhEh4@9EUcWeUVcY5hW> z;6CEn>jJo5UIOH+LO~HW&xh~Yl%@#}ws0S?S7h*+K@J9@i?!R{{~GUznPk@~O13Kx z`uW@8Mi(5sc(wc#C&MroT8?g{pE0s~v?2-#yFXH7*}Kf1CmJICa~e}%^SeU zrMS3K-xH*h@$m-wRT|EDRNaKJLDYp+1TtXvnJo+xS*gm3a|iHdk$(Wqd{*LF|EdfX z-F5OUW7SLCE8;8sOjY9p@kmc{MR%Y9r;DganbX~2-Nv&e=}AZd2)fU3rloPEB(A8x zCK~hbF(a{&YOdqV%AdWjiaH3iF5Vw2!jx)}9^7;|odcE>uWnp;+Uzbv8a&K&UoOu% z$RxM!21s!jf>B^k)UJbNIG99>J!1zN8cZxMfjMHL}I$MEu>w;HsuVwHltFcI?=3{HVKr23Vh)m-gk6f}d3& zoYPI?VF305q362#EQytD>hxxeUvO#5%YrjLX^(881 zijnNuIMgE@T{5x1YevlNIrfzme~L`BE8A&|>CQUs@VGQl*#A~a#mBQklKjen_LM)? zu$mwG+vw@JkGk@QJIoLYSdz-#6CrQq3IH``%nwTZ_w~*@+pb(J zxR*HY<2{}?ygWHo;}$Szl$ysl_=4Z^Ph8`Q-kVsg3%^pSaqfzs$e^&T4M^|g+(t^R zxb@H{99;}na?C{3aQvipFg8upQ^5`?&0-Kt>*x5{1ji3*-HH~TgvX+Mgc{3TBiz{H z*7X-NFT_;Oy?Ac6zN-+tqM`LN!iTKP+EdHt6hr|IE)d26|_kBwr=Y3Iy^twWTSQtcT@_Q$?m7c!1r`au_ zaE&V>4f1&-(r4}@2VkTLE=GBGlZ=bY_M81@jpU|5c zzfD@1@xay5Cg*R+_~IDpZS-Y!Q##E`Jn$^vKaiW=j76odJZ#qIKN*|vb&*aC>8PsK zwiwWR71X5tc;mMR#7NT***GJT%Uq<@&OZl|eeTTo0@I-7OyJ?zG zI3lNl73QMTff?WHo{?t*;E9?uV#Z%h$A56rGL{%|S zW3vriqUuYlOI}A<0tBh27gJ@XM7n{`dhhL=Z#u=rP!@c)q@j{_?JP?5-xCGdvpC0U)hwkH}fuhh{21t#yT{;G#Q@g{w3KYw_8O{?Lx z_r92&lIag7e(hh&e@3V)L)>Af6Q)45$^VEFrvucyUz!1+nj_-HrypluapCNL&`=-) zcezNS;m1W0tYKx__up5w%?MRK-ZWjPA4T_fbs%?3!peypv@D5jGkiUsJWjxdE@o)~ z_mo3QWbO1_wjENzEOb)*ZNb0&!l#YU0MaASERAgENt8beI0EcqC%PC#?96fSX|BSZ z0&oW=Ph;DD+OLoHv`2(${{~Fdp|CUe?G00Xf_#O|KGDACxoZ1~T-TXR+O^>+^ zSs(o|bwcU@pd#H3N5Eb02I?3SWM&ADDgXo$|7Q4qX4MT)L!W#&wgr zEdE7U`(N<+7^BxsuaaelOb zZ8~<9k*IP}jXmLDZ?%JpEo++Y&I;YT=6)UM6PV6A>LT|&_eAv~nO}QP>FatwxAqNk zV_P{Yd_EmhTJpZ$SA~(~HbCo4;iP#_ol`mEr0t!t%KX)&KOLzm6?|0Gnu|Yt!_cIv zZc-sX#*Nrh-$^O)Rh^sZ{@cE6nAY&B(kIP$kjT&~qm%dEQXI48H0b+E$t&z0L8cA- zY9Nd1%fH=6ZaH~}Bt7GE8P`bF8UCdG)@{t#eGaen2i2>KoQHSV+>WT1-y*VZiLh$&LaRt^Og8sBy>+x)%6b@8;mFU1#MGq8LuLjC zMu`jnkS2=#n=<@%%IGloEv{WEs+hgFJWsH=EqG5a|6=%Bsn_WeeX{_ z>=u44;p;Y}N!ltGaBZ00YoO`+Eq7QP%kiw7n(EL0al?|dmSSdb5%&(off%T;CCz^a zngpu8>GP$=Mw>t|Tt~UmjO>pU0thG2@I*;as%YnU9sbbwuH@(8jLeS0bj7`Q^Rv=? zvyZ;i78TRwym(`?ewn;aM=GW>oh{;@JbAp^nT}%f>I*s=)4VO{lWsTj<8ftMX61Ws zK0|yc!?jyC-)2J(mO#Uv79F4#U*$bd3{rE|P_<%hxL)5l2+%F>PSCv`2QY+HY7u)MEc5@+sSzkH*7>aIYC0Q7t`G8; z+irlg)63Si+!LaTw5u;j(Cxfv+r1&5H%qhE)vl~bKr=ACEwHa$H!F5zXp%8PQ@V)iAxYN)#MjKV zuHW@XAWtczK?eVlP1h16e%R{)Mo^ve?ca&K?@9AU>QLs5(}^w@yvE1^aK*lAm5f_^{bo{n-xse<^`YVD55KUF-FUCcB8f@Lvsv>*rde*rwf^1L zt;Gz9`ePmbP1T}`<&6EvCnm;F)zBuR_D;Xc6N)wWLI7W zaF(J7N?M&7Wf^&aR}$7gi5^J8TuI%2O{#U6e^W>_>USO5?VhpgM>qU1xxDqBL;b@H z6P4n(|Hzd$6|kQ3F^}`x1JV{{Qwt|WE$!044?Ds^D`~C=U;gYq-I2bt@7`nbV%s;+a=svq0hxHtDx8ITW3@*s$Cf&Y& z7l4rg2>A>~eyRWn6|p20_?zR_o4*W`ZHmh3L*9eS=JXVgxXqUK+i!q(ncBFI#y|WNEi~;~&Vb^2<9uw;sKx{wf%k;lUc8 z!IJOJWX2~v_1eR?Zit=vPO<1F7q^JC-Xye`x5R z?hXJ=Nj0Y*C2Z~vgGcw1#484bO;*-&yA&i|@U_*rAJdp#2JGk3C^L*7pdHg8kcMdR zF839@Ab)I%4^njwD#cBVSl+;&&K)5oBwoR!Tf&u`-)8;t-l}`&jJ3nsmaggEB}+1a zS4pDR*eKEYb}^|0uu#in0(s<7G|iy9NlL$-*UP)Sdl`t*QiNTJ-h7|al|1?|k@H^6 zK9g&8U3>;R!>Eg4Zb4yi@JJ(*5?){^3EVK)P`Qa$a%ev2pf4qX7i!G;yBVouzxG&N zYak)^CVa2K3XT$)?MpZo(_}h^g~Vrr_~-rA@AFi&YznzzeghXv@`C?or!U*oxHRAp zCT+P|z3~@~e|ooMKEUawAE55(%AeF!gUIB}n4QPvE_B6JOEa}?n5B8>;fERZ(OWP(^!fAdgm7P{ zRv?{Mqy4@*J8sXGFBtswG!S8*S$PTD5(EJ@Hk)5|?ISGB#S_hkzP)4qDh(wL5tU#H;E z9pB%C!$E_ECjf6**@8jkz~HGby~79EZ20q2ae>WTe3Cb7toC7mE^%$RP+XH~#@J?M zu5y)e5I){A{O~A6h=<&^J`IX_ereYI^8|NjEJ%~*p$|IVwYLnPE>w$I{@ov6m7eNx z2Pb7NI1%ST0ORftz($FQ~=U8?0=Y2Sc$-D2?(s$^X-e@G|b;c!g z3kf83NDh~o5Y21dl0a?ziJ9Q*N5J78ohRjDI#(9^SSsfmNj^(jDg?r)!PNI^9d%@i zq64po9(_~xEs3Z{eWaUZpAK1dmmO|V4w76aMv^11iOf$`Iy5S#Kiiw{*?PzwA=gly z=9Eu@8U>`6^I$+oNP*KPT;fGn>@ZB)8t;mApJw5t(h~V^In;c=4f}N^4?G?6E?Nh_ z)PjPemcAw$8v`;Ms+Xs0Td?%4|3x&!4t*R$X`}t#o6kZRsQms09PWK^{%i`??C(r` zk-FgZaJiE`^$$_RA)NvnJKGN>4`VanFJJs!eottq#)^?!D9@K!b2)`Aq0xPQK%wNk z(KLSKrtbhoLNa)sQQsuET3PR+^0@;<+;cAm!Mf_QXH%JWteJClN?sf7mod|Ue??`e zFvuL0mdv@(fll{Ve{ba!{2lXf$X)fK&$u*pUP|E-AgQ{)Z-2k+BVgN-To`$43n{_h zR&%_-D(?zVxkk^9cf1UCiePp%#}?~Tr=Aze^nUZK!9t1a@F+F}mbuYjn{2TEnW_`d zpUI+)faZtVo|16z zL;pF6;+^Z&HZm4Z+6P3l4Oaa>$Cy=CHn5Ie5V*71m_#%kya!$;9yZ+0ccK!Hrod#G z3c9ewUy76Ldj*98L!sbGemJXBRU>JySoBXT;L)A+l#)rfQhErz~0p{Qga0m-BpPND{6R95sR?5l| zF8BVVsfzZI(oR?Ym~bJ!AvxqN=azf3EQ|UK^5FK82Pt-%{WJC$lbgE^k`VBR9EO7WEtWXNJ$5)z%H^DdRKP8c0ErAKcAS=tsJI{)hVUd#Ok zBNM*oaPJe-YZ#mHl>0QH?J&>0G2-=UI$y03Awo?cFWZNviJXtjd34dQPxgO4ctv{1 zt_o)e{F}qDW3gX&zmA}eVSvxIdq&P_9|!6p6vArS{$3lPNq>{(Mj|9zPDVYyq>L_g zfO@{KhChwR=>m(SMF^IRmxG%CKcfAA4TNy0I>~Vf@jA0c{%_(^E2PvE;m$)Cw%(W+ zb8HUvytl6#f|obvDx2W)RHeN;N~KZxgbpR}S9|A`DP-)ZQ~9JBtv0)5si{aF&TgV# z3eBOY?HSpIA-?-W^OZ{iiTe;T(f~`~G9%cG626oFaUgtHK2Cs$2yCLstPGY}Z%%hW zmPN^#Eal~)PJGlYc*bGgWUI$vNdNTQHtoJZ5h$!9AX7J>(dKxjmcMPg9TZ@9i7NiT zUh8di1j?c37N8uJ2A8<@YG2Ct4P)^-&hL7~dO@~*69pp|0eeb{2o-45a8Z=^mkNNk zWH0J_?IkjCjI%Dk2)l4fH+4yOnl8dRMTe})p_^x;D*Or4x!Q9g{!^|;DQ9FRV zy3CKEf6hqtN|+$C?R8w(4|3ywU%D!@xa?vadI;xR3V&yoaV=72<-=~KZicgW8Nj%b z9ibovT4`$vVc9cc^jdd=oHT#5`QQ?oim5MUeW(z}_~$}S+Z+qnGd&ioe9uk>#Qz&! zJSnI7gv)?TdFqxkz?Ht$7eg3B!VUII_&Y>KtMqO~^>S&n%;=jz{F%jcvdLY%4@I_e zkEdoDe(2IN957!l+1bnZ+TkPFve>g3a^R=1S;@P@7il;3prVzGN@yJU>*;;RnP25F z{icNsMuR7MUaGean4mAF9Kv>`N-1UallAEU^4&XNB0n=8FJdeKzu(f8abCyN+Bgo8 z&Y4>gBDMf*f$D)P8tQyJV2OZHrg6igX|s(9PZ>sldrw8hMRDVl?E;Phl&T7APt3_I zr|>*!-&AY9Li&hfv~2Y8o`RDXLg*KNnfDvN5oMtYz^|ubK{|~nWdcnR(i)fmu8Dux2z-cFPZENrjEUY?Q=8}~=s~M9)r>Aio>3UG7$;KPt zjMHLFJ3?PqcQ-R=M=VZc5}q#6dG5UR`k&dRc%gr|euvKCD}}}x)S2j-jHZs&G6Ok0 z3w9w_WG-`=LElRdtPnTWrn_Au!Wt`Pfr}19&418X-^b6HsaEsy3M+!(2G}Oi`Y=tDL+BFvUo)03H(;M zzKQl72MRH$WDOyTkzPCn^PGZ_vpaz@#`*+mnRbhl7ps0!tP!)on|_=5f8-0pllHp| z-Y%0ny)?;OIs2I}xgxwbt^s30>xdqA#1ei(<>J0pdJ0{(VBUIvf@J;VltoOA;A!LS zyv3=p?jyA)dEOtp>R_2wP}^c!n|kLSX%Cj#P3@YHC3^!14WxAVj(w;|E}#L{PB+%RxzR$Xx(J6DtnqV(W~f3-U3TeQ*Z2J*04! zRwwRc;wMxhSp|7w&xIMc(uv^97%qb195}lf@$4(rJ?=^lpg6nMx6{<|mI5+|Ry+_4 zd#{rvYI|D7;TGCw9-914;ezaOv;wGkD>|OZXQ9pIAZi{$$Sf-bx;;tzqyM8)Nh<_zFQg^ zv&as991u6nE-VnJd^=IZ=$}>+-9@@PiQ@=*vfiC4jpo)pOtj0kRxahk9#yoieKo)y z&ovvn-l!En92i+l!1|apQyRgd3lzw&ZS>IR5L8KXuQ9P&kjp+m3reqTVwTv|7JZG; z77EXbg7b!B9u#_OWv~zLVvUL4l89rhZE2RGRDJSWKYelm;QZ2LOVLZUj;MA|skG6z zfQi*}0GjeMR^at=oKG`TyFZSrHBsu;`9)t@$BjDbmdNg6k=uCUP@z2e>rj-0OLEyf z){(MACKb*rPC9s61|22RbtBlX|0R1jl{hB>7>OWkP9 zqW&RFgcNWWlG)W10h+w%+0WD`O}qsC^CA$Hf15j7g)?DvZ%1WgJ6g!{%+OF2>W!0Q zkc9pJUrJO6rENs$dClnZO94Rc4cyt+aK;nXQjsB-xH2k7n(JpUWh91z*Tl-ldggcc%0og;_`X5N1v-Ekid2oR+pAYm;>Jz7M_j}6TzMLe8`)9%&pCMrEbm|zpJI#p)VPg@ zPqWG@`IiiPk`;I>&5-Zh?E&<5dCryiz#@;zqfPzw6}I!5qSM1xD+*fU!mm!Cfe|J$ z{K%P3@ypz7^3G`K4PIbQ^pm7`z&`b~UWh$k$SObzy_g(|@N}x#q4rw3?aue1d}HAD z_2Y=UBhv30l)7mmQVHQZG5&8GBkkZA;`y(xKRmqILkU<`pXXe|vgh_6*1|k7{p5rB zl7_{GXPJqi?Y?~1)f7IqyiQ_Z%VU&TzX={A6Mu<@+qfPy=P`@MEvV-Q|T>;)&~~keFc7Cg(qv(v=USN=)WCTxWuUl z#YF2jlF}x{3D@uReg#Rd)csR^>-!A#7|#YB@0?NR-QfnkQk(LHp#8)u50N@YZfg+n zSlcf1TYQHU;gi&j6>A}~ugCKHFR<(w$p(@cYl1Cat=^<81b4qOlSeR_z&MLFpsy})2c6gM(}$rLPca9@(w< zjB;ZJjWS^=l&drcktCt~1nVblX*$Fu-3Va_Q!B-wMH=IOtSK zSv5LAKO0WWsXztK4Al280avwwU}p#|JniqYWR`|(1XaBpqN4X25aOuVn|yV=(x;8W zXWYm;gd3WUK!jYg9_CtD0U zjNb)*W#%y>MZP);zh+j+4%h}_d& z1tfefN=`DjJc)*TkE9|sHBuPlOvMN^dImASQA0Y>)-0M>j-s0ry>m*R?Y#PB#?A3e z24M^2s)omNa*+*oWt%zL_`o~S0a{c{I$d`qBoo|J5YW&~(<#?*%cY_vda?aEnbzY5 zSSJ06);Yhgv*b}bn49fZx>AX2{F)?#7&>{l>E++(uBY411LL}i2K~ZYene}4*N{$Z zF=YW16CM)9x9b(2N?Rq@(ow}&zi=Nyl1F!vJ?!!im~*{AymlX5B&4SAIfm~`TS#@8 zH(ZgS_8^(3_pfPe7~X~UsB)N>LMxSM4p~-Iq^p0Z9>+rr@U_gb{b-PtLO1i1W;eN{JA(@3M!SlbdIVoQ2*%9 z&ju16;emv)n4zSHYM#`JY%|rac78a;_uj^on`ue56IC5suibMlljD%e4V2f9x^3%| z{;@Qa2wo>bTwQ`^*4N*;1LN9ax%YAJXj1xCHh0?tMdI75C ztq`Vd;sV_;bP*VzypFHIb?5%C5Q$T)44z)=mpACW4f0s2e4?OimTcn#dOgEEXC}@do(CKX|rt3P3=tkOP z28PRUiuJOf_Hcs0sem=ShcN4`%>;64cYlGUi)@ zb2}Qu<=FpWz_R?Mp{0Fjl!kJ!o7=74Z)IZ0c}Z23!bTmtLIFs6p%?pp27T}{&l!#?{w zq>S+U@KuCp$nxC*$$ z9I(Nw+U-d3$yoCh%5>|ok0+{~Aly;{(ve=odzg%dw1vf4=Hc~hK7I5P58a` z=w$)sci~#qeSV>_+t+&W2$8vfE%z#b3dG=$X*ULbEWYg#_Rh>L1Ji?%yCAc-<$hXC z%@4A4*9UBa9LdSZZFk$j^lSuEN8Rlwlbo57==Cw>>EV8*;Sq49+~rMOjyv829E^Kl zd07AEVYr_8CLM^VP5UNsquzh+Xq zX{PDrDhqbM6X*q8van+D?QGFX?EbU#EiZUbxDVEhVchmzV95lG{7J)AmHZ=Q5_g2E zCsMfJ*093~2s}9``kD6P+vmPVya4A# zNJbfaNJr}}4un2MN)dm1<4nTi_k)sHWMJgUJTdKjJn!|$k1P6{8CQRzzF#d9Mg8XZ z(i6qWc2zJS^7wpn#y<~V3aG_=U{<1?cO zcdJ9HrRP@Z&6kzBHQs3LM=5QOS_@Uwovk)c*q6fn7q>&R`w(Mat66kI5i_x1RozrE zdU$f`5@&}C^iDU1?QsO-n1;&MYj=oG%ZZv`q0`jh?kVwJL+lDd3qO&kFbcG3H^diL zrTz?PHo4RJjTaqmvmAA=%XsUJ!5k378RTmwC1Q7Gnj}wG+#mj#F*s#?8b4sJq+fjmt>{hKaIQHw_KV(}nWnk9qN@i46 zv4r7Sm&3|T-xv5My%XOZV+AintSs^ZX4-3bto!hm2D9_g1Mr-%kWUI03`C-6?jmDx z)*_>$v9F_#x-3!XN6wPCt{>ju{J)Fbk7W{yCq-{UwtRUd;2x9HK}Y- zthJ;cU1@b=G3uYZraK6xN^dWRF0j0_p8C*uYjpWN1RAAp&Me>(<0@kk#C_zkt8Jj- z;EA3rX^9!aO-b0X1`CjPdHGVP(%w5Ax=v(yZ}{JYI#mmtn;a+Se(q{xu@^{?Www zZbtOGO~-JhOBd80Q|L>EE_x2Cmw_o7sr<7^@#E~56Lz#%h0obxlMM7eY!P|LpGpzZ z#czdd`0REtkQ#e|*{x|F2d8NxKpeupoc(ptnW+0?npe*%@_OuJJ%~=Uf&U0xK(!<5 zuS^@^H+my;`u7kv(HFnfsgB$nbi+w3xvU8MdXiqH8<9N8B>f^SSz&bQ@pk!tI2??M?A}KDu>b7o5hP$EU<7@y4 z0ldvDj1M}fRagz1#sF`k{82{z;G=pDL2I3wU8*UJGESh_=Ck3@Z6#aGmD%Hi> zc?k@50-7uIG4y4cjFY$w18Jtx|K_8}d#9i)-!B7$I)$0}dE3)huN7KQl1bsllRUey zotv4c(;DEj{#4nPaYD95R+0dp(NV{76X3Wn3EM3)dY&c89)}4hAt!qJ-qimv39z@(bDVgkODk!8Qzm zE4SQ~4f`q{`rXbp?yV90l?%eb3O;(P!peC5f)ksH??^*22((&_I_`AyF*{sIM(9aA zQT~A+y1)4QQ6QGhGNYMSO^+%HGI8joOFh#teNNs8i3t=xkke1D zXyNKUl5qJFV$u<`&32gCD}GnD_dlAv*ugg5x3frO=+LZ~#7XT)d|J+1@MlRuT`oG( z)XPvz6(VyX=?>OuoeMQfJZ++P09L+l`*iB;PZ_YoyOl;2m5+KW2}HsnJ=(wvk+Rr* ziAweucn>IrnR)+eABo)mY!r!wR_5C!f?TinVmtrN^z<6oXGQt{R)g z8eXmOy1z=BG?@z2+pSk0TTea(l!)DcRIzj9#dR|tU=Xa9*EzMA9ggQ&O$UHw=wDZ| z{tz8|&8=qzg08R)AfB5@B-+r!d*Op^i&MDt1x-#74VU`&wWP{NL&Uzp$|qOvP=)ya zCxFXxq%NMrny~qkDu4f!*#w+yGy}1x21hgcw>tHic<+pTxm;j%`(uv>NW$jQ#O)+r zHaiE_Q#qsYIvNvlj81oZn9}!w6EUn!xm*g%-s6N5rE97x{Ry`DUPC%3mU0|el%Wvr>s)s*aUhG7k@4t)0^;@f z@5O+hjN0rMk0sHFQq~1Z?Z$|<@j<=G_iHK84fw3h+;;n<9R$3VduwzG!KtLBZ=n=1 zqMr?A?oxZs{P~Za5t_ati^F56YjLoiQ3_)=&itz@<-A~~z%R2m5LgqJ7C|G4EGB^` zLmQTF1%0KGHN94GyeN%y{qn??o~)mUZ6%N3<~fA+irUHXjkJKH^L5IwxDEt2Q-9#L zQxqj&fTY#jxR*h0ngBc)qx@%mS0Dsd5H9a5U>5$r0dsZ>Krvpw(P#c{5UXfuRD71c zxyGicF>vWj2(unb8CL3+n4fQxhL1Ew=Xc3=8_|3Hrrwm4`8lc{0w!PREi^g z!ejz}g;|gKDb9mT^6omkgRU?R#mdS+BApGb@6*%dYqEmc=C2n326X@2~W%VI-1S_yW7IpRub z<)~!e{kMkDaKZ`6kg9yO>z6NyfbVqpYB&?WYg&*O?!qb!mx3GoIq_4IudZh2Z5lgD z;>GVfVC(3_ndLZZRmQ<_IRxjCwvUsg+w8kw6_y68<7p@LHltZu*sy9w8 zn<6^xHG9~_F2>;9R_oqCdG@e^+BEgqOCA)mU00+fG$W=k#c!#w9U>)H*5Tlwy>1;Un%JNn^#5Y6$9#$~JC|e2MYP~CAkttQJ zA6#YQZ`bA{J%Lmi)|s=KW2A?_`zv$5*NZyL4*Eo9f1@7MvWVV3Q5smF%KGphx2Cu# z!LhCUh1PyA&!{FfvMp)mXa<>3b^N*9uCB{q`Ck406+RT6^lHhwOx>m0T(%AQ3E9<{ zY}m8A$KR57t3@7htMp!3p&i1>5>2-4+0AUZFr3TJxAaeN%SWzSDMI|}!L-!u(*L9B zssozbyYTD=6-8-_E&=JhA|j21BB^xa=o&*skQV9gl9Fzw5~CYNPZ>R6z+i)oZQncY z{r;Bu)~Vm~Jm(xVV&UX{(kX(FzN^)<9E9XVzzMsb6|FE7MN$( zOC71EFfvb#8C|ptF>6Q&I5st#@>qj_=~bwjA}5La*lK;X{?`0%*0M|Z5mY0z_ioSB zutm~lad?a|o@LBnsKN(Ex@0sPa5Q_zo+s3p-Y;T$xz=le9@z$6-wX<21*xV`z57By z^-6tmX8Ta$Uua;&OL*ULPMT%Tr6NTYY1Kj>oisns)gFHo^$_E>MTeo~%O1Dk@+OnEU*BYeY=>DfgA= zkxpgj<|LFWof>9*WVdGofZhYm2?!-Gh}S`1s&U9)-3I(+aU~Qbi(XXXGrJ zJUiuH-`R2bS(iG0uB+PEp$rkc?L@?5c*)0;NK(lG@eXt~3eM{7A4y#dFj!N$NJI>f!>G&_m)OZqZGG)kj5PFN+nFD& zWGi_-hW*~!rzZqlxKk~W-~IWB%Xxpwj!hbyw97j-_C?$~Vmn~FSYFrZYSuSnNqm}Y z9cHaYW@AI@+icQb#FD@#Tp0;7hXU{y87iQBYi@p3H1b$Jx6m!}A0>MXuz5U<5)Tmb zr$Bb!fHMm2C(6MTm=0_h#o|`f;QZHzvP@;>!$P6sXF!+BTdN@?%FqG?ZufGImN|3e z42=YzdnGSvGe@QLORJK_eU3`JK`7&G^fIrX z2fG!T9ufR^E;rO^2(vG*Sj?S%*+b?O=zSzLESN^h?<~5}Oj(Ol=ScGz;Nlw=vzs-k z^THbTHjLbqo1?M~d=I9yBS;fd;?$R_ko_2_jJr$9#1@t&8-!Oj@4ZH^uDHy1&Q&?) zJ_;QvH$I$Fo&eW&ffEK&V&4?#E&lGJEY5XRUzs@tifd4V;#W%w+oXpMTh{4BM$nX1 zjF;CA9pCOMdJWrsBV^N~|Kz|lC_Ekdm^BHhV z=bWEmdr&T-LHD)oMJamK#(t`feR{IK+QnX9mElwl-oo3w13r)~< z`(R%<4~zY5s1JqcT2Kj4KUNVDz>8a8{&C>U3G~FiU&dOg(YOJVae&#Srod8BGC8xj zyqzm0mu6N;{jS%d9aU<7519nm>QZMCX)qnpTy8WwG{Q!yc_VetzW76p(M?Y^*`)xw z26Z#L#Yn+Kf$}`k9na+GCu}THcSxp{q(gU(HsyjAzQJZp7Zf05K|GWBu+}{6hNuI! z%2GFFng4g6$=Xz=n!5OCpQCJ(%lp?+&6j|^Der(#_Eki*snYq-^MWH__&+~SIHW3J z1ehkMz@uttoZ>4Iwz!@VnApwNyj@d!*X!UCmB;~>U4BztCg9EPWduM}K=J1NKd^EV zKJfOsk@By+8mkOLC@|hK{JWrH-@fn0#$@M22MQR!0Ess#ku-+GqQyw?GEwGjv%3UZ zvZj78X-_tz_yJu9`@vQUw6MPX$~+;(FPxpx$@W`Y>4sW6`gR0jBW_93`Nneot;M#) zOv3x|hj>SaF&>a!Y9g8JFi}Db-aR)vsQUr?-T+mLfVj56;AXIq29ewzy}G`IUvO0|Fv!$ zVBM{Rnb#-Q-F9N#J*&L*;^z^B>R4DUI98>Nrix@3`uW?VuD9iS_a{$lzUFk+SaU}! z&h87|#Je!{wY#((wlKFLd(#xp2VVAA$B_LG#=TY~H)ILMF68+NY0PZ;1zOqng)D4s z#E&12kbpQZESl4!Ve zaGMi#ga2FVN1dT(!r8T6ijb#+XC7?~OpRC`SWeEx>s*}Pt9BWisGR#P16Cbc$?lW5 z9G|Ge#cg5n1Xng|$fT=kSwGd>VT0Poye?2lo>vDeeZGaCVTgLY$+E@&t?i*m>+g`V z1CJk@^7qHca^ijjjIQ`)kp9vf@3!{_hLXM^FUTN1Afa$hEXGK6v*B1NWbl|MeN04< zqrZ!-hCEu$v|J6{HW6>&961GKgR??FTzX-(me34rwE>3PYqcFOIs){nf@BO}6cj&u zLUTEaE5XEb#?Tl$%QnA3O#`m?W@PJqchkl-oGX!+I#3c?91?dkKNEP%)Z4#iW5Pla zX+cIVFJQ9@BlhDWkFS-=<5iGH^Rs5pAas4$-WJke37-5m+8o}WCm&m#O-rEf7X|rRzcr>l6dBlqMPvt@x=ssgqwH1l-*s^BB)?4{S z>7`(|k^haovHYzHR@ZYoXK=9?NC4xIu>>A+G8 zP_YouqTdZfOM_JRV~m!r0J ztD^xqzf(&sI$nGNj4!ZuC_&KiDl*i#CeJdsu7510IWmN`cT%_PjgnL9j`OaUhD&a1 zPh%mQiBT`?=yYXEcry$-4-N&ygpm4Xix$e1s+N&(b8@c(=2eCCf|yq+J~4cQGpgKd zUXG9&fgUS&iB&Fad-8?`>0-43OkxBU`3kUl;9Dt&__$lE45aA&P=akq`8ABi%Ojlv^4N+2dopvRFJzxsA|rqJ`ooKxE)rdqekHTYv-EsX zT3Ow{t<*Z=Y3JqotImKFA_8We<=!5otW4Lk%s6B?9kHjq(RsjT)9x`Ty4Se*@>Str zdIo*t@xe_H=)%ccU!TaIjm70_Fl02^K$_@o*K1fiG;VqYRJmO#dCbuH5+WmQL1^`{ zzYDq-B(V|~EJ;Z}9vnBvGsTxV8i_@wdjb9h-Qs?z`|1Md=OtitP0pVcZv`JF=#G^Q z>Fw}``Xko;feSW+?0>HUXEkzD#C z=m!`ExKLi3rPvjfJBgeLQxO&{eU5LPlE1hXNR75w=j~f@7+ES4s~S%ycfEoU4lwC| zc7<)2(P~OI%tk>IhAYzyE}>)F%zY|XL6_Iap%2Fgr5zszU9@4YpNrG%%#3~F&H(4v zO6nyJ9VDmjpGW64*1Rms{9$izPv4AbgHnTu>cZtf`wjs1dVsnMdYkuLe3C`h*1&u8 zZqdzj2Ya*$(ApU9+%sCC<;kL0IX+o;$AZ!M5ZIvv0!`gR-BtRhOGrDTYZE%M$>sv} zhR(aSK_|0;iOJ`kJeQ}x)LwQ%oEEcQ_qBLJ*%qqX-je^3ku8~XSR4J&BGgDtVmzVV zOvFm+c`&43&cN6MVyG;md4A;Ge4LE{}Q=tN%f9K?!SHtHrY$ zAcc%45pr)>z}?P-2#dc15_M*nDP#iv63K<~rxEVuIcd#2o7pVF08ie^Pqblq|ErNM zv(g!)Fkuc5mN7t<7*3%^mS_g|Ku_RF-8CFiJB$9xZ~p}{LJ|F$^UhLP#l_PechBX^ z7_DluWOyEfVQVjp9MejOUtG*bb@1DBxAZOq$p=cl>W7Khkq+A(^ z7=M-0w7XR>3vVC|P#j_?7EZ{_QO9UaNI(>|NQjd@1A4KRM8~)yLpqjr=}PQhHZGAD zeC~7=Mzg%{qq@-Z41-|%ycDgSs z7SIb*^jwGLji|@WT&gipamxBSa|O)4Uu2?|$UlQ3EN-1+fGZr` zg?4v~M6o{EjGFp5ntI88P$FT5Z}^M#HSy9*V>WRFkr%lE_`Cs$$#IqV^t^qf(Q(sN z)`w8jA4(k6>%_OSVilhSKb2f(09Hp@^x7>r@a!~{JGqd!vDTp|%KjBiL(re$)_Rj1 z&js+TLKk=s{R(-vV_$_kgaQ8a;>dW-^GzX3${=u~@eMCQ`X8tpHM@jBKMUKGk%uZ4 zSx+HN`{5!~*O+i#-@DC8JtEmV%!VT)N$m*glPHAz_ar`dz5ZBvk={2eYKfG`qL)oR ziEYc-J0bn5f}Ca|<7OG*D^di^Cm1}(HQ*q-!%7}rsA;EUv~3eK_3((!Lx3Jt*GTQS=(KWS%vHr3|(f zcoE(D7H_ex<0 z=c!|UhRufqHO@Z~6>X-;wY8V_@SdRxHBSmG;3p$H=I!IA9`mx%FOUVNQ(?wByB;4& zwT@4#*L$tZuR4FuLkp@Pn=Hy^kvnavv%MZ>Im8Jzl=-90l!a8WMkGOuHI?vDV!P{Q z_2pZSLHDvPG;Nbaj*h%cY31p>+BCejBTML@nuAWW;8mv%z!RA4Zae`7x%}S~R8tvS zi<~DHxq0m!q=GWB-hLM72iSJ znv?XqYb3a9tx!rr;V`Dc^N!VF&lHONV`WW3bfcu{COB?{SO0KkkG_U<*DY(epw^)y z%gJ-?K?tIv27Mc(eHBO}`$#Bh70oIuroQ9V6STVUQ|ETfs@y>1=&;+`jR~Ap6gpfm zA+$Y&lyZd=B=>(uSfs5W{UZ%*H2wtBf`I8`fp6xU$6U3swT>k(Nky5jkGLs4Vno4 z&lB_-J&@m%0VK=V=N)ce8gTHy(K^@84LTFJHXl%nb-Hv#QBIP?MIb?h0e+qJBvO9q zj*UNbnCw+^Y-u1r6<3xEF-`n$9FpP62hRsMAJWX;GNn#ZXZtv3hxk+ z=~cL|ik>BvJf#Cy2Q%)d+sq|ISYXb4a5L*~VFP;&br7Jog@UM>P2+LN%jYEM4ie~jg(#slO}k~ z^6V7d8mYgRC}fpqePwJZ&~V@6qUUZw_Or(nvDcrYN6aT|2ds5DHouSjB`Y^m?m2_|-z!+W7G4>P|BZ;fJOy+-Q`1i% z4^Y)A0?W^VP2#>!fe9C9fZ5%=6*8DC`(7#58d3tD>b%`c!+ib{RiyWU9+I-^m!(!LF*NmkO6&VpU_v<+XDSl5&)IMv{|Rhfj>@fRFyzVAb|>oC6W2Hrs9r{I;`hzz zD#&VMuMfk#`!^)Busk!M95LYIjwIE~s{)W!*bFxaRCe-UBG#i;R~#Iqs5|!-cZ&u4 zAI#nb_0Fzl3d)UmTU|H)tT<(;@`i`OS;52aP#MbDpj$ym ze%e85-uEYu>Z$woZEV!jW6M;B_Zq@pOvS`(Z4k7{-!eRPN!zv4 zPMivmLe%x_&XX zqGJGMxks`=%V+#5w)VB^(nG2^FHsDBxes2;xP{8OnAZG2wVY0stGGj|#It<`27CMS z68uTOiYc8!BQ;D8Jks?gd%j5}ym`x#Q7sv~31v|S z6D%T;f?DU@zDHQxkXZPuv&#Tq@xCKq^Z<7>z>pRJ$myOuN!uO$=fZZC&Dtfcu1ef7 zJAcIoCpjM!KdaET0cVf_r;%8yke+Saqj+!fx?N#Z)8V$?!w2WJKO_NzX@P*L5Wn^k zK@x!0fh$*r^Rz>SwVgPlu!w|m%?46`2YALfn=6=pFA2Pv>Rvl2F*sS%b9lhdYEGgb zyK}iNg)i3Vvv5=)M3|_TY6~pWMD_AQeTR7kVf!9VPQ)P5t%OWfQ!}V$Z$M&l_awxy z3t6!}@=My$E&BRLD&8?d9no2I8o?~QH)$d^J1B3%XEp8ATYbBUR-DKc1U8jFG}cTd zB7}P!($VPM$>TSRi_H~{^hL9*r>!W_usk;nXRkAQ*>6mLl-^*n-Ekl zQ6}qTlmfcw=lz@>1xVtSI4}DfoC4Xl10;do2aIziR3i`&(A30s7`sgfaAMn z2#&4EV$ql0=v&?1M7>tjrJ5N}x<@N3B5Kod$#L_eti+`^nvHD>=PY)c4$WUZEp;}1 zNI2M#&f?lV1xjmNvk{j+TvWpl22cGO@cZ^cr0u1uRs9!&3S7&s%P55O$Ik=$gOxv?k;L0Z4t)lnNC!Bx?U=tuY766xg zO%@?dP+}FAc&N7&X0sGu&o(?h4s2%3nRbSkVZcBH&#I#0R<~_`|9zdgNBZZ&CEbJ~ z=lMBfVe6U$i*Gt*#6gRklFEu82gX(4z{Ofor(s=R^y!aD{YWzdegt=qUarr;PyHiN zV1TqS8Dd)F7}~HWh>GrZ$N~j^6iMIf$ND2&;bmc*i}%`y-X;1IrJC&TZD#trgaaT(`8Rob8iwe zoJ}=0HaS%mVEDp~lg}<Y>4tkr~8&Xkl9#j!v}^`hZjQ zo1SH}>nx@!@^C&#M6=TNItb)&;=Ol?Yu&HyXFc9i7jPqy-YZ)c&JAy)sHj-J#d!QG z>-hLMvv12WWw=z_8(y~kul-RG@7sSyVli7#JyN!GomGB!KSwEITqDkj&Q|SQ{oC}j zXktMxNEIwt_vB9aD-S+|Ag=yKJ^g!iVjJRj^Z8s(qOnzd5zFKO3!X5$UES8UN@A?8 z%Oy*wR{A-*45XlM0l?inKZ$1j?@Xli$|&kkpA_Z?uc;h`w(oP(0OA+H zHiHeSN39031bhd=8TAOJcb@vn`{#Z48%WX2?qB~-TNY;>8K4Ct{mVrSG&k{x%=kD( z-wGuk2r^W+N%zZ)mo79sfuH^%#kE~P5;*P@*}ARxyPBuC#bf;QzD57@Ez-nsu#m9Y z@}_SKIPAT&fWzYMse?cfRFf2bjmXB1J$+&1o#&_ z`JRqyk93)in=qtsOJ_?#*FB4b55t(k!l*5{tJ8v;D(vXW5p8L4nYf%cKH*CuFg*`E ztpo%_+j&09Zfm*9mabhkLr|_ae{mAfL`l+ z)aQ=SkT~`#+^ky1Q5$r;9Tu*FkIo>{R{?xOVI4hFW+aagx;3`=Sn&{A8

xoYs3TVWkx{TFEiXs&3Hq^9za!&zW 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 i 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 literal 0 HcmV?d00001 diff --git a/website/static/img/ark-og-image.png b/website/static/img/ark-og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..4bef5e0773975bff81f8f77ce2579c93aa8bef4f GIT binary patch literal 115330 zcmeEubzD?i_xE_cilQhXB@Ln=-5nBwAR!kjumX&P>h8&dI^X0si4*;ouYGhbT#fxn5+nmIYy39_-dy1KHua?qF``WNvFi4c*be(AL>WgceNpVineQ|J>Hb@wcUb&Dh)w?ASP1*`ZZo1{%Tt z8E5D0V1;?O5uDA~%Glc2#>o+k<@jf;otdqZt)rRk|KisFeEn|^0M=Dd_~#k_)45n% z|MLh(CutY3jNb0vI}x>fL;E#p}=p944e%9kAscif+n^O)&^k7=GF$L#%y*rrnJ=m z7*bHu*2>laJQ&Q53o{D^1;Hmaj!p(PaN{RZBD7%DtmfuMf`&#Ma9$2$4i;~h@G`La|Gp0tbdXaB z%9=ZZ?Q;Je6RO7czdu=-Q)B!<&;Snkw+Jm9+E`<-f{P!U|9@NH;(AvzV{p^|&30c5 zbF?*aay4);eq;))^?%_|Y+(9qP%K`ogzdjB67$`^#O>e10T@6Z{{bTKmw%wl*aqO2 z0{|)&ro1fJrF!lsQjgT!l2#`@y$FY@56;Wk|9th{jri664L&B^KM9q;hiHA#(vH^p zx@B#xgr?8=VIJeHr0>;x7@sEdnqJ-7(?ju@Rbge`^Mc`F^-H$6$~PXS$XOEB?HJxY8e3+}$)r40mrT+25%s(+u3;sij(82oqGXu-L z@Jqk{au*-@_m6Rc;lDrn1~ha0{wOXv3ve9s=L3!X&EFsU-tt4p5B)KdCBJ;}3C8`O z+rs{11jrfw;|c#U!UZV&#}oeJ3IFkg|D?!&;|b4;E{hw#RjIiJSV;8C1ukUo^kI7u zouF%OvC*)C=uh7>5nK8beU@RH!@!ZT{(c%iT%P9$qH8qGbuy?4&4VCtU5E_hyx^Z| z?Cm#j&8Z<`QkS44=5nS;A5OykX<@c$Z%pzHMO|givSqP(P%{7Ulq18m2F;j|YsfIm zIj&{piDa3pw*&gp<$NFE#Rk*ig(@=Or_$0>w^$?jA3uaxjdJz(Z!gMGBD)>BsSNfj z99XNP=YxT_@Og$t@7X8qU-y?ICmWYzq;y|n*&K-Vv6@Kt*?rZjFXF0iBo6MyNNtN1 zCreI82+^V(;qL5+RG-$FUA{LHwn|_{at!d<$~*W-y~IjyX7Bx0q7q}vbm}U)>}hVby%ZTw-XTz z_F<`Q{3|^^QuYc&1wDw%?bNLYH}ny%JvnqoDAcWAqK3Ar3&HT>7$0|~f|Kpq2))yh zG4ohiu-dK1|6;j5p|T|RlQ%Uh-upeG3qeJMDu?g#Vj}r_Mz#!UHOGz`$%^CI9qM%4 z7S-j|z{LVI|1x0)TU4sxS?qPJb=S>|%eR-b`lG%St~T4>-`nd+Hf-2*jaH)Y>AWICyI?FW7^JmVF_apyA+%jOnS?GN6PJzlTPX21XX3AhO7ez^Zqo_K@#{888q?|PT_ z^g!|OmHoF1KhAf}nZ6nIY4r5W%D|O-%U=;;Do<|ep;@t~WVjb3xsoFacB1-UeSpE* zVy0j$HpaG0m)9oa9PiQWh^U_0tmZX($Sqr#^p`c+t$%tuuwFNU!EmYmb^DjKoK~s= z*@Rqv?j$rke~HXs!DFr+W@0pa5bjTJUtk&;HhpzG^DX~gg{u3#a4xuw+y3Rv14~u4(R(gTcu>0D%p(W*VH&4J;TzjjI78Te>ywTD9UWlY)x2K(QI#5|L)+x=n}23vd2<2agZbC$J@i>C-1EURJ< z%IU);?>%kayB99u!zWyoL|)wGvS+T1s+2HVJW+_|C%R66 z9Ej$hiZPt!ugU(j&p$OsnA9V=JE3XUBt#YTK;LI^q7_Sh+H?&pS?wOUF{2yS9pJJ% zg5B9+sbX_EuWi{UVYh9<$jh?%tx{j^dw<_-PuF167wUEv2IG8j)yV1S)c~CQP#kQZ z(>vVrQ^G;1tJv#s5+e2Zirt=brwG2uWr9Y&3V~Ni|BiTHvdUEF&k4J^bbh$CkT1s> zL7u`}H+Vl>G$;Hga9#im*+*5kz(ZjE*+e~gy7n`sLslCKzm$m{-^wGP@~JB=G;XaT zErJ6$5uc}pP_nNx$G_BqudY7bdf?@2oxoS*Lpz1|`XcK=o=+%&>AnzR3c`BX`{u$9 z)AeA0u<<)&XwTi!31?>Tpd4XLk>_z8V8hzNzH21+y0k@JesiUwkjF||FYjAn;Pv8p zn4)m!56ItfY^`ncr{S)sj~}kdLXV)f#@wPq=f3&VO#6+;TTp>%j+veEg8G>)*^@c! zM;AZDRGiAKl%o4Ld6vICDryoBxvO-Sw;Z#oIdGZy#$#xYKRneHa-RramZ4k~yqQsu zRU_xMdqB5A?+#Y%Yj|<%fFiNoDs7^te7pft^DvDdiSFI!ay5p^Mc@( zuzQ1?#-2sj#*_D%*Oux7ToL2DQ_q}>)$!JxJAUboxN!>E?T^U0 zY(yA8JrxPuLhRa347LquI4K!y*w-QDBQ%^@2Fj>X@Qjj3GOG@AHKgYdY`;uyzL_#!^MDHL%lUbB!`hk$ao9)lnKe;Zhxy2=$pK{#X8*zU!f5x4l7$-(m_2@p&+WSP zD|dqVHu&Bjq!cjfX4%tt{<#o%#QKKdt>~ zKMWq<8dK#KX*fgtegY=nD$m9~jn4t78HZ+9zDksImbg=7+wSy7(q1E2_1z^$uZM zi*Z!o^{fK$mAGhz${o572N}^tl3)b|Ijt|ssW#Ln)m7IDdDp$C@B3e?FY};Ovxrlc zxK88pq7sh=;a)tWJMGf)A>%>XNSwRz0jrg8JVlkK6@BeKk~8ZpMe?xWh;QB8XqoAE z@Mj|PYlzIpZuef}RD82{il|+K+y8L&X-{N_!8%AFNNxdHoO61ciPwrlBQPbxW2M#>*+nPJit05=-@Gci}q4tJTUF6FS`xeHgBdRLb z^8kTLvC?4-+A-)tzzyU7{`oAdBB9}gg=#q$GC{lg#kQ1Tw%5*R`FlG~954Br;7zp; zkPTS4TD$EiAi+(J7^AAm?5#|v<|*-WEqtioaHfEE{P#Cl2}%OqXFE-|T_~*Op(v=$OH;hw5L z5=E7O?>}%WV{Y{>tGu{TdoZqXJe`~8=IF5=3YY};!3iTy%6=WljUp=&@V+_J%J3rU z*0jEkk75(cg>5b>hPQt(x>$nEz%?GOYGQS{*pBx~ zR1-1V`h)1=88v_XR9<)^JsK}^#@^5AIB^r>R9`4C&?!COG;3cxbbDgbnM7RiZon#{ z7z3R@!qw!e!!Hqv%Pk86R;QAAm&{U(h^lf(O~W0v=k=WSr^x$g2_x2I75&M<2v>wA zxd?pO+V2hOr8myTI&%CmHaexb;Y5B;(ZVAL>r_%Vsoa9KTF?@9YG*TYa@(<@nkfavp)JQb?kT$qZ=08>TVvd zKe;5+cHciHg*LoecFr)AqaY&VIFW+wxTfx}iJ7P6Am=K7JULH*I7~{cV)B69Oi=n! z;PaZR1DR7H-)X&+Wv)1We0-*K-MQu6=xs-=VI`tN4diI?dPB62r_b=P*21d0xIcv* z8G!$Qr_!JI-Cnfb+&~eTeZQ3xWNk=(!>3618i!l)WJ|eeg!OrkWFZe8w9g;nK4Mbk zmki~?>aq^g=Bk*|7LA8<s0zx$aEWrHJN{Ra*~tR;9iR1lu@v{q$#J6 z(a+6Ty!0p28l7(=Z)>G?dJ#+w5WwGH+xPPFoF0V;rTC;5!X80$dxHr9WpVi4pN*N7I3wMPDN6hSZ{ZS z*B97&L1Z1ibIxawmdf06q`3N{dFJ@G)df0-T;${M*45hS`XacmqTFcxpOi}}vtNa4 zB^DyBJkMvBX$7y*c&%-Z$7#O4YRFpgM24I?p_f9eap^L6`j_jNFcvUN5w<_epn0tu zc!{59d!)(64udlxuQB+2OHpj~FMN|6w_VR$xC)Ehbr(o@hZ2JjeniRKGc%FLt01v_ zxc6U7WMF>-9HjgHsRoCyX$w^-x>8^XZ{t{QALcbv$SzyQe5l9$TJ2|iBAW5Gf-x=~ z+5TpzRP@D!zZzh^S}9(c3e8iH;t_rMA(T+?&9sic)$U$)b)~qftimefT&3yJ?|1bg z&DmiL8T5pQci8)$%MN&wa>%Xe+M?&m&H&Q;EHS=_J4kU}`>`;K&BxVMqT>fGXK2aG zw*#d?t6jIwoH;Hpy{J2Fy{&&WHc7Q$>?|()iOf1%La)f*RDlHJRfd{^&T>r!cuhKi zm!iw!=Wf@2g`NOoxQQ_)2YCgOvakpalhZv-xhyp(fb-j<4(XtTfcw#Xs~O@VAeAZ; zv5HwYE0-Io7h<;iE!F*HkadGVD!t@&(lBAZjhFwUDQm4x!RV91cg^cr;uTI&8J9^( zlyd*%AXdh>(j=30+V}egP(eeBiE2MhrvbmfT;8kis&~H67%oc_+{L5>-w6y4xW-|5 z(66o7pw76I#SdX;n29+f-cR@76TT;nI~%V^gty|8B0gWXl%oTxzjKjysoNKT<%f zoyxA680A{pWa>Ud+uS=$E8$sJ}|QDh?3oAV$!gSbjjdqGlegpOEbV!e|L|=96 za%y3~e+=`nbme`RWW(1dAR8+8tg?55P zC9zdplmV>1q zrKyDFe@hbhoD$*<9>j?eF2t|(b1(a8tYEFLgYefNd(oJ!xpP?3sSB|XUo#b;e_mCC ztxw&8F&O8Sl9TDJeIe#dKBtC)Fm!9n1;VcZCP zjIyCd??FjXXF%0zqTI&qlnn%uM)72FEymarPCV9ORWN1~(46^4Z^_o~Pir_$y?)ca z#-ToO1*>&$l)XN!9+irTOgTB*N0BgleXBgCtEA_&L3YjR{!sczpOA_$>U|Ks5eMxt&r&2`Ll|9p}ejV4jP6oPQI zfx+H+pe-HMPAO|;tmt1G7jYP|dCHk>lx3{E*qE+D%cDGuNgu>@=HkmSRLe8umL1R) zcV|`I+#oxB{^{c}8QiPTzgSrlJyxrNmOtd>b7INDSn-FBt8<$my;p+hKHiuzf~U#qk^pn6i+uRm$PP1Cn{4X7P8fQgIXSNRArS#_Z?i@ZF; zdwbuQ!qW+m4IKlYR{HKRg~N5@a0rom3UKwNRuc7=r*(4Z+wDx@uX{^!XZiEe_(rCP zd?rHXG=t$vI?saP+wT`NXB%BR8)x|mn$~(7L|uB6QeGrVvVnzZLEz+w+3bO`1%Fq| zyn{YMWsAMh`m7;LwrRsK_=l|njH-8w%t(f&0SLUxiV#%h?iK!>uloEkdrN|FAtVv(@<~Ez^qPU_ z@1YCnLUWH=) zOJKOx>*jP>dB&v{7*tSRuHpiTaA`N;K`OtG%IRO=oPm=oS)9W(V(Bo)hjjW%t*Kn- z>cctRddFnLH0nW>_eUZ83-JP!vsRYm%&5t7?vPQ9lB|ff+;Q>rZw)<`dHGU<2)0Hx zza@=6h$py8BW`W%8!Yjie-8HlL?jEF;S#v-JkI{JA~n{&|%6fkPYeK zkb2c;ncLbrwx>&>3MNfmJxXwkc*AEz)Mska(#DD61~d*+!0%`&SgJRUH|7;9OPCOk z)(7#2GOVTvhuS9=+4~y@6PFr1OQR0uU_E!CIX2dIz(drD^p z*1@ej73TYV9?gb@)T2u_12>S|T)@uZvU3WGzJD+c-FtRySS6sBw7D}k@0n^Y z5Id|rPTI;V%F3c`26wX!S&CpfF2!HiZylJvf9$*KUQSWFy7#auBKC3XzDgG2x)tsT z@9@5TdlBlrkG_PhhFPuBhk5t9GZdSc!*0E0PX`T9BReR8J3&@Z*(wfFAlB!B5q-RF)>%z5D0*@wL*?l3VN#wbV6`rhv6j%_Me zoqA7$qh${b6r&s%r$fCEbhc*ecE?7?gG7_N?1A?y^7{L_N^HBl zTxiwZb3`voNU0v6oVz)#xP!`7Gym~6i{LwOTg4V+JT^VEZ4UUKP$-N|- zd7YAhCHKP7`*#@djRE~)&iNmb3D6CGnJDn9aO>NBi^0eM zId?9;FIj4CheRkUltJ_rM&n-mn&hPfj|$6RR92GvK1b~xw>MpeBuqGmqS-Hb8P|~| zf$N=A0lj#`8m6&-=*=6B^%7KI=NJ1X$CRY74w~ ztmKpB*0(o#HIsxKNc1^xkE_%_{o!a@crqvy$#7n!Z7V&9|~BK12lSWRy${2oKMp9Ax;j%THo>dpkJ&^}|85eO>hS4%V z@L@P_$C!cV_ef!hmYQvU6jh|7b_F(#)ZAqLdhPaMSdpY$cR{dB$ifZ9ssRkgswad> z9_0#vT$}*8aB2KZKVMlsJ@7nfa5!x9YEYG1l0W!)>ByVVqsI5`D1qTqOI$)v+o)Dc zdc{N>?K8$A?_brWb!b-d{oI{Ra=P~(={E9iapk&9)nSAwyt;)H=@Gt-XltOooK>%%2L?HC1sGOnC6AO zlq=l|b8W6W)|fQ&SQWZ0qEUMII%42fd;E?2Hj(@LdirIq z+?>a%BlK-92o(wEa~};wf_;85;c%d?_U_#0d`q$B2gBAU_F9)q z!;3vAH7ZW883^g=b!?ZTHQg%0I81s;0&*Q<*!Kw^urg*UPo7^HAHU^mIzEDAsGXr; zv$~_-aOxV#lA7Wgp5WB{VSO*w-qAfGtG=PeN6GIqxzMyFEmuQ{_MoN8p|@>U*f^l$ z$6DvyEX zT=^B^wz>ATxm(lc0k50@LR}??EZR|Jkh`;mmgyeq5 zAOiPxRUjru_mN=`!59>)jN92%E>+M*D#3*r+LMTQ>rgI zK`>u0W#9c4<{`hmt zyx5dnj+GGl;0&eV+W1kG##N*Wijv?^sUq=8EBy zq%T?~HIyP{g^p;f>ycIU>8dw#mU93Neac-9Kt40zZ#h4@Zj|nEtNh)|^?hTN(?XTF zr^4rp`&)ThtPcR@&xU7D+c;v8-zL9 z@l9c1*UrbC(aU9SrMGwd`cL_z6spVRcSyDS&Ro{W#~ad1%d_+sQZKdm1jL*s*7*dc zk3|R=ZFpW`0|4ingb_>R)ImM~%<~B31G}{4&0)yRODf(Xda6%z%R_zkRb*(6nT?|Y zZsDVRHmfd>UpX9uLhs6)R=x-1BdMkVF%|EZHP;;z62rTpDCXU0c(e9L8NnXpJuOQ$ z_nL1#Ugx*jtfPUG5~bS;R2rixdh5^3IF4AQcRklwi$rX_YB53C z5mwfnjdkZ8T7cma=#_vxmW|4D73bMFX)&9Mn+Z2gLvM**lrTC*St3YxQh%;qgR_^^ z%A9F;^N(@4CM`JG;K&&ks5j$qXQSS(;ntEUI9d^ZmWFMt3dyp~deR=~ok}ZXy(}_-MRB z4sqGKv~5;2y5KZQ#)qtuWGwD}^ut}F5Nh!~qi}ZEOO}4p3i^1M|CS>@{Cq>k&A@4X zb4T5^Xv)pfhx}v$8Rw&s=?B$h&lQ6LD6G zdykULc;>LNF3y7R7wf30l_#<%Ej-e_#dPCzalKq<;Rj+}0Rc1-Urx{l0JOO`S;0~I zxm5gp&LqABohj1{3zLm2t=!0@?WhOCtY>TT6z1W}0~sG*H}5V|xn3L^bzH(EQhZ1k zoCpY*0SQcJl>VnC@f_>H&gQZ8*$+BmNg?~M&2*g$syG0|K)(}6_4FUjyKDZtN0#tV zINJCa7KWD0PsA3w3fFEvBZk*1112&%7C$$BQEjYbsB}2r%z-Hav?Mfeu4vLOMl!pc4=hdzik!REOgrg}WLhtt#bBYa5zT7IjU0dNnr3$6(U$HSr72l}ga$=pN|L5qBuo^a7P zsLg?bY3eu1Fk(<9$wI)n3$Pkgsl>tQ>k5&EZM}x$hU%*pE7r=>|q7j7Ejy zvpC-Gxgf5&m;y8DZs~^ieogo#yZP`%c}tra-Os%vU`0huvfb}r@6Vh7-Qq8d62w0! zd>DNgwGv1|897F4ykkh@TKladJTB)ss<|N6t(KB=L+07uvyLBtxdtWG^4h-%AlX5L zC4}%zE{f#F*jnLfi0!O$qwL+f58DYWiO=^k!>h*S@w`smQxosWOtozDm@iS=pB^G7 z-;MbKmoUa0?%J6wJZrKAdi9TvZ6C&N0e@nzqk~gkpI?z^b`?k9Kx~*ZGjYa?g;E#`8M#Apy`f_kE@b5eIsPttp?}Ej(xt&* ze2~i`Ymdr?)ONdzcJ!ExfE%@z;dfzy3HOtY_w5tdAzy)Bv3^EOeSMLf9Cy*h)DX!)?U;56^k5w zC0i|okFf2JS5Qa*xWVNd6)q+%l~8^nC-)K;YRx;|AM(*r=nc!QSJ)e|lo4C-lv{R3 zEUk5qW6m~@oWHk^y4r;C09!Hsb4;FVsa3kJ%VK_0?QLSJ$BSr>0nKYPDd&#nikZ)D zf*h4Lzo}r2;gbyXm}H(8s~A6KC*3r11_i0v#t0*8;)L>|U^xH6Wc^C3aW5!`A6u{r zotl;GBt`+Q3JP##OlzXATKl9C(@<-UTIl&N!@#6*72ZLb)prgBXp#YNitY@lUqJQ3 zv>u9EK#yVfJZMWv&5Rb2pUPNG8R34UAJ5ycS?duwIfyNf#)reuB*E~VH4QWJ6b>$y z%wNsxS9v>&yuObNwLc1q2G!`4ZNrVu6BpLpluXu=%5x0=VY<}C%^RqhD$an3m2 z^D9No12B@>E|^;+Mo>dI23ojau#AOY^?Ml!w+YeV#Jr+fibJiWH+n?88-F`{7eRQ{ zh0dSp3&|?7(%U~(7nFXZF3!e@q|Rx+X?Aru9kGK;=P-RE;_w;DJ|h$OlJp=kvhm`~ z1cgbCYDxCLKJs0|bM?T^Wf{(;r4{?OZl?7rWfPyL<23!SWdvDO;e7qi$M*R9{HXMHsRuJyd2g2~KCA^3l$4^afc= z(s-&SS}~qWv;@h9FT(8qaPig3gOdgGU%<=3ny-r+?(B4B$iyzx-xb%ld?qjJk zbDp_yZokJCHAxq_vwgTFx<0BHPg#k>CjDwr&A2h(X}Wc2W4&WGNnh~=3@`W^&y2Ap z^?7%HFFCFCUOA(kb#Cw(tN&qbe8c(A0u#KmoA@wAKF=I!cTC&jg%ZGPG8r=IU_oq&nDn;u`JR>wt z5a9&buFR)ZKOJtq3rp>^q%}|EFa9dQ%y&97zgEv;&g_SKqk;X*7x@gwvj5(RJeCE{*@*4fo0X_$USzeQt)0|VFeQ(cbiIql@ zn8jvU_ehhdm$!jq4gNEstY`H#Zf(X*R$A@Q0;EkiTUEs9n#+su=QhZxy`xWTw1!WH z^^@MG!M$q>b(#6$Czlvc@-h{BY(~enes)F}osk$K>YHDveJ|ho^}Z-QcI2UH(3d z~8{p zM`ycTwTPP@RL`HPtrM5lo`9~;gKnznIzS@Kp}rb<@6w`f42imE2gF_VKQqN@Z_)9@CAq)RJnCk|!9c3)4Gis34pkK1HOLElmJ34i1qjI& z5R$T;VwKiZXu$w(3PH07hyVjj!YH^5IX40*MMMfqG5|1EN2OV=PZrU)d%IWiJngZt zjA<%~8if@i2+;z|qqRxl&x&4O-RJ2DwQY2@iA-aBf$ z5Ge0C*D#*=D5urGJT8I~V)?!|0AcZ8Nq=ZD7I0Ib))?L0h*-w^2Lt02-C8haYq=kz zQUn*j!r&jl{0A(=vi&F5P-Z&vIz5Q=80XeMk9i*Ldg0Uwm6Y`#Zn(WmWqN~_tFZY*o3mupB!2|w85_~W+6UeIl9KNM+HBKqnm z>7p=DnRtdu#!o{};0eyjqud}K_GR*DsC^Vv&0*Luan8S~I<>8QcG9HXXwD`iIzhRS zC`n))hO)2POWd{9n->fygSv-er;98v%03PZjddT-)>i->bTADYz0FxV2iBPEZSRKJ zRvEpMQpm{5@yMXeFx885TV-a9rS%e&gb`;uk`bVX?ML%Mh4t)8pnCGWV7SU=@9j#B z@4~%-YqeND+<=eOV_J9K#?9R#agdyCmkup3O;8!-iO6*g9-2bkFSABbAE}5}Y?h+a z1#u%e{MXN=2*^B~C>> ze6VIkodv{DFZXoCK%c87w?4nUw_-9#`_cT6JVI@XQc7~@%=n5`4JCqkvc#4;EcJ;c zFxAo@N%mMkV}TfhA{F8n&IJRwdU0840Aj@uD*Ot(w<+?%aDJ}F7Rq~X&*nqH(RO*C zD3q1opc+&2VJloH2XE2HOCWsnm;F@rYfUDCCAq|yKKi|b4xg^&77XH#6kpFKN#lw4SM+@5A(KbM}&or z=J-@K!fYpYx&NK~^#vgwj*KG7F|vxVsB6#DYOOV>RIVxE3!)A+UawgnzuP7+e)(0+ zW}E!MQ$zW4K91I|oq4gV17x0>$5yY!>ntjD37rY5bSAdHp*3{vO(d7NZ~41Tk{z>X z=`Wz3LJ8mFhrg>oF3%M*knO*40L+HLf_dtH1@8Z@^=CaB-3^X^XKxk0jYTFKox>v& zltIQqf@AnvW0}3&MSlu52A^b&mZM9_h~5a5jQvJ|mRDR6B43=z=V!wjE1#CLGkrW%e&MD)B#z2Ubv@v!c}&e5WPNf;a>q}WCgjRX&dpMu;;9wE z0Ec^~l~$)`a7(_La5@&c+Y{Q%2|T}Db&EbG#1&;nP32!#$^-inhJK(}J)c)Xz`9qo zoiY`JE77hC{?QeCp?JDy`D*3RBI#;VU*J?+cD-nnWY=cBNbdSM`WVj&9bYC%rs~lU zHl@Fzl=Z$F;jSe+eYdb4Ut%3!Vl0*5nB*mvNV>C z{8`GHy3H7~qLu@nt=ZPE;o0Jxqx!2WO!d9_+={Q#ucwfGwtUwxxzo5_(_=t88)2~7 zIzDw6oP&oz|Fp{Dxdi(e_;-eEcKG^9Nw?rRiK{{q`o%=+VrF36xK7)dz|%tOa=7xr zp-*A|ZZl!|$2O)c&10(C(mx`ST@w!+=Nf)32x+w3`s1;y*!j_Oi90SSo2$Yz?c>Dn z#Guyh{+(YpHi(@-_pom?1|=hj6b^Pkt>#&U;gc&G&2?BQP^~s^Gu5jxQMCo?FHnWP zVtbRXH^!fNK}D8>}IPDwROLDL9ar3+fMpiB%~|H3wDQMtcYck(3V; z7L)iJ%`O9QzJmw(-e2WT9iupL5u!y<`zY}k5OrHsMW2JJYHHy#m&|{6zP~ZD4fD3s zU-X$)g}E!1hzT|Sn>$2&B11L0;6PvnT=p2SHIKnLH1GfDf$!ecZ^Hu_cv?=(s9_)Y zwG;&%Tj|r0(@cK2-&`p73)JJkmrM+u4h=MWC@72QU*1skvgSlAA>7A2HI4&99Tikk zg8A##UR#SqES5A*rJf+9D|>Bt=hx$w$W6cPvJijGD zS5VNL6?T0bX;n+h_dtA^0`A9shI>uwwJ`5q# zu$fpDeDhsr`w)K2W}P&EY3uN%vB6WArBzoXG zd4!dlWS8fUTryqcGseHcuHTu&J=C-4z4z)z!03XvRc`{ZjM@~#7;X<$ecBu7pMy^P z?B=P)1s~@9QE`VmMIf)}H<@dF{~A(G00$(;ToI8qq-33&yE48jX-@Rz4{68k5NE?4 z-H0M*3YpBvQtb-w^G#>){K(iytTh&*?u1Vh7)JLjL&aX~DfZ8zJE9)guxr_OiHB{* ztD#1pJWGFH}L zyp{p&~o#6W{uu^8;rb z@9uvrlf*FT)=5{I_RO`F9G$2=CAk?tg7(zf$mzzmM|th z8+*W%ii9nn?hds6t|2~Q4wRceI(t@P)4cB`Av7ON(4fp5tKu#=Mtd&SgwwF_oaRYU zF@oc0kZ}Kkem90MHp**&R6~*6!OlhW$GVc5=|U-v_R~SFKeN4L*}MI4C9d^W#O7X= zK+1mFXrKLDM!dPbc7>G9+_O`-x1vEJwb)Np=FikblHyge_>U2Gp9QuK!N|g68sP_pELOo2zeK=u`MRgGzNIsi~hwjcy z-Tn`7iY+%rmO(s`^X>RTXPscu(3!O_cEwUNBXs87m^6;{@a;>^&klp*hEtc7CYJd;o}#Sym~lyyEx@D#dxbiNg_D0deu9BK-ve&d+(S{*&iy=Xl( zxz{B$L11>>l>AX}(@9&m>;=w%y`%{<5p~be8u9P=`JfPxX4TgS_|0JGsrTDtGk1 zo^M`*wS@v+Si2S#4&LcN?Cw@Pd0?1~jCm_@ow4>PXi%zAG$*CFqq23lXSiX}#yOU( zNqRY0+~er8Rc;s|ett>e-q4^-*WBcGvXA5PxZ-+930wTfH8RG*O~oTVzo0qeHD)`4 zdj8kO@Ex1!seT#@3pI>Ft;lA#xO^@osc=`2zn1owpz?4a?crUg$zQ6F*i`j=$E^Zo z*}L*%v=D(*wD09Q7jjYTBsh6=8P@muH%0Kpb~?6XgMuh*3U|q$NUS{Tb%wpW=00k_ z$C*M>%i`#Hu&7D}<{X|H(_&0$vK&o{0}i17E^Z9J#={*O>F%ivRqZSv#};~ZgYAk( zY_azXFE$@yYH3^y9V0X?PVg2XwC<>MT0Tp1xwOc+C&%fUV;w#gbV=C$L68W$zRgLN zRsrpT=-tId1zg8)`-EETU=%^BJrx0t5zdzrtREu(_KqXly_k zT%%cayc5`6p1kAgdD3^;hC!+TxaJ`wtchPS7hUGkP!zJtxi}cLCeRQ&`3}TuYEr23 zRfwps0!N(Y@!VdYG`T&$UA$-osbn8sk=OblN}<}%yJUSRAH1YD;kB4zYQcNHO$P|J z$zFR?cHVqgIcAM9VUW~FXxQI8NR^`L^U1&hJEH45R*9+n+u%5o`T(ER+6RiA@1#;x zX^gTgf+lN}RoU+Rb@bM#_euEN;?~5SWs*XWz25JC*|6;@RE>U>TIjK+PCS>jRXeNN zxDOgOdWJR@zJoI0gE*AElxZ5ct-eENxkUwt<5Ndnr0*)dF z*{fk*Yq}E$y!&{jr{~gzs=Ruq)+M*3XinUKn-y`?P?KALeH7YQ;(b_Uq zY@<~{}C_| z0bWcOUx!TC7s`^%nLhLG8Pf7aa7uGAk7a+k|C$(?NO#@?m9^`Vg99=_ZJCzbBJS^> z%a55h>8iMmrh z33tOm%N_Nf5cl*b7dhU)ol3=(_nqbCuY1|*+2o`5g{$A!DX7icDNp=qHQ@J|FV+kG zhRkPSF@xiA%kzRc3ZBPaEK0=)HNZ9#*h!*aZcLm$?OyP)A;=QrKR91fevdLsc(vIr zYJ8wpURN@#APihe1p}yY7MM^GbIPG1)W|u1n){wVrikO6&}U!yv_H)?9r(Qye_m&n zO#IStkScpDD&K1;lJ$&Z-hny2f~|S`odD5P%U|2Wklc})VB&qJ{%fyBy|-l=%C=|` z8!h?dh&b3g@KpX(^s@9|uX^Eye2_k;k;IdA{!ea=!Jtun-)>Y-o%_HK@IJ&d!z~4)thWa@aac0%Sse*X zz0$5;w&vJ)IXw-M(4FZ}pTqI$e(mbRIq8o>JNftye59hMpoS5@gjqbX;CYUc?h5FE zez^anX2@q!qTJr!Oy}q)!nMe2=mOL1`nPtYOfYZ6s0CnNF7y3nk-$D5b2K?O2^QEG zsnXmipRzhum$+j70Fk_im=@7LwmKhpm&k21y{$T6_Vjhm5Ah0N^RyH5@2%i9CM=1= zhKMovnlmncPPLfl=WI5@v8WyIa*{vik_rPapbYRVR)7QE z!`-n6h!Q@bTWQ&KygxMyH5K(8Uo79;!(b>jA4?@w0gT% zpY3Ov4G=#GBsFyyL& z^GuhILI*CK-Du zFfm?kM3=nlItu>gDk>NIo;QW6Y?_Q_WuKIx=yc03!jOs@Sd|=;3--;NDPY))%+F%V z97^_&&r~gWq0St@S6qwE4ns=S8!DvLIyRaomf=@(=EFAcmtlcse$3Ii$IFGNEL{Q1 z5t1f4yyp&&XT}*jRc>w`xx5$VQ4>YlGHrF9-nSro;gHnyp?c?elF>ep3=O~1Dd8}g zWi!ZI^41IWI^Ud`_4-V+GBGyPkfpD0e>_)QPROANj_+nLNOps~Rv$`L%CZ%IS~dhv zPc55T4o?GTjt+2lJu%o!X3~S`sYx=YPMO!~cT!Bss#nFdV~cwirS8NhKEM&>{-hW0 z{Z4ng$pm$T9yPp2Q?Ibq{lcQeEwHT>O(lbEOQs4t5^aC)xRfxrMUg5_iE5OHr)96) zI26sx5+n=VD&XAE_{26U^1!0%JNgBG|h1P+R|T$x(N=Mkdj%j&Dihl)A^KGANsf zqOlE%`(Zi6sPj|;TNkLKX9Tk8)*aM>ib4 zo_j-OdZtTS9K0X+lsPgG#i?$zWS?5AlajAWXRcZl=hp&RN=atXTG3|v;)(V-4P9vs^{`j@Zjb4 z@}N3>Geaf0ZTy(;Q7SoIw6Ekp^}Z#^q`AeiX{Go{w%12X=Ou3}qOAErW*O^V;)~Jn z`2Fgjc=n-i$%S@e33uZ2gVxgs`)!uNl6^nIjRjqrV*^6?v_hv%ZEJv22=;v-dDT0% z(knuQvAXiQZhi*GXj{LCh!xFuA4N@jgN=2o4PN7K6#0LuE(tEZ`UA zU=HA4XQP5ZPf^XVGdY8<#`#GuaQVFoAc1r37X)0gaED{wixS_sxU|fv<4r(y`U9LL zM!I3Qj?l~KZ+W6~*i3}H#kbU#rDMn!@#QD(Kl^WFy@gwoi~l~3$2tZgB7%Y-Dk3c) zC3ys;1eBJVfPl0E=~OA{?(S|zZz3@o$pM3n5JnFej2PR#&p7Y%xqjF6`vc(Go;|O+ zU-x~#%#fx(g2x(Pm>4Q?Imsn)Ka!idy`G=#oY21;QV3AD2Bh5OjeNj4x5|8$?k_P< zb*sOAY`hp+p(mnrM@1FJ1t!ojA#Ys-c3S_on9GXWlhzd?5wTNGKPB8$oQo;c_2t1p z01e({Wpt~AkMB}Cw@4#UOKJh_o<7ul{Y)b3hsy4A2KvPZ$qBJT$pSV>me#tQ{!KoE zQOx+|u#Qp`Pko6AeKm?yp8B3;_5JCU=5TS86>4)%n%UYLbKmq^yzT__{^d@CYjOhvXYl>>0Ng0YUlk#RpX9}{X0#AF|S$F;&?&5A>-w0kqAjZYc>ZXODI~(2_MDPTVC6mVzT&{0J*El z3+MhbQzB)c@%M;=^8u?F`n%`ad%E0t$$jyWh|=8$25>#-f-@K&iCv_=xVINXK4cdL zPu*mb-ys&?YVq$&J8zcGkppTlBBl(Nj!vTXvjZ+ve;fjD0We|nxe_(CrPnc3Z-*#! zAp3~RfPU|7xQeyR?C}C%uaLWc3bRxhP7xDz3w76&>Q89;5qt5)B6tiPK>0?uMW}^aEuMLL}=!(6}Q~#TbnG(`0Ol|Zx?FX5#1F2%R z!OO8s)5W%nQPD7RJ2X~tkI7=a4X7ErV;sg-{Z^lW7rmV#0Ei1Hn25BeKuAPQX&muk zQ<3}k+?fX;8Ml**0vLSIB=G2$9Z;hj4Cv$iOO%DeH%*0*RDLNU?%#LmOrx!wW^Jg^ zQjhC62T?Cx)8v=ejaN3CC@e0S6#Ov0F9()Z<4}E+bfWz==$q&f?lAu)B$7kvzKJ?h za`{92=%ial*=ECBJRHR_Di|tP#>wOFkZE4vt1|Bcg_ez}zAxB$+l}cQm-LX}%=?60 zz3rqfp1r+C@V!6EbTe}^_bhns|E`?b$->%vQeeaIm=&HhkevL$xk;^3`==GI>gqy! zQQq6b#hO5^+&zn-PF`a7?}ho20;bxs}^egxi$tY zM!0J4P%mS+l63M18%@S!r$PT{IeDC@T1)E(0EzPpIZJi7AYb~9sTr<^rpyTQEZmIm z{M+5IZ!-q>oVuO;{X=0dLnp#%?6W2gw*!GC_K1$9I`}QutKoU@c9PdLL^FY1q`%## zWlOGlJ}mYU$KNc$=IwO?Ko@0}x)9Agd>@6&2k$y_0%_5Y?1gLkp@7ngqQKv;D9DoR z6^T51>>2;^)N8Om@~vH%X%qnck!-sH6%2tsubpuHHkz>ByK%s}uEGZ#Ai`0*+4YVmWtws-^Z0(c^dUWk_m$aDjt^dC_wOWyk=D>uc- z=B{ACKV^~faAK0nC?}6;H=|j}WhWVdpb%jw?;Wz%^>>;trV7G?U*H82is|y+;vlr`W;Vo}q8{HBC5blz0aSgIePG8%Sqz+c z)V}=&^bZ@^(VndHFTx)7ax8=?S6PpxnxgnwL7Ojb?EBzIm>*sJ2IM~!{P}eH5*Xev zd=Kyn0$xOxfA@)BO2A56nGM9P+UbzzWQ8!2NLAtIu>oK?;o{E5Kl>w{%|=jwmq>dN=X7u{Fc4O)z2=P)$=?vG9e zJ|wLxBn@8Eb_8KItj;J5_iReL(a1*rDu zyu6Q6d*0|Klo*uPXkRjWR#*L+{#FH)JCOFTV{?Zv6Jc0J;~VW}!4;ED76tPRfM9KU zY}_f;4QcPN|HJ6@uHN-a$V|%m3vpLAQS8f-@tS~ogRV&kiCFTI%=fWn&TRg0|8>_+vu)}4Aq+vCQTrW+D=6`NbazvrOm#()UI)x0uNy!{5do-i z@)wqwD(=~Twj9dxM&!A0rKSC4{dxoCiJst<6SuV`bn{{WDEfJzje3PI?kYkcFaIoL zbT^P^$w!&tf4a<@6+rU=a$j4GO^MZMy2uh<@)xz%T3{PZ)d7=8#(G6by;j3j+SvHo37-ZUK`T^8oHart>j<82lwv`%fVr8XoY^=iD1 zK9DV^Kromt(Jm!a_IiTZ0=2|*HnY^xhj4!gxQ#ujic?M!E`1z+ky_4T<}RH!Y3=dm zm8w;l3qgnZG6{1e5(8p5bd^zYP(cC`Nvl!TU-5&~7Ao!@p0Da=`am7BCKwMDQ zJn>Qmoxt!EfYQ`F(*_We2;LO8q4RW?S?|=mO0#0zOLz2JW0~c|SF7Wi-auJPMcO!5 zh*4*SOs)rYAayK1xQ0>*wCr{I21(9@T2S>rotGV59R z`{|tFI*sU-o~vg4H!amA*9+tU#|poYGp=S(Mfzua&_N60Jxh41d=E!cqPj+-VVrfV z6;b;^IM5}^_&`oxfv2Tt$Td&d&bdd8=|f1X)%7%#<>+@{6o(!jXilCPeZ<|dj|kHG z>?BF`w+7HfAzw($oai11quvhrY->R)Sw?G6xJDnjCul}NJs8t!PT>zENuSfE9gY|2FmH*~>#cwe ziuUydTHJrU`NXUHa*lB(Ad7Gfxs0%9l)zLFCiOiorr8iludD&vp4avaCla69#4`^4 zD;s``)_FNtMN1{R`Cy13YVUfWY7zG5v^fgvwFaKwr+RziKW_NvKLre#)}_TIL%BiE z3vLxXen*cANV=3WY984|qa)c8o+qF@hb14a&{vo#0^<%e=XinI?yULB{~iK3P6E^L zZ{GC1W#Bc5w4u*w(GY#tRh`-JO*a{FD9NI;oM6S;usFpUu(uhSjSa?oY?7cvq{WG{ z2H5s^no%!|%Ye;)ztc7p)uOs8t?XcwQ~pxm^>WV58EK1>pK{z02Qg+gAjqyAd`R8d zVG=dXi7%TjR~s@?G=HRw@}!}B&o1<>q6Pzmszp4oOZu)ndKoQ zY5v{BT=~)NO=Y+zf>_Po?kB6Hx6>6%V}%}Bd#~B*q_!_!e}rkRRcH3lY?lDS-Tcfs zhO^mcR9xlB4e42DMmEDI6)J325vKa}Yy67_G$fA-z!fL&PhEh4@9EUcWeUVcY5hW> z;6CEn>jJo5UIOH+LO~HW&xh~Yl%@#}ws0S?S7h*+K@J9@i?!R{{~GUznPk@~O13Kx z`uW@8Mi(5sc(wc#C&MroT8?g{pE0s~v?2-#yFXH7*}Kf1CmJICa~e}%^SeU zrMS3K-xH*h@$m-wRT|EDRNaKJLDYp+1TtXvnJo+xS*gm3a|iHdk$(Wqd{*LF|EdfX z-F5OUW7SLCE8;8sOjY9p@kmc{MR%Y9r;DganbX~2-Nv&e=}AZd2)fU3rloPEB(A8x zCK~hbF(a{&YOdqV%AdWjiaH3iF5Vw2!jx)}9^7;|odcE>uWnp;+Uzbv8a&K&UoOu% z$RxM!21s!jf>B^k)UJbNIG99>J!1zN8cZxMfjMHL}I$MEu>w;HsuVwHltFcI?=3{HVKr23Vh)m-gk6f}d3& zoYPI?VF305q362#EQytD>hxxeUvO#5%YrjLX^(881 zijnNuIMgE@T{5x1YevlNIrfzme~L`BE8A&|>CQUs@VGQl*#A~a#mBQklKjen_LM)? zu$mwG+vw@JkGk@QJIoLYSdz-#6CrQq3IH``%nwTZ_w~*@+pb(J zxR*HY<2{}?ygWHo;}$Szl$ysl_=4Z^Ph8`Q-kVsg3%^pSaqfzs$e^&T4M^|g+(t^R zxb@H{99;}na?C{3aQvipFg8upQ^5`?&0-Kt>*x5{1ji3*-HH~TgvX+Mgc{3TBiz{H z*7X-NFT_;Oy?Ac6zN-+tqM`LN!iTKP+EdHt6hr|IE)d26|_kBwr=Y3Iy^twWTSQtcT@_Q$?m7c!1r`au_ zaE&V>4f1&-(r4}@2VkTLE=GBGlZ=bY_M81@jpU|5c zzfD@1@xay5Cg*R+_~IDpZS-Y!Q##E`Jn$^vKaiW=j76odJZ#qIKN*|vb&*aC>8PsK zwiwWR71X5tc;mMR#7NT***GJT%Uq<@&OZl|eeTTo0@I-7OyJ?zG zI3lNl73QMTff?WHo{?t*;E9?uV#Z%h$A56rGL{%|S zW3vriqUuYlOI}A<0tBh27gJ@XM7n{`dhhL=Z#u=rP!@c)q@j{_?JP?5-xCGdvpC0U)hwkH}fuhh{21t#yT{;G#Q@g{w3KYw_8O{?Lx z_r92&lIag7e(hh&e@3V)L)>Af6Q)45$^VEFrvucyUz!1+nj_-HrypluapCNL&`=-) zcezNS;m1W0tYKx__up5w%?MRK-ZWjPA4T_fbs%?3!peypv@D5jGkiUsJWjxdE@o)~ z_mo3QWbO1_wjENzEOb)*ZNb0&!l#YU0MaASERAgENt8beI0EcqC%PC#?96fSX|BSZ z0&oW=Ph;DD+OLoHv`2(${{~Fdp|CUe?G00Xf_#O|KGDACxoZ1~T-TXR+O^>+^ zSs(o|bwcU@pd#H3N5Eb02I?3SWM&ADDgXo$|7Q4qX4MT)L!W#&wgr zEdE7U`(N<+7^BxsuaaelOb zZ8~<9k*IP}jXmLDZ?%JpEo++Y&I;YT=6)UM6PV6A>LT|&_eAv~nO}QP>FatwxAqNk zV_P{Yd_EmhTJpZ$SA~(~HbCo4;iP#_ol`mEr0t!t%KX)&KOLzm6?|0Gnu|Yt!_cIv zZc-sX#*Nrh-$^O)Rh^sZ{@cE6nAY&B(kIP$kjT&~qm%dEQXI48H0b+E$t&z0L8cA- zY9Nd1%fH=6ZaH~}Bt7GE8P`bF8UCdG)@{t#eGaen2i2>KoQHSV+>WT1-y*VZiLh$&LaRt^Og8sBy>+x)%6b@8;mFU1#MGq8LuLjC zMu`jnkS2=#n=<@%%IGloEv{WEs+hgFJWsH=EqG5a|6=%Bsn_WeeX{_ z>=u44;p;Y}N!ltGaBZ00YoO`+Eq7QP%kiw7n(EL0al?|dmSSdb5%&(off%T;CCz^a zngpu8>GP$=Mw>t|Tt~UmjO>pU0thG2@I*;as%YnU9sbbwuH@(8jLeS0bj7`Q^Rv=? zvyZ;i78TRwym(`?ewn;aM=GW>oh{;@JbAp^nT}%f>I*s=)4VO{lWsTj<8ftMX61Ws zK0|yc!?jyC-)2J(mO#Uv79F4#U*$bd3{rE|P_<%hxL)5l2+%F>PSCv`2QY+HY7u)MEc5@+sSzkH*7>aIYC0Q7t`G8; z+irlg)63Si+!LaTw5u;j(Cxfv+r1&5H%qhE)vl~bKr=ACEwHa$H!F5zXp%8PQ@V)iAxYN)#MjKV zuHW@XAWtczK?eVlP1h16e%R{)Mo^ve?ca&K?@9AU>QLs5(}^w@yvE1^aK*lAm5f_^{bo{n-xse<^`YVD55KUF-FUCcB8f@Lvsv>*rde*rwf^1L zt;Gz9`ePmbP1T}`<&6EvCnm;F)zBuR_D;Xc6N)wWLI7W zaF(J7N?M&7Wf^&aR}$7gi5^J8TuI%2O{#U6e^W>_>USO5?VhpgM>qU1xxDqBL;b@H z6P4n(|Hzd$6|kQ3F^}`x1JV{{Qwt|WE$!044?Ds^D`~C=U;gYq-I2bt@7`nbV%s;+a=svq0hxHtDx8ITW3@*s$Cf&Y& z7l4rg2>A>~eyRWn6|p20_?zR_o4*W`ZHmh3L*9eS=JXVgxXqUK+i!q(ncBFI#y|WNEi~;~&Vb^2<9uw;sKx{wf%k;lUc8 z!IJOJWX2~v_1eR?Zit=vPO<1F7q^JC-Xye`x5R z?hXJ=Nj0Y*C2Z~vgGcw1#484bO;*-&yA&i|@U_*rAJdp#2JGk3C^L*7pdHg8kcMdR zF839@Ab)I%4^njwD#cBVSl+;&&K)5oBwoR!Tf&u`-)8;t-l}`&jJ3nsmaggEB}+1a zS4pDR*eKEYb}^|0uu#in0(s<7G|iy9NlL$-*UP)Sdl`t*QiNTJ-h7|al|1?|k@H^6 zK9g&8U3>;R!>Eg4Zb4yi@JJ(*5?){^3EVK)P`Qa$a%ev2pf4qX7i!G;yBVouzxG&N zYak)^CVa2K3XT$)?MpZo(_}h^g~Vrr_~-rA@AFi&YznzzeghXv@`C?or!U*oxHRAp zCT+P|z3~@~e|ooMKEUawAE55(%AeF!gUIB}n4QPvE_B6JOEa}?n5B8>;fERZ(OWP(^!fAdgm7P{ zRv?{Mqy4@*J8sXGFBtswG!S8*S$PTD5(EJ@Hk)5|?ISGB#S_hkzP)4qDh(wL5tU#H;E z9pB%C!$E_ECjf6**@8jkz~HGby~79EZ20q2ae>WTe3Cb7toC7mE^%$RP+XH~#@J?M zu5y)e5I){A{O~A6h=<&^J`IX_ereYI^8|NjEJ%~*p$|IVwYLnPE>w$I{@ov6m7eNx z2Pb7NI1%ST0ORftz($FQ~=U8?0=Y2Sc$-D2?(s$^X-e@G|b;c!g z3kf83NDh~o5Y21dl0a?ziJ9Q*N5J78ohRjDI#(9^SSsfmNj^(jDg?r)!PNI^9d%@i zq64po9(_~xEs3Z{eWaUZpAK1dmmO|V4w76aMv^11iOf$`Iy5S#Kiiw{*?PzwA=gly z=9Eu@8U>`6^I$+oNP*KPT;fGn>@ZB)8t;mApJw5t(h~V^In;c=4f}N^4?G?6E?Nh_ z)PjPemcAw$8v`;Ms+Xs0Td?%4|3x&!4t*R$X`}t#o6kZRsQms09PWK^{%i`??C(r` zk-FgZaJiE`^$$_RA)NvnJKGN>4`VanFJJs!eottq#)^?!D9@K!b2)`Aq0xPQK%wNk z(KLSKrtbhoLNa)sQQsuET3PR+^0@;<+;cAm!Mf_QXH%JWteJClN?sf7mod|Ue??`e zFvuL0mdv@(fll{Ve{ba!{2lXf$X)fK&$u*pUP|E-AgQ{)Z-2k+BVgN-To`$43n{_h zR&%_-D(?zVxkk^9cf1UCiePp%#}?~Tr=Aze^nUZK!9t1a@F+F}mbuYjn{2TEnW_`d zpUI+)faZtVo|16z zL;pF6;+^Z&HZm4Z+6P3l4Oaa>$Cy=CHn5Ie5V*71m_#%kya!$;9yZ+0ccK!Hrod#G z3c9ewUy76Ldj*98L!sbGemJXBRU>JySoBXT;L)A+l#)rfQhErz~0p{Qga0m-BpPND{6R95sR?5l| zF8BVVsfzZI(oR?Ym~bJ!AvxqN=azf3EQ|UK^5FK82Pt-%{WJC$lbgE^k`VBR9EO7WEtWXNJ$5)z%H^DdRKP8c0ErAKcAS=tsJI{)hVUd#Ok zBNM*oaPJe-YZ#mHl>0QH?J&>0G2-=UI$y03Awo?cFWZNviJXtjd34dQPxgO4ctv{1 zt_o)e{F}qDW3gX&zmA}eVSvxIdq&P_9|!6p6vArS{$3lPNq>{(Mj|9zPDVYyq>L_g zfO@{KhChwR=>m(SMF^IRmxG%CKcfAA4TNy0I>~Vf@jA0c{%_(^E2PvE;m$)Cw%(W+ zb8HUvytl6#f|obvDx2W)RHeN;N~KZxgbpR}S9|A`DP-)ZQ~9JBtv0)5si{aF&TgV# z3eBOY?HSpIA-?-W^OZ{iiTe;T(f~`~G9%cG626oFaUgtHK2Cs$2yCLstPGY}Z%%hW zmPN^#Eal~)PJGlYc*bGgWUI$vNdNTQHtoJZ5h$!9AX7J>(dKxjmcMPg9TZ@9i7NiT zUh8di1j?c37N8uJ2A8<@YG2Ct4P)^-&hL7~dO@~*69pp|0eeb{2o-45a8Z=^mkNNk zWH0J_?IkjCjI%Dk2)l4fH+4yOnl8dRMTe})p_^x;D*Or4x!Q9g{!^|;DQ9FRV zy3CKEf6hqtN|+$C?R8w(4|3ywU%D!@xa?vadI;xR3V&yoaV=72<-=~KZicgW8Nj%b z9ibovT4`$vVc9cc^jdd=oHT#5`QQ?oim5MUeW(z}_~$}S+Z+qnGd&ioe9uk>#Qz&! zJSnI7gv)?TdFqxkz?Ht$7eg3B!VUII_&Y>KtMqO~^>S&n%;=jz{F%jcvdLY%4@I_e zkEdoDe(2IN957!l+1bnZ+TkPFve>g3a^R=1S;@P@7il;3prVzGN@yJU>*;;RnP25F z{icNsMuR7MUaGean4mAF9Kv>`N-1UallAEU^4&XNB0n=8FJdeKzu(f8abCyN+Bgo8 z&Y4>gBDMf*f$D)P8tQyJV2OZHrg6igX|s(9PZ>sldrw8hMRDVl?E;Phl&T7APt3_I zr|>*!-&AY9Li&hfv~2Y8o`RDXLg*KNnfDvN5oMtYz^|ubK{|~nWdcnR(i)fmu8Dux2z-cFPZENrjEUY?Q=8}~=s~M9)r>Aio>3UG7$;KPt zjMHLFJ3?PqcQ-R=M=VZc5}q#6dG5UR`k&dRc%gr|euvKCD}}}x)S2j-jHZs&G6Ok0 z3w9w_WG-`=LElRdtPnTWrn_Au!Wt`Pfr}19&418X-^b6HsaEsy3M+!(2G}Oi`Y=tDL+BFvUo)03H(;M zzKQl72MRH$WDOyTkzPCn^PGZ_vpaz@#`*+mnRbhl7ps0!tP!)on|_=5f8-0pllHp| z-Y%0ny)?;OIs2I}xgxwbt^s30>xdqA#1ei(<>J0pdJ0{(VBUIvf@J;VltoOA;A!LS zyv3=p?jyA)dEOtp>R_2wP}^c!n|kLSX%Cj#P3@YHC3^!14WxAVj(w;|E}#L{PB+%RxzR$Xx(J6DtnqV(W~f3-U3TeQ*Z2J*04! zRwwRc;wMxhSp|7w&xIMc(uv^97%qb195}lf@$4(rJ?=^lpg6nMx6{<|mI5+|Ry+_4 zd#{rvYI|D7;TGCw9-914;ezaOv;wGkD>|OZXQ9pIAZi{$$Sf-bx;;tzqyM8)Nh<_zFQg^ zv&as991u6nE-VnJd^=IZ=$}>+-9@@PiQ@=*vfiC4jpo)pOtj0kRxahk9#yoieKo)y z&ovvn-l!En92i+l!1|apQyRgd3lzw&ZS>IR5L8KXuQ9P&kjp+m3reqTVwTv|7JZG; z77EXbg7b!B9u#_OWv~zLVvUL4l89rhZE2RGRDJSWKYelm;QZ2LOVLZUj;MA|skG6z zfQi*}0GjeMR^at=oKG`TyFZSrHBsu;`9)t@$BjDbmdNg6k=uCUP@z2e>rj-0OLEyf z){(MACKb*rPC9s61|22RbtBlX|0R1jl{hB>7>OWkP9 zqW&RFgcNWWlG)W10h+w%+0WD`O}qsC^CA$Hf15j7g)?DvZ%1WgJ6g!{%+OF2>W!0Q zkc9pJUrJO6rENs$dClnZO94Rc4cyt+aK;nXQjsB-xH2k7n(JpUWh91z*Tl-ldggcc%0og;_`X5N1v-Ekid2oR+pAYm;>Jz7M_j}6TzMLe8`)9%&pCMrEbm|zpJI#p)VPg@ zPqWG@`IiiPk`;I>&5-Zh?E&<5dCryiz#@;zqfPzw6}I!5qSM1xD+*fU!mm!Cfe|J$ z{K%P3@ypz7^3G`K4PIbQ^pm7`z&`b~UWh$k$SObzy_g(|@N}x#q4rw3?aue1d}HAD z_2Y=UBhv30l)7mmQVHQZG5&8GBkkZA;`y(xKRmqILkU<`pXXe|vgh_6*1|k7{p5rB zl7_{GXPJqi?Y?~1)f7IqyiQ_Z%VU&TzX={A6Mu<@+qfPy=P`@MEvV-Q|T>;)&~~keFc7Cg(qv(v=USN=)WCTxWuUl z#YF2jlF}x{3D@uReg#Rd)csR^>-!A#7|#YB@0?NR-QfnkQk(LHp#8)u50N@YZfg+n zSlcf1TYQHU;gi&j6>A}~ugCKHFR<(w$p(@cYl1Cat=^<81b4qOlSeR_z&MLFpsy})2c6gM(}$rLPca9@(w< zjB;ZJjWS^=l&drcktCt~1nVblX*$Fu-3Va_Q!B-wMH=IOtSK zSv5LAKO0WWsXztK4Al280avwwU}p#|JniqYWR`|(1XaBpqN4X25aOuVn|yV=(x;8W zXWYm;gd3WUK!jYg9_CtD0U zjNb)*W#%y>MZP);zh+j+4%h}_d& z1tfefN=`DjJc)*TkE9|sHBuPlOvMN^dImASQA0Y>)-0M>j-s0ry>m*R?Y#PB#?A3e z24M^2s)omNa*+*oWt%zL_`o~S0a{c{I$d`qBoo|J5YW&~(<#?*%cY_vda?aEnbzY5 zSSJ06);Yhgv*b}bn49fZx>AX2{F)?#7&>{l>E++(uBY411LL}i2K~ZYene}4*N{$Z zF=YW16CM)9x9b(2N?Rq@(ow}&zi=Nyl1F!vJ?!!im~*{AymlX5B&4SAIfm~`TS#@8 zH(ZgS_8^(3_pfPe7~X~UsB)N>LMxSM4p~-Iq^p0Z9>+rr@U_gb{b-PtLO1i1W;eN{JA(@3M!SlbdIVoQ2*%9 z&ju16;emv)n4zSHYM#`JY%|rac78a;_uj^on`ue56IC5suibMlljD%e4V2f9x^3%| z{;@Qa2wo>bTwQ`^*4N*;1LN9ax%YAJXj1xCHh0?tMdI75C ztq`Vd;sV_;bP*VzypFHIb?5%C5Q$T)44z)=mpACW4f0s2e4?OimTcn#dOgEEXC}@do(CKX|rt3P3=tkOP z28PRUiuJOf_Hcs0sem=ShcN4`%>;64cYlGUi)@ zb2}Qu<=FpWz_R?Mp{0Fjl!kJ!o7=74Z)IZ0c}Z23!bTmtLIFs6p%?pp27T}{&l!#?{w zq>S+U@KuCp$nxC*$$ z9I(Nw+U-d3$yoCh%5>|ok0+{~Aly;{(ve=odzg%dw1vf4=Hc~hK7I5P58a` z=w$)sci~#qeSV>_+t+&W2$8vfE%z#b3dG=$X*ULbEWYg#_Rh>L1Ji?%yCAc-<$hXC z%@4A4*9UBa9LdSZZFk$j^lSuEN8Rlwlbo57==Cw>>EV8*;Sq49+~rMOjyv829E^Kl zd07AEVYr_8CLM^VP5UNsquzh+Xq zX{PDrDhqbM6X*q8van+D?QGFX?EbU#EiZUbxDVEhVchmzV95lG{7J)AmHZ=Q5_g2E zCsMfJ*093~2s}9``kD6P+vmPVya4A# zNJbfaNJr}}4un2MN)dm1<4nTi_k)sHWMJgUJTdKjJn!|$k1P6{8CQRzzF#d9Mg8XZ z(i6qWc2zJS^7wpn#y<~V3aG_=U{<1?cO zcdJ9HrRP@Z&6kzBHQs3LM=5QOS_@Uwovk)c*q6fn7q>&R`w(Mat66kI5i_x1RozrE zdU$f`5@&}C^iDU1?QsO-n1;&MYj=oG%ZZv`q0`jh?kVwJL+lDd3qO&kFbcG3H^diL zrTz?PHo4RJjTaqmvmAA=%XsUJ!5k378RTmwC1Q7Gnj}wG+#mj#F*s#?8b4sJq+fjmt>{hKaIQHw_KV(}nWnk9qN@i46 zv4r7Sm&3|T-xv5My%XOZV+AintSs^ZX4-3bto!hm2D9_g1Mr-%kWUI03`C-6?jmDx z)*_>$v9F_#x-3!XN6wPCt{>ju{J)Fbk7W{yCq-{UwtRUd;2x9HK}Y- zthJ;cU1@b=G3uYZraK6xN^dWRF0j0_p8C*uYjpWN1RAAp&Me>(<0@kk#C_zkt8Jj- z;EA3rX^9!aO-b0X1`CjPdHGVP(%w5Ax=v(yZ}{JYI#mmtn;a+Se(q{xu@^{?Www zZbtOGO~-JhOBd80Q|L>EE_x2Cmw_o7sr<7^@#E~56Lz#%h0obxlMM7eY!P|LpGpzZ z#czdd`0REtkQ#e|*{x|F2d8NxKpeupoc(ptnW+0?npe*%@_OuJJ%~=Uf&U0xK(!<5 zuS^@^H+my;`u7kv(HFnfsgB$nbi+w3xvU8MdXiqH8<9N8B>f^SSz&bQ@pk!tI2??M?A}KDu>b7o5hP$EU<7@y4 z0ldvDj1M}fRagz1#sF`k{82{z;G=pDL2I3wU8*UJGESh_=Ck3@Z6#aGmD%Hi> zc?k@50-7uIG4y4cjFY$w18Jtx|K_8}d#9i)-!B7$I)$0}dE3)huN7KQl1bsllRUey zotv4c(;DEj{#4nPaYD95R+0dp(NV{76X3Wn3EM3)dY&c89)}4hAt!qJ-qimv39z@(bDVgkODk!8Qzm zE4SQ~4f`q{`rXbp?yV90l?%eb3O;(P!peC5f)ksH??^*22((&_I_`AyF*{sIM(9aA zQT~A+y1)4QQ6QGhGNYMSO^+%HGI8joOFh#teNNs8i3t=xkke1D zXyNKUl5qJFV$u<`&32gCD}GnD_dlAv*ugg5x3frO=+LZ~#7XT)d|J+1@MlRuT`oG( z)XPvz6(VyX=?>OuoeMQfJZ++P09L+l`*iB;PZ_YoyOl;2m5+KW2}HsnJ=(wvk+Rr* ziAweucn>IrnR)+eABo)mY!r!wR_5C!f?TinVmtrN^z<6oXGQt{R)g z8eXmOy1z=BG?@z2+pSk0TTea(l!)DcRIzj9#dR|tU=Xa9*EzMA9ggQ&O$UHw=wDZ| z{tz8|&8=qzg08R)AfB5@B-+r!d*Op^i&MDt1x-#74VU`&wWP{NL&Uzp$|qOvP=)ya zCxFXxq%NMrny~qkDu4f!*#w+yGy}1x21hgcw>tHic<+pTxm;j%`(uv>NW$jQ#O)+r zHaiE_Q#qsYIvNvlj81oZn9}!w6EUn!xm*g%-s6N5rE97x{Ry`DUPC%3mU0|el%Wvr>s)s*aUhG7k@4t)0^;@f z@5O+hjN0rMk0sHFQq~1Z?Z$|<@j<=G_iHK84fw3h+;;n<9R$3VduwzG!KtLBZ=n=1 zqMr?A?oxZs{P~Za5t_ati^F56YjLoiQ3_)=&itz@<-A~~z%R2m5LgqJ7C|G4EGB^` zLmQTF1%0KGHN94GyeN%y{qn??o~)mUZ6%N3<~fA+irUHXjkJKH^L5IwxDEt2Q-9#L zQxqj&fTY#jxR*h0ngBc)qx@%mS0Dsd5H9a5U>5$r0dsZ>Krvpw(P#c{5UXfuRD71c zxyGicF>vWj2(unb8CL3+n4fQxhL1Ew=Xc3=8_|3Hrrwm4`8lc{0w!PREi^g z!ejz}g;|gKDb9mT^6omkgRU?R#mdS+BApGb@6*%dYqEmc=C2n326X@2~W%VI-1S_yW7IpRub z<)~!e{kMkDaKZ`6kg9yO>z6NyfbVqpYB&?WYg&*O?!qb!mx3GoIq_4IudZh2Z5lgD z;>GVfVC(3_ndLZZRmQ<_IRxjCwvUsg+w8kw6_y68<7p@LHltZu*sy9w8 zn<6^xHG9~_F2>;9R_oqCdG@e^+BEgqOCA)mU00+fG$W=k#c!#w9U>)H*5Tlwy>1;Un%JNn^#5Y6$9#$~JC|e2MYP~CAkttQJ zA6#YQZ`bA{J%Lmi)|s=KW2A?_`zv$5*NZyL4*Eo9f1@7MvWVV3Q5smF%KGphx2Cu# z!LhCUh1PyA&!{FfvMp)mXa<>3b^N*9uCB{q`Ck406+RT6^lHhwOx>m0T(%AQ3E9<{ zY}m8A$KR57t3@7htMp!3p&i1>5>2-4+0AUZFr3TJxAaeN%SWzSDMI|}!L-!u(*L9B zssozbyYTD=6-8-_E&=JhA|j21BB^xa=o&*skQV9gl9Fzw5~CYNPZ>R6z+i)oZQncY z{r;Bu)~Vm~Jm(xVV&UX{(kX(FzN^)<9E9XVzzMsb6|FE7MN$( zOC71EFfvb#8C|ptF>6Q&I5st#@>qj_=~bwjA}5La*lK;X{?`0%*0M|Z5mY0z_ioSB zutm~lad?a|o@LBnsKN(Ex@0sPa5Q_zo+s3p-Y;T$xz=le9@z$6-wX<21*xV`z57By z^-6tmX8Ta$Uua;&OL*ULPMT%Tr6NTYY1Kj>oisns)gFHo^$_E>MTeo~%O1Dk@+OnEU*BYeY=>DfgA= zkxpgj<|LFWof>9*WVdGofZhYm2?!-Gh}S`1s&U9)-3I(+aU~Qbi(XXXGrJ zJUiuH-`R2bS(iG0uB+PEp$rkc?L@?5c*)0;NK(lG@eXt~3eM{7A4y#dFj!N$NJI>f!>G&_m)OZqZGG)kj5PFN+nFD& zWGi_-hW*~!rzZqlxKk~W-~IWB%Xxpwj!hbyw97j-_C?$~Vmn~FSYFrZYSuSnNqm}Y z9cHaYW@AI@+icQb#FD@#Tp0;7hXU{y87iQBYi@p3H1b$Jx6m!}A0>MXuz5U<5)Tmb zr$Bb!fHMm2C(6MTm=0_h#o|`f;QZHzvP@;>!$P6sXF!+BTdN@?%FqG?ZufGImN|3e z42=YzdnGSvGe@QLORJK_eU3`JK`7&G^fIrX z2fG!T9ufR^E;rO^2(vG*Sj?S%*+b?O=zSzLESN^h?<~5}Oj(Ol=ScGz;Nlw=vzs-k z^THbTHjLbqo1?M~d=I9yBS;fd;?$R_ko_2_jJr$9#1@t&8-!Oj@4ZH^uDHy1&Q&?) zJ_;QvH$I$Fo&eW&ffEK&V&4?#E&lGJEY5XRUzs@tifd4V;#W%w+oXpMTh{4BM$nX1 zjF;CA9pCOMdJWrsBV^N~|Kz|lC_Ekdm^BHhV z=bWEmdr&T-LHD)oMJamK#(t`feR{IK+QnX9mElwl-oo3w13r)~< z`(R%<4~zY5s1JqcT2Kj4KUNVDz>8a8{&C>U3G~FiU&dOg(YOJVae&#Srod8BGC8xj zyqzm0mu6N;{jS%d9aU<7519nm>QZMCX)qnpTy8WwG{Q!yc_VetzW76p(M?Y^*`)xw z26Z#L#Yn+Kf$}`k9na+GCu}THcSxp{q(gU(HsyjAzQJZp7Zf05K|GWBu+}{6hNuI! z%2GFFng4g6$=Xz=n!5OCpQCJ(%lp?+&6j|^Der(#_Eki*snYq-^MWH__&+~SIHW3J z1ehkMz@uttoZ>4Iwz!@VnApwNyj@d!*X!UCmB;~>U4BztCg9EPWduM}K=J1NKd^EV zKJfOsk@By+8mkOLC@|hK{JWrH-@fn0#$@M22MQR!0Ess#ku-+GqQyw?GEwGjv%3UZ zvZj78X-_tz_yJu9`@vQUw6MPX$~+;(FPxpx$@W`Y>4sW6`gR0jBW_93`Nneot;M#) zOv3x|hj>SaF&>a!Y9g8JFi}Db-aR)vsQUr?-T+mLfVj56;AXIq29ewzy}G`IUvO0|Fv!$ zVBM{Rnb#-Q-F9N#J*&L*;^z^B>R4DUI98>Nrix@3`uW?VuD9iS_a{$lzUFk+SaU}! z&h87|#Je!{wY#((wlKFLd(#xp2VVAA$B_LG#=TY~H)ILMF68+NY0PZ;1zOqng)D4s z#E&12kbpQZESl4!Ve zaGMi#ga2FVN1dT(!r8T6ijb#+XC7?~OpRC`SWeEx>s*}Pt9BWisGR#P16Cbc$?lW5 z9G|Ge#cg5n1Xng|$fT=kSwGd>VT0Poye?2lo>vDeeZGaCVTgLY$+E@&t?i*m>+g`V z1CJk@^7qHca^ijjjIQ`)kp9vf@3!{_hLXM^FUTN1Afa$hEXGK6v*B1NWbl|MeN04< zqrZ!-hCEu$v|J6{HW6>&961GKgR??FTzX-(me34rwE>3PYqcFOIs){nf@BO}6cj&u zLUTEaE5XEb#?Tl$%QnA3O#`m?W@PJqchkl-oGX!+I#3c?91?dkKNEP%)Z4#iW5Pla zX+cIVFJQ9@BlhDWkFS-=<5iGH^Rs5pAas4$-WJke37-5m+8o}WCm&m#O-rEf7X|rRzcr>l6dBlqMPvt@x=ssgqwH1l-*s^BB)?4{S z>7`(|k^haovHYzHR@ZYoXK=9?NC4xIu>>A+G8 zP_YouqTdZfOM_JRV~m!r0J ztD^xqzf(&sI$nGNj4!ZuC_&KiDl*i#CeJdsu7510IWmN`cT%_PjgnL9j`OaUhD&a1 zPh%mQiBT`?=yYXEcry$-4-N&ygpm4Xix$e1s+N&(b8@c(=2eCCf|yq+J~4cQGpgKd zUXG9&fgUS&iB&Fad-8?`>0-43OkxBU`3kUl;9Dt&__$lE45aA&P=akq`8ABi%Ojlv^4N+2dopvRFJzxsA|rqJ`ooKxE)rdqekHTYv-EsX zT3Ow{t<*Z=Y3JqotImKFA_8We<=!5otW4Lk%s6B?9kHjq(RsjT)9x`Ty4Se*@>Str zdIo*t@xe_H=)%ccU!TaIjm70_Fl02^K$_@o*K1fiG;VqYRJmO#dCbuH5+WmQL1^`{ zzYDq-B(V|~EJ;Z}9vnBvGsTxV8i_@wdjb9h-Qs?z`|1Md=OtitP0pVcZv`JF=#G^Q z>Fw}``Xko;feSW+?0>HUXEkzD#C z=m!`ExKLi3rPvjfJBgeLQxO&{eU5LPlE1hXNR75w=j~f@7+ES4s~S%ycfEoU4lwC| zc7<)2(P~OI%tk>IhAYzyE}>)F%zY|XL6_Iap%2Fgr5zszU9@4YpNrG%%#3~F&H(4v zO6nyJ9VDmjpGW64*1Rms{9$izPv4AbgHnTu>cZtf`wjs1dVsnMdYkuLe3C`h*1&u8 zZqdzj2Ya*$(ApU9+%sCC<;kL0IX+o;$AZ!M5ZIvv0!`gR-BtRhOGrDTYZE%M$>sv} zhR(aSK_|0;iOJ`kJeQ}x)LwQ%oEEcQ_qBLJ*%qqX-je^3ku8~XSR4J&BGgDtVmzVV zOvFm+c`&43&cN6MVyG;md4A;Ge4LE{}Q=tN%f9K?!SHtHrY$ zAcc%45pr)>z}?P-2#dc15_M*nDP#iv63K<~rxEVuIcd#2o7pVF08ie^Pqblq|ErNM zv(g!)Fkuc5mN7t<7*3%^mS_g|Ku_RF-8CFiJB$9xZ~p}{LJ|F$^UhLP#l_PechBX^ z7_DluWOyEfVQVjp9MejOUtG*bb@1DBxAZOq$p=cl>W7Khkq+A(^ z7=M-0w7XR>3vVC|P#j_?7EZ{_QO9UaNI(>|NQjd@1A4KRM8~)yLpqjr=}PQhHZGAD zeC~7=Mzg%{qq@-Z41-|%ycDgSs z7SIb*^jwGLji|@WT&gipamxBSa|O)4Uu2?|$UlQ3EN-1+fGZr` zg?4v~M6o{EjGFp5ntI88P$FT5Z}^M#HSy9*V>WRFkr%lE_`Cs$$#IqV^t^qf(Q(sN z)`w8jA4(k6>%_OSVilhSKb2f(09Hp@^x7>r@a!~{JGqd!vDTp|%KjBiL(re$)_Rj1 z&js+TLKk=s{R(-vV_$_kgaQ8a;>dW-^GzX3${=u~@eMCQ`X8tpHM@jBKMUKGk%uZ4 zSx+HN`{5!~*O+i#-@DC8JtEmV%!VT)N$m*glPHAz_ar`dz5ZBvk={2eYKfG`qL)oR ziEYc-J0bn5f}Ca|<7OG*D^di^Cm1}(HQ*q-!%7}rsA;EUv~3eK_3((!Lx3Jt*GTQS=(KWS%vHr3|(f zcoE(D7H_ex<0 z=c!|UhRufqHO@Z~6>X-;wY8V_@SdRxHBSmG;3p$H=I!IA9`mx%FOUVNQ(?wByB;4& zwT@4#*L$tZuR4FuLkp@Pn=Hy^kvnavv%MZ>Im8Jzl=-90l!a8WMkGOuHI?vDV!P{Q z_2pZSLHDvPG;Nbaj*h%cY31p>+BCejBTML@nuAWW;8mv%z!RA4Zae`7x%}S~R8tvS zi<~DHxq0m!q=GWB-hLM72iSJ znv?XqYb3a9tx!rr;V`Dc^N!VF&lHONV`WW3bfcu{COB?{SO0KkkG_U<*DY(epw^)y z%gJ-?K?tIv27Mc(eHBO}`$#Bh70oIuroQ9V6STVUQ|ETfs@y>1=&;+`jR~Ap6gpfm zA+$Y&lyZd=B=>(uSfs5W{UZ%*H2wtBf`I8`fp6xU$6U3swT>k(Nky5jkGLs4Vno4 z&lB_-J&@m%0VK=V=N)ce8gTHy(K^@84LTFJHXl%nb-Hv#QBIP?MIb?h0e+qJBvO9q zj*UNbnCw+^Y-u1r6<3xEF-`n$9FpP62hRsMAJWX;GNn#ZXZtv3hxk+ z=~cL|ik>BvJf#Cy2Q%)d+sq|ISYXb4a5L*~VFP;&br7Jog@UM>P2+LN%jYEM4ie~jg(#slO}k~ z^6V7d8mYgRC}fpqePwJZ&~V@6qUUZw_Or(nvDcrYN6aT|2ds5DHouSjB`Y^m?m2_|-z!+W7G4>P|BZ;fJOy+-Q`1i% z4^Y)A0?W^VP2#>!fe9C9fZ5%=6*8DC`(7#58d3tD>b%`c!+ib{RiyWU9+I-^m!(!LF*NmkO6&VpU_v<+XDSl5&)IMv{|Rhfj>@fRFyzVAb|>oC6W2Hrs9r{I;`hzz zD#&VMuMfk#`!^)Busk!M95LYIjwIE~s{)W!*bFxaRCe-UBG#i;R~#Iqs5|!-cZ&u4 zAI#nb_0Fzl3d)UmTU|H)tT<(;@`i`OS;52aP#MbDpj$ym ze%e85-uEYu>Z$woZEV!jW6M;B_Zq@pOvS`(Z4k7{-!eRPN!zv4 zPMivmLe%x_&XX zqGJGMxks`=%V+#5w)VB^(nG2^FHsDBxes2;xP{8OnAZG2wVY0stGGj|#It<`27CMS z68uTOiYc8!BQ;D8Jks?gd%j5}ym`x#Q7sv~31v|S z6D%T;f?DU@zDHQxkXZPuv&#Tq@xCKq^Z<7>z>pRJ$myOuN!uO$=fZZC&Dtfcu1ef7 zJAcIoCpjM!KdaET0cVf_r;%8yke+Saqj+!fx?N#Z)8V$?!w2WJKO_NzX@P*L5Wn^k zK@x!0fh$*r^Rz>SwVgPlu!w|m%?46`2YALfn=6=pFA2Pv>Rvl2F*sS%b9lhdYEGgb zyK}iNg)i3Vvv5=)M3|_TY6~pWMD_AQeTR7kVf!9VPQ)P5t%OWfQ!}V$Z$M&l_awxy z3t6!}@=My$E&BRLD&8?d9no2I8o?~QH)$d^J1B3%XEp8ATYbBUR-DKc1U8jFG}cTd zB7}P!($VPM$>TSRi_H~{^hL9*r>!W_usk;nXRkAQ*>6mLl-^*n-Ekl zQ6}qTlmfcw=lz@>1xVtSI4}DfoC4Xl10;do2aIziR3i`&(A30s7`sgfaAMn z2#&4EV$ql0=v&?1M7>tjrJ5N}x<@N3B5Kod$#L_eti+`^nvHD>=PY)c4$WUZEp;}1 zNI2M#&f?lV1xjmNvk{j+TvWpl22cGO@cZ^cr0u1uRs9!&3S7&s%P55O$Ik=$gOxv?k;L0Z4t)lnNC!Bx?U=tuY766xg zO%@?dP+}FAc&N7&X0sGu&o(?h4s2%3nRbSkVZcBH&#I#0R<~_`|9zdgNBZZ&CEbJ~ z=lMBfVe6U$i*Gt*#6gRklFEu82gX(4z{Ofor(s=R^y!aD{YWzdegt=qUarr;PyHiN zV1TqS8Dd)F7}~HWh>GrZ$N~j^6iMIf$ND2&;bmc*i}%`y-X;1IrJC&TZD#trgaaT(`8Rob8iwe zoJ}=0HaS%mVEDp~lg}<Y>4tkr~8&Xkl9#j!v}^`hZjQ zo1SH}>nx@!@^C&#M6=TNItb)&;=Ol?Yu&HyXFc9i7jPqy-YZ)c&JAy)sHj-J#d!QG z>-hLMvv12WWw=z_8(y~kul-RG@7sSyVli7#JyN!GomGB!KSwEITqDkj&Q|SQ{oC}j zXktMxNEIwt_vB9aD-S+|Ag=yKJ^g!iVjJRj^Z8s(qOnzd5zFKO3!X5$UES8UN@A?8 z%Oy*wR{A-*45XlM0l?inKZ$1j?@Xli$|&kkpA_Z?uc;h`w(oP(0OA+H zHiHeSN39031bhd=8TAOJcb@vn`{#Z48%WX2?qB~-TNY;>8K4Ct{mVrSG&k{x%=kD( z-wGuk2r^W+N%zZ)mo79sfuH^%#kE~P5;*P@*}ARxyPBuC#bf;QzD57@Ez-nsu#m9Y z@}_SKIPAT&fWzYMse?cfRFf2bjmXB1J$+&1o#&_ z`JRqyk93)in=qtsOJ_?#*FB4b55t(k!l*5{tJ8v;D(vXW5p8L4nYf%cKH*CuFg*`E ztpo%_+j&09Zfm*9mabhkLr|_ae{mAfL`l+ z)aQ=SkT~`#+^ky1Q5$r;9Tu*FkIo>{R{?xOVI4hFW+aagx;3`=Sn&{A8

xoYs3TVWkx{TFEiXs&3Hq^9za!&zW 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 i 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 literal 0 HcmV?d00001 diff --git a/website/yarn.lock b/website/yarn.lock new file mode 100644 index 000000000..edc588257 --- /dev/null +++ b/website/yarn.lock @@ -0,0 +1,7711 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" + integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-plugin-algolia-insights@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" + integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-preset-algolia@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" + integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-shared@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" + integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== + +"@algolia/cache-browser-local-storage@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz#357318242fc542ffce41d6eb5b4a9b402921b0bb" + integrity sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ== + dependencies: + "@algolia/cache-common" "4.20.0" + +"@algolia/cache-common@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.20.0.tgz#ec52230509fce891091ffd0d890618bcdc2fa20d" + integrity sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ== + +"@algolia/cache-in-memory@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz#5f18d057bd6b3b075022df085c4f83bcca4e3e67" + integrity sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg== + dependencies: + "@algolia/cache-common" "4.20.0" + +"@algolia/client-account@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.20.0.tgz#23ce0b4cffd63100fb7c1aa1c67a4494de5bd645" + integrity sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q== + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/client-search" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-analytics@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.20.0.tgz#0aa6bef35d3a41ac3991b3f46fcd0bf00d276fa9" + integrity sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug== + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/client-search" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-common@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.20.0.tgz#ca60f04466515548651c4371a742fbb8971790ef" + integrity sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ== + dependencies: + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-personalization@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.20.0.tgz#ca81308e8ad0db3b27458b78355f124f29657181" + integrity sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ== + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/client-search@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.20.0.tgz#3bcce817ca6caedc835e0eaf6f580e02ee7c3e15" + integrity sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg== + dependencies: + "@algolia/client-common" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/transporter" "4.20.0" + +"@algolia/events@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== + +"@algolia/logger-common@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.20.0.tgz#f148ddf67e5d733a06213bebf7117cb8a651ab36" + integrity sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ== + +"@algolia/logger-console@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.20.0.tgz#ac443d27c4e94357f3063e675039cef0aa2de0a7" + integrity sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA== + dependencies: + "@algolia/logger-common" "4.20.0" + +"@algolia/requester-browser-xhr@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz#db16d0bdef018b93b51681d3f1e134aca4f64814" + integrity sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw== + dependencies: + "@algolia/requester-common" "4.20.0" + +"@algolia/requester-common@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.20.0.tgz#65694b2263a8712b4360fef18680528ffd435b5c" + integrity sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng== + +"@algolia/requester-node-http@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz#b52b182b52b0b16dec4070832267d484a6b1d5bb" + integrity sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng== + dependencies: + "@algolia/requester-common" "4.20.0" + +"@algolia/transporter@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.20.0.tgz#7e5b24333d7cc9a926b2f6a249f87c2889b944a9" + integrity sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg== + dependencies: + "@algolia/cache-common" "4.20.0" + "@algolia/logger-common" "4.20.0" + "@algolia/requester-common" "4.20.0" + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.8.3": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" + integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== + +"@babel/core@7.12.9": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" + integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.18.6", "@babel/core@^7.19.6": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.12.5", "@babel/helpers@^7.23.0": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.12.7", "@babel/parser@^7.18.8", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + +"@babel/plugin-proposal-object-rest-spread@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" + integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.22.5": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== + dependencies: + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.22.11": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.15" + +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-constant-elements@^7.18.12": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz#6dfa7c1c37f7d7279e417ceddf5a04abb8bb9c29" + integrity sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.15" + +"@babel/plugin-transform-react-pure-annotations@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" + integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.18.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz#3a625c4c05a39e932d7d34f5d4895cdd0172fdc9" + integrity sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.18.6", "@babel/preset-env@^7.19.4": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" + integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== + dependencies: + "@babel/compat-data" "^7.22.20" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.22.19" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.18.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.22.5" + +"@babel/preset-typescript@^7.18.6": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz#cc6602d13e7e5b2087c811912b87cf937a9129d9" + integrity sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-typescript" "^7.22.15" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime-corejs3@^7.18.6": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.1.tgz#d03f5819f4ba81a21dd1f80edfb19983e9e20fc1" + integrity sha512-OKKfytwoc0tr7cDHwQm0RLVR3y+hDGFz3EPuvLNU/0fOeXJeKNIHj7ffNVFnncWt3sC58uyUCRSzf8nBQbyF6A== + dependencies: + core-js-pure "^3.30.2" + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.8.4": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.12.7", "@babel/template@^7.22.15", "@babel/template@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.12.7", "@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@docsearch/css@3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.5.2.tgz#610f47b48814ca94041df969d9fcc47b91fc5aac" + integrity sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA== + +"@docsearch/react@^3.1.1": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.5.2.tgz#2e6bbee00eb67333b64906352734da6aef1232b9" + integrity sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng== + dependencies: + "@algolia/autocomplete-core" "1.9.3" + "@algolia/autocomplete-preset-algolia" "1.9.3" + "@docsearch/css" "3.5.2" + algoliasearch "^4.19.1" + +"@docusaurus/core@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.4.3.tgz#d86624901386fd8164ce4bff9cc7f16fde57f523" + integrity sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA== + dependencies: + "@babel/core" "^7.18.6" + "@babel/generator" "^7.18.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.18.6" + "@babel/preset-env" "^7.18.6" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@babel/runtime" "^7.18.6" + "@babel/runtime-corejs3" "^7.18.6" + "@babel/traverse" "^7.18.8" + "@docusaurus/cssnano-preset" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "@slorber/static-site-generator-webpack-plugin" "^4.0.7" + "@svgr/webpack" "^6.2.1" + autoprefixer "^10.4.7" + babel-loader "^8.2.5" + babel-plugin-dynamic-import-node "^2.3.3" + boxen "^6.2.1" + chalk "^4.1.2" + chokidar "^3.5.3" + clean-css "^5.3.0" + cli-table3 "^0.6.2" + combine-promises "^1.1.0" + commander "^5.1.0" + copy-webpack-plugin "^11.0.0" + core-js "^3.23.3" + css-loader "^6.7.1" + css-minimizer-webpack-plugin "^4.0.0" + cssnano "^5.1.12" + del "^6.1.1" + detect-port "^1.3.0" + escape-html "^1.0.3" + eta "^2.0.0" + file-loader "^6.2.0" + fs-extra "^10.1.0" + html-minifier-terser "^6.1.0" + html-tags "^3.2.0" + html-webpack-plugin "^5.5.0" + import-fresh "^3.3.0" + leven "^3.1.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.6.1" + postcss "^8.4.14" + postcss-loader "^7.0.0" + prompts "^2.4.2" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + react-loadable-ssr-addon-v5-slorber "^1.0.1" + react-router "^5.3.3" + react-router-config "^5.1.1" + react-router-dom "^5.3.3" + rtl-detect "^1.0.4" + semver "^7.3.7" + serve-handler "^6.1.3" + shelljs "^0.8.5" + terser-webpack-plugin "^5.3.3" + tslib "^2.4.0" + update-notifier "^5.1.0" + url-loader "^4.1.1" + wait-on "^6.0.1" + webpack "^5.73.0" + webpack-bundle-analyzer "^4.5.0" + webpack-dev-server "^4.9.3" + webpack-merge "^5.8.0" + webpackbar "^5.0.2" + +"@docusaurus/cssnano-preset@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.3.tgz#1d7e833c41ce240fcc2812a2ac27f7b862f32de0" + integrity sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA== + dependencies: + cssnano-preset-advanced "^5.3.8" + postcss "^8.4.14" + postcss-sort-media-queries "^4.2.1" + tslib "^2.4.0" + +"@docusaurus/logger@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.4.3.tgz#518bbc965fb4ebe8f1d0b14e5f4161607552d34c" + integrity sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w== + dependencies: + chalk "^4.1.2" + tslib "^2.4.0" + +"@docusaurus/mdx-loader@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz#e8ff37f30a060eaa97b8121c135f74cb531a4a3e" + integrity sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw== + dependencies: + "@babel/parser" "^7.18.8" + "@babel/traverse" "^7.18.8" + "@docusaurus/logger" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@mdx-js/mdx" "^1.6.22" + escape-html "^1.0.3" + file-loader "^6.2.0" + fs-extra "^10.1.0" + image-size "^1.0.1" + mdast-util-to-string "^2.0.0" + remark-emoji "^2.2.0" + stringify-object "^3.3.0" + tslib "^2.4.0" + unified "^9.2.2" + unist-util-visit "^2.0.3" + url-loader "^4.1.1" + webpack "^5.73.0" + +"@docusaurus/module-type-aliases@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.3.tgz#d08ef67e4151e02f352a2836bcf9ecde3b9c56ac" + integrity sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA== + dependencies: + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/types" "2.4.3" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + +"@docusaurus/plugin-content-blog@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz#6473b974acab98e967414d8bbb0d37e0cedcea14" + integrity sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + cheerio "^1.0.0-rc.12" + feed "^4.2.2" + fs-extra "^10.1.0" + lodash "^4.17.21" + reading-time "^1.5.0" + tslib "^2.4.0" + unist-util-visit "^2.0.3" + utility-types "^3.10.0" + webpack "^5.73.0" + +"@docusaurus/plugin-content-docs@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.3.tgz#aa224c0512351e81807adf778ca59fd9cd136973" + integrity sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/module-type-aliases" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "@types/react-router-config" "^5.0.6" + combine-promises "^1.1.0" + fs-extra "^10.1.0" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + lodash "^4.17.21" + tslib "^2.4.0" + utility-types "^3.10.0" + webpack "^5.73.0" + +"@docusaurus/plugin-content-pages@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz#7f285e718b53da8c8d0101e70840c75b9c0a1ac0" + integrity sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + fs-extra "^10.1.0" + tslib "^2.4.0" + webpack "^5.73.0" + +"@docusaurus/plugin-debug@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.4.3.tgz#2f90eb0c9286a9f225444e3a88315676fe02c245" + integrity sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + fs-extra "^10.1.0" + react-json-view "^1.21.3" + tslib "^2.4.0" + +"@docusaurus/plugin-google-analytics@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.3.tgz#0d19993136ade6f7a7741251b4f617400d92ab45" + integrity sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + tslib "^2.4.0" + +"@docusaurus/plugin-google-gtag@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.3.tgz#e1a80b0696771b488562e5b60eff21c9932d9e1c" + integrity sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + tslib "^2.4.0" + +"@docusaurus/plugin-google-tag-manager@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.3.tgz#e41fbf79b0ffc2de1cc4013eb77798cff0ad98e3" + integrity sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + tslib "^2.4.0" + +"@docusaurus/plugin-sitemap@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.3.tgz#1b3930900a8f89670ce7e8f83fb4730cd3298c32" + integrity sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + fs-extra "^10.1.0" + sitemap "^7.1.1" + tslib "^2.4.0" + +"@docusaurus/preset-classic@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.4.3.tgz#074c57ebf29fa43d23bd1c8ce691226f542bc262" + integrity sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/plugin-content-blog" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/plugin-content-pages" "2.4.3" + "@docusaurus/plugin-debug" "2.4.3" + "@docusaurus/plugin-google-analytics" "2.4.3" + "@docusaurus/plugin-google-gtag" "2.4.3" + "@docusaurus/plugin-google-tag-manager" "2.4.3" + "@docusaurus/plugin-sitemap" "2.4.3" + "@docusaurus/theme-classic" "2.4.3" + "@docusaurus/theme-common" "2.4.3" + "@docusaurus/theme-search-algolia" "2.4.3" + "@docusaurus/types" "2.4.3" + +"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" + integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== + dependencies: + "@types/react" "*" + prop-types "^15.6.2" + +"@docusaurus/theme-classic@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.4.3.tgz#29360f2eb03a0e1686eb19668633ef313970ee8f" + integrity sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q== + dependencies: + "@docusaurus/core" "2.4.3" + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/module-type-aliases" "2.4.3" + "@docusaurus/plugin-content-blog" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/plugin-content-pages" "2.4.3" + "@docusaurus/theme-common" "2.4.3" + "@docusaurus/theme-translations" "2.4.3" + "@docusaurus/types" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + "@mdx-js/react" "^1.6.22" + clsx "^1.2.1" + copy-text-to-clipboard "^3.0.1" + infima "0.2.0-alpha.43" + lodash "^4.17.21" + nprogress "^0.2.0" + postcss "^8.4.14" + prism-react-renderer "^1.3.5" + prismjs "^1.28.0" + react-router-dom "^5.3.3" + rtlcss "^3.5.0" + tslib "^2.4.0" + utility-types "^3.10.0" + +"@docusaurus/theme-common@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.4.3.tgz#bb31d70b6b67d0bdef9baa343192dcec49946a2e" + integrity sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw== + dependencies: + "@docusaurus/mdx-loader" "2.4.3" + "@docusaurus/module-type-aliases" "2.4.3" + "@docusaurus/plugin-content-blog" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/plugin-content-pages" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-common" "2.4.3" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + clsx "^1.2.1" + parse-numeric-range "^1.3.0" + prism-react-renderer "^1.3.5" + tslib "^2.4.0" + use-sync-external-store "^1.2.0" + utility-types "^3.10.0" + +"@docusaurus/theme-search-algolia@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.3.tgz#32d4cbefc3deba4112068fbdb0bde11ac51ece53" + integrity sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q== + dependencies: + "@docsearch/react" "^3.1.1" + "@docusaurus/core" "2.4.3" + "@docusaurus/logger" "2.4.3" + "@docusaurus/plugin-content-docs" "2.4.3" + "@docusaurus/theme-common" "2.4.3" + "@docusaurus/theme-translations" "2.4.3" + "@docusaurus/utils" "2.4.3" + "@docusaurus/utils-validation" "2.4.3" + algoliasearch "^4.13.1" + algoliasearch-helper "^3.10.0" + clsx "^1.2.1" + eta "^2.0.0" + fs-extra "^10.1.0" + lodash "^4.17.21" + tslib "^2.4.0" + utility-types "^3.10.0" + +"@docusaurus/theme-translations@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.4.3.tgz#91ac73fc49b8c652b7a54e88b679af57d6ac6102" + integrity sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg== + dependencies: + fs-extra "^10.1.0" + tslib "^2.4.0" + +"@docusaurus/types@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.4.3.tgz#4aead281ca09f721b3c0a9b926818450cfa3db31" + integrity sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + commander "^5.1.0" + joi "^17.6.0" + react-helmet-async "^1.3.0" + utility-types "^3.10.0" + webpack "^5.73.0" + webpack-merge "^5.8.0" + +"@docusaurus/utils-common@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.4.3.tgz#30656c39ef1ce7e002af7ba39ea08330f58efcfb" + integrity sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ== + dependencies: + tslib "^2.4.0" + +"@docusaurus/utils-validation@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.4.3.tgz#8122c394feef3e96c73f6433987837ec206a63fb" + integrity sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw== + dependencies: + "@docusaurus/logger" "2.4.3" + "@docusaurus/utils" "2.4.3" + joi "^17.6.0" + js-yaml "^4.1.0" + tslib "^2.4.0" + +"@docusaurus/utils@2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.4.3.tgz#52b000d989380a2125831b84e3a7327bef471e89" + integrity sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A== + dependencies: + "@docusaurus/logger" "2.4.3" + "@svgr/webpack" "^6.2.1" + escape-string-regexp "^4.0.0" + file-loader "^6.2.0" + fs-extra "^10.1.0" + github-slugger "^1.4.0" + globby "^11.1.0" + gray-matter "^4.0.3" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.5" + resolve-pathname "^3.0.0" + shelljs "^0.8.5" + tslib "^2.4.0" + url-loader "^4.1.1" + webpack "^5.73.0" + +"@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@mdx-js/mdx@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== + dependencies: + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" + "@babel/plugin-syntax-object-rest-spread" "7.8.3" + "@mdx-js/util" "1.6.22" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" + camelcase-css "2.0.1" + detab "2.0.4" + hast-util-raw "6.0.1" + lodash.uniq "4.5.0" + mdast-util-to-hast "10.0.1" + remark-footnotes "2.0.0" + remark-mdx "1.6.22" + remark-parse "8.0.3" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.2.0" + unist-builder "2.0.3" + unist-util-visit "2.0.3" + +"@mdx-js/react@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== + +"@mdx-js/util@1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" + integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.23" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" + integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== + +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@slorber/static-site-generator-webpack-plugin@^4.0.7": + version "4.0.7" + resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3" + integrity sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA== + dependencies: + eval "^0.1.8" + p-map "^4.0.0" + webpack-sources "^3.2.2" + +"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" + integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== + +"@svgr/babel-plugin-remove-jsx-attribute@*": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@*": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" + integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== + +"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" + integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== + +"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" + integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== + +"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" + integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== + +"@svgr/babel-plugin-transform-svg-component@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" + integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== + +"@svgr/babel-preset@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" + integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute" "*" + "@svgr/babel-plugin-remove-jsx-empty-expression" "*" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" + "@svgr/babel-plugin-transform-svg-component" "^6.5.1" + +"@svgr/core@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" + integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + camelcase "^6.2.0" + cosmiconfig "^7.0.1" + +"@svgr/hast-util-to-babel-ast@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" + integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== + dependencies: + "@babel/types" "^7.20.0" + entities "^4.4.0" + +"@svgr/plugin-jsx@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" + integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/hast-util-to-babel-ast" "^6.5.1" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" + integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== + dependencies: + cosmiconfig "^7.0.1" + deepmerge "^4.2.2" + svgo "^2.8.0" + +"@svgr/webpack@^6.2.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" + integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== + dependencies: + "@babel/core" "^7.19.6" + "@babel/plugin-transform-react-constant-elements" "^7.18.12" + "@babel/preset-env" "^7.19.4" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@svgr/core" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + "@svgr/plugin-svgo" "^6.5.1" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/body-parser@*": + version "1.19.3" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.11" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" + integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" + integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.5" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" + integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.44.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.3.tgz#96614fae4875ea6328f56de38666f582d911d962" + integrity sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" + integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.37" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.18" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95" + integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/hast@^2.0.0": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.6.tgz#bb8b05602112a26d22868acb70c4b20984ec7086" + integrity sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg== + dependencies: + "@types/unist" "^2" + +"@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== + +"@types/http-proxy@^1.17.8": + version "1.17.12" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" + integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" + integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" + integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + +"@types/mdast@^3.0.0": + version "3.0.13" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.13.tgz#b7ba6e52d0faeb9c493e32c205f3831022be4e1b" + integrity sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg== + dependencies: + "@types/unist" "^2" + +"@types/mime@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" + integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== + +"@types/mime@^1": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" + integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== + +"@types/node@*": + version "20.7.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.1.tgz#06d732ead0bd5ad978ef0ea9cbdeb24dc8717514" + integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg== + +"@types/node@^17.0.5": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/parse5@^5.0.0": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" + integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== + +"@types/prop-types@*": + version "15.7.7" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.7.tgz#f9361f7b87fd5d8188b2c998db0a1f47e9fb391a" + integrity sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog== + +"@types/qs@*": + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + +"@types/range-parser@*": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" + integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== + +"@types/react-router-config@*", "@types/react-router-config@^5.0.6": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.8.tgz#dd00654de4d79927570a4a8807c4a728feed59f3" + integrity sha512-zBzYZsr05V9xRG96oQ/xBXHy5+fDCX5wL7bboM0FFoOYQp9Gxmz8uvuKSkLesNWHlICl+W1l64F7fmp/KsOkuw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "^5.1.0" + +"@types/react-router-dom@*": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*", "@types/react-router@^5.1.0": + version "5.1.20" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react@*": + version "18.2.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.23.tgz#60ad6cf4895e93bed858db0e03bcc4ff97d0410e" + integrity sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/sax@^1.2.1": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.5.tgz#4392799e1770d24b6dc8d0c66c8882f8e1c38b3d" + integrity sha512-9jWta97bBVC027/MShr3gLab8gPhKy4l6qpb+UJLF5pDm3501NvA7uvqVCW+REFtx00oTi6Cq9JzLwgq6evVgw== + dependencies: + "@types/node" "*" + +"@types/scheduler@*": + version "0.16.4" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" + integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== + +"@types/send@*": + version "0.17.2" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" + integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" + integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" + integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.34" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" + integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== + dependencies: + "@types/node" "*" + +"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.8.tgz#bb197b9639aa1a04cf464a617fe800cccd92ad5c" + integrity sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw== + +"@types/ws@^8.5.5": + version "8.5.6" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.6.tgz#e9ad51f0ab79b9110c50916c9fcbddc36d373065" + integrity sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" + integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + +"@types/yargs@^17.0.8": + version "17.0.25" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc" + integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg== + dependencies: + "@types/yargs-parser" "*" + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-walk@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +address@^1.0.1, address@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +algoliasearch-helper@^3.10.0: + version "3.14.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.14.2.tgz#c34cfe6cefcfecd65c60bcb8bf9b68134472d28c" + integrity sha512-FjDSrjvQvJT/SKMW74nPgFpsoPUwZCzGbCqbp8HhBFfSk/OvNFxzCaCmuO0p7AWeLy1gD+muFwQEkBwcl5H4pg== + dependencies: + "@algolia/events" "^4.0.1" + +algoliasearch@^4.13.1, algoliasearch@^4.19.1: + version "4.20.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.20.0.tgz#700c2cb66e14f8a288460036c7b2a554d0d93cf4" + integrity sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g== + dependencies: + "@algolia/cache-browser-local-storage" "4.20.0" + "@algolia/cache-common" "4.20.0" + "@algolia/cache-in-memory" "4.20.0" + "@algolia/client-account" "4.20.0" + "@algolia/client-analytics" "4.20.0" + "@algolia/client-common" "4.20.0" + "@algolia/client-personalization" "4.20.0" + "@algolia/client-search" "4.20.0" + "@algolia/logger-common" "4.20.0" + "@algolia/logger-console" "4.20.0" + "@algolia/requester-browser-xhr" "4.20.0" + "@algolia/requester-common" "4.20.0" + "@algolia/requester-node-http" "4.20.0" + "@algolia/transporter" "4.20.0" + +ansi-align@^3.0.0, ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.4.12, autoprefixer@^10.4.7: + version "10.4.16" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== + dependencies: + browserslist "^4.21.10" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +axios@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" + integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== + dependencies: + follow-redirects "^1.14.7" + +babel-loader@^8.2.5: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" + integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + "@mdx-js/util" "1.6.22" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" + integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + +babel-plugin-polyfill-corejs2@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" + integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.32.2" + +babel-plugin-polyfill-regenerator@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" + integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== + dependencies: + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boxen@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +boxen@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== + dependencies: + ansi-align "^3.0.1" + camelcase "^6.2.0" + chalk "^4.1.2" + cli-boxes "^3.0.0" + string-width "^5.0.1" + type-fest "^2.5.0" + widest-line "^4.0.1" + wrap-ansi "^8.0.1" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: + version "4.22.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" + integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== + dependencies: + caniuse-lite "^1.0.30001539" + electron-to-chromium "^1.4.530" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001539: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== + +ccount@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@^1.0.0-rc.12: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +clean-css@^5.2.2, clean-css@^5.3.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-table3@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clsx@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combine-promises@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a" + integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== + +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +consola@^2.15.3: + version "2.15.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copy-text-to-clipboard@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz#0202b2d9bdae30a49a53f898626dcc3b49ad960b" + integrity sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== + +copy-webpack-plugin@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== + dependencies: + fast-glob "^3.2.11" + glob-parent "^6.0.1" + globby "^13.1.1" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +core-js-compat@^3.31.0, core-js-compat@^3.32.2: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" + integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + dependencies: + browserslist "^4.21.10" + +core-js-pure@^3.30.2: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.2.tgz#b7dbdac528625cf87eb0523b532eb61551b9a6d1" + integrity sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ== + +core-js@^3.23.3: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.2.tgz#172fb5949ef468f93b4be7841af6ab1f21992db7" + integrity sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmiconfig@^8.2.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-loader@^6.7.1: + version "6.8.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" + integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.21" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.3" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.8" + +css-minimizer-webpack-plugin@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35" + integrity sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA== + dependencies: + cssnano "^5.1.8" + jest-worker "^29.1.2" + postcss "^8.4.17" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-advanced@^5.3.8: + version "5.3.10" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef" + integrity sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ== + dependencies: + autoprefixer "^10.4.12" + cssnano-preset-default "^5.2.14" + postcss-discard-unused "^5.1.0" + postcss-merge-idents "^5.1.1" + postcss-reduce-idents "^5.2.0" + postcss-zindex "^5.1.0" + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.1.12, cssnano@^5.1.8: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +debug@2.6.9, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +del@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detab@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" + integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== + dependencies: + repeat-string "^1.5.4" + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.530: + version "1.4.534" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.534.tgz#2056c1fc41a7157cdd5c634f96e758d727b69201" + integrity sha512-ikY7wAMtMt3jTnHsHG0YLl4MKJiKz2tgidenGSNgwUX2StBLNZ8VCxflD9tZK/ceTs4j8gDC9+6LQQ6iGkK04g== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +emoticon@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" + integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-module-lexer@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" + integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eta@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eta/-/eta-2.2.0.tgz#eb8b5f8c4e8b6306561a455e62cd7492fe3a9b8a" + integrity sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eval@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== + dependencies: + "@types/node" "*" + require-like ">= 0.1.1" + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-url-parser@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0, fbjs@^3.0.1: + version "3.0.5" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" + integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^1.0.35" + +feed@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" + integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== + dependencies: + xml-js "^1.6.11" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flux@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.4.tgz#9661182ea81d161ee1a6a6af10d20485ef2ac572" + integrity sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw== + dependencies: + fbemitter "^3.0.0" + fbjs "^3.0.1" + +follow-redirects@^1.0.0, follow-redirects@^1.14.7: + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d" + integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +github-slugger@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== + dependencies: + ini "2.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^13.1.1: + version "13.2.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.3.0" + ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== + dependencies: + "@types/unist" "^2.0.3" + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.0.0" + +hast-util-from-parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" + integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== + dependencies: + "@types/parse5" "^5.0.0" + hastscript "^6.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + vfile-location "^3.2.0" + web-namespaces "^1.0.0" + +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hast-util-raw@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" + integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== + dependencies: + "@types/hast" "^2.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" + unist-util-position "^3.0.0" + vfile "^4.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" + integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== + dependencies: + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hoist-non-react-statics@^3.1.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + +html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-tags@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + +html-webpack-plugin@^5.5.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" + integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +image-size@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" + integrity sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg== + dependencies: + queue "6.0.2" + +immer@^9.0.7: + version "9.0.21" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infima@0.2.0-alpha.43: + version "0.2.0-alpha.43" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.43.tgz#f7aa1d7b30b6c08afef441c726bac6150228cbe0" + integrity sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.1.2: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jiti@^1.18.2: + version "1.20.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== + +joi@^17.6.0: + version "17.10.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.10.2.tgz#4ecc348aa89ede0b48335aad172e0f5591e55b29" + integrity sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.1.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +latest-version@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +launch-editor@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" + integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.7.3" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lilconfig@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + integrity sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== + +lodash.invokemap@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz#1748cda5d8b0ef8369c4eb3ec54c21feba1f2d62" + integrity sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.pullall@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz#9d98b8518b7c965b0fae4099bd9fb7df8bbf38ba" + integrity sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg== + +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash.uniqby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" + integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== + +lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" + integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== + dependencies: + unist-util-remove "^2.0.0" + +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" + integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.1.2, memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +mime-types@2.1.18: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== + dependencies: + mime-db "~1.33.0" + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mini-css-extract-plugin@^2.6.1: + version "2.7.6" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" + integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-numeric-range@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== + +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-to-regexp@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" + integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-discard-unused@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" + integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-loader@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.3.tgz#6da03e71a918ef49df1bb4be4c80401df8e249dd" + integrity sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA== + dependencies: + cosmiconfig "^8.2.0" + jiti "^1.18.2" + semver "^7.3.8" + +postcss-merge-idents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-idents@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-sort-media-queries@^4.2.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz#04a5a78db3921eb78f28a1a781a2e68e65258128" + integrity sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw== + dependencies: + sort-css-media-queries "2.1.0" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-zindex@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" + integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== + +postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21: + version "8.4.30" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7" + integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +prism-react-renderer@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" + integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== + +prismjs@^1.28.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-information@^5.0.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== + dependencies: + xtend "^4.0.0" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + +pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@1.2.8, rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-base16-styling@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" + integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== + +react-fast-compare@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +react-helmet-async@*, react-helmet-async@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" + integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== + dependencies: + "@babel/runtime" "^7.12.5" + invariant "^2.2.4" + prop-types "^15.7.2" + react-fast-compare "^3.2.0" + shallowequal "^1.1.0" + +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-json-view@^1.21.3: + version "1.21.3" + resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" + integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== + dependencies: + flux "^4.0.1" + react-base16-styling "^0.6.0" + react-lifecycles-compat "^3.0.4" + react-textarea-autosize "^8.3.2" + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-loadable-ssr-addon-v5-slorber@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" + integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== + dependencies: + "@babel/runtime" "^7.10.3" + +react-router-config@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" + integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== + dependencies: + "@babel/runtime" "^7.1.2" + +react-router-dom@^5.3.3: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.3.4" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.3.4, react-router@^5.3.3: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-textarea-autosize@^8.3.2: + version "8.5.3" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz#d1e9fe760178413891484847d3378706052dd409" + integrity sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ== + dependencies: + "@babel/runtime" "^7.20.13" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reading-time@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" + integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +registry-auth-token@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" + integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== + dependencies: + rc "1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +remark-emoji@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" + integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== + dependencies: + emoticon "^3.2.0" + node-emoji "^1.10.0" + unist-util-visit "^2.0.3" + +remark-footnotes@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" + integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== + +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" + integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== + dependencies: + "@babel/core" "7.12.9" + "@babel/helper-plugin-utils" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.12.1" + "@babel/plugin-syntax-jsx" "7.12.1" + "@mdx-js/util" "1.6.22" + is-alphabetical "1.0.4" + remark-parse "8.0.3" + unified "9.2.0" + +remark-parse@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" + integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== + dependencies: + ccount "^1.0.0" + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^2.0.0" + vfile-location "^3.0.0" + xtend "^4.0.1" + +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" + integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== + dependencies: + mdast-squeeze-paragraphs "^4.0.0" + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +repeat-string@^1.5.4: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +"require-like@>= 0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve@^1.1.6, resolve@^1.14.2, resolve@^1.3.2: + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rtl-detect@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" + integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== + +rtlcss@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" + integrity sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A== + dependencies: + find-up "^5.0.0" + picocolors "^1.0.0" + postcss "^8.3.11" + strip-json-comments "^3.1.1" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.4: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + dependencies: + node-forge "^1" + +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + +semver@^5.4.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2, semver@^7.3.4, semver@^7.3.7, semver@^7.3.8: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-handler@^6.1.3: + version "6.1.5" + resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" + integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== + dependencies: + bytes "3.0.0" + content-disposition "0.5.2" + fast-url-parser "1.1.3" + mime-types "2.1.18" + minimatch "3.1.2" + path-is-inside "1.0.2" + path-to-regexp "2.2.1" + range-parser "1.2.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sirv@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446" + integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA== + dependencies: + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^3.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +sitemap@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" + integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== + dependencies: + "@types/node" "^17.0.5" + "@types/sax" "^1.2.1" + arg "^5.0.0" + sax "^1.2.4" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sort-css-media-queries@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce" + integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +std-env@^3.0.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.4.3.tgz#326f11db518db751c83fd58574f449b7c3060910" + integrity sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q== + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +style-to-object@0.3.0, style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^2.7.0, svgo@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.3.3, terser-webpack-plugin@^5.3.7: + version "5.3.9" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" + +terser@^5.10.0, terser@^5.16.8: + version "5.20.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.20.0.tgz#ea42aea62578703e33def47d5c5b93c49772423e" + integrity sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tiny-invariant@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + +tiny-warning@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-trailing-lines@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ== + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^2.5.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +ua-parser-js@^1.0.35: + version "1.0.36" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.36.tgz#a9ab6b9bd3a8efb90bb0816674b412717b7c428c" + integrity sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw== + +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unified@9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +unified@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +unist-builder@2.0.3, unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== + +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== + +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-remove-position@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" + integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== + dependencies: + unist-util-visit "^2.0.0" + +unist-util-remove@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588" + integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q== + dependencies: + unist-util-is "^4.0.0" + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== + dependencies: + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== + +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== + dependencies: + use-isomorphic-layout-effect "^1.1.1" + +use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utility-types@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vfile-location@^3.0.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" + integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== + +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +wait-on@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" + integrity sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw== + dependencies: + axios "^0.25.0" + joi "^17.6.0" + lodash "^4.17.21" + minimist "^1.2.5" + rxjs "^7.5.4" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-namespaces@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" + integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-bundle-analyzer@^4.5.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz#d00bbf3f17500c10985084f22f1a2bf45cb2f09d" + integrity sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + is-plain-object "^5.0.0" + lodash.debounce "^4.0.8" + lodash.escape "^4.0.1" + lodash.flatten "^4.4.0" + lodash.invokemap "^4.6.0" + lodash.pullall "^4.2.0" + lodash.uniqby "^4.7.0" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.9.3: + version "4.15.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" + +webpack-merge@^5.8.0: + version "5.9.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^3.2.2, webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.73.0: + version "5.88.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" + integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +webpackbar@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" + integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== + dependencies: + chalk "^4.1.0" + consola "^2.15.3" + pretty-time "^1.1.0" + std-env "^3.0.1" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0: + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xml-js@^1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +xtend@^4.0.0, xtend@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== From e399838177268affb12c8abfac45e7ad675590b5 Mon Sep 17 00:00:00 2001 From: Louis Singer <41042567+louisinger@users.noreply.github.com> Date: Mon, 27 Nov 2023 11:55:32 +0100 Subject: [PATCH 2/5] Add dummy TxBuilder implementation (#14) * tree.go init * add tree.go file * builder implementation * v1 TxBuilder * test TxBuilder * merge master into congestionTree * fix linting errors * fix after reviews * improve implementations, rework tests * Move impl to dummy/ --------- Co-authored-by: altafan <18440657+altafan@users.noreply.github.com> --- go.mod | 7 +- .../tx-builder/dummy/builder.go | 223 +++++++++++++ .../tx-builder/dummy/builder_test.go | 307 ++++++++++++++++++ .../tx-builder/dummy/connectors.go | 75 +++++ .../tx-builder/dummy/forfeit.go | 42 +++ .../infrastructure/tx-builder/dummy/tree.go | 270 +++++++++++++++ 6 files changed, 922 insertions(+), 2 deletions(-) create mode 100644 internal/infrastructure/tx-builder/dummy/builder.go create mode 100644 internal/infrastructure/tx-builder/dummy/builder_test.go create mode 100644 internal/infrastructure/tx-builder/dummy/connectors.go create mode 100644 internal/infrastructure/tx-builder/dummy/forfeit.go create mode 100644 internal/infrastructure/tx-builder/dummy/tree.go diff --git a/go.mod b/go.mod index 6590f717d..4bc805a46 100644 --- a/go.mod +++ b/go.mod @@ -11,8 +11,10 @@ require ( github.com/google/uuid v1.3.1 github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.17.0 + github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 github.com/vulpemventures/go-elements v0.4.7 + golang.org/x/crypto v0.14.0 golang.org/x/term v0.13.0 google.golang.org/grpc v1.59.0 google.golang.org/protobuf v1.31.0 @@ -22,9 +24,10 @@ require ( github.com/btcsuite/btcd v0.23.1 // indirect github.com/btcsuite/btcd/btcutil v1.1.3 // indirect github.com/btcsuite/btcd/btcutil/psbt v1.1.4 // indirect - github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -33,6 +36,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.3.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -45,7 +49,6 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.14.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/sys v0.13.0 // indirect diff --git a/internal/infrastructure/tx-builder/dummy/builder.go b/internal/infrastructure/tx-builder/dummy/builder.go new file mode 100644 index 000000000..8f4f720ac --- /dev/null +++ b/internal/infrastructure/tx-builder/dummy/builder.go @@ -0,0 +1,223 @@ +package txbuilder + +import ( + "context" + "encoding/hex" + + "github.com/ark-network/ark/common" + "github.com/ark-network/ark/internal/core/domain" + "github.com/ark-network/ark/internal/core/ports" + "github.com/decred/dcrd/dcrec/secp256k1/v4" + "github.com/vulpemventures/go-elements/network" + "github.com/vulpemventures/go-elements/psetv2" +) + +const ( + connectorAmount = 450 +) + +type txBuilder struct { + net *network.Network + aspPublicKey *secp256k1.PublicKey +} + +func toElementsNetwork(net common.Network) *network.Network { + switch net { + case common.MainNet: + return &network.Liquid + case common.TestNet: + return &network.Testnet + default: + return nil + } +} + +func NewTxBuilder(aspPublicKey *secp256k1.PublicKey, net common.Network) ports.TxBuilder { + return &txBuilder{ + aspPublicKey: aspPublicKey, + net: toElementsNetwork(net), + } +} + +// BuildCongestionTree implements ports.TxBuilder. +func (b *txBuilder) BuildCongestionTree(poolTx string, payments []domain.Payment) (congestionTree []string, err error) { + poolTxID, err := getTxID(poolTx) + if err != nil { + return nil, err + } + + receivers := receiversFromPayments(payments) + + return buildCongestionTree( + newOutputScriptFactory(b.aspPublicKey, b.net), + b.net, + poolTxID, + receivers, + ) +} + +// BuildForfeitTxs implements ports.TxBuilder. +func (b *txBuilder) BuildForfeitTxs(poolTx string, payments []domain.Payment) (connectors []string, forfeitTxs []string, err error) { + poolTxID, err := getTxID(poolTx) + if err != nil { + return nil, nil, err + } + + aspScript, err := p2wpkhScript(b.aspPublicKey, b.net) + if err != nil { + return nil, nil, err + } + + numberOfConnectors := numberOfVTXOs(payments) + + connectors, err = createConnectors( + poolTxID, + 1, + psetv2.OutputArgs{ + Asset: b.net.AssetID, + Amount: connectorAmount, + Script: aspScript, + }, + aspScript, + numberOfConnectors, + ) + if err != nil { + return nil, nil, err + } + + connectorsAsInputs, err := connectorsToInputArgs(connectors) + if err != nil { + return nil, nil, err + } + + forfeitTxs = make([]string, 0) + for _, payment := range payments { + for _, vtxo := range payment.Inputs { + for _, connector := range connectorsAsInputs { + forfeitTx, err := createForfeitTx( + connector, + psetv2.InputArgs{ + Txid: vtxo.Txid, + TxIndex: vtxo.VOut, + }, + vtxo.Amount, + aspScript, + b.net, + ) + if err != nil { + return nil, nil, err + } + + forfeitTxs = append(forfeitTxs, forfeitTx) + } + } + } + + return connectors, forfeitTxs, nil +} + +// BuildPoolTx implements ports.TxBuilder. +func (b *txBuilder) BuildPoolTx(wallet ports.WalletService, payments []domain.Payment) (poolTx string, err error) { + aspScriptBytes, err := p2wpkhScript(b.aspPublicKey, b.net) + if err != nil { + return "", err + } + + aspScript := hex.EncodeToString(aspScriptBytes) + + receivers := receiversFromPayments(payments) + sharedOutputAmount := sumReceivers(receivers) + + numberOfConnectors := numberOfVTXOs(payments) + connectorOutputAmount := connectorAmount * numberOfConnectors + + ctx := context.Background() + + return wallet.Transaction().Transfer(ctx, []ports.TxOutput{ + newOutput(aspScript, sharedOutputAmount), + newOutput(aspScript, connectorOutputAmount), + }) +} + +func connectorsToInputArgs(connectors []string) ([]psetv2.InputArgs, error) { + inputs := make([]psetv2.InputArgs, 0, len(connectors)+1) + for i, psetb64 := range connectors { + txID, err := getTxID(psetb64) + if err != nil { + return nil, err + } + + input := psetv2.InputArgs{ + Txid: txID, + TxIndex: 0, + } + inputs = append(inputs, input) + + if i == len(connectors)-1 { + input := psetv2.InputArgs{ + Txid: txID, + TxIndex: 1, + } + inputs = append(inputs, input) + } + } + return inputs, nil +} + +func getTxID(psetBase64 string) (string, error) { + pset, err := psetv2.NewPsetFromBase64(psetBase64) + if err != nil { + return "", err + } + + utx, err := pset.UnsignedTx() + if err != nil { + return "", err + } + + return utx.TxHash().String(), nil +} + +func numberOfVTXOs(payments []domain.Payment) uint64 { + var sum uint64 + for _, payment := range payments { + sum += uint64(len(payment.Inputs)) + } + return sum +} + +func receiversFromPayments(payments []domain.Payment) []domain.Receiver { + receivers := make([]domain.Receiver, 0) + for _, payment := range payments { + receivers = append(receivers, payment.Receivers...) + } + return receivers +} + +func sumReceivers(receivers []domain.Receiver) uint64 { + var sum uint64 + for _, r := range receivers { + sum += r.Amount + } + return sum +} + +type output struct { + script string + amount uint64 +} + +func newOutput(script string, amount uint64) ports.TxOutput { + return &output{ + script: script, + amount: amount, + } +} + +func (o *output) GetAmount() uint64 { + return o.amount +} + +func (o *output) GetScript() string { + return o.script +} diff --git a/internal/infrastructure/tx-builder/dummy/builder_test.go b/internal/infrastructure/tx-builder/dummy/builder_test.go new file mode 100644 index 000000000..60cc8e516 --- /dev/null +++ b/internal/infrastructure/tx-builder/dummy/builder_test.go @@ -0,0 +1,307 @@ +package txbuilder_test + +import ( + "testing" + + "github.com/ark-network/ark/common" + "github.com/ark-network/ark/internal/core/domain" + "github.com/ark-network/ark/internal/core/ports" + txbuilder "github.com/ark-network/ark/internal/infrastructure/tx-builder/dummy" + "github.com/btcsuite/btcd/chaincfg/chainhash" + "github.com/stretchr/testify/require" + "github.com/vulpemventures/go-elements/address" + "github.com/vulpemventures/go-elements/network" + "github.com/vulpemventures/go-elements/payment" + "github.com/vulpemventures/go-elements/psetv2" +) + +const ( + testingKey = "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x" +) + +func createTestTxBuilder() (ports.TxBuilder, error) { + _, key, err := common.DecodePubKey(testingKey) + if err != nil { + return nil, err + } + + return txbuilder.NewTxBuilder(key, common.MainNet), nil +} + +func createTestPoolTx(sharedOutputAmount, numberOfInputs uint64) (string, error) { + _, key, err := common.DecodePubKey(testingKey) + if err != nil { + return "", err + } + + payment := payment.FromPublicKey(key, &network.Regtest, nil) + addr, err := payment.WitnessPubKeyHash() + if err != nil { + return "", err + } + + script, err := address.ToOutputScript(addr) + if err != nil { + return "", err + } + + pset, err := psetv2.New(nil, nil, nil) + if err != nil { + return "", err + } + + updater, err := psetv2.NewUpdater(pset) + if err != nil { + return "", err + } + + err = updater.AddInputs([]psetv2.InputArgs{ + { + Txid: "2f8f5733734fd44d581976bd3c1aee098bd606402df2ce02ce908287f1d5ede4", + TxIndex: 0, + }, + }) + if err != nil { + return "", err + } + + connectorsAmount := numberOfInputs * (450 + 500) + + err = updater.AddOutputs([]psetv2.OutputArgs{ + { + Asset: network.Regtest.AssetID, + Amount: sharedOutputAmount, + Script: script, + }, + { + Asset: network.Regtest.AssetID, + Amount: connectorsAmount, + Script: script, + }, + { + Asset: network.Regtest.AssetID, + Amount: 500, + }, + }) + if err != nil { + return "", err + } + + return pset.ToBase64() +} + +func TestBuildCongestionTree(t *testing.T) { + builder, err := createTestTxBuilder() + require.NoError(t, err) + + poolTx, err := createTestPoolTx(1000, (450+500)*1) + require.NoError(t, err) + + poolPset, err := psetv2.NewPsetFromBase64(poolTx) + require.NoError(t, err) + + poolTxUnsigned, err := poolPset.UnsignedTx() + require.NoError(t, err) + + poolTxID := poolTxUnsigned.TxHash().String() + + fixtures := []struct { + payments []domain.Payment + expectedNodesNum int // 2*len(receivers)-1 + }{ + { + payments: []domain.Payment{ + { + Id: "0", + Inputs: []domain.Vtxo{ + { + VtxoKey: domain.VtxoKey{ + Txid: "fd68e3c5796cc7db0a8036d486d5f625b6b2f2c014810ac020e1ac23e82c59d6", + VOut: 0, + }, + Receiver: domain.Receiver{ + Pubkey: "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x", + Amount: 600, + }, + }, + }, + Receivers: []domain.Receiver{ + { + Pubkey: "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x", + Amount: 600, + }, + { + Pubkey: "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x", + Amount: 400, + }, + }, + }, + }, + expectedNodesNum: 3, + }, + } + + for _, f := range fixtures { + tree, err := builder.BuildCongestionTree(poolTx, f.payments) + require.NoError(t, err) + require.Len(t, tree, f.expectedNodesNum) + + // decode all psbt + psets := make([]*psetv2.Pset, 0, f.expectedNodesNum) + + for _, pset := range tree { + pset, err := psetv2.NewPsetFromBase64(pset) + require.NoError(t, err) + require.NotNil(t, pset) + + psets = append(psets, pset) + } + + require.Len(t, psets[0].Inputs, 1) + require.Len(t, psets[0].Outputs, 2) + + // first tx input should be the pool tx shared output + inputTxID0, err := chainhash.NewHash(psets[0].Inputs[0].PreviousTxid) + require.NoError(t, err) + require.Equal(t, poolTxID, inputTxID0.String()) + require.Equal(t, uint32(0), psets[0].Inputs[0].PreviousTxIndex) + + unsignedTx0, err := psets[0].UnsignedTx() + require.NoError(t, err) + + txID0 := unsignedTx0.TxHash().String() + + // first tx input should be the first tx0 output + require.Len(t, psets[1].Inputs, 1) + require.Len(t, psets[1].Outputs, 1) + inputTxID1, err := chainhash.NewHash(psets[1].Inputs[0].PreviousTxid) + require.NoError(t, err) + require.Equal(t, txID0, inputTxID1.String()) + require.Equal(t, uint32(0), psets[1].Inputs[0].PreviousTxIndex) + // check the output amount (should be 600, the first receiver amount) + require.Equal(t, uint64(600), psets[1].Outputs[0].Value) + + // second tx input should be the second tx0 output + require.Len(t, psets[2].Inputs, 1) + require.Len(t, psets[2].Outputs, 1) + + inputTxID2, err := chainhash.NewHash(psets[2].Inputs[0].PreviousTxid) + require.NoError(t, err) + require.Equal(t, txID0, inputTxID2.String()) + require.Equal(t, uint32(1), psets[2].Inputs[0].PreviousTxIndex) + // check the output amount (should be 400, the second receiver amount) + require.Equal(t, uint64(400), psets[2].Outputs[0].Value) + } +} + +func TestBuildForfeitTxs(t *testing.T) { + builder, err := createTestTxBuilder() + require.NoError(t, err) + + poolTx, err := createTestPoolTx(1000, 450*2) + require.NoError(t, err) + + poolPset, err := psetv2.NewPsetFromBase64(poolTx) + require.NoError(t, err) + + poolTxUnsigned, err := poolPset.UnsignedTx() + require.NoError(t, err) + + poolTxID := poolTxUnsigned.TxHash().String() + + fixtures := []struct { + payments []domain.Payment + expectedNumOfForfeitTxs int + expectedNumOfConnectors int + }{ + { + payments: []domain.Payment{ + { + Id: "0", + Inputs: []domain.Vtxo{ + { + VtxoKey: domain.VtxoKey{ + Txid: "fd68e3c5796cc7db0a8036d486d5f625b6b2f2c014810ac020e1ac23e82c59d6", + VOut: 0, + }, + Receiver: domain.Receiver{ + Pubkey: "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x", + Amount: 600, + }, + }, + { + VtxoKey: domain.VtxoKey{ + Txid: "fd68e3c5796cc7db0a8036d486d5f625b6b2f2c014810ac020e1ac23e82c59d6", + VOut: 1, + }, + Receiver: domain.Receiver{ + Pubkey: "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x", + Amount: 400, + }, + }, + }, + Receivers: []domain.Receiver{ + { + Pubkey: "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x", + Amount: 600, + }, + { + Pubkey: "apub1qgvdtj5ttpuhkldavhq8thtm5auyk0ec4dcmrfdgu0u5hgp9we22v3hrs4x", + Amount: 400, + }, + }, + }, + }, + expectedNumOfForfeitTxs: 4, + expectedNumOfConnectors: 1, + }, + } + + for _, f := range fixtures { + connectors, forfeitTxs, err := builder.BuildForfeitTxs(poolTx, f.payments) + require.NoError(t, err) + + require.Len(t, connectors, f.expectedNumOfConnectors) + require.Len(t, forfeitTxs, f.expectedNumOfForfeitTxs) + + // decode and check connectors + connectorsPsets := make([]*psetv2.Pset, 0, f.expectedNumOfConnectors) + for _, pset := range connectors { + p, err := psetv2.NewPsetFromBase64(pset) + require.NoError(t, err) + connectorsPsets = append(connectorsPsets, p) + } + + for i, pset := range connectorsPsets { + require.Len(t, pset.Inputs, 1) + require.Len(t, pset.Outputs, 2) + + expectedInputTxid := poolTxID + expectedInputVout := uint32(1) + if i > 0 { + tx, err := connectorsPsets[i-1].UnsignedTx() + require.NoError(t, err) + require.NotNil(t, tx) + expectedInputTxid = tx.TxHash().String() + } + + inputTxid := chainhash.Hash(pset.Inputs[0].PreviousTxid).String() + require.Equal(t, expectedInputTxid, inputTxid) + require.Equal(t, expectedInputVout, pset.Inputs[0].PreviousTxIndex) + } + + // decode and check forfeit txs + forfeitTxsPsets := make([]*psetv2.Pset, 0, f.expectedNumOfForfeitTxs) + for _, pset := range forfeitTxs { + p, err := psetv2.NewPsetFromBase64(pset) + require.NoError(t, err) + forfeitTxsPsets = append(forfeitTxsPsets, p) + } + + // each forfeit tx should have 2 inputs and 2 outputs + for _, pset := range forfeitTxsPsets { + require.Len(t, pset.Inputs, 2) + require.Len(t, pset.Outputs, 1) + } + } +} diff --git a/internal/infrastructure/tx-builder/dummy/connectors.go b/internal/infrastructure/tx-builder/dummy/connectors.go new file mode 100644 index 000000000..f56d1b87a --- /dev/null +++ b/internal/infrastructure/tx-builder/dummy/connectors.go @@ -0,0 +1,75 @@ +package txbuilder + +import ( + "github.com/vulpemventures/go-elements/psetv2" +) + +func createConnectors( + poolTxID string, + connectorOutputIndex uint32, + connectorOutput psetv2.OutputArgs, + changeScript []byte, + numberOfConnectors uint64, +) (connectorsPsets []string, err error) { + previousInput := psetv2.InputArgs{ + Txid: poolTxID, + TxIndex: connectorOutputIndex, + } + + // compute the initial amount of the connectors output in pool transaction + remainingAmount := connectorAmount * numberOfConnectors + + connectorsPset := make([]string, 0, numberOfConnectors-1) + for i := uint64(0); i < numberOfConnectors-1; i++ { + // create a new pset + pset, err := psetv2.New(nil, nil, nil) + if err != nil { + return nil, err + } + + updater, err := psetv2.NewUpdater(pset) + if err != nil { + return nil, err + } + + err = updater.AddInputs([]psetv2.InputArgs{previousInput}) + if err != nil { + return nil, err + } + + err = updater.AddOutputs([]psetv2.OutputArgs{connectorOutput}) + if err != nil { + return nil, err + } + + changeAmount := remainingAmount - connectorOutput.Amount + if changeAmount > 0 { + changeOutput := psetv2.OutputArgs{ + Asset: connectorOutput.Asset, + Amount: changeAmount, + Script: changeScript, + } + err = updater.AddOutputs([]psetv2.OutputArgs{changeOutput}) + if err != nil { + return nil, err + } + tx, _ := pset.UnsignedTx() + txid := tx.TxHash().String() + + // make the change the next previousInput + previousInput = psetv2.InputArgs{ + Txid: txid, + TxIndex: 1, + } + } + + base64, err := pset.ToBase64() + if err != nil { + return nil, err + } + + connectorsPset = append(connectorsPset, base64) + } + + return connectorsPset, nil +} diff --git a/internal/infrastructure/tx-builder/dummy/forfeit.go b/internal/infrastructure/tx-builder/dummy/forfeit.go new file mode 100644 index 000000000..6db4749d6 --- /dev/null +++ b/internal/infrastructure/tx-builder/dummy/forfeit.go @@ -0,0 +1,42 @@ +package txbuilder + +import ( + "github.com/vulpemventures/go-elements/network" + "github.com/vulpemventures/go-elements/psetv2" +) + +func createForfeitTx( + connectorInput psetv2.InputArgs, + vtxoInput psetv2.InputArgs, + vtxoAmount uint64, + aspScript []byte, + net *network.Network, +) (forfeitTx string, err error) { + pset, err := psetv2.New(nil, nil, nil) + if err != nil { + return "", err + } + + updater, err := psetv2.NewUpdater(pset) + if err != nil { + return "", err + } + + err = updater.AddInputs([]psetv2.InputArgs{connectorInput, vtxoInput}) + if err != nil { + return "", err + } + + err = updater.AddOutputs([]psetv2.OutputArgs{ + { + Asset: net.AssetID, + Amount: vtxoAmount, + Script: aspScript, + }, + }) + if err != nil { + return "", err + } + + return pset.ToBase64() +} diff --git a/internal/infrastructure/tx-builder/dummy/tree.go b/internal/infrastructure/tx-builder/dummy/tree.go new file mode 100644 index 000000000..b1cc430b1 --- /dev/null +++ b/internal/infrastructure/tx-builder/dummy/tree.go @@ -0,0 +1,270 @@ +package txbuilder + +import ( + "github.com/ark-network/ark/common" + "github.com/ark-network/ark/internal/core/domain" + "github.com/decred/dcrd/dcrec/secp256k1/v4" + "github.com/vulpemventures/go-elements/address" + "github.com/vulpemventures/go-elements/network" + "github.com/vulpemventures/go-elements/payment" + "github.com/vulpemventures/go-elements/psetv2" +) + +const ( + sharedOutputIndex = 0 +) + +type outputScriptFactory func(leaves []domain.Receiver) ([]byte, error) + +func p2wpkhScript(publicKey *secp256k1.PublicKey, net *network.Network) ([]byte, error) { + payment := payment.FromPublicKey(publicKey, net, nil) + addr, err := payment.WitnessPubKeyHash() + if err != nil { + return nil, err + } + + return address.ToOutputScript(addr) +} + +// newOtputScriptFactory returns an output script factory func that lock funds using the ASP public key only on all branches psbt. The leaves are instead locked by the leaf public key. +func newOutputScriptFactory(aspPublicKey *secp256k1.PublicKey, net *network.Network) outputScriptFactory { + return func(leaves []domain.Receiver) ([]byte, error) { + aspScript, err := p2wpkhScript(aspPublicKey, net) + if err != nil { + return nil, err + } + + switch len(leaves) { + case 0: + return nil, nil + case 1: // it's a leaf + _, key, err := common.DecodePubKey(leaves[0].Pubkey) + if err != nil { + return nil, err + } + + return p2wpkhScript(key, net) + default: // it's a branch, lock funds with ASP public key + return aspScript, nil + } + } +} + +// congestionTree builder iteratively creates a binary tree of Pset from a set of receivers +// it also expect createOutputScript func managing the output script creation and the network to use (mainly for L-BTC asset id) +func buildCongestionTree( + createOutputScript outputScriptFactory, + net *network.Network, + poolTxID string, + receivers []domain.Receiver, +) (congestionTree []string, err error) { + var nodes []*node + + for _, r := range receivers { + nodes = append(nodes, newLeaf(createOutputScript, net, r)) + } + + for len(nodes) > 1 { + nodes, err = createTreeLevel(nodes) + if err != nil { + return nil, err + } + } + + var tree []string + + psets, err := nodes[0].psets(psetv2.InputArgs{ + Txid: poolTxID, + TxIndex: sharedOutputIndex, + }) + if err != nil { + return nil, err + } + + for _, pset := range psets { + psetB64, err := pset.ToBase64() + if err != nil { + return nil, err + } + tree = append(tree, psetB64) + } + + return tree, nil +} + +func createTreeLevel(nodes []*node) ([]*node, error) { + if len(nodes)%2 != 0 { + last := nodes[len(nodes)-1] + pairs, err := createTreeLevel(nodes[:len(nodes)-1]) + if err != nil { + return nil, err + } + + return append(pairs, last), nil + } + + pairs := make([]*node, 0, len(nodes)/2) + for i := 0; i < len(nodes); i += 2 { + pairs = append(pairs, newBranch(nodes[i], nodes[i+1])) + } + return pairs, nil +} + +// internal struct to build a binary tree of Pset +type node struct { + receivers []domain.Receiver + left *node + right *node + createOutputScript outputScriptFactory + network *network.Network +} + +// create a node from a single receiver +func newLeaf( + createOutputScript outputScriptFactory, + network *network.Network, + receiver domain.Receiver, +) *node { + return &node{ + receivers: []domain.Receiver{receiver}, + createOutputScript: createOutputScript, + network: network, + left: nil, + right: nil, + } +} + +// aggregate two nodes into a branch node +func newBranch( + left *node, + right *node, +) *node { + return &node{ + receivers: append(left.receivers, right.receivers...), + createOutputScript: left.createOutputScript, + network: left.network, + left: left, + right: right, + } +} + +// is it the final node of the tree +func (n *node) isLeaf() bool { + return len(n.receivers) == 1 +} + +// compute the output amount of a node +func (n *node) amount() uint64 { + var amount uint64 + for _, r := range n.receivers { + amount += r.Amount + } + return amount +} + +// compute the output script of a node +func (n *node) script() ([]byte, error) { + return n.createOutputScript(n.receivers) +} + +// use script & amount to create OutputArgs +func (n *node) output() (*psetv2.OutputArgs, error) { + script, err := n.script() + if err != nil { + return nil, err + } + + return &psetv2.OutputArgs{ + Asset: n.network.AssetID, + Amount: n.amount(), + Script: script, + }, nil +} + +// create the node Pset from the previous node Pset represented by input arg +// if node is a branch, it adds two outputs to the Pset, one for the left branch and one for the right branch +// if node is a leaf, it only adds one output to the Pset (the node output) +func (n *node) pset(input psetv2.InputArgs) (*psetv2.Pset, error) { + pset, err := psetv2.New(nil, nil, nil) + if err != nil { + return nil, err + } + + updater, err := psetv2.NewUpdater(pset) + if err != nil { + return nil, err + } + + err = updater.AddInputs([]psetv2.InputArgs{input}) + if err != nil { + return nil, err + } + + if n.isLeaf() { + output, err := n.output() + if err != nil { + return nil, err + } + + err = updater.AddOutputs([]psetv2.OutputArgs{*output}) + if err != nil { + return nil, err + } + return pset, nil + } + + outputLeft, err := n.left.output() + if err != nil { + return nil, err + } + + outputRight, err := n.right.output() + if err != nil { + return nil, err + } + + err = updater.AddOutputs([]psetv2.OutputArgs{*outputLeft, *outputRight}) + if err != nil { + return nil, err + } + + return pset, nil +} + +// create the node pset and all the psets of its children recursively, updating the input arg at each step +// the function stops when it reaches a leaf node +func (n *node) psets(input psetv2.InputArgs) ([]*psetv2.Pset, error) { + pset, err := n.pset(input) + if err != nil { + return nil, err + } + + if n.isLeaf() { + return []*psetv2.Pset{pset}, nil + } + + unsignedTx, err := pset.UnsignedTx() + if err != nil { + return nil, err + } + + txID := unsignedTx.TxHash().String() + + psetsLeft, err := n.left.psets(psetv2.InputArgs{ + Txid: txID, + TxIndex: 0, + }) + if err != nil { + return nil, err + } + + psetsRight, err := n.right.psets(psetv2.InputArgs{ + Txid: txID, + TxIndex: 1, + }) + if err != nil { + return nil, err + } + + return append([]*psetv2.Pset{pset}, append(psetsLeft, psetsRight...)...), nil +} From d36ef9ab9550c34057873674f06098142ef734cc Mon Sep 17 00:00:00 2001 From: Pietralberto Mazza <18440657+altafan@users.noreply.github.com> Date: Mon, 27 Nov 2023 12:14:16 +0100 Subject: [PATCH 3/5] Add gocron Scheduler implementation (#13) * Add gocron scheduler * Fixes --- go.mod | 6 ++-- go.sum | 14 ++++++-- internal/core/application/service.go | 22 ++++++++---- internal/core/ports/scheduler.go | 2 +- .../scheduler/gocron/service.go | 34 +++++++++++++++++++ 5 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 internal/infrastructure/scheduler/gocron/service.go diff --git a/go.mod b/go.mod index 4bc805a46..07d7d6801 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,8 @@ require ( github.com/ark-network/ark/common v0.0.0-00010101000000-000000000000 github.com/btcsuite/btcd/btcec/v2 v2.2.0 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 - github.com/google/uuid v1.3.1 + github.com/go-co-op/gocron v1.36.0 + github.com/google/uuid v1.4.0 github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.17.0 github.com/stretchr/testify v1.8.4 @@ -20,6 +21,8 @@ require ( google.golang.org/protobuf v1.31.0 ) +require github.com/robfig/cron/v3 v3.0.1 // indirect + require ( github.com/btcsuite/btcd v0.23.1 // indirect github.com/btcsuite/btcd/btcutil v1.1.3 // indirect @@ -54,7 +57,6 @@ require ( golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 457779045..70ff78892 100644 --- a/go.sum +++ b/go.sum @@ -77,6 +77,7 @@ github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnht github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -101,6 +102,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/go-co-op/gocron v1.36.0 h1:sEmAwg57l4JWQgzaVWYfKZ+w13uHOqeOtwjo72Ll5Wc= +github.com/go-co-op/gocron v1.36.0/go.mod h1:3L/n6BkO7ABj+TrfSVXLRzsP26zmikL4ISkLQ0O8iNY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -162,8 +165,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= @@ -184,6 +187,7 @@ github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6 github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -205,13 +209,18 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -241,6 +250,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= diff --git a/internal/core/application/service.go b/internal/core/application/service.go index e7a360e14..9bd73a69f 100644 --- a/internal/core/application/service.go +++ b/internal/core/application/service.go @@ -35,8 +35,8 @@ func NewService( } } -func (s *service) Start() { - s.start() +func (s *service) Start() error { + return s.start() } func (s *service) SpendVtxos(ctx context.Context, inputs []domain.VtxoKey) (string, error) { @@ -98,12 +98,22 @@ func (s *service) SignVtxos(ctx context.Context, forfeitTxs map[string]string) e return nil } -func (s *service) start() { +func (s *service) start() error { startImmediately := true finalizationInterval := int64(s.roundInterval / 2) - s.scheduler.ScheduleTask(s.roundInterval, startImmediately, s.startRound) - s.scheduler.ScheduleTask(finalizationInterval, !startImmediately, s.startFinalization) - s.scheduler.ScheduleTask(s.roundInterval-1, !startImmediately, s.finalizeRound) + if err := s.scheduler.ScheduleTask( + s.roundInterval, startImmediately, s.startRound, + ); err != nil { + return err + } + if err := s.scheduler.ScheduleTask( + finalizationInterval, !startImmediately, s.startFinalization, + ); err != nil { + return err + } + return s.scheduler.ScheduleTask( + s.roundInterval-1, !startImmediately, s.finalizeRound, + ) } func (s *service) startRound() { diff --git a/internal/core/ports/scheduler.go b/internal/core/ports/scheduler.go index f78371461..09c12487c 100644 --- a/internal/core/ports/scheduler.go +++ b/internal/core/ports/scheduler.go @@ -4,5 +4,5 @@ type SchedulerService interface { Start() Stop() - ScheduleTask(interval int64, immediate bool, task func()) + ScheduleTask(interval int64, immediate bool, task func()) error } diff --git a/internal/infrastructure/scheduler/gocron/service.go b/internal/infrastructure/scheduler/gocron/service.go new file mode 100644 index 000000000..5161e145f --- /dev/null +++ b/internal/infrastructure/scheduler/gocron/service.go @@ -0,0 +1,34 @@ +package scheduler + +import ( + "time" + + "github.com/ark-network/ark/internal/core/ports" + "github.com/go-co-op/gocron" +) + +type service struct { + scheduler *gocron.Scheduler +} + +func NewScheduler() ports.SchedulerService { + svc := gocron.NewScheduler(time.UTC) + return &service{svc} +} + +func (s *service) Start() { + s.scheduler.StartAsync() +} + +func (s *service) Stop() { + s.scheduler.Stop() +} + +func (s *service) ScheduleTask(interval int64, immediate bool, task func()) error { + if immediate { + _, err := s.scheduler.Every(interval).Seconds().Do(task) + return err + } + _, err := s.scheduler.Every(interval).Seconds().WaitForSchedule().Do(task) + return err +} From 8cbd1f2fea5a28e704800ad9511830072c0ddce8 Mon Sep 17 00:00:00 2001 From: Pietralberto Mazza <18440657+altafan@users.noreply.github.com> Date: Mon, 27 Nov 2023 14:23:22 +0100 Subject: [PATCH 4/5] Monorepo scaffolding (#16) * Change scaffolding * Fix gh action --- ....intergation.yaml => ark.intergation.yaml} | 8 +- .../{release.yaml => ark.release.yaml} | 5 + .../workflows/{ci.unit.yaml => ark.unit.yaml} | 11 +- README.md | 10 +- .dockerignore => asp/.dockerignore | 0 .gitignore => asp/.gitignore | 0 .goreleaser.yaml => asp/.goreleaser.yaml | 36 +- Dockerfile => asp/Dockerfile | 14 +- LICENSE => asp/LICENSE | 0 Makefile => asp/Makefile | 8 +- .../grpc/handlers/.gitkeep => asp/README.md | 0 .../swagger/ark}/v1/service.swagger.json | 24 +- .../swagger/ocean/v1/account.swagger.json | 0 .../ocean/v1/notification.swagger.json | 0 .../swagger/ocean/v1/transaction.swagger.json | 0 .../swagger/ocean/v1/types.swagger.json | 0 .../swagger/ocean/v1/wallet.swagger.json | 0 .../api-spec/protobuf/ark}/v1/service.proto | 4 +- {api-spec => asp/api-spec}/protobuf/buf.lock | 0 {api-spec => asp/api-spec}/protobuf/buf.yaml | 2 +- .../protobuf/gen/ark/v1/service.pb.go | 946 ++++++++++++++++++ .../protobuf/gen/ark/v1/service.pb.gw.go | 509 ++++++++++ .../protobuf/gen/ark/v1/service_grpc.pb.go | 243 +++++ .../protobuf/gen/ocean/v1/account.pb.go | 0 .../protobuf/gen/ocean/v1/account_grpc.pb.go | 0 .../protobuf/gen/ocean/v1/notification.pb.go | 0 .../gen/ocean/v1/notification_grpc.pb.go | 0 .../protobuf/gen/ocean/v1/transaction.pb.go | 0 .../gen/ocean/v1/transaction_grpc.pb.go | 0 .../protobuf/gen/ocean/v1/types.pb.go | 0 .../protobuf/gen/ocean/v1/wallet.pb.go | 0 .../protobuf/gen/ocean/v1/wallet_grpc.pb.go | 0 buf.gen.yaml => asp/buf.gen.yaml | 0 buf.work.yaml => asp/buf.work.yaml | 0 {cmd/coordinatord => asp/cmd/arkd}/main.go | 0 go.mod => asp/go.mod | 19 +- go.sum => asp/go.sum | 16 +- .../goreleaser.Dockerfile | 12 +- {internal => asp/internal}/config/config.go | 4 +- .../internal}/core/application/service.go | 0 .../internal}/core/application/utils.go | 0 .../internal}/core/domain/events.go | 0 .../internal}/core/domain/payment.go | 0 .../internal}/core/domain/round.go | 0 .../internal}/core/domain/round_repo.go | 0 .../internal}/core/ports/repo_manager.go | 0 .../internal}/core/ports/scheduler.go | 0 .../internal}/core/ports/tx_builder.go | 0 .../internal}/core/ports/wallet.go | 0 .../infrastructure/ocean-wallet/account.go | 0 .../infrastructure/ocean-wallet/notify.go | 0 .../infrastructure/ocean-wallet/service.go | 0 .../ocean-wallet/transaction.go | 0 .../infrastructure/ocean-wallet/wallet.go | 0 .../scheduler/gocron/service.go | 0 .../tx-builder/dummy/builder.go | 0 .../tx-builder/dummy/builder_test.go | 0 .../tx-builder/dummy/connectors.go | 0 .../tx-builder/dummy/forfeit.go | 0 .../infrastructure/tx-builder/dummy/tree.go | 0 .../interface/grpc/handlers}/.gitkeep | 0 .../interface/grpc/interceptors}/.gitkeep | 0 .../interface/grpc/permissions}/.gitkeep | 0 .../internal}/interface/grpc/service.go | 0 .../internal}/interface/service.go | 0 asp/internal/test/.gitkeep | 0 asp/pkg/.gitkeep | 0 {scripts => asp/scripts}/build | 2 +- {scripts => asp/scripts}/build-noah | 0 {pkg/common => common}/appdata.go | 0 {pkg/common => common}/bip68.go | 0 {pkg/common => common}/bip68_test.go | 0 {pkg/common => common}/encoding.go | 0 {pkg/common => common}/encoding_test.go | 0 {pkg/common => common}/fixtures/bip68.json | 0 {pkg/common => common}/fixtures/encoding.json | 0 {pkg/common => common}/go.mod | 0 {pkg/common => common}/go.sum | 0 {pkg/common => common}/network.go | 0 {cmd/noah => noah}/balance.go | 0 {cmd/noah => noah}/common.go | 0 {cmd/noah => noah}/config.go | 0 {cmd/noah => noah}/cypher.go | 0 noah/go.mod | 22 + noah/go.sum | 119 +++ {cmd/noah => noah}/init.go | 0 {cmd/noah => noah}/main.go | 0 {cmd/noah => noah}/receive.go | 0 {cmd/noah => noah}/redeem.go | 0 {cmd/noah => noah}/send.go | 0 90 files changed, 1938 insertions(+), 76 deletions(-) rename .github/workflows/{ci.intergation.yaml => ark.intergation.yaml} (74%) rename .github/workflows/{release.yaml => ark.release.yaml} (93%) rename .github/workflows/{ci.unit.yaml => ark.unit.yaml} (79%) mode change 100755 => 100644 README.md rename .dockerignore => asp/.dockerignore (100%) rename .gitignore => asp/.gitignore (100%) rename .goreleaser.yaml => asp/.goreleaser.yaml (72%) rename Dockerfile => asp/Dockerfile (67%) rename LICENSE => asp/LICENSE (100%) rename Makefile => asp/Makefile (88%) rename internal/interface/grpc/handlers/.gitkeep => asp/README.md (100%) rename {api-spec/openapi/swagger/coordinator => asp/api-spec/openapi/swagger/ark}/v1/service.swagger.json (92%) rename {api-spec => asp/api-spec}/openapi/swagger/ocean/v1/account.swagger.json (100%) rename {api-spec => asp/api-spec}/openapi/swagger/ocean/v1/notification.swagger.json (100%) rename {api-spec => asp/api-spec}/openapi/swagger/ocean/v1/transaction.swagger.json (100%) rename {api-spec => asp/api-spec}/openapi/swagger/ocean/v1/types.swagger.json (100%) rename {api-spec => asp/api-spec}/openapi/swagger/ocean/v1/wallet.swagger.json (100%) rename {api-spec/protobuf/coordinator => asp/api-spec/protobuf/ark}/v1/service.proto (97%) rename {api-spec => asp/api-spec}/protobuf/buf.lock (100%) rename {api-spec => asp/api-spec}/protobuf/buf.yaml (78%) create mode 100644 asp/api-spec/protobuf/gen/ark/v1/service.pb.go create mode 100644 asp/api-spec/protobuf/gen/ark/v1/service.pb.gw.go create mode 100644 asp/api-spec/protobuf/gen/ark/v1/service_grpc.pb.go rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/account.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/account_grpc.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/notification.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/notification_grpc.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/transaction.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/transaction_grpc.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/types.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/wallet.pb.go (100%) rename {api-spec => asp/api-spec}/protobuf/gen/ocean/v1/wallet_grpc.pb.go (100%) rename buf.gen.yaml => asp/buf.gen.yaml (100%) rename buf.work.yaml => asp/buf.work.yaml (100%) rename {cmd/coordinatord => asp/cmd/arkd}/main.go (100%) rename go.mod => asp/go.mod (81%) rename go.sum => asp/go.sum (98%) rename goreleaser.Dockerfile => asp/goreleaser.Dockerfile (67%) rename {internal => asp/internal}/config/config.go (92%) rename {internal => asp/internal}/core/application/service.go (100%) rename {internal => asp/internal}/core/application/utils.go (100%) rename {internal => asp/internal}/core/domain/events.go (100%) rename {internal => asp/internal}/core/domain/payment.go (100%) rename {internal => asp/internal}/core/domain/round.go (100%) rename {internal => asp/internal}/core/domain/round_repo.go (100%) rename {internal => asp/internal}/core/ports/repo_manager.go (100%) rename {internal => asp/internal}/core/ports/scheduler.go (100%) rename {internal => asp/internal}/core/ports/tx_builder.go (100%) rename {internal => asp/internal}/core/ports/wallet.go (100%) rename {internal => asp/internal}/infrastructure/ocean-wallet/account.go (100%) rename {internal => asp/internal}/infrastructure/ocean-wallet/notify.go (100%) rename {internal => asp/internal}/infrastructure/ocean-wallet/service.go (100%) rename {internal => asp/internal}/infrastructure/ocean-wallet/transaction.go (100%) rename {internal => asp/internal}/infrastructure/ocean-wallet/wallet.go (100%) rename {internal => asp/internal}/infrastructure/scheduler/gocron/service.go (100%) rename {internal => asp/internal}/infrastructure/tx-builder/dummy/builder.go (100%) rename {internal => asp/internal}/infrastructure/tx-builder/dummy/builder_test.go (100%) rename {internal => asp/internal}/infrastructure/tx-builder/dummy/connectors.go (100%) rename {internal => asp/internal}/infrastructure/tx-builder/dummy/forfeit.go (100%) rename {internal => asp/internal}/infrastructure/tx-builder/dummy/tree.go (100%) rename {internal/interface/grpc/interceptors => asp/internal/interface/grpc/handlers}/.gitkeep (100%) rename {internal/interface/grpc/permissions => asp/internal/interface/grpc/interceptors}/.gitkeep (100%) rename {internal/test => asp/internal/interface/grpc/permissions}/.gitkeep (100%) rename {internal => asp/internal}/interface/grpc/service.go (100%) rename {internal => asp/internal}/interface/service.go (100%) create mode 100755 asp/internal/test/.gitkeep create mode 100644 asp/pkg/.gitkeep rename {scripts => asp/scripts}/build (63%) rename {scripts => asp/scripts}/build-noah (100%) rename {pkg/common => common}/appdata.go (100%) rename {pkg/common => common}/bip68.go (100%) rename {pkg/common => common}/bip68_test.go (100%) rename {pkg/common => common}/encoding.go (100%) rename {pkg/common => common}/encoding_test.go (100%) rename {pkg/common => common}/fixtures/bip68.json (100%) rename {pkg/common => common}/fixtures/encoding.json (100%) rename {pkg/common => common}/go.mod (100%) rename {pkg/common => common}/go.sum (100%) rename {pkg/common => common}/network.go (100%) rename {cmd/noah => noah}/balance.go (100%) rename {cmd/noah => noah}/common.go (100%) rename {cmd/noah => noah}/config.go (100%) rename {cmd/noah => noah}/cypher.go (100%) create mode 100644 noah/go.mod create mode 100644 noah/go.sum rename {cmd/noah => noah}/init.go (100%) rename {cmd/noah => noah}/main.go (100%) rename {cmd/noah => noah}/receive.go (100%) rename {cmd/noah => noah}/redeem.go (100%) rename {cmd/noah => noah}/send.go (100%) diff --git a/.github/workflows/ci.intergation.yaml b/.github/workflows/ark.intergation.yaml similarity index 74% rename from .github/workflows/ci.intergation.yaml rename to .github/workflows/ark.intergation.yaml index f15d10ded..a9d3d9356 100755 --- a/.github/workflows/ci.intergation.yaml +++ b/.github/workflows/ark.intergation.yaml @@ -2,12 +2,18 @@ name: ci_integration on: push: - branches: [master] + branches: + - master + paths: + - "asp/**" jobs: test: name: integration tests runs-on: ubuntu-latest + defaults: + run: + working-directory: ./asp steps: - uses: actions/setup-go@v3 with: diff --git a/.github/workflows/release.yaml b/.github/workflows/ark.release.yaml similarity index 93% rename from .github/workflows/release.yaml rename to .github/workflows/ark.release.yaml index 41b148d21..d8d0f76f7 100755 --- a/.github/workflows/release.yaml +++ b/.github/workflows/ark.release.yaml @@ -5,10 +5,15 @@ on: push: tags: - "*" + paths: + - "asp/**" jobs: goreleaser: runs-on: ubuntu-20.04 + defaults: + run: + working-directory: ./asp env: DOCKER_CLI_EXPERIMENTAL: "enabled" diff --git a/.github/workflows/ci.unit.yaml b/.github/workflows/ark.unit.yaml similarity index 79% rename from .github/workflows/ci.unit.yaml rename to .github/workflows/ark.unit.yaml index f3786acb2..3dc4f974e 100755 --- a/.github/workflows/ci.unit.yaml +++ b/.github/workflows/ark.unit.yaml @@ -2,14 +2,22 @@ name: ci_unit on: push: + paths: + - "asp/**" branches: [master] pull_request: - branches: [master] + branches: + - master + paths: + - "asp/**" jobs: test: name: unit tests runs-on: ubuntu-latest + defaults: + run: + working-directory: ./asp steps: - uses: actions/setup-go@v3 with: @@ -19,6 +27,7 @@ jobs: uses: golangci/golangci-lint-action@v3 with: version: v1.54 + working-directory: ./asp - name: check code integrity uses: securego/gosec@master with: diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 9e7d032c9..83810e3a4 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ -# ark \ No newline at end of file +# Ark monorepo + +This is the monorepo containing the initial Ark products. + +In this repository you can find: + +* `asp` - a proof of concept of an Ark Service Provider. +* `dev-portal` - the website where to find documentation about Ark protocol and products. +* `noah` - the initial Ark wallet, served as CLI. \ No newline at end of file diff --git a/.dockerignore b/asp/.dockerignore similarity index 100% rename from .dockerignore rename to asp/.dockerignore diff --git a/.gitignore b/asp/.gitignore similarity index 100% rename from .gitignore rename to asp/.gitignore diff --git a/.goreleaser.yaml b/asp/.goreleaser.yaml similarity index 72% rename from .goreleaser.yaml rename to asp/.goreleaser.yaml index c030126f6..ab83b2a02 100755 --- a/.goreleaser.yaml +++ b/asp/.goreleaser.yaml @@ -1,6 +1,6 @@ builds: - - id: "coordinatord" - main: ./cmd/coordinatord + - id: "arkd" + main: ./cmd/arkd ldflags: - -s -X 'main.version={{.Version}}' -X 'main.commit={{.Commit}}' -X 'main.date={{.Date}}' goos: @@ -9,7 +9,7 @@ builds: goarch: - amd64 - arm64 - binary: coordinatord + binary: arkd ## flag the semver v**.**.**-.* as pre-release on Github release: @@ -25,11 +25,11 @@ changelog: use: github-native archives: - - id: coordinatord + - id: arkd format: binary builds: - - coordinatord - name_template: "coordinatord-v{{ .Version }}-{{ .Os }}-{{ .Arch }}" + - arkd + name_template: "arkd-v{{ .Version }}-{{ .Os }}-{{ .Arch }}" dockers: ########################### @@ -38,12 +38,12 @@ dockers: #amd64 - image_templates: - - "ghcr.io/ark-network/coordinatord:{{ .Tag }}-amd64" + - "ghcr.io/ark-network/arkd:{{ .Tag }}-amd64" # push always either release or prerelease with a docker tag with the semver only skip_push: "false" use: buildx ids: - - coordinatord + - arkd dockerfile: goreleaser.Dockerfile # GOOS of the built binaries/packages that should be used. goos: linux @@ -54,19 +54,19 @@ dockers: - "--platform=linux/amd64" - "--pull" - "--label=org.opencontainers.image.created={{.Date}}" - - "--label=org.opencontainers.image.title=coordinatord" + - "--label=org.opencontainers.image.title=arkd" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - "--build-arg=VERSION={{.Version}}" - "--build-arg=COMMIT={{.Commit}}" - "--build-arg=DATE={{.Date}}" - image_templates: - - "ghcr.io/ark-network/coordinatord:{{ .Tag }}-arm64v8" + - "ghcr.io/ark-network/arkd:{{ .Tag }}-arm64v8" # push always either release or prerelease with a docker tag with the semver only skip_push: "false" use: buildx ids: - - coordinatord + - arkd dockerfile: goreleaser.Dockerfile # GOOS of the built binaries/packages that should be used. goos: linux @@ -77,7 +77,7 @@ dockers: - "--platform=linux/arm64/v8" - "--pull" - "--label=org.opencontainers.image.created={{.Date}}" - - "--label=org.opencontainers.image.title=coordinatord" + - "--label=org.opencontainers.image.title=arkd" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - "--build-arg=VERSION={{.Version}}" @@ -85,15 +85,15 @@ dockers: - "--build-arg=DATE={{.Date}}" docker_manifests: - - name_template: ghcr.io/ark-network/coordinatord:{{ .Tag }} + - name_template: ghcr.io/ark-network/arkd:{{ .Tag }} image_templates: - - ghcr.io/ark-network/coordinatord:{{ .Tag }}-amd64 - - ghcr.io/ark-network/coordinatord:{{ .Tag }}-arm64v8 + - ghcr.io/ark-network/arkd:{{ .Tag }}-amd64 + - ghcr.io/ark-network/arkd:{{ .Tag }}-arm64v8 skip_push: "false" - - name_template: ghcr.io/ark-network/coordinatord:latest + - name_template: ghcr.io/ark-network/arkd:latest image_templates: - - ghcr.io/ark-network/coordinatord:{{ .Tag }}-amd64 - - ghcr.io/ark-network/coordinatord:{{ .Tag }}-arm64v8 + - ghcr.io/ark-network/arkd:{{ .Tag }}-amd64 + - ghcr.io/ark-network/arkd:{{ .Tag }}-arm64v8 skip_push: auto \ No newline at end of file diff --git a/Dockerfile b/asp/Dockerfile similarity index 67% rename from Dockerfile rename to asp/Dockerfile index a44fedf6b..502875ff6 100755 --- a/Dockerfile +++ b/asp/Dockerfile @@ -11,9 +11,9 @@ WORKDIR /app COPY . . -RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-X 'main.Version=${COMMIT}' -X 'main.Commit=${COMMIT}' -X 'main.Date=${COMMIT}'" -o bin/coordinatord cmd/coordinatord/main.go +RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-X 'main.Version=${COMMIT}' -X 'main.Commit=${COMMIT}' -X 'main.Date=${COMMIT}'" -o bin/arkd cmd/arkd/main.go -# Second image, running the coordinatord executable +# Second image, running the arkd executable FROM debian:buster-slim # $USER name, and data $DIR to be used in the 'final' image @@ -31,11 +31,11 @@ RUN adduser --disabled-password \ "$USER" USER $USER -# Prevents 'VOLUME $DIR/.coordinatord/' being created as owned by 'root' -RUN mkdir -p "$DIR/.coordinatord/" +# Prevents 'VOLUME $DIR/.arkd/' being created as owned by 'root' +RUN mkdir -p "$DIR/.arkd/" -# Expose volume containing all 'coordinatord' data -VOLUME $DIR/.coordinatord/ +# Expose volume containing all 'arkd' data +VOLUME $DIR/.arkd/ -ENTRYPOINT [ "coordinatord" ] +ENTRYPOINT [ "arkd" ] \ No newline at end of file diff --git a/LICENSE b/asp/LICENSE similarity index 100% rename from LICENSE rename to asp/LICENSE diff --git a/Makefile b/asp/Makefile similarity index 88% rename from Makefile rename to asp/Makefile index d3b49f243..9f3fe38ac 100755 --- a/Makefile +++ b/asp/Makefile @@ -2,7 +2,7 @@ ## build: build for all platforms build: - @echo "Building coordinatord binary..." + @echo "Building arkd binary..." @bash ./scripts/build build-noah: @@ -36,9 +36,9 @@ lint: ## run: run in dev mode run: clean - @echo "Running coordinatord in dev mode..." - @export ARK_COORDINATOR_WALLET_ADDR=localhost:18000; \ - go run ./cmd/coordinatord + @echo "Running arkd in dev mode..." + @export ARK_WALLET_ADDR=localhost:18000; \ + go run ./cmd/arkd ## test: runs unit and component tests test: diff --git a/internal/interface/grpc/handlers/.gitkeep b/asp/README.md similarity index 100% rename from internal/interface/grpc/handlers/.gitkeep rename to asp/README.md diff --git a/api-spec/openapi/swagger/coordinator/v1/service.swagger.json b/asp/api-spec/openapi/swagger/ark/v1/service.swagger.json similarity index 92% rename from api-spec/openapi/swagger/coordinator/v1/service.swagger.json rename to asp/api-spec/openapi/swagger/ark/v1/service.swagger.json index e50644407..4d2851e9a 100644 --- a/api-spec/openapi/swagger/coordinator/v1/service.swagger.json +++ b/asp/api-spec/openapi/swagger/ark/v1/service.swagger.json @@ -1,12 +1,12 @@ { "swagger": "2.0", "info": { - "title": "coordinator/v1/service.proto", + "title": "ark/v1/service.proto", "version": "version not set" }, "tags": [ { - "name": "CoordinatorService" + "name": "ArkService" } ], "consumes": [ @@ -18,7 +18,7 @@ "paths": { "/v1/payment/claim": { "post": { - "operationId": "CoordinatorService_ClaimPayment", + "operationId": "ArkService_ClaimPayment", "responses": { "200": { "description": "A successful response.", @@ -44,13 +44,13 @@ } ], "tags": [ - "CoordinatorService" + "ArkService" ] } }, "/v1/payment/finalize": { "post": { - "operationId": "CoordinatorService_FinalizePayment", + "operationId": "ArkService_FinalizePayment", "responses": { "200": { "description": "A successful response.", @@ -76,13 +76,13 @@ } ], "tags": [ - "CoordinatorService" + "ArkService" ] } }, "/v1/payment/register": { "post": { - "operationId": "CoordinatorService_RegisterPayment", + "operationId": "ArkService_RegisterPayment", "responses": { "200": { "description": "A successful response.", @@ -108,13 +108,13 @@ } ], "tags": [ - "CoordinatorService" + "ArkService" ] } }, "/v1/round/{txid}": { "get": { - "operationId": "CoordinatorService_GetRound", + "operationId": "ArkService_GetRound", "responses": { "200": { "description": "A successful response.", @@ -138,13 +138,13 @@ } ], "tags": [ - "CoordinatorService" + "ArkService" ] } }, "/v1/rounds": { "post": { - "operationId": "CoordinatorService_ListRounds", + "operationId": "ArkService_ListRounds", "responses": { "200": { "description": "A successful response.", @@ -170,7 +170,7 @@ } ], "tags": [ - "CoordinatorService" + "ArkService" ] } } diff --git a/api-spec/openapi/swagger/ocean/v1/account.swagger.json b/asp/api-spec/openapi/swagger/ocean/v1/account.swagger.json similarity index 100% rename from api-spec/openapi/swagger/ocean/v1/account.swagger.json rename to asp/api-spec/openapi/swagger/ocean/v1/account.swagger.json diff --git a/api-spec/openapi/swagger/ocean/v1/notification.swagger.json b/asp/api-spec/openapi/swagger/ocean/v1/notification.swagger.json similarity index 100% rename from api-spec/openapi/swagger/ocean/v1/notification.swagger.json rename to asp/api-spec/openapi/swagger/ocean/v1/notification.swagger.json diff --git a/api-spec/openapi/swagger/ocean/v1/transaction.swagger.json b/asp/api-spec/openapi/swagger/ocean/v1/transaction.swagger.json similarity index 100% rename from api-spec/openapi/swagger/ocean/v1/transaction.swagger.json rename to asp/api-spec/openapi/swagger/ocean/v1/transaction.swagger.json diff --git a/api-spec/openapi/swagger/ocean/v1/types.swagger.json b/asp/api-spec/openapi/swagger/ocean/v1/types.swagger.json similarity index 100% rename from api-spec/openapi/swagger/ocean/v1/types.swagger.json rename to asp/api-spec/openapi/swagger/ocean/v1/types.swagger.json diff --git a/api-spec/openapi/swagger/ocean/v1/wallet.swagger.json b/asp/api-spec/openapi/swagger/ocean/v1/wallet.swagger.json similarity index 100% rename from api-spec/openapi/swagger/ocean/v1/wallet.swagger.json rename to asp/api-spec/openapi/swagger/ocean/v1/wallet.swagger.json diff --git a/api-spec/protobuf/coordinator/v1/service.proto b/asp/api-spec/protobuf/ark/v1/service.proto similarity index 97% rename from api-spec/protobuf/coordinator/v1/service.proto rename to asp/api-spec/protobuf/ark/v1/service.proto index c91d184fe..ccb4c537d 100755 --- a/api-spec/protobuf/coordinator/v1/service.proto +++ b/asp/api-spec/protobuf/ark/v1/service.proto @@ -1,10 +1,10 @@ syntax = "proto3"; -package coordinator.v1; +package ark.v1; import "google/api/annotations.proto"; -service CoordinatorService { +service ArkService { rpc RegisterPayment(RegisterPaymentRequest) returns (RegisterPaymentResponse) { option (google.api.http) = { post: "/v1/payment/register" diff --git a/api-spec/protobuf/buf.lock b/asp/api-spec/protobuf/buf.lock similarity index 100% rename from api-spec/protobuf/buf.lock rename to asp/api-spec/protobuf/buf.lock diff --git a/api-spec/protobuf/buf.yaml b/asp/api-spec/protobuf/buf.yaml similarity index 78% rename from api-spec/protobuf/buf.yaml rename to asp/api-spec/protobuf/buf.yaml index 5b887f144..54dab7201 100755 --- a/api-spec/protobuf/buf.yaml +++ b/asp/api-spec/protobuf/buf.yaml @@ -1,5 +1,5 @@ version: v1 -name: buf.build/ark-network/coordinator +name: buf.build/ark-network/ark deps: - buf.build/googleapis/googleapis breaking: diff --git a/asp/api-spec/protobuf/gen/ark/v1/service.pb.go b/asp/api-spec/protobuf/gen/ark/v1/service.pb.go new file mode 100644 index 000000000..1e18d657c --- /dev/null +++ b/asp/api-spec/protobuf/gen/ark/v1/service.pb.go @@ -0,0 +1,946 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc (unknown) +// source: ark/v1/service.proto + +package arkv1 + +import ( + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type RegisterPaymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Unsigned forfeit tx sending all funds back to the ASP. + Vtx string `protobuf:"bytes,1,opt,name=vtx,proto3" json:"vtx,omitempty"` +} + +func (x *RegisterPaymentRequest) Reset() { + *x = RegisterPaymentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterPaymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterPaymentRequest) ProtoMessage() {} + +func (x *RegisterPaymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterPaymentRequest.ProtoReflect.Descriptor instead. +func (*RegisterPaymentRequest) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{0} +} + +func (x *RegisterPaymentRequest) GetVtx() string { + if x != nil { + return x.Vtx + } + return "" +} + +type RegisterPaymentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Mocks wabisabi's credentials. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Forfeit tx signed by the ASP. + SignedVtx string `protobuf:"bytes,2,opt,name=signed_vtx,json=signedVtx,proto3" json:"signed_vtx,omitempty"` +} + +func (x *RegisterPaymentResponse) Reset() { + *x = RegisterPaymentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterPaymentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterPaymentResponse) ProtoMessage() {} + +func (x *RegisterPaymentResponse) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegisterPaymentResponse.ProtoReflect.Descriptor instead. +func (*RegisterPaymentResponse) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{1} +} + +func (x *RegisterPaymentResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *RegisterPaymentResponse) GetSignedVtx() string { + if x != nil { + return x.SignedVtx + } + return "" +} + +type ClaimPaymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Mocks wabisabi's credentials. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // List of receivers for a registered payment. + Outputs []*Output `protobuf:"bytes,2,rep,name=outputs,proto3" json:"outputs,omitempty"` +} + +func (x *ClaimPaymentRequest) Reset() { + *x = ClaimPaymentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClaimPaymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClaimPaymentRequest) ProtoMessage() {} + +func (x *ClaimPaymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClaimPaymentRequest.ProtoReflect.Descriptor instead. +func (*ClaimPaymentRequest) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{2} +} + +func (x *ClaimPaymentRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ClaimPaymentRequest) GetOutputs() []*Output { + if x != nil { + return x.Outputs + } + return nil +} + +type ClaimPaymentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ClaimPaymentResponse) Reset() { + *x = ClaimPaymentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClaimPaymentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClaimPaymentResponse) ProtoMessage() {} + +func (x *ClaimPaymentResponse) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClaimPaymentResponse.ProtoReflect.Descriptor instead. +func (*ClaimPaymentResponse) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{3} +} + +type FinalizePaymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Forfeit tx signed also by the user. + SignedVtx string `protobuf:"bytes,1,opt,name=signed_vtx,json=signedVtx,proto3" json:"signed_vtx,omitempty"` +} + +func (x *FinalizePaymentRequest) Reset() { + *x = FinalizePaymentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FinalizePaymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FinalizePaymentRequest) ProtoMessage() {} + +func (x *FinalizePaymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FinalizePaymentRequest.ProtoReflect.Descriptor instead. +func (*FinalizePaymentRequest) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{4} +} + +func (x *FinalizePaymentRequest) GetSignedVtx() string { + if x != nil { + return x.SignedVtx + } + return "" +} + +type FinalizePaymentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FinalizePaymentResponse) Reset() { + *x = FinalizePaymentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FinalizePaymentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FinalizePaymentResponse) ProtoMessage() {} + +func (x *FinalizePaymentResponse) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FinalizePaymentResponse.ProtoReflect.Descriptor instead. +func (*FinalizePaymentResponse) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{5} +} + +type ListRoundsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` +} + +func (x *ListRoundsRequest) Reset() { + *x = ListRoundsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRoundsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRoundsRequest) ProtoMessage() {} + +func (x *ListRoundsRequest) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRoundsRequest.ProtoReflect.Descriptor instead. +func (*ListRoundsRequest) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{6} +} + +func (x *ListRoundsRequest) GetStart() int64 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *ListRoundsRequest) GetEnd() int64 { + if x != nil { + return x.End + } + return 0 +} + +type ListRoundsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rounds []*Round `protobuf:"bytes,1,rep,name=rounds,proto3" json:"rounds,omitempty"` +} + +func (x *ListRoundsResponse) Reset() { + *x = ListRoundsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListRoundsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRoundsResponse) ProtoMessage() {} + +func (x *ListRoundsResponse) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRoundsResponse.ProtoReflect.Descriptor instead. +func (*ListRoundsResponse) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{7} +} + +func (x *ListRoundsResponse) GetRounds() []*Round { + if x != nil { + return x.Rounds + } + return nil +} + +type GetRoundRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Txid string `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"` +} + +func (x *GetRoundRequest) Reset() { + *x = GetRoundRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRoundRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRoundRequest) ProtoMessage() {} + +func (x *GetRoundRequest) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRoundRequest.ProtoReflect.Descriptor instead. +func (*GetRoundRequest) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{8} +} + +func (x *GetRoundRequest) GetTxid() string { + if x != nil { + return x.Txid + } + return "" +} + +type GetRoundResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Round *Round `protobuf:"bytes,1,opt,name=round,proto3" json:"round,omitempty"` +} + +func (x *GetRoundResponse) Reset() { + *x = GetRoundResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRoundResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRoundResponse) ProtoMessage() {} + +func (x *GetRoundResponse) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRoundResponse.ProtoReflect.Descriptor instead. +func (*GetRoundResponse) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{9} +} + +func (x *GetRoundResponse) GetRound() *Round { + if x != nil { + return x.Round + } + return nil +} + +type Round struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + Txid string `protobuf:"bytes,3,opt,name=txid,proto3" json:"txid,omitempty"` + Outputs []*Output `protobuf:"bytes,4,rep,name=outputs,proto3" json:"outputs,omitempty"` +} + +func (x *Round) Reset() { + *x = Round{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Round) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Round) ProtoMessage() {} + +func (x *Round) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Round.ProtoReflect.Descriptor instead. +func (*Round) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{10} +} + +func (x *Round) GetStart() int64 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *Round) GetEnd() int64 { + if x != nil { + return x.End + } + return 0 +} + +func (x *Round) GetTxid() string { + if x != nil { + return x.Txid + } + return "" +} + +func (x *Round) GetOutputs() []*Output { + if x != nil { + return x.Outputs + } + return nil +} + +type Output struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + Amount uint64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *Output) Reset() { + *x = Output{} + if protoimpl.UnsafeEnabled { + mi := &file_ark_v1_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Output) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Output) ProtoMessage() {} + +func (x *Output) ProtoReflect() protoreflect.Message { + mi := &file_ark_v1_service_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Output.ProtoReflect.Descriptor instead. +func (*Output) Descriptor() ([]byte, []int) { + return file_ark_v1_service_proto_rawDescGZIP(), []int{11} +} + +func (x *Output) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +func (x *Output) GetAmount() uint64 { + if x != nil { + return x.Amount + } + return 0 +} + +var File_ark_v1_service_proto protoreflect.FileDescriptor + +var file_ark_v1_service_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x61, 0x72, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2a, 0x0a, 0x16, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x74, 0x78, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x74, 0x78, 0x22, 0x48, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x74, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, + 0x74, 0x78, 0x22, 0x4f, 0x0a, 0x13, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x07, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x72, 0x6b, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x0a, 0x16, 0x46, + 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, + 0x76, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x56, 0x74, 0x78, 0x22, 0x19, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x22, 0x25, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x78, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x69, 0x64, + 0x22, 0x37, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x6d, 0x0a, 0x05, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x78, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x69, 0x64, 0x12, 0x28, + 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x38, 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x32, 0x94, 0x04, 0x0a, 0x0a, 0x41, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x73, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, + 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x67, 0x0a, 0x0c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, + 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, + 0x73, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x66, 0x69, 0x6e, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x73, 0x12, 0x19, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0f, 0x3a, 0x01, 0x2a, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, + 0x12, 0x57, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x17, 0x2e, 0x61, + 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x2f, 0x7b, 0x74, 0x78, 0x69, 0x64, 0x7d, 0x42, 0x92, 0x01, 0x0a, 0x0a, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x6b, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x61, 0x72, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x72, 0x6b, 0x2f, 0x76, + 0x31, 0x3b, 0x61, 0x72, 0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, + 0x41, 0x72, 0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x72, 0x6b, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x12, 0x41, 0x72, 0x6b, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x72, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_ark_v1_service_proto_rawDescOnce sync.Once + file_ark_v1_service_proto_rawDescData = file_ark_v1_service_proto_rawDesc +) + +func file_ark_v1_service_proto_rawDescGZIP() []byte { + file_ark_v1_service_proto_rawDescOnce.Do(func() { + file_ark_v1_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_ark_v1_service_proto_rawDescData) + }) + return file_ark_v1_service_proto_rawDescData +} + +var file_ark_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_ark_v1_service_proto_goTypes = []interface{}{ + (*RegisterPaymentRequest)(nil), // 0: ark.v1.RegisterPaymentRequest + (*RegisterPaymentResponse)(nil), // 1: ark.v1.RegisterPaymentResponse + (*ClaimPaymentRequest)(nil), // 2: ark.v1.ClaimPaymentRequest + (*ClaimPaymentResponse)(nil), // 3: ark.v1.ClaimPaymentResponse + (*FinalizePaymentRequest)(nil), // 4: ark.v1.FinalizePaymentRequest + (*FinalizePaymentResponse)(nil), // 5: ark.v1.FinalizePaymentResponse + (*ListRoundsRequest)(nil), // 6: ark.v1.ListRoundsRequest + (*ListRoundsResponse)(nil), // 7: ark.v1.ListRoundsResponse + (*GetRoundRequest)(nil), // 8: ark.v1.GetRoundRequest + (*GetRoundResponse)(nil), // 9: ark.v1.GetRoundResponse + (*Round)(nil), // 10: ark.v1.Round + (*Output)(nil), // 11: ark.v1.Output +} +var file_ark_v1_service_proto_depIdxs = []int32{ + 11, // 0: ark.v1.ClaimPaymentRequest.outputs:type_name -> ark.v1.Output + 10, // 1: ark.v1.ListRoundsResponse.rounds:type_name -> ark.v1.Round + 10, // 2: ark.v1.GetRoundResponse.round:type_name -> ark.v1.Round + 11, // 3: ark.v1.Round.outputs:type_name -> ark.v1.Output + 0, // 4: ark.v1.ArkService.RegisterPayment:input_type -> ark.v1.RegisterPaymentRequest + 2, // 5: ark.v1.ArkService.ClaimPayment:input_type -> ark.v1.ClaimPaymentRequest + 4, // 6: ark.v1.ArkService.FinalizePayment:input_type -> ark.v1.FinalizePaymentRequest + 6, // 7: ark.v1.ArkService.ListRounds:input_type -> ark.v1.ListRoundsRequest + 8, // 8: ark.v1.ArkService.GetRound:input_type -> ark.v1.GetRoundRequest + 1, // 9: ark.v1.ArkService.RegisterPayment:output_type -> ark.v1.RegisterPaymentResponse + 3, // 10: ark.v1.ArkService.ClaimPayment:output_type -> ark.v1.ClaimPaymentResponse + 5, // 11: ark.v1.ArkService.FinalizePayment:output_type -> ark.v1.FinalizePaymentResponse + 7, // 12: ark.v1.ArkService.ListRounds:output_type -> ark.v1.ListRoundsResponse + 9, // 13: ark.v1.ArkService.GetRound:output_type -> ark.v1.GetRoundResponse + 9, // [9:14] is the sub-list for method output_type + 4, // [4:9] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_ark_v1_service_proto_init() } +func file_ark_v1_service_proto_init() { + if File_ark_v1_service_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_ark_v1_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterPaymentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterPaymentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClaimPaymentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClaimPaymentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FinalizePaymentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FinalizePaymentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRoundsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListRoundsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRoundRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRoundResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Round); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ark_v1_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Output); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_ark_v1_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 12, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_ark_v1_service_proto_goTypes, + DependencyIndexes: file_ark_v1_service_proto_depIdxs, + MessageInfos: file_ark_v1_service_proto_msgTypes, + }.Build() + File_ark_v1_service_proto = out.File + file_ark_v1_service_proto_rawDesc = nil + file_ark_v1_service_proto_goTypes = nil + file_ark_v1_service_proto_depIdxs = nil +} diff --git a/asp/api-spec/protobuf/gen/ark/v1/service.pb.gw.go b/asp/api-spec/protobuf/gen/ark/v1/service.pb.gw.go new file mode 100644 index 000000000..c97216a51 --- /dev/null +++ b/asp/api-spec/protobuf/gen/ark/v1/service.pb.gw.go @@ -0,0 +1,509 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: ark/v1/service.proto + +/* +Package arkv1 is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package arkv1 + +import ( + "context" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = metadata.Join + +func request_ArkService_RegisterPayment_0(ctx context.Context, marshaler runtime.Marshaler, client ArkServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RegisterPaymentRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.RegisterPayment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArkService_RegisterPayment_0(ctx context.Context, marshaler runtime.Marshaler, server ArkServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RegisterPaymentRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.RegisterPayment(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArkService_ClaimPayment_0(ctx context.Context, marshaler runtime.Marshaler, client ArkServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ClaimPaymentRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ClaimPayment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArkService_ClaimPayment_0(ctx context.Context, marshaler runtime.Marshaler, server ArkServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ClaimPaymentRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ClaimPayment(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArkService_FinalizePayment_0(ctx context.Context, marshaler runtime.Marshaler, client ArkServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq FinalizePaymentRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.FinalizePayment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArkService_FinalizePayment_0(ctx context.Context, marshaler runtime.Marshaler, server ArkServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq FinalizePaymentRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.FinalizePayment(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArkService_ListRounds_0(ctx context.Context, marshaler runtime.Marshaler, client ArkServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListRoundsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListRounds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArkService_ListRounds_0(ctx context.Context, marshaler runtime.Marshaler, server ArkServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListRoundsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListRounds(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArkService_GetRound_0(ctx context.Context, marshaler runtime.Marshaler, client ArkServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetRoundRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["txid"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "txid") + } + + protoReq.Txid, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "txid", err) + } + + msg, err := client.GetRound(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArkService_GetRound_0(ctx context.Context, marshaler runtime.Marshaler, server ArkServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetRoundRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["txid"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "txid") + } + + protoReq.Txid, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "txid", err) + } + + msg, err := server.GetRound(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterArkServiceHandlerServer registers the http handlers for service ArkService to "mux". +// UnaryRPC :call ArkServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterArkServiceHandlerFromEndpoint instead. +func RegisterArkServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ArkServiceServer) error { + + mux.Handle("POST", pattern_ArkService_RegisterPayment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ark.v1.ArkService/RegisterPayment", runtime.WithHTTPPathPattern("/v1/payment/register")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArkService_RegisterPayment_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_RegisterPayment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ArkService_ClaimPayment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ark.v1.ArkService/ClaimPayment", runtime.WithHTTPPathPattern("/v1/payment/claim")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArkService_ClaimPayment_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_ClaimPayment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ArkService_FinalizePayment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ark.v1.ArkService/FinalizePayment", runtime.WithHTTPPathPattern("/v1/payment/finalize")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArkService_FinalizePayment_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_FinalizePayment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ArkService_ListRounds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ark.v1.ArkService/ListRounds", runtime.WithHTTPPathPattern("/v1/rounds")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArkService_ListRounds_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_ListRounds_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArkService_GetRound_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ark.v1.ArkService/GetRound", runtime.WithHTTPPathPattern("/v1/round/{txid}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArkService_GetRound_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_GetRound_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterArkServiceHandlerFromEndpoint is same as RegisterArkServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterArkServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterArkServiceHandler(ctx, mux, conn) +} + +// RegisterArkServiceHandler registers the http handlers for service ArkService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterArkServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterArkServiceHandlerClient(ctx, mux, NewArkServiceClient(conn)) +} + +// RegisterArkServiceHandlerClient registers the http handlers for service ArkService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ArkServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ArkServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "ArkServiceClient" to call the correct interceptors. +func RegisterArkServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ArkServiceClient) error { + + mux.Handle("POST", pattern_ArkService_RegisterPayment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ark.v1.ArkService/RegisterPayment", runtime.WithHTTPPathPattern("/v1/payment/register")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArkService_RegisterPayment_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_RegisterPayment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ArkService_ClaimPayment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ark.v1.ArkService/ClaimPayment", runtime.WithHTTPPathPattern("/v1/payment/claim")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArkService_ClaimPayment_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_ClaimPayment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ArkService_FinalizePayment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ark.v1.ArkService/FinalizePayment", runtime.WithHTTPPathPattern("/v1/payment/finalize")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArkService_FinalizePayment_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_FinalizePayment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ArkService_ListRounds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ark.v1.ArkService/ListRounds", runtime.WithHTTPPathPattern("/v1/rounds")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArkService_ListRounds_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_ListRounds_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArkService_GetRound_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ark.v1.ArkService/GetRound", runtime.WithHTTPPathPattern("/v1/round/{txid}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArkService_GetRound_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArkService_GetRound_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_ArkService_RegisterPayment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "payment", "register"}, "")) + + pattern_ArkService_ClaimPayment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "payment", "claim"}, "")) + + pattern_ArkService_FinalizePayment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "payment", "finalize"}, "")) + + pattern_ArkService_ListRounds_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "rounds"}, "")) + + pattern_ArkService_GetRound_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "round", "txid"}, "")) +) + +var ( + forward_ArkService_RegisterPayment_0 = runtime.ForwardResponseMessage + + forward_ArkService_ClaimPayment_0 = runtime.ForwardResponseMessage + + forward_ArkService_FinalizePayment_0 = runtime.ForwardResponseMessage + + forward_ArkService_ListRounds_0 = runtime.ForwardResponseMessage + + forward_ArkService_GetRound_0 = runtime.ForwardResponseMessage +) diff --git a/asp/api-spec/protobuf/gen/ark/v1/service_grpc.pb.go b/asp/api-spec/protobuf/gen/ark/v1/service_grpc.pb.go new file mode 100644 index 000000000..e89481937 --- /dev/null +++ b/asp/api-spec/protobuf/gen/ark/v1/service_grpc.pb.go @@ -0,0 +1,243 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package arkv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ArkServiceClient is the client API for ArkService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ArkServiceClient interface { + RegisterPayment(ctx context.Context, in *RegisterPaymentRequest, opts ...grpc.CallOption) (*RegisterPaymentResponse, error) + ClaimPayment(ctx context.Context, in *ClaimPaymentRequest, opts ...grpc.CallOption) (*ClaimPaymentResponse, error) + FinalizePayment(ctx context.Context, in *FinalizePaymentRequest, opts ...grpc.CallOption) (*FinalizePaymentResponse, error) + ListRounds(ctx context.Context, in *ListRoundsRequest, opts ...grpc.CallOption) (*ListRoundsResponse, error) + GetRound(ctx context.Context, in *GetRoundRequest, opts ...grpc.CallOption) (*GetRoundResponse, error) +} + +type arkServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewArkServiceClient(cc grpc.ClientConnInterface) ArkServiceClient { + return &arkServiceClient{cc} +} + +func (c *arkServiceClient) RegisterPayment(ctx context.Context, in *RegisterPaymentRequest, opts ...grpc.CallOption) (*RegisterPaymentResponse, error) { + out := new(RegisterPaymentResponse) + err := c.cc.Invoke(ctx, "/ark.v1.ArkService/RegisterPayment", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arkServiceClient) ClaimPayment(ctx context.Context, in *ClaimPaymentRequest, opts ...grpc.CallOption) (*ClaimPaymentResponse, error) { + out := new(ClaimPaymentResponse) + err := c.cc.Invoke(ctx, "/ark.v1.ArkService/ClaimPayment", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arkServiceClient) FinalizePayment(ctx context.Context, in *FinalizePaymentRequest, opts ...grpc.CallOption) (*FinalizePaymentResponse, error) { + out := new(FinalizePaymentResponse) + err := c.cc.Invoke(ctx, "/ark.v1.ArkService/FinalizePayment", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arkServiceClient) ListRounds(ctx context.Context, in *ListRoundsRequest, opts ...grpc.CallOption) (*ListRoundsResponse, error) { + out := new(ListRoundsResponse) + err := c.cc.Invoke(ctx, "/ark.v1.ArkService/ListRounds", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *arkServiceClient) GetRound(ctx context.Context, in *GetRoundRequest, opts ...grpc.CallOption) (*GetRoundResponse, error) { + out := new(GetRoundResponse) + err := c.cc.Invoke(ctx, "/ark.v1.ArkService/GetRound", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ArkServiceServer is the server API for ArkService service. +// All implementations should embed UnimplementedArkServiceServer +// for forward compatibility +type ArkServiceServer interface { + RegisterPayment(context.Context, *RegisterPaymentRequest) (*RegisterPaymentResponse, error) + ClaimPayment(context.Context, *ClaimPaymentRequest) (*ClaimPaymentResponse, error) + FinalizePayment(context.Context, *FinalizePaymentRequest) (*FinalizePaymentResponse, error) + ListRounds(context.Context, *ListRoundsRequest) (*ListRoundsResponse, error) + GetRound(context.Context, *GetRoundRequest) (*GetRoundResponse, error) +} + +// UnimplementedArkServiceServer should be embedded to have forward compatible implementations. +type UnimplementedArkServiceServer struct { +} + +func (UnimplementedArkServiceServer) RegisterPayment(context.Context, *RegisterPaymentRequest) (*RegisterPaymentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterPayment not implemented") +} +func (UnimplementedArkServiceServer) ClaimPayment(context.Context, *ClaimPaymentRequest) (*ClaimPaymentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ClaimPayment not implemented") +} +func (UnimplementedArkServiceServer) FinalizePayment(context.Context, *FinalizePaymentRequest) (*FinalizePaymentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method FinalizePayment not implemented") +} +func (UnimplementedArkServiceServer) ListRounds(context.Context, *ListRoundsRequest) (*ListRoundsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRounds not implemented") +} +func (UnimplementedArkServiceServer) GetRound(context.Context, *GetRoundRequest) (*GetRoundResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetRound not implemented") +} + +// UnsafeArkServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ArkServiceServer will +// result in compilation errors. +type UnsafeArkServiceServer interface { + mustEmbedUnimplementedArkServiceServer() +} + +func RegisterArkServiceServer(s grpc.ServiceRegistrar, srv ArkServiceServer) { + s.RegisterService(&ArkService_ServiceDesc, srv) +} + +func _ArkService_RegisterPayment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RegisterPaymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArkServiceServer).RegisterPayment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ark.v1.ArkService/RegisterPayment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArkServiceServer).RegisterPayment(ctx, req.(*RegisterPaymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArkService_ClaimPayment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClaimPaymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArkServiceServer).ClaimPayment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ark.v1.ArkService/ClaimPayment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArkServiceServer).ClaimPayment(ctx, req.(*ClaimPaymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArkService_FinalizePayment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FinalizePaymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArkServiceServer).FinalizePayment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ark.v1.ArkService/FinalizePayment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArkServiceServer).FinalizePayment(ctx, req.(*FinalizePaymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArkService_ListRounds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListRoundsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArkServiceServer).ListRounds(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ark.v1.ArkService/ListRounds", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArkServiceServer).ListRounds(ctx, req.(*ListRoundsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArkService_GetRound_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRoundRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArkServiceServer).GetRound(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ark.v1.ArkService/GetRound", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArkServiceServer).GetRound(ctx, req.(*GetRoundRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ArkService_ServiceDesc is the grpc.ServiceDesc for ArkService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ArkService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ark.v1.ArkService", + HandlerType: (*ArkServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "RegisterPayment", + Handler: _ArkService_RegisterPayment_Handler, + }, + { + MethodName: "ClaimPayment", + Handler: _ArkService_ClaimPayment_Handler, + }, + { + MethodName: "FinalizePayment", + Handler: _ArkService_FinalizePayment_Handler, + }, + { + MethodName: "ListRounds", + Handler: _ArkService_ListRounds_Handler, + }, + { + MethodName: "GetRound", + Handler: _ArkService_GetRound_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "ark/v1/service.proto", +} diff --git a/api-spec/protobuf/gen/ocean/v1/account.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/account.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/account.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/account.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/account_grpc.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/account_grpc.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/account_grpc.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/account_grpc.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/notification.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/notification.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/notification.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/notification.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/notification_grpc.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/notification_grpc.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/notification_grpc.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/notification_grpc.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/transaction.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/transaction.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/transaction.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/transaction.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/transaction_grpc.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/transaction_grpc.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/transaction_grpc.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/transaction_grpc.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/types.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/types.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/types.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/types.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/wallet.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/wallet.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/wallet.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/wallet.pb.go diff --git a/api-spec/protobuf/gen/ocean/v1/wallet_grpc.pb.go b/asp/api-spec/protobuf/gen/ocean/v1/wallet_grpc.pb.go similarity index 100% rename from api-spec/protobuf/gen/ocean/v1/wallet_grpc.pb.go rename to asp/api-spec/protobuf/gen/ocean/v1/wallet_grpc.pb.go diff --git a/buf.gen.yaml b/asp/buf.gen.yaml similarity index 100% rename from buf.gen.yaml rename to asp/buf.gen.yaml diff --git a/buf.work.yaml b/asp/buf.work.yaml similarity index 100% rename from buf.work.yaml rename to asp/buf.work.yaml diff --git a/cmd/coordinatord/main.go b/asp/cmd/arkd/main.go similarity index 100% rename from cmd/coordinatord/main.go rename to asp/cmd/arkd/main.go diff --git a/go.mod b/asp/go.mod similarity index 81% rename from go.mod rename to asp/go.mod index 07d7d6801..40cb113a8 100644 --- a/go.mod +++ b/asp/go.mod @@ -2,26 +2,29 @@ module github.com/ark-network/ark go 1.21.0 -replace github.com/ark-network/ark/common => ./pkg/common +replace github.com/ark-network/ark/common => ../common require ( github.com/ark-network/ark/common v0.0.0-00010101000000-000000000000 - github.com/btcsuite/btcd/btcec/v2 v2.2.0 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 github.com/go-co-op/gocron v1.36.0 github.com/google/uuid v1.4.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1 github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.17.0 github.com/stretchr/testify v1.8.4 - github.com/urfave/cli/v2 v2.25.7 github.com/vulpemventures/go-elements v0.4.7 - golang.org/x/crypto v0.14.0 - golang.org/x/term v0.13.0 + google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 google.golang.org/grpc v1.59.0 google.golang.org/protobuf v1.31.0 ) -require github.com/robfig/cron/v3 v3.0.1 // indirect +require ( + github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect + github.com/robfig/cron/v3 v3.0.1 // indirect + golang.org/x/crypto v0.14.0 // indirect + google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 // indirect +) require ( github.com/btcsuite/btcd v0.23.1 // indirect @@ -29,18 +32,15 @@ require ( github.com/btcsuite/btcd/btcutil/psbt v1.1.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/go-cmp v0.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.3.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -49,7 +49,6 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/vulpemventures/fastsha256 v0.0.0-20160815193821-637e65642941 // indirect - github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect diff --git a/go.sum b/asp/go.sum similarity index 98% rename from go.sum rename to asp/go.sum index 70ff78892..4f319fec6 100644 --- a/go.sum +++ b/asp/go.sum @@ -75,8 +75,6 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -170,6 +168,8 @@ github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1 h1:6UKoz5ujsI55KNpsJH3UwCq3T8kKbZwNZBNPuTTje8U= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1/go.mod h1:YvJ2f6MplWDhfxiUC3KpyTy76kYUZA4W3pTv/wdKQ9Y= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -223,8 +223,6 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= @@ -256,16 +254,12 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/vulpemventures/fastsha256 v0.0.0-20160815193821-637e65642941 h1:CTcw80hz/Sw8hqlKX5ZYvBUF5gAHSHwdjXxRf/cjDcI= github.com/vulpemventures/fastsha256 v0.0.0-20160815193821-637e65642941/go.mod h1:GXBJykxW2kUcktGdsgyay7uwwWvkljASfljNcT0mbh8= github.com/vulpemventures/go-elements v0.4.7 h1:M5dtBHwRXqct75DJeEv5b0PUFS93t0gh2naJaGlvp60= github.com/vulpemventures/go-elements v0.4.7/go.mod h1:aBGuWXHaiAIUIcwqCdtEh2iQ3kJjKwHU9ywvhlcRSeU= github.com/vulpemventures/go-secp256k1-zkp v1.1.6 h1:BmsrmXRLUibwa75Qkk8yELjpzCzlAjYFGLiLiOdq7Xo= github.com/vulpemventures/go-secp256k1-zkp v1.1.6/go.mod h1:zo7CpgkuPgoe7fAV+inyxsI9IhGmcoFgyD8nqZaPSOM= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -428,8 +422,6 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -556,6 +548,10 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405 h1:I6WNifs6pF9tNdSob2W24JtyxIYjzFB9qDlpUC76q+U= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/goreleaser.Dockerfile b/asp/goreleaser.Dockerfile similarity index 67% rename from goreleaser.Dockerfile rename to asp/goreleaser.Dockerfile index 22737f9be..753614ed9 100755 --- a/goreleaser.Dockerfile +++ b/asp/goreleaser.Dockerfile @@ -9,7 +9,7 @@ COPY . . RUN set -ex \ && if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then export TARGETPLATFORM=amd64; fi \ && if [ "${TARGETPLATFORM}" = "linux/arm64" ]; then export TARGETPLATFORM=arm64; fi \ - && mv "coordinatord-linux-$TARGETPLATFORM" /usr/local/bin/coordinatord + && mv "arkd-linux-$TARGETPLATFORM" /usr/local/bin/arkd # $USER name, and data $DIR to be used in the 'final' image @@ -25,11 +25,11 @@ RUN adduser --disabled-password \ "$USER" USER $USER -# Prevents 'VOLUME $DIR/.coordinatord/' being created as owned by 'root' -RUN mkdir -p "$DIR/.coordinatord/" +# Prevents 'VOLUME $DIR/.arkd/' being created as owned by 'root' +RUN mkdir -p "$DIR/.arkd/" -# Expose volume containing all coordinatord data -VOLUME $DIR/.coordinatord/ +# Expose volume containing all arkd data +VOLUME $DIR/.arkd/ -ENTRYPOINT [ "coordinatord" ] +ENTRYPOINT [ "arkd" ] \ No newline at end of file diff --git a/internal/config/config.go b/asp/internal/config/config.go similarity index 92% rename from internal/config/config.go rename to asp/internal/config/config.go index 4a7067d5e..ffe7d1faf 100644 --- a/internal/config/config.go +++ b/asp/internal/config/config.go @@ -18,12 +18,12 @@ var ( WalletAddr = "WALLET_ADDR" RoundInterval = "ROUND_INTERVAL" - defaultDatadir = common.AppDataDir("coordinatord", false) + defaultDatadir = common.AppDataDir("arkd", false) defaultRoundInterval = 60 ) func LoadConfig() (*Config, error) { - viper.SetEnvPrefix("ARK_COORDINATOR") + viper.SetEnvPrefix("ARK") viper.AutomaticEnv() viper.SetDefault(Datadir, defaultDatadir) diff --git a/internal/core/application/service.go b/asp/internal/core/application/service.go similarity index 100% rename from internal/core/application/service.go rename to asp/internal/core/application/service.go diff --git a/internal/core/application/utils.go b/asp/internal/core/application/utils.go similarity index 100% rename from internal/core/application/utils.go rename to asp/internal/core/application/utils.go diff --git a/internal/core/domain/events.go b/asp/internal/core/domain/events.go similarity index 100% rename from internal/core/domain/events.go rename to asp/internal/core/domain/events.go diff --git a/internal/core/domain/payment.go b/asp/internal/core/domain/payment.go similarity index 100% rename from internal/core/domain/payment.go rename to asp/internal/core/domain/payment.go diff --git a/internal/core/domain/round.go b/asp/internal/core/domain/round.go similarity index 100% rename from internal/core/domain/round.go rename to asp/internal/core/domain/round.go diff --git a/internal/core/domain/round_repo.go b/asp/internal/core/domain/round_repo.go similarity index 100% rename from internal/core/domain/round_repo.go rename to asp/internal/core/domain/round_repo.go diff --git a/internal/core/ports/repo_manager.go b/asp/internal/core/ports/repo_manager.go similarity index 100% rename from internal/core/ports/repo_manager.go rename to asp/internal/core/ports/repo_manager.go diff --git a/internal/core/ports/scheduler.go b/asp/internal/core/ports/scheduler.go similarity index 100% rename from internal/core/ports/scheduler.go rename to asp/internal/core/ports/scheduler.go diff --git a/internal/core/ports/tx_builder.go b/asp/internal/core/ports/tx_builder.go similarity index 100% rename from internal/core/ports/tx_builder.go rename to asp/internal/core/ports/tx_builder.go diff --git a/internal/core/ports/wallet.go b/asp/internal/core/ports/wallet.go similarity index 100% rename from internal/core/ports/wallet.go rename to asp/internal/core/ports/wallet.go diff --git a/internal/infrastructure/ocean-wallet/account.go b/asp/internal/infrastructure/ocean-wallet/account.go similarity index 100% rename from internal/infrastructure/ocean-wallet/account.go rename to asp/internal/infrastructure/ocean-wallet/account.go diff --git a/internal/infrastructure/ocean-wallet/notify.go b/asp/internal/infrastructure/ocean-wallet/notify.go similarity index 100% rename from internal/infrastructure/ocean-wallet/notify.go rename to asp/internal/infrastructure/ocean-wallet/notify.go diff --git a/internal/infrastructure/ocean-wallet/service.go b/asp/internal/infrastructure/ocean-wallet/service.go similarity index 100% rename from internal/infrastructure/ocean-wallet/service.go rename to asp/internal/infrastructure/ocean-wallet/service.go diff --git a/internal/infrastructure/ocean-wallet/transaction.go b/asp/internal/infrastructure/ocean-wallet/transaction.go similarity index 100% rename from internal/infrastructure/ocean-wallet/transaction.go rename to asp/internal/infrastructure/ocean-wallet/transaction.go diff --git a/internal/infrastructure/ocean-wallet/wallet.go b/asp/internal/infrastructure/ocean-wallet/wallet.go similarity index 100% rename from internal/infrastructure/ocean-wallet/wallet.go rename to asp/internal/infrastructure/ocean-wallet/wallet.go diff --git a/internal/infrastructure/scheduler/gocron/service.go b/asp/internal/infrastructure/scheduler/gocron/service.go similarity index 100% rename from internal/infrastructure/scheduler/gocron/service.go rename to asp/internal/infrastructure/scheduler/gocron/service.go diff --git a/internal/infrastructure/tx-builder/dummy/builder.go b/asp/internal/infrastructure/tx-builder/dummy/builder.go similarity index 100% rename from internal/infrastructure/tx-builder/dummy/builder.go rename to asp/internal/infrastructure/tx-builder/dummy/builder.go diff --git a/internal/infrastructure/tx-builder/dummy/builder_test.go b/asp/internal/infrastructure/tx-builder/dummy/builder_test.go similarity index 100% rename from internal/infrastructure/tx-builder/dummy/builder_test.go rename to asp/internal/infrastructure/tx-builder/dummy/builder_test.go diff --git a/internal/infrastructure/tx-builder/dummy/connectors.go b/asp/internal/infrastructure/tx-builder/dummy/connectors.go similarity index 100% rename from internal/infrastructure/tx-builder/dummy/connectors.go rename to asp/internal/infrastructure/tx-builder/dummy/connectors.go diff --git a/internal/infrastructure/tx-builder/dummy/forfeit.go b/asp/internal/infrastructure/tx-builder/dummy/forfeit.go similarity index 100% rename from internal/infrastructure/tx-builder/dummy/forfeit.go rename to asp/internal/infrastructure/tx-builder/dummy/forfeit.go diff --git a/internal/infrastructure/tx-builder/dummy/tree.go b/asp/internal/infrastructure/tx-builder/dummy/tree.go similarity index 100% rename from internal/infrastructure/tx-builder/dummy/tree.go rename to asp/internal/infrastructure/tx-builder/dummy/tree.go diff --git a/internal/interface/grpc/interceptors/.gitkeep b/asp/internal/interface/grpc/handlers/.gitkeep similarity index 100% rename from internal/interface/grpc/interceptors/.gitkeep rename to asp/internal/interface/grpc/handlers/.gitkeep diff --git a/internal/interface/grpc/permissions/.gitkeep b/asp/internal/interface/grpc/interceptors/.gitkeep similarity index 100% rename from internal/interface/grpc/permissions/.gitkeep rename to asp/internal/interface/grpc/interceptors/.gitkeep diff --git a/internal/test/.gitkeep b/asp/internal/interface/grpc/permissions/.gitkeep similarity index 100% rename from internal/test/.gitkeep rename to asp/internal/interface/grpc/permissions/.gitkeep diff --git a/internal/interface/grpc/service.go b/asp/internal/interface/grpc/service.go similarity index 100% rename from internal/interface/grpc/service.go rename to asp/internal/interface/grpc/service.go diff --git a/internal/interface/service.go b/asp/internal/interface/service.go similarity index 100% rename from internal/interface/service.go rename to asp/internal/interface/service.go diff --git a/asp/internal/test/.gitkeep b/asp/internal/test/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/asp/pkg/.gitkeep b/asp/pkg/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/build b/asp/scripts/build similarity index 63% rename from scripts/build rename to asp/scripts/build index 00d126a32..c9b0b0284 100755 --- a/scripts/build +++ b/asp/scripts/build @@ -13,6 +13,6 @@ ARCH=$(eval "go env GOARCH") pushd $PARENT_PATH mkdir -p build -GO111MODULE=on go build -ldflags="-s -w" -o build/coordinatord-$OS-$ARCH cmd/coordinatord/main.go +GO111MODULE=on go build -ldflags="-s -w" -o build/arkd-$OS-$ARCH cmd/arkd/main.go popd \ No newline at end of file diff --git a/scripts/build-noah b/asp/scripts/build-noah similarity index 100% rename from scripts/build-noah rename to asp/scripts/build-noah diff --git a/pkg/common/appdata.go b/common/appdata.go similarity index 100% rename from pkg/common/appdata.go rename to common/appdata.go diff --git a/pkg/common/bip68.go b/common/bip68.go similarity index 100% rename from pkg/common/bip68.go rename to common/bip68.go diff --git a/pkg/common/bip68_test.go b/common/bip68_test.go similarity index 100% rename from pkg/common/bip68_test.go rename to common/bip68_test.go diff --git a/pkg/common/encoding.go b/common/encoding.go similarity index 100% rename from pkg/common/encoding.go rename to common/encoding.go diff --git a/pkg/common/encoding_test.go b/common/encoding_test.go similarity index 100% rename from pkg/common/encoding_test.go rename to common/encoding_test.go diff --git a/pkg/common/fixtures/bip68.json b/common/fixtures/bip68.json similarity index 100% rename from pkg/common/fixtures/bip68.json rename to common/fixtures/bip68.json diff --git a/pkg/common/fixtures/encoding.json b/common/fixtures/encoding.json similarity index 100% rename from pkg/common/fixtures/encoding.json rename to common/fixtures/encoding.json diff --git a/pkg/common/go.mod b/common/go.mod similarity index 100% rename from pkg/common/go.mod rename to common/go.mod diff --git a/pkg/common/go.sum b/common/go.sum similarity index 100% rename from pkg/common/go.sum rename to common/go.sum diff --git a/pkg/common/network.go b/common/network.go similarity index 100% rename from pkg/common/network.go rename to common/network.go diff --git a/cmd/noah/balance.go b/noah/balance.go similarity index 100% rename from cmd/noah/balance.go rename to noah/balance.go diff --git a/cmd/noah/common.go b/noah/common.go similarity index 100% rename from cmd/noah/common.go rename to noah/common.go diff --git a/cmd/noah/config.go b/noah/config.go similarity index 100% rename from cmd/noah/config.go rename to noah/config.go diff --git a/cmd/noah/cypher.go b/noah/cypher.go similarity index 100% rename from cmd/noah/cypher.go rename to noah/cypher.go diff --git a/noah/go.mod b/noah/go.mod new file mode 100644 index 000000000..82adacd2d --- /dev/null +++ b/noah/go.mod @@ -0,0 +1,22 @@ +module github.com/ark-network/noah + +go 1.21.0 + +replace github.com/ark-network/ark/common => ../common + +require ( + github.com/ark-network/ark/common v0.0.0-00010101000000-000000000000 + github.com/btcsuite/btcd/btcec/v2 v2.3.2 + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 + github.com/urfave/cli/v2 v2.25.7 + golang.org/x/crypto v0.15.0 + golang.org/x/term v0.14.0 +) + +require ( + github.com/btcsuite/btcd/btcutil v1.1.3 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + golang.org/x/sys v0.14.0 // indirect +) diff --git a/noah/go.sum b/noah/go.sum new file mode 100644 index 000000000..755b6d17b --- /dev/null +++ b/noah/go.sum @@ -0,0 +1,119 @@ +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= +github.com/btcsuite/btcd v0.23.0/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= +github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= +github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cmd/noah/init.go b/noah/init.go similarity index 100% rename from cmd/noah/init.go rename to noah/init.go diff --git a/cmd/noah/main.go b/noah/main.go similarity index 100% rename from cmd/noah/main.go rename to noah/main.go diff --git a/cmd/noah/receive.go b/noah/receive.go similarity index 100% rename from cmd/noah/receive.go rename to noah/receive.go diff --git a/cmd/noah/redeem.go b/noah/redeem.go similarity index 100% rename from cmd/noah/redeem.go rename to noah/redeem.go diff --git a/cmd/noah/send.go b/noah/send.go similarity index 100% rename from cmd/noah/send.go rename to noah/send.go From 271e267c71050fdc58d2e0a6cf1f7ca8bbc7e4ba Mon Sep 17 00:00:00 2001 From: bordalix Date: Mon, 27 Nov 2023 15:00:24 +0000 Subject: [PATCH 5/5] rename /website to /dev_portal --- {website => dev_portal}/.gitignore | 0 {website => dev_portal}/README.md | 0 {website => dev_portal}/babel.config.js | 0 .../blog/2023-11-10-liquidity-requirements.md | 0 {website => dev_portal}/blog/authors.yml | 0 {website => dev_portal}/docs/img/shared_output.png | Bin {website => dev_portal}/docs/intro.md | 0 .../docs/provider/_category_.json | 0 .../docs/provider/coordinator/_category_.json | 0 .../docs/provider/coordinator/configure-cli.md | 0 .../docs/provider/coordinator/configure-service.md | 0 .../docs/provider/coordinator/intro.md | 0 .../docs/provider/coordinator/run-docker.md | 0 .../docs/provider/coordinator/run-standalone.md | 0 .../docs/provider/coordinator/use-cli.md | 0 .../docs/provider/gateway/_category_.json | 0 .../docs/provider/gateway/intro.md | 0 {website => dev_portal}/docs/provider/intro.md | 0 .../docs/provider/treasury/_category_.json | 0 .../docs/provider/treasury/intro.md | 0 {website => dev_portal}/docs/specs/00-index.md | 0 {website => dev_portal}/docs/specs/_category_.json | 0 {website => dev_portal}/docs/specs/nomenclature.md | 0 {website => dev_portal}/docs/specs/timeline.md | 0 {website => dev_portal}/docs/user/_category_.json | 0 {website => dev_portal}/docs/user/intro.md | 0 {website => dev_portal}/docs/user/noah-cli.md | 0 {website => dev_portal}/docusaurus.config.js | 0 {website => dev_portal}/package.json | 0 {website => dev_portal}/sidebars.js | 0 .../src/components/HomepageFeatures/index.js | 0 .../components/HomepageFeatures/styles.module.css | 0 {website => dev_portal}/src/css/custom.css | 0 {website => dev_portal}/src/pages/index.js | 0 {website => dev_portal}/src/pages/index.module.css | 0 {website => dev_portal}/src/pages/markdown-page.md | 0 {website => dev_portal}/static/.nojekyll | 0 {website => dev_portal}/static/img/ark-logo.png | Bin {website => dev_portal}/static/img/ark-og-image.png | Bin {website => dev_portal}/yarn.lock | 0 40 files changed, 0 insertions(+), 0 deletions(-) rename {website => dev_portal}/.gitignore (100%) rename {website => dev_portal}/README.md (100%) rename {website => dev_portal}/babel.config.js (100%) rename {website => dev_portal}/blog/2023-11-10-liquidity-requirements.md (100%) rename {website => dev_portal}/blog/authors.yml (100%) rename {website => dev_portal}/docs/img/shared_output.png (100%) rename {website => dev_portal}/docs/intro.md (100%) rename {website => dev_portal}/docs/provider/_category_.json (100%) rename {website => dev_portal}/docs/provider/coordinator/_category_.json (100%) rename {website => dev_portal}/docs/provider/coordinator/configure-cli.md (100%) rename {website => dev_portal}/docs/provider/coordinator/configure-service.md (100%) rename {website => dev_portal}/docs/provider/coordinator/intro.md (100%) rename {website => dev_portal}/docs/provider/coordinator/run-docker.md (100%) rename {website => dev_portal}/docs/provider/coordinator/run-standalone.md (100%) rename {website => dev_portal}/docs/provider/coordinator/use-cli.md (100%) rename {website => dev_portal}/docs/provider/gateway/_category_.json (100%) rename {website => dev_portal}/docs/provider/gateway/intro.md (100%) rename {website => dev_portal}/docs/provider/intro.md (100%) rename {website => dev_portal}/docs/provider/treasury/_category_.json (100%) rename {website => dev_portal}/docs/provider/treasury/intro.md (100%) rename {website => dev_portal}/docs/specs/00-index.md (100%) rename {website => dev_portal}/docs/specs/_category_.json (100%) rename {website => dev_portal}/docs/specs/nomenclature.md (100%) rename {website => dev_portal}/docs/specs/timeline.md (100%) rename {website => dev_portal}/docs/user/_category_.json (100%) rename {website => dev_portal}/docs/user/intro.md (100%) rename {website => dev_portal}/docs/user/noah-cli.md (100%) rename {website => dev_portal}/docusaurus.config.js (100%) rename {website => dev_portal}/package.json (100%) rename {website => dev_portal}/sidebars.js (100%) rename {website => dev_portal}/src/components/HomepageFeatures/index.js (100%) rename {website => dev_portal}/src/components/HomepageFeatures/styles.module.css (100%) rename {website => dev_portal}/src/css/custom.css (100%) rename {website => dev_portal}/src/pages/index.js (100%) rename {website => dev_portal}/src/pages/index.module.css (100%) rename {website => dev_portal}/src/pages/markdown-page.md (100%) rename {website => dev_portal}/static/.nojekyll (100%) rename {website => dev_portal}/static/img/ark-logo.png (100%) rename {website => dev_portal}/static/img/ark-og-image.png (100%) rename {website => dev_portal}/yarn.lock (100%) diff --git a/website/.gitignore b/dev_portal/.gitignore similarity index 100% rename from website/.gitignore rename to dev_portal/.gitignore diff --git a/website/README.md b/dev_portal/README.md similarity index 100% rename from website/README.md rename to dev_portal/README.md diff --git a/website/babel.config.js b/dev_portal/babel.config.js similarity index 100% rename from website/babel.config.js rename to dev_portal/babel.config.js diff --git a/website/blog/2023-11-10-liquidity-requirements.md b/dev_portal/blog/2023-11-10-liquidity-requirements.md similarity index 100% rename from website/blog/2023-11-10-liquidity-requirements.md rename to dev_portal/blog/2023-11-10-liquidity-requirements.md diff --git a/website/blog/authors.yml b/dev_portal/blog/authors.yml similarity index 100% rename from website/blog/authors.yml rename to dev_portal/blog/authors.yml diff --git a/website/docs/img/shared_output.png b/dev_portal/docs/img/shared_output.png similarity index 100% rename from website/docs/img/shared_output.png rename to dev_portal/docs/img/shared_output.png diff --git a/website/docs/intro.md b/dev_portal/docs/intro.md similarity index 100% rename from website/docs/intro.md rename to dev_portal/docs/intro.md diff --git a/website/docs/provider/_category_.json b/dev_portal/docs/provider/_category_.json similarity index 100% rename from website/docs/provider/_category_.json rename to dev_portal/docs/provider/_category_.json diff --git a/website/docs/provider/coordinator/_category_.json b/dev_portal/docs/provider/coordinator/_category_.json similarity index 100% rename from website/docs/provider/coordinator/_category_.json rename to dev_portal/docs/provider/coordinator/_category_.json diff --git a/website/docs/provider/coordinator/configure-cli.md b/dev_portal/docs/provider/coordinator/configure-cli.md similarity index 100% rename from website/docs/provider/coordinator/configure-cli.md rename to dev_portal/docs/provider/coordinator/configure-cli.md diff --git a/website/docs/provider/coordinator/configure-service.md b/dev_portal/docs/provider/coordinator/configure-service.md similarity index 100% rename from website/docs/provider/coordinator/configure-service.md rename to dev_portal/docs/provider/coordinator/configure-service.md diff --git a/website/docs/provider/coordinator/intro.md b/dev_portal/docs/provider/coordinator/intro.md similarity index 100% rename from website/docs/provider/coordinator/intro.md rename to dev_portal/docs/provider/coordinator/intro.md diff --git a/website/docs/provider/coordinator/run-docker.md b/dev_portal/docs/provider/coordinator/run-docker.md similarity index 100% rename from website/docs/provider/coordinator/run-docker.md rename to dev_portal/docs/provider/coordinator/run-docker.md diff --git a/website/docs/provider/coordinator/run-standalone.md b/dev_portal/docs/provider/coordinator/run-standalone.md similarity index 100% rename from website/docs/provider/coordinator/run-standalone.md rename to dev_portal/docs/provider/coordinator/run-standalone.md diff --git a/website/docs/provider/coordinator/use-cli.md b/dev_portal/docs/provider/coordinator/use-cli.md similarity index 100% rename from website/docs/provider/coordinator/use-cli.md rename to dev_portal/docs/provider/coordinator/use-cli.md diff --git a/website/docs/provider/gateway/_category_.json b/dev_portal/docs/provider/gateway/_category_.json similarity index 100% rename from website/docs/provider/gateway/_category_.json rename to dev_portal/docs/provider/gateway/_category_.json diff --git a/website/docs/provider/gateway/intro.md b/dev_portal/docs/provider/gateway/intro.md similarity index 100% rename from website/docs/provider/gateway/intro.md rename to dev_portal/docs/provider/gateway/intro.md diff --git a/website/docs/provider/intro.md b/dev_portal/docs/provider/intro.md similarity index 100% rename from website/docs/provider/intro.md rename to dev_portal/docs/provider/intro.md diff --git a/website/docs/provider/treasury/_category_.json b/dev_portal/docs/provider/treasury/_category_.json similarity index 100% rename from website/docs/provider/treasury/_category_.json rename to dev_portal/docs/provider/treasury/_category_.json diff --git a/website/docs/provider/treasury/intro.md b/dev_portal/docs/provider/treasury/intro.md similarity index 100% rename from website/docs/provider/treasury/intro.md rename to dev_portal/docs/provider/treasury/intro.md diff --git a/website/docs/specs/00-index.md b/dev_portal/docs/specs/00-index.md similarity index 100% rename from website/docs/specs/00-index.md rename to dev_portal/docs/specs/00-index.md diff --git a/website/docs/specs/_category_.json b/dev_portal/docs/specs/_category_.json similarity index 100% rename from website/docs/specs/_category_.json rename to dev_portal/docs/specs/_category_.json diff --git a/website/docs/specs/nomenclature.md b/dev_portal/docs/specs/nomenclature.md similarity index 100% rename from website/docs/specs/nomenclature.md rename to dev_portal/docs/specs/nomenclature.md diff --git a/website/docs/specs/timeline.md b/dev_portal/docs/specs/timeline.md similarity index 100% rename from website/docs/specs/timeline.md rename to dev_portal/docs/specs/timeline.md diff --git a/website/docs/user/_category_.json b/dev_portal/docs/user/_category_.json similarity index 100% rename from website/docs/user/_category_.json rename to dev_portal/docs/user/_category_.json diff --git a/website/docs/user/intro.md b/dev_portal/docs/user/intro.md similarity index 100% rename from website/docs/user/intro.md rename to dev_portal/docs/user/intro.md diff --git a/website/docs/user/noah-cli.md b/dev_portal/docs/user/noah-cli.md similarity index 100% rename from website/docs/user/noah-cli.md rename to dev_portal/docs/user/noah-cli.md diff --git a/website/docusaurus.config.js b/dev_portal/docusaurus.config.js similarity index 100% rename from website/docusaurus.config.js rename to dev_portal/docusaurus.config.js diff --git a/website/package.json b/dev_portal/package.json similarity index 100% rename from website/package.json rename to dev_portal/package.json diff --git a/website/sidebars.js b/dev_portal/sidebars.js similarity index 100% rename from website/sidebars.js rename to dev_portal/sidebars.js diff --git a/website/src/components/HomepageFeatures/index.js b/dev_portal/src/components/HomepageFeatures/index.js similarity index 100% rename from website/src/components/HomepageFeatures/index.js rename to dev_portal/src/components/HomepageFeatures/index.js diff --git a/website/src/components/HomepageFeatures/styles.module.css b/dev_portal/src/components/HomepageFeatures/styles.module.css similarity index 100% rename from website/src/components/HomepageFeatures/styles.module.css rename to dev_portal/src/components/HomepageFeatures/styles.module.css diff --git a/website/src/css/custom.css b/dev_portal/src/css/custom.css similarity index 100% rename from website/src/css/custom.css rename to dev_portal/src/css/custom.css diff --git a/website/src/pages/index.js b/dev_portal/src/pages/index.js similarity index 100% rename from website/src/pages/index.js rename to dev_portal/src/pages/index.js diff --git a/website/src/pages/index.module.css b/dev_portal/src/pages/index.module.css similarity index 100% rename from website/src/pages/index.module.css rename to dev_portal/src/pages/index.module.css diff --git a/website/src/pages/markdown-page.md b/dev_portal/src/pages/markdown-page.md similarity index 100% rename from website/src/pages/markdown-page.md rename to dev_portal/src/pages/markdown-page.md diff --git a/website/static/.nojekyll b/dev_portal/static/.nojekyll similarity index 100% rename from website/static/.nojekyll rename to dev_portal/static/.nojekyll diff --git a/website/static/img/ark-logo.png b/dev_portal/static/img/ark-logo.png similarity index 100% rename from website/static/img/ark-logo.png rename to dev_portal/static/img/ark-logo.png diff --git a/website/static/img/ark-og-image.png b/dev_portal/static/img/ark-og-image.png similarity index 100% rename from website/static/img/ark-og-image.png rename to dev_portal/static/img/ark-og-image.png diff --git a/website/yarn.lock b/dev_portal/yarn.lock similarity index 100% rename from website/yarn.lock rename to dev_portal/yarn.lock