diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..73f30a3
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,53 @@
+version: 2
+
+updates:
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: weekly
+ commit-message:
+ prefix: "ci"
+ groups:
+ actions:
+ patterns: ["*"]
+
+ - package-ecosystem: npm
+ directory: /
+ schedule:
+ interval: weekly
+ commit-message:
+ prefix: "chore"
+ prefix-development: "chore"
+ groups:
+ release-tooling:
+ patterns: ["semantic-release", "@semantic-release/*"]
+
+ - package-ecosystem: npm
+ directory: /frontend
+ schedule:
+ interval: weekly
+ commit-message:
+ prefix: "chore"
+ groups:
+ # Next/React move together; a split bump usually fails to build.
+ next:
+ patterns: ["next", "react", "react-dom", "eslint-config-next"]
+ viem:
+ patterns: ["viem", "wagmi", "@wagmi/*"]
+
+ - package-ecosystem: npm
+ directory: /keeper
+ schedule:
+ interval: weekly
+ commit-message:
+ prefix: "chore"
+
+ - package-ecosystem: gomod
+ directory: /extension
+ schedule:
+ interval: weekly
+ commit-message:
+ prefix: "chore"
+ groups:
+ go-deps:
+ patterns: ["*"]
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..c163a38
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,39 @@
+name: CI
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+
+permissions:
+ contents: read
+
+jobs:
+ contracts:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ - uses: foundry-rs/foundry-toolchain@v1
+ - name: Build
+ run: forge build
+ working-directory: contracts
+ - name: Test
+ run: forge test -vvv
+ working-directory: contracts
+
+ extension:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with:
+ go-version-file: extension/go.mod
+ cache-dependency-path: extension/go.sum
+ - name: Vet
+ run: go vet ./...
+ working-directory: extension
+ - name: Test
+ run: go test ./... -race
+ working-directory: extension
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..d4f2d42
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,26 @@
+name: Release
+
+on:
+ push:
+ branches: [main]
+
+permissions:
+ contents: write
+ issues: write
+ pull-requests: write
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ persist-credentials: false
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ - run: npm ci
+ - run: npx semantic-release
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e1fa885
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+# Dependencies
+node_modules/
+.pnpm-store/
+
+# Secrets — never commit
+.env
+.env.*
+!.env.example
+config/extension.env
+config/proxy/*.toml
+!config/proxy/*.toml.example
+
+# Foundry
+contracts/out/
+contracts/cache/
+contracts/broadcast/
+# contracts/lib/ is a git submodule (forge-std) — tracked, not ignored.
+
+# Go
+extension/bin/
+*.test
+
+# Frontend
+frontend/.next/
+frontend/out/
+frontend/build/
+
+# Release
+CHANGELOG.md.bak
+
+# Editors / OS
+.DS_Store
+.idea/
+.vscode/
+*.swp
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..c65a596
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "contracts/lib/forge-std"]
+ path = contracts/lib/forge-std
+ url = https://github.com/foundry-rs/forge-std
diff --git a/.releaserc.json b/.releaserc.json
new file mode 100644
index 0000000..a18d26f
--- /dev/null
+++ b/.releaserc.json
@@ -0,0 +1,21 @@
+{
+ "branches": ["main"],
+ "plugins": [
+ "@semantic-release/commit-analyzer",
+ "@semantic-release/release-notes-generator",
+ [
+ "@semantic-release/changelog",
+ {
+ "changelogFile": "CHANGELOG.md"
+ }
+ ],
+ "@semantic-release/github",
+ [
+ "@semantic-release/git",
+ {
+ "assets": ["CHANGELOG.md"],
+ "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
+ }
+ ]
+ ]
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..34c81af
--- /dev/null
+++ b/README.md
@@ -0,0 +1,76 @@
+# Wraith
+
+**Private cross-chain trigger engine on Flare.** Encrypted conditions in, attested execution out.
+
+Built for the Flare Summer Signal hackathon — submitted to **Bounty 1 (Interoperable Asset Products)** and **Bounty 2 (Confidential Compute Apps)**.
+
+---
+
+## The problem
+
+Every onchain automation protocol today — Gelato, Chainlink Automation, onchain limit-order books, DeFi stop-losses — publishes the **trigger condition in the clear**. A standing order sits onchain for hours or days announcing exactly what you will do and exactly when.
+
+The best-documented consequence is **stop-loss hunting**. Because your stop price is public, price gets deliberately pushed to it. This is why serious traders keep stops off-exchange or mental: today the only way to hide your trigger is to hand custody to someone else, or to not automate at all.
+
+Wraith is the third option.
+
+## How it works
+
+Your trigger condition is encrypted to a TEE's public key and stored onchain as ciphertext. A Flare Compute Extension running inside a Trusted Execution Environment is the only party that can read it. The TEE evaluates the condition against live FTSO prices (and, for cross-chain triggers, FDC-attested external-chain events), and emits a signed result **only when the condition fires**. A Flare smart contract verifies that signature and settles.
+
+Nobody — not a searcher, not an indexer, not the keeper that pokes the system — can see what you are waiting for.
+
+```
+User → encrypt order to TEE pubkey → WraithOrders.createOrder(bytes)
+ ↓ ciphertext onchain
+Keeper → WraithOrders.tick(orderId) → TeeExtensionRegistry.sendInstructions()
+ ↓ relayed
+ ext-proxy → TEE → extension POST /action
+ ↓
+ decrypt in-enclave → read FTSO → evaluate threshold
+ ↓ triggered
+ TEE-signed ActionResult → polled from proxy
+ ↓
+Anyone → WraithOrders.execute(...) → ecrecover == teeAddress → swap / redeem FXRP
+```
+
+## Flare integration
+
+| Protocol | Role |
+| --- | --- |
+| **FCC** (Confidential Compute) | Runs the private condition evaluation inside a TEE. The order plaintext exists nowhere else. |
+| **FTSO** | Price triggers — block-latency feeds read from inside the enclave, so the keeper is not in the trust path. |
+| **FDC** | Cross-chain triggers: XRPL payment attestation (`Payment`), and Web2 JSON attestation for off-chain data. |
+| **FAssets / FXRP** | Settlement. A fired trigger can swap FXRP or redeem it to native XRP on the XRPL, closing the cross-chain loop. |
+
+## What Wraith does *not* claim
+
+Wraith hides **standing intent**. It does not hide the execution transaction — that lands onchain and is as visible as any trade. Execution-moment MEV is out of scope. The value is that the condition was never public, so it could never be hunted.
+
+Full trust assumptions are in [`docs/TRUST.md`](docs/TRUST.md).
+
+## Repository layout
+
+| Path | What |
+| --- | --- |
+| `contracts/` | `WraithOrders.sol` and tests (Foundry) |
+| `extension/` | Flare Compute Extension (Go) — the TEE-side evaluator |
+| `keeper/` | Minimal loop that ticks live orders and relays signed results |
+| `frontend/` | Order creation UI (Next.js + viem) |
+
+## Status
+
+Coston2 testnet. Flare Confidential Compute is itself "in the final stages of development and is not yet a fully public production system", so this runs against Coston2 with `SIMULATED_TEE=true`.
+
+## Development
+
+```bash
+npm install
+npm test # forge tests + go tests
+```
+
+Releases are automated with [semantic-release](https://semantic-release.gitbook.io/semantic-release) — commit messages follow [Conventional Commits](https://www.conventionalcommits.org/), and merging to `main` cuts the version, changelog, and GitHub release. Dependencies are kept current by Dependabot.
+
+## License
+
+Apache-2.0
diff --git a/contracts/foundry.lock b/contracts/foundry.lock
new file mode 100644
index 0000000..31b0fe2
--- /dev/null
+++ b/contracts/foundry.lock
@@ -0,0 +1,8 @@
+{
+ "lib/forge-std": {
+ "tag": {
+ "name": "v1.16.2",
+ "rev": "bf647bd6046f2f7da30d0c2bf435e5c76a780c1b"
+ }
+ }
+}
\ No newline at end of file
diff --git a/contracts/foundry.toml b/contracts/foundry.toml
new file mode 100644
index 0000000..0903678
--- /dev/null
+++ b/contracts/foundry.toml
@@ -0,0 +1,8 @@
+[profile.default]
+src = "src"
+out = "out"
+libs = ["lib"]
+test = "test"
+solc = "0.8.27"
+optimizer = true
+optimizer_runs = 200
diff --git a/contracts/lib/forge-std b/contracts/lib/forge-std
new file mode 160000
index 0000000..bf647bd
--- /dev/null
+++ b/contracts/lib/forge-std
@@ -0,0 +1 @@
+Subproject commit bf647bd6046f2f7da30d0c2bf435e5c76a780c1b
diff --git a/contracts/src/WraithOrders.sol b/contracts/src/WraithOrders.sol
new file mode 100644
index 0000000..af6e7da
--- /dev/null
+++ b/contracts/src/WraithOrders.sol
@@ -0,0 +1,450 @@
+// SPDX-License-Identifier: Apache-2.0
+pragma solidity ^0.8.27;
+
+import { ITeeExtensionRegistry } from "./interfaces/ITeeExtensionRegistry.sol";
+import { ITeeMachineRegistry } from "./interfaces/ITeeMachineRegistry.sol";
+import { IERC20, IUniswapV2Router, IAssetManager } from "./interfaces/IWraithExternal.sol";
+
+/// @title WraithOrders
+/// @notice Private conditional orders on Flare. A user escrows an asset and stores
+/// their trigger condition on-chain as an ECIES ciphertext that only a Flare
+/// Confidential Compute (FCC) TEE extension can read. A keeper periodically pokes
+/// the order via `tick()`; the extension decrypts the condition inside the enclave,
+/// evaluates it against FTSO prices (and, for cross-chain triggers, FDC-attested
+/// events), and returns a signed result **only when the condition fires**.
+/// `execute()` verifies that signature and settles.
+///
+/// The point is that the condition is never public. Conventional on-chain
+/// automation publishes the trigger price, which is exactly what makes stop-loss
+/// hunting possible.
+///
+/// Scope: this hides *standing intent*, not the execution transaction. Once a
+/// trigger fires, the resulting swap or redemption is an ordinary public
+/// transaction. Execution-moment MEV is out of scope.
+///
+/// This contract doubles as the FCC InstructionSender: it owns the extension
+/// registration and routes WRAITH/EVAL_ORDER instructions through the Flare TEE
+/// Manager diamond.
+///
+/// DO NOT MODIFY: the registry wiring in the constructor, setExtensionId(), and
+/// _getExtensionId().
+contract WraithOrders {
+ // --- FCC operation identifiers (must match extension/internal/config/config.go) ---
+
+ /// @notice Operation type for Wraith actions.
+ // forge-lint: disable-next-line(unsafe-typecast)
+ bytes32 public constant OP_TYPE_WRAITH = bytes32("WRAITH");
+
+ /// @notice Command asking the TEE to evaluate one order's private condition.
+ // forge-lint: disable-next-line(unsafe-typecast)
+ bytes32 public constant OP_COMMAND_EVAL_ORDER = bytes32("EVAL_ORDER");
+
+ /// @notice Domain-separation prefix the TEE node signs ActionResult hashes under:
+ /// keccak256(abi.encode(TEE_ACTION_RESULT_PREFIX, chainId, ActionResult.Hash())),
+ /// wrapped with the EIP-191 personal-sign prefix. Must match go-flare-common's
+ /// `signing.TEEActionResult`.
+ // forge-lint: disable-next-line(unsafe-typecast)
+ bytes32 private constant TEE_ACTION_RESULT_PREFIX = bytes32("TEE_ACTION_RESULT");
+
+ /// @notice First public extension ID; the registry reserves IDs below this.
+ uint256 private constant FIRST_PUBLIC_EXTENSION_ID = 0x10000; // 65536
+
+ /// @notice Minimum spacing between ticks on one order, so a keeper cannot burn
+ /// an order owner's instruction fees (or spam the TEE) with a tight loop.
+ uint64 public constant MIN_TICK_INTERVAL = 30;
+
+ // --- Actions the TEE may authorize ---
+
+ uint8 public constant ACTION_SWAP = 0;
+ uint8 public constant ACTION_REDEEM = 1;
+
+ // --- Registries ---
+
+ ITeeExtensionRegistry public immutable TEE_EXTENSION_REGISTRY;
+ ITeeMachineRegistry public immutable TEE_MACHINE_REGISTRY;
+
+ uint256 private _extensionId;
+
+ // --- Order state ---
+
+ /// @notice A private conditional order. The trigger condition lives only in
+ /// `encrypted`; nothing about it is readable on-chain.
+ struct Order {
+ address owner; // receives proceeds, and refunds on cancel/expiry
+ address tokenIn; // escrowed asset (FXRP for the reference flow)
+ uint256 amountIn; // escrowed amount, held by this contract
+ uint64 expiry; // after this, the order can only be cancelled
+ uint64 nextTickAt; // rate limit, see MIN_TICK_INTERVAL
+ bool executed;
+ bool cancelled;
+ bytes encrypted; // ECIES ciphertext of the trigger terms — the secret
+ }
+
+ /// @notice Message handed to the TEE on each tick.
+ struct EvalMessage {
+ uint256 orderId;
+ address contractAddr; // echoed back so execute() can bind the result
+ bytes encrypted; // the ciphertext to decrypt in-enclave
+ }
+
+ address public owner;
+
+ /// @notice Router used for the swap action. BlazeSwap on Flare.
+ IUniswapV2Router public router;
+
+ /// @notice FAssets AssetManager used for the redeem action.
+ IAssetManager public assetManager;
+
+ /// @notice Addresses whose signatures are accepted as TEE results.
+ /// @dev An allowlist rather than a registry lookup: `ITeeMachineRegistry`
+ /// exposes only `getRandomTeeIds`, which is a random selector, not a
+ /// membership query — there is no published way to ask whether a given
+ /// address is a registered TEE for this extension. Curating the set here is
+ /// the honest option; a registry membership getter would replace it.
+ mapping(address => bool) public isTeeAddress;
+
+ /// @notice Action IDs already settled. Without this a single signed result
+ /// could be replayed to execute the same order more than once.
+ mapping(bytes32 => bool) public usedActionId;
+
+ Order[] private _orders;
+
+ event OrderCreated(uint256 indexed orderId, address indexed owner, address tokenIn, uint256 amountIn, uint64 expiry);
+ event OrderTicked(uint256 indexed orderId, bytes32 instructionId);
+ event OrderExecuted(uint256 indexed orderId, uint8 action, uint256 amountIn, uint256 result);
+ event OrderCancelled(uint256 indexed orderId, uint256 refunded);
+ event TeeAddressSet(address indexed teeAddress, bool allowed);
+ event RouterSet(address indexed router);
+ event AssetManagerSet(address indexed assetManager);
+
+ modifier onlyOwner() {
+ require(msg.sender == owner, "not owner");
+ _;
+ }
+
+ constructor(ITeeExtensionRegistry _teeExtensionRegistry, ITeeMachineRegistry _teeMachineRegistry) {
+ require(address(_teeExtensionRegistry) != address(0), "TeeExtensionRegistry cannot be zero address");
+ require(address(_teeMachineRegistry) != address(0), "TeeMachineRegistry cannot be zero address");
+ require(address(_teeExtensionRegistry).code.length > 0, "TeeExtensionRegistry has no code");
+ require(address(_teeMachineRegistry).code.length > 0, "TeeMachineRegistry has no code");
+ TEE_EXTENSION_REGISTRY = _teeExtensionRegistry;
+ TEE_MACHINE_REGISTRY = _teeMachineRegistry;
+ owner = msg.sender;
+ }
+
+ /// @notice Finds and sets this contract's extension id. Can only be set once.
+ /// DO NOT MODIFY this function.
+ function setExtensionId() external {
+ require(_extensionId == 0, "Extension ID already set.");
+
+ uint256 c = TEE_EXTENSION_REGISTRY.nextPublicExtensionId();
+ for (uint256 i = FIRST_PUBLIC_EXTENSION_ID; i < c; ++i) {
+ if (TEE_EXTENSION_REGISTRY.getTeeExtensionInstructionsSender(i) == address(this)) {
+ _extensionId = i;
+ return;
+ }
+ }
+ revert("Extension ID not found.");
+ }
+
+ // --- Admin ---
+
+ /// @notice Allow or revoke a TEE signing address.
+ function setTeeAddress(address _teeAddress, bool _allowed) external onlyOwner {
+ require(_teeAddress != address(0), "zero TEE address");
+ isTeeAddress[_teeAddress] = _allowed;
+ emit TeeAddressSet(_teeAddress, _allowed);
+ }
+
+ function setRouter(address _router) external onlyOwner {
+ require(_router != address(0), "zero router");
+ router = IUniswapV2Router(_router);
+ emit RouterSet(_router);
+ }
+
+ function setAssetManager(address _assetManager) external onlyOwner {
+ require(_assetManager != address(0), "zero asset manager");
+ assetManager = IAssetManager(_assetManager);
+ emit AssetManagerSet(_assetManager);
+ }
+
+ // --- Order lifecycle ---
+
+ /// @notice Create a private conditional order.
+ /// @dev Nothing about the trigger is stored in the clear. `_encrypted` is an
+ /// ECIES ciphertext encrypted to the extension's public key, which callers
+ /// fetch from the extension proxy's `/info` endpoint.
+ /// @param _encrypted ECIES ciphertext of the trigger terms.
+ /// @param _tokenIn Asset to escrow (FXRP in the reference flow).
+ /// @param _amountIn Amount to escrow. Caller must approve first.
+ /// @param _expiry Unix seconds after which the order may only be cancelled.
+ /// @return orderId The new order's id.
+ function createOrder(bytes calldata _encrypted, address _tokenIn, uint256 _amountIn, uint64 _expiry)
+ external
+ returns (uint256 orderId)
+ {
+ require(_encrypted.length > 0, "empty ciphertext");
+ require(_tokenIn != address(0), "zero token");
+ require(_amountIn > 0, "zero amount");
+ require(_expiry > block.timestamp, "expiry in the past");
+
+ require(IERC20(_tokenIn).transferFrom(msg.sender, address(this), _amountIn), "escrow transfer failed");
+
+ orderId = _orders.length;
+ _orders.push(
+ Order({
+ owner: msg.sender,
+ tokenIn: _tokenIn,
+ amountIn: _amountIn,
+ expiry: _expiry,
+ nextTickAt: 0,
+ executed: false,
+ cancelled: false,
+ encrypted: _encrypted
+ })
+ );
+
+ emit OrderCreated(orderId, msg.sender, _tokenIn, _amountIn, _expiry);
+ }
+
+ /// @notice Ask the TEE to evaluate an order's private condition.
+ /// @dev Permissionless — anyone may run a keeper. The keeper learns nothing:
+ /// it forwards ciphertext and cannot tell a "not triggered" reply from silence.
+ /// Native value is forwarded to the registry as the instruction fee.
+ function tick(uint256 _orderId) external payable {
+ Order storage o = _orders[_orderId];
+ require(o.owner != address(0), "no such order");
+ require(!o.executed, "already executed");
+ require(!o.cancelled, "cancelled");
+ require(block.timestamp < o.expiry, "expired");
+ require(block.timestamp >= o.nextTickAt, "ticked too recently");
+
+ o.nextTickAt = uint64(block.timestamp) + MIN_TICK_INTERVAL;
+
+ address[] memory teeIds = TEE_MACHINE_REGISTRY.getRandomTeeIds(_getExtensionId(), 1);
+ address[] memory cosigners = new address[](0);
+
+ ITeeExtensionRegistry.TeeInstructionParams memory params = ITeeExtensionRegistry.TeeInstructionParams({
+ opType: OP_TYPE_WRAITH,
+ opCommand: OP_COMMAND_EVAL_ORDER,
+ message: abi.encode(_orderId, address(this), o.encrypted),
+ cosigners: cosigners,
+ cosignersThreshold: 0,
+ claimBackAddress: msg.sender
+ });
+
+ bytes32 instructionId = TEE_EXTENSION_REGISTRY.sendInstructions{ value: msg.value }(teeIds, params);
+ emit OrderTicked(_orderId, instructionId);
+ }
+
+ /// @notice Settle an order using a TEE-signed result proving its condition fired.
+ /// @dev The TEE node signs `keccak256(abi.encode(TEE_ACTION_RESULT_PREFIX, chainId,
+ /// ActionResult.Hash()))` with its registered key under the EIP-191 personal-sign
+ /// prefix. We rebuild that hash from the result fields the proxy returned and
+ /// require the recovered signer to be an allowlisted TEE address.
+ ///
+ /// `_resultData` is the exact byte string the TEE returned in `ActionResult.Data`:
+ /// `abi.encode(uint256 orderId, address contractAddr, uint8 action,
+ /// uint256 minOutOrLots, address tokenOut, string underlyingAddress)`.
+ /// - orderId: the order this result authorizes.
+ /// - contractAddr: must equal address(this), so a result cannot be replayed
+ /// against a different Wraith deployment.
+ /// - action: ACTION_SWAP or ACTION_REDEEM.
+ /// - minOutOrLots: swap → minimum acceptable output; redeem → FAssets lot count.
+ /// - tokenOut: swap only.
+ /// - underlyingAddress: redeem only — the XRPL r-address to receive native XRP.
+ ///
+ /// @param _resultData Raw `ActionResult.Data` from the extension. Must be the exact
+ /// bytes the proxy signed — do not re-encode.
+ /// @param _actionId `ActionResult.ID`, the instruction id from `tick`. Consumed once.
+ /// @param _submissionTag `ActionResult.SubmissionTag` (typically "submit").
+ /// @param _status `ActionResult.Status`; only 1 (success) is accepted.
+ /// @param _signature 65-byte ECDSA signature from the TEE node.
+ function execute(
+ bytes calldata _resultData,
+ bytes32 _actionId,
+ string calldata _submissionTag,
+ uint8 _status,
+ bytes calldata _signature
+ ) external {
+ require(_status == 1, "TEE reported failure");
+ require(!usedActionId[_actionId], "action already used");
+
+ _verifyTeeSignature(_resultData, _actionId, _submissionTag, _status, _signature);
+
+ usedActionId[_actionId] = true;
+
+ _settle(_resultData);
+ }
+
+ /// @dev Split out of `execute` to keep that function's stack shallow.
+ function _verifyTeeSignature(
+ bytes calldata _resultData,
+ bytes32 _actionId,
+ string calldata _submissionTag,
+ uint8 _status,
+ bytes calldata _signature
+ ) private view {
+ // Reconstruct ActionResult.Hash() = keccak256(keccak256(data) || id || keccak256(tag) || status).
+ bytes32 resultHash =
+ keccak256(abi.encodePacked(keccak256(_resultData), _actionId, keccak256(bytes(_submissionTag)), _status));
+
+ // The node signs a domain-separated payload over resultHash, not resultHash itself.
+ bytes32 payloadHash = keccak256(abi.encode(TEE_ACTION_RESULT_PREFIX, block.chainid, resultHash));
+
+ address signer = _recover(_ethSigned(payloadHash), _signature);
+ require(isTeeAddress[signer], "bad TEE signature");
+ }
+
+ /// @dev Decodes an authorized result and performs the action it names.
+ function _settle(bytes calldata _resultData) private {
+ (
+ uint256 orderId,
+ address contractAddr,
+ uint8 action,
+ uint256 minOutOrLots,
+ address tokenOut,
+ string memory underlyingAddress
+ ) = abi.decode(_resultData, (uint256, address, uint8, uint256, address, string));
+
+ require(contractAddr == address(this), "result not for this contract");
+
+ Order storage o = _orders[orderId];
+ require(o.owner != address(0), "no such order");
+ require(!o.executed, "already executed");
+ require(!o.cancelled, "cancelled");
+ require(block.timestamp < o.expiry, "expired");
+
+ o.executed = true;
+
+ uint256 result;
+ if (action == ACTION_SWAP) {
+ result = _swap(o, tokenOut, minOutOrLots);
+ } else if (action == ACTION_REDEEM) {
+ result = _redeem(o, minOutOrLots, underlyingAddress);
+ } else {
+ revert("unknown action");
+ }
+
+ emit OrderExecuted(orderId, action, o.amountIn, result);
+ }
+
+ /// @notice Reclaim escrow. The owner may cancel at any time; anyone may clean up
+ /// an expired order, which always refunds the owner.
+ function cancel(uint256 _orderId) external {
+ Order storage o = _orders[_orderId];
+ require(o.owner != address(0), "no such order");
+ require(!o.executed, "already executed");
+ require(!o.cancelled, "already cancelled");
+ require(msg.sender == o.owner || block.timestamp >= o.expiry, "not owner and not expired");
+
+ o.cancelled = true;
+ uint256 amount = o.amountIn;
+ require(IERC20(o.tokenIn).transfer(o.owner, amount), "refund failed");
+
+ emit OrderCancelled(_orderId, amount);
+ }
+
+ // --- Views ---
+
+ function orderCount() external view returns (uint256) {
+ return _orders.length;
+ }
+
+ /// @notice Public order metadata. Deliberately does not return the ciphertext's
+ /// meaning — only its bytes, which are opaque without the enclave key.
+ function getOrder(uint256 _orderId)
+ external
+ view
+ returns (
+ address orderOwner,
+ address tokenIn,
+ uint256 amountIn,
+ uint64 expiry,
+ bool executed,
+ bool cancelled,
+ bytes memory encrypted
+ )
+ {
+ Order storage o = _orders[_orderId];
+ require(o.owner != address(0), "no such order");
+ return (o.owner, o.tokenIn, o.amountIn, o.expiry, o.executed, o.cancelled, o.encrypted);
+ }
+
+ function canTick(uint256 _orderId) external view returns (bool) {
+ Order storage o = _orders[_orderId];
+ return o.owner != address(0) && !o.executed && !o.cancelled && block.timestamp < o.expiry
+ && block.timestamp >= o.nextTickAt;
+ }
+
+ // --- Internals ---
+
+ function _swap(Order storage _o, address _tokenOut, uint256 _minOut) private returns (uint256) {
+ require(address(router) != address(0), "router not set");
+ require(_tokenOut != address(0), "zero tokenOut");
+
+ address[] memory path = new address[](2);
+ path[0] = _o.tokenIn;
+ path[1] = _tokenOut;
+
+ require(IERC20(_o.tokenIn).approve(address(router), _o.amountIn), "approve failed");
+
+ uint256[] memory amounts =
+ router.swapExactTokensForTokens(_o.amountIn, _minOut, path, _o.owner, block.timestamp);
+ return amounts[amounts.length - 1];
+ }
+
+ /// @dev Redemption is lot-granular, so the lot count rarely consumes the whole
+ /// escrow exactly. Whatever the AssetManager does not take is returned to the
+ /// order owner rather than left stranded in this contract.
+ function _redeem(Order storage _o, uint256 _lots, string memory _underlyingAddress) private returns (uint256) {
+ require(address(assetManager) != address(0), "asset manager not set");
+ require(_lots > 0, "zero lots");
+ require(bytes(_underlyingAddress).length > 0, "empty underlying address");
+
+ IERC20 token = IERC20(_o.tokenIn);
+ uint256 balanceBefore = token.balanceOf(address(this));
+
+ uint256 redeemed = assetManager.redeem(_lots, _underlyingAddress, payable(address(0)));
+
+ uint256 balanceAfter = token.balanceOf(address(this));
+ uint256 spent = balanceBefore - balanceAfter;
+ if (_o.amountIn > spent) {
+ require(token.transfer(_o.owner, _o.amountIn - spent), "remainder refund failed");
+ }
+
+ return redeemed;
+ }
+
+ /// @notice Returns the extension ID, reverting if it has not been set.
+ /// DO NOT MODIFY this function.
+ function _getExtensionId() internal view returns (uint256) {
+ require(_extensionId != 0, "Extension ID not set.");
+ return _extensionId;
+ }
+
+ /// @notice EIP-191 personal-sign hash of a 32-byte digest.
+ function _ethSigned(bytes32 _hash) private pure returns (bytes32) {
+ return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash));
+ }
+
+ /// @notice Recover the signer of a 65-byte [r||s||v] secp256k1 signature.
+ function _recover(bytes32 _digest, bytes calldata _sig) private pure returns (address) {
+ require(_sig.length == 65, "bad signature length");
+ bytes32 r;
+ bytes32 s;
+ uint8 v;
+ assembly {
+ r := calldataload(_sig.offset)
+ s := calldataload(add(_sig.offset, 32))
+ v := byte(0, calldataload(add(_sig.offset, 64)))
+ }
+ if (v < 27) {
+ v += 27;
+ }
+ require(v == 27 || v == 28, "bad signature v");
+ address signer = ecrecover(_digest, v, r, s);
+ require(signer != address(0), "invalid signature");
+ return signer;
+ }
+}
diff --git a/contracts/src/interfaces/ITeeExtensionRegistry.sol b/contracts/src/interfaces/ITeeExtensionRegistry.sol
new file mode 100644
index 0000000..e456496
--- /dev/null
+++ b/contracts/src/interfaces/ITeeExtensionRegistry.sol
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: Apache-2.0
+pragma solidity >=0.7.6 <0.9;
+
+// Minimal local interface, mirroring the Flare FCC example contracts.
+// TODO: replace with the package import once flare-smart-contracts-v2 is published:
+// import { ITeeExtensionRegistry } from "flare-smart-contracts-v2/contracts/userInterfaces/tee/ITeeExtensionRegistry.sol";
+interface ITeeExtensionRegistry {
+ struct TeeInstructionParams {
+ bytes32 opType;
+ bytes32 opCommand;
+ bytes message;
+ address[] cosigners;
+ uint64 cosignersThreshold;
+ address claimBackAddress;
+ }
+
+ function sendInstructions(
+ address[] calldata _teeIds,
+ TeeInstructionParams calldata _instructionParams
+ ) external payable returns (bytes32 _instructionId);
+
+ function nextPublicExtensionId() external view returns (uint256);
+
+ function getTeeExtensionInstructionsSender(uint256 _extensionId) external view returns (address);
+}
diff --git a/contracts/src/interfaces/ITeeMachineRegistry.sol b/contracts/src/interfaces/ITeeMachineRegistry.sol
new file mode 100644
index 0000000..99d4d6f
--- /dev/null
+++ b/contracts/src/interfaces/ITeeMachineRegistry.sol
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: Apache-2.0
+pragma solidity >=0.7.6 <0.9;
+
+// Minimal local interface, mirroring the Flare FCC example contracts.
+// TODO: replace with the package import once flare-smart-contracts-v2 is published.
+//
+// NOTE: this interface exposes only `getRandomTeeIds`, which selects machines at
+// random. It is deliberately NOT a membership query, so a contract cannot ask
+// "is this address a registered TEE for my extension?". WraithOrders therefore
+// verifies signatures against an owner-curated allowlist (see `setTeeAddress`).
+interface ITeeMachineRegistry {
+ function getRandomTeeIds(uint256 _extensionId, uint256 _count) external view returns (address[] memory);
+}
diff --git a/contracts/src/interfaces/IWraithExternal.sol b/contracts/src/interfaces/IWraithExternal.sol
new file mode 100644
index 0000000..0f0d6d6
--- /dev/null
+++ b/contracts/src/interfaces/IWraithExternal.sol
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: Apache-2.0
+pragma solidity >=0.8.0 <0.9;
+
+/// @notice Minimal ERC-20 surface used for escrow and settlement.
+interface IERC20 {
+ function transfer(address to, uint256 amount) external returns (bool);
+ function transferFrom(address from, address to, uint256 amount) external returns (bool);
+ function approve(address spender, uint256 amount) external returns (bool);
+ function balanceOf(address account) external view returns (uint256);
+}
+
+/// @notice Uniswap V2 router surface. On Flare this is BlazeSwap.
+interface IUniswapV2Router {
+ function swapExactTokensForTokens(
+ uint256 amountIn,
+ uint256 amountOutMin,
+ address[] calldata path,
+ address to,
+ uint256 deadline
+ ) external returns (uint256[] memory amounts);
+}
+
+/// @notice FAssets AssetManager surface used for FXRP redemption.
+/// @dev Redemption is lot-granular: `_lots` is a lot count, not a token amount.
+interface IAssetManager {
+ function redeem(
+ uint256 _lots,
+ string memory _redeemerUnderlyingAddressString,
+ address payable _executor
+ ) external payable returns (uint256);
+
+ function fAsset() external view returns (address);
+}
diff --git a/contracts/test/WraithOrders.t.sol b/contracts/test/WraithOrders.t.sol
new file mode 100644
index 0000000..fa68269
--- /dev/null
+++ b/contracts/test/WraithOrders.t.sol
@@ -0,0 +1,288 @@
+// SPDX-License-Identifier: Apache-2.0
+pragma solidity ^0.8.27;
+
+import { Test } from "forge-std/Test.sol";
+import { WraithOrders } from "../src/WraithOrders.sol";
+import { ITeeExtensionRegistry } from "../src/interfaces/ITeeExtensionRegistry.sol";
+import { ITeeMachineRegistry } from "../src/interfaces/ITeeMachineRegistry.sol";
+
+contract MockERC20 {
+ mapping(address => uint256) public balanceOf;
+ mapping(address => mapping(address => uint256)) public allowance;
+
+ function mint(address to, uint256 amount) external {
+ balanceOf[to] += amount;
+ }
+
+ function approve(address spender, uint256 amount) external returns (bool) {
+ allowance[msg.sender][spender] = amount;
+ return true;
+ }
+
+ function transfer(address to, uint256 amount) external returns (bool) {
+ require(balanceOf[msg.sender] >= amount, "insufficient");
+ balanceOf[msg.sender] -= amount;
+ balanceOf[to] += amount;
+ return true;
+ }
+
+ function transferFrom(address from, address to, uint256 amount) external returns (bool) {
+ require(balanceOf[from] >= amount, "insufficient");
+ uint256 allowed = allowance[from][msg.sender];
+ require(allowed >= amount, "not allowed");
+ if (allowed != type(uint256).max) {
+ allowance[from][msg.sender] = allowed - amount;
+ }
+ balanceOf[from] -= amount;
+ balanceOf[to] += amount;
+ return true;
+ }
+}
+
+contract MockExtensionRegistry {
+ address public sender;
+ uint256 public constant EXT_ID = 0x10000;
+
+ function setSender(address _sender) external {
+ sender = _sender;
+ }
+
+ function sendInstructions(address[] calldata, ITeeExtensionRegistry.TeeInstructionParams calldata)
+ external
+ payable
+ returns (bytes32)
+ {
+ return keccak256(abi.encodePacked("instruction", block.timestamp, msg.sender));
+ }
+
+ function nextPublicExtensionId() external pure returns (uint256) {
+ return EXT_ID + 1;
+ }
+
+ function getTeeExtensionInstructionsSender(uint256) external view returns (address) {
+ return sender;
+ }
+}
+
+contract MockMachineRegistry {
+ function getRandomTeeIds(uint256, uint256 _count) external pure returns (address[] memory ids) {
+ ids = new address[](_count);
+ for (uint256 i = 0; i < _count; ++i) {
+ ids[i] = address(uint160(0x7EE0 + i));
+ }
+ }
+}
+
+/// @notice Swaps at a fixed 1:2 rate.
+contract MockRouter {
+ function swapExactTokensForTokens(
+ uint256 amountIn,
+ uint256 amountOutMin,
+ address[] calldata path,
+ address to,
+ uint256
+ ) external returns (uint256[] memory amounts) {
+ uint256 out = amountIn * 2;
+ require(out >= amountOutMin, "insufficient output");
+
+ MockERC20(path[0]).transferFrom(msg.sender, address(this), amountIn);
+ MockERC20(path[1]).transfer(to, out);
+
+ amounts = new uint256[](2);
+ amounts[0] = amountIn;
+ amounts[1] = out;
+ }
+}
+
+contract WraithOrdersTest is Test {
+ WraithOrders internal wraith;
+ MockERC20 internal fxrp;
+ MockERC20 internal usdt;
+ MockExtensionRegistry internal extRegistry;
+ MockMachineRegistry internal machineRegistry;
+ MockRouter internal router;
+
+ uint256 internal constant TEE_PK = 0xA11CE;
+ address internal teeAddr;
+
+ address internal alice = address(0xA1);
+
+ string internal constant TAG = "submit";
+ uint64 internal constant EXPIRY = 1_000_000;
+ uint256 internal constant ESCROW = 100 ether;
+
+ function setUp() public {
+ vm.warp(1000);
+
+ teeAddr = vm.addr(TEE_PK);
+
+ fxrp = new MockERC20();
+ usdt = new MockERC20();
+ extRegistry = new MockExtensionRegistry();
+ machineRegistry = new MockMachineRegistry();
+ router = new MockRouter();
+
+ wraith = new WraithOrders(ITeeExtensionRegistry(address(extRegistry)), ITeeMachineRegistry(address(machineRegistry)));
+
+ extRegistry.setSender(address(wraith));
+ wraith.setExtensionId();
+ wraith.setTeeAddress(teeAddr, true);
+ wraith.setRouter(address(router));
+
+ fxrp.mint(alice, ESCROW);
+ usdt.mint(address(router), 1000 ether);
+ }
+
+ // --- helpers ---
+
+ function _createOrder() internal returns (uint256 orderId) {
+ vm.startPrank(alice);
+ fxrp.approve(address(wraith), ESCROW);
+ orderId = wraith.createOrder(hex"deadbeef", address(fxrp), ESCROW, EXPIRY);
+ vm.stopPrank();
+ }
+
+ function _swapResult(uint256 orderId, address target) internal view returns (bytes memory) {
+ return abi.encode(orderId, target, wraith.ACTION_SWAP(), uint256(150 ether), address(usdt), "");
+ }
+
+ /// @dev Mirrors what the TEE node signs: an EIP-191 personal-sign over a
+ /// chain-scoped, domain-separated wrapper around ActionResult.Hash().
+ function _sign(uint256 pk, bytes memory data, bytes32 actionId, uint8 status) internal view returns (bytes memory) {
+ bytes32 resultHash = keccak256(abi.encodePacked(keccak256(data), actionId, keccak256(bytes(TAG)), status));
+ bytes32 payloadHash = keccak256(abi.encode(bytes32("TEE_ACTION_RESULT"), block.chainid, resultHash));
+ bytes32 digest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", payloadHash));
+ (uint8 v, bytes32 r, bytes32 s) = vm.sign(pk, digest);
+ return abi.encodePacked(r, s, v);
+ }
+
+ // --- tests ---
+
+ function test_CreateOrderEscrowsAndKeepsTermsOpaque() public {
+ uint256 orderId = _createOrder();
+
+ assertEq(fxrp.balanceOf(address(wraith)), ESCROW, "escrow not held");
+ assertEq(fxrp.balanceOf(alice), 0, "escrow not pulled");
+
+ (address o,, uint256 amountIn,,,, bytes memory encrypted) = wraith.getOrder(orderId);
+ assertEq(o, alice);
+ assertEq(amountIn, ESCROW);
+ // The only thing on-chain is ciphertext. Nothing reveals the trigger price.
+ assertEq(encrypted, hex"deadbeef");
+ }
+
+ function test_ExecuteSwapWithValidTeeSignature() public {
+ uint256 orderId = _createOrder();
+ bytes memory data = _swapResult(orderId, address(wraith));
+ bytes32 actionId = keccak256("action-1");
+
+ wraith.execute(data, actionId, TAG, 1, _sign(TEE_PK, data, actionId, 1));
+
+ assertEq(usdt.balanceOf(alice), 200 ether, "proceeds not delivered to owner");
+ (,,,, bool executed,,) = wraith.getOrder(orderId);
+ assertTrue(executed, "order not marked executed");
+ }
+
+ function test_RevertWhen_SignerIsNotRegisteredTee() public {
+ uint256 orderId = _createOrder();
+ bytes memory data = _swapResult(orderId, address(wraith));
+ bytes32 actionId = keccak256("action-1");
+
+ uint256 impostorPk = 0xBAD;
+ vm.expectRevert("bad TEE signature");
+ wraith.execute(data, actionId, TAG, 1, _sign(impostorPk, data, actionId, 1));
+ }
+
+ function test_RevertWhen_ActionIdIsReplayed() public {
+ uint256 orderId = _createOrder();
+ bytes memory data = _swapResult(orderId, address(wraith));
+ bytes32 actionId = keccak256("action-1");
+ bytes memory sig = _sign(TEE_PK, data, actionId, 1);
+
+ wraith.execute(data, actionId, TAG, 1, sig);
+
+ vm.expectRevert("action already used");
+ wraith.execute(data, actionId, TAG, 1, sig);
+ }
+
+ function test_RevertWhen_ResultTargetsAnotherContract() public {
+ uint256 orderId = _createOrder();
+ // Same TEE, same order, but addressed to a different Wraith deployment.
+ bytes memory data = _swapResult(orderId, address(0xDEAD));
+ bytes32 actionId = keccak256("action-1");
+
+ vm.expectRevert("result not for this contract");
+ wraith.execute(data, actionId, TAG, 1, _sign(TEE_PK, data, actionId, 1));
+ }
+
+ function test_RevertWhen_TeeReportsFailure() public {
+ uint256 orderId = _createOrder();
+ bytes memory data = _swapResult(orderId, address(wraith));
+ bytes32 actionId = keccak256("action-1");
+
+ vm.expectRevert("TEE reported failure");
+ wraith.execute(data, actionId, TAG, 0, _sign(TEE_PK, data, actionId, 0));
+ }
+
+ function test_RevertWhen_OrderExpired() public {
+ uint256 orderId = _createOrder();
+ bytes memory data = _swapResult(orderId, address(wraith));
+ bytes32 actionId = keccak256("action-1");
+
+ vm.warp(EXPIRY + 1);
+
+ vm.expectRevert("expired");
+ wraith.execute(data, actionId, TAG, 1, _sign(TEE_PK, data, actionId, 1));
+ }
+
+ function test_CancelRefundsOwner() public {
+ uint256 orderId = _createOrder();
+
+ vm.prank(alice);
+ wraith.cancel(orderId);
+
+ assertEq(fxrp.balanceOf(alice), ESCROW, "not refunded");
+ }
+
+ function test_AnyoneCanCancelExpiredOrderAndOwnerIsRefunded() public {
+ uint256 orderId = _createOrder();
+ vm.warp(EXPIRY + 1);
+
+ vm.prank(address(0xB0B));
+ wraith.cancel(orderId);
+
+ assertEq(fxrp.balanceOf(alice), ESCROW, "owner not refunded");
+ }
+
+ function test_RevertWhen_NonOwnerCancelsLiveOrder() public {
+ uint256 orderId = _createOrder();
+
+ vm.prank(address(0xB0B));
+ vm.expectRevert("not owner and not expired");
+ wraith.cancel(orderId);
+ }
+
+ function test_TickIsRateLimited() public {
+ uint256 orderId = _createOrder();
+
+ wraith.tick{ value: 0 }(orderId);
+
+ vm.expectRevert("ticked too recently");
+ wraith.tick{ value: 0 }(orderId);
+
+ vm.warp(block.timestamp + wraith.MIN_TICK_INTERVAL());
+ wraith.tick{ value: 0 }(orderId);
+ }
+
+ function test_RevertWhen_ExecutingCancelledOrder() public {
+ uint256 orderId = _createOrder();
+ vm.prank(alice);
+ wraith.cancel(orderId);
+
+ bytes memory data = _swapResult(orderId, address(wraith));
+ bytes32 actionId = keccak256("action-1");
+
+ vm.expectRevert("cancelled");
+ wraith.execute(data, actionId, TAG, 1, _sign(TEE_PK, data, actionId, 1));
+ }
+}
diff --git a/docs/TRUST.md b/docs/TRUST.md
new file mode 100644
index 0000000..463a440
--- /dev/null
+++ b/docs/TRUST.md
@@ -0,0 +1,85 @@
+# Trust assumptions
+
+What runs privately, what is verified on-chain, and where the edges are.
+
+Everything below is a real limitation, stated plainly. A privacy claim you cannot defend under questioning is worth less than a narrower one you can.
+
+---
+
+## What is actually hidden
+
+**Hidden:** the trigger condition — the price, the direction, the action it authorizes, and the deadline. This is the whole secret, and it exists in plaintext only inside the enclave.
+
+**Not hidden:** that an order exists, who owns it, which asset is escrowed, how much, and — once a condition fires — the resulting transaction.
+
+Wraith removes the *advance warning*. Conventional on-chain automation publishes your trigger price and leaves it sitting there, which is exactly what makes stop-loss hunting possible. Wraith does not publish it, so it cannot be hunted.
+
+Wraith does **not** make execution private. When a trigger fires, the swap or redemption is an ordinary public transaction and is as exposed to execution-moment MEV as any other trade. Anyone claiming a TEE makes a trade MEV-proof is overselling: the transaction still enters a mempool.
+
+---
+
+## Assumptions
+
+### 1. Ciphertext is stored on-chain
+
+The encrypted order rides on-chain as an ECIES ciphertext. Flare's own documentation is direct about this:
+
+> Storing encrypted secrets on-chain is not advisable in production — on-chain data is public and encryption can be broken over time. A production extension should use offchain channels for secret delivery.
+
+The exposure is *durable*: a ciphertext published today can be attacked indefinitely. For a stop-loss with a horizon of days this is an acceptable trade; for a long-lived secret it is not. Production Wraith needs an off-chain delivery channel to the enclave. This is the most significant open item.
+
+### 2. The demo runs a simulated TEE
+
+`SIMULATED_TEE=true`, so the code hash and platform are simulated and there is no Confidential VM hardware behind the demo. The signature verification path, the instruction lifecycle and the contract logic are all real; the hardware attestation is not. Real attestation is the production path and requires Confidential Space hardware.
+
+### 3. You trust the TEE platform
+
+A TEE moves trust rather than eliminating it. You are trusting the silicon vendor's attestation, the enclave's isolation against side-channel attacks, and Flare's registration of that machine. This is a smaller and more auditable trust surface than "trust the operator," but it is not zero.
+
+### 4. Enclave state is volatile
+
+There is no sealed storage. The extension keeps nothing durable across restarts, so the on-chain ciphertext is the canonical copy of every order and is re-decrypted on each tick. The TEE identity key is generated at boot.
+
+### 5. TEE signers are an allowlist, not a registry lookup
+
+`WraithOrders` verifies result signatures against an owner-curated set of TEE addresses. It would be better to ask the registry directly, but `ITeeMachineRegistry` exposes only `getRandomTeeIds` — a random selector, not a membership query. There is no published way for a contract to ask "is this address a registered TEE for my extension?".
+
+So the contract owner is trusted to curate that set correctly. A registry membership getter would remove this assumption entirely, and is the right upstream fix.
+
+### 6. PMW is unavailable to third-party extensions
+
+Protocol Managed Wallets — Flare's TEE-held cross-chain signing — is a built-in *system* application. Extension IDs below `0x10000` are reserved for system extensions and there is no developer interface to PMW.
+
+Wraith therefore does not have a TEE sign XRPL transactions directly. Cross-chain settlement goes through FAssets redemption instead: the contract redeems FXRP and the FAssets agent delivers native XRP on the XRPL.
+
+### 7. FDC is not callable from inside the enclave
+
+The TEE-based FDC is likewise a system application with no developer SDK surface. Cross-chain triggers take their Merkle proof from the on-chain instruction payload rather than fetching it in-enclave.
+
+This makes the *observed data* public — but never the threshold it is compared against. Knowing "an XRPL payment of 100 XRP landed" tells an observer nothing about which orders, if any, care.
+
+### 8. The keeper can censor, but cannot lie
+
+The keeper sees ciphertext it cannot read, and the TEE reads FTSO itself rather than accepting a price from the keeper. A hostile keeper cannot forge a trigger or feed a false price. It *can* refuse to tick — which is why ticking is permissionless and any keeper can cover for another.
+
+A keeper does learn whether a tick fired, since it must relay the result to settle it. It never learns the threshold or how close an order was to it.
+
+### 9. Coston2 only
+
+Flare Confidential Compute is "in the final stages of development and is not yet a fully public production system." Wraith targets Coston2. Do not put real funds behind this.
+
+---
+
+## What is verified on-chain
+
+`WraithOrders.execute()` accepts a result only if all of the following hold:
+
+| Check | Prevents |
+| --- | --- |
+| `ecrecover` over the domain-separated `ActionResult` hash resolves to an allowlisted TEE address | Forged results |
+| `actionId` has not been consumed | Replaying one signed result to execute an order twice |
+| `contractAddr` equals `address(this)` | Replaying a result against a different Wraith deployment |
+| `status == 1` | Relaying a failed TEE result |
+| Order is live: not executed, not cancelled, not expired | Settling a dead order |
+
+The signed payload is `keccak256(abi.encode(TEE_ACTION_RESULT_PREFIX, block.chainid, ActionResult.Hash()))` under the EIP-191 prefix. Including `block.chainid` is what stops a result signed on one chain from being replayed on another.
diff --git a/extension/README.md b/extension/README.md
new file mode 100644
index 0000000..34f4b9d
--- /dev/null
+++ b/extension/README.md
@@ -0,0 +1,61 @@
+# Wraith TEE extension
+
+The enclave-side half of Wraith. This is where an order's plaintext briefly exists — and nowhere else.
+
+## What lives here
+
+| Package | Role |
+| --- | --- |
+| `internal/trigger` | Pure decision logic: given decrypted terms and an FTSO reading, has the condition fired? Fully unit-tested, zero dependencies. |
+| `internal/config` | `OPType` / `OPCommand` identifiers. **Must match `contracts/src/WraithOrders.sol` byte for byte.** |
+
+`internal/trigger` is deliberately dependency-free. The decision that moves someone's money is the part worth testing hardest, and keeping it pure means it is testable without a TEE, a chain, or a network.
+
+```bash
+go test ./... -race
+```
+
+## Grafting onto the Flare scaffold
+
+The runnable TEE service is the Flare scaffold — it carries the `tee-node` harness, the `ext-proxy`, the Docker compose stack and the deploy scripts:
+
+```bash
+git clone https://github.com/flare-foundation/fce-extension-scaffold.git
+```
+
+Wire Wraith into it by customizing the six files the FCC guide names:
+
+| Scaffold file | Change |
+| --- | --- |
+| `internal/config/config.go` | Take `OPTypeWraith` / `OPCommandEvalOrder` from this repo's config |
+| `pkg/types/types.go` | Request/response structs for `EVAL_ORDER` |
+| `internal/extension/extension.go` | Route `WRAITH` → decrypt → `trigger.Evaluate` → build result |
+| `pkg/types/register.go` | Decoders for the types server |
+| `contracts/InstructionSender.sol` | Replaced by `WraithOrders.sol`, which is its own instruction sender |
+| `tools/cmd/run-test/main.go` | End-to-end assertions |
+
+The `OPType` and `OPCommand` strings must be identical in Solidity and Go. A mismatch is the documented most-common cause of `unsupported op type` / `unsupported op command`.
+
+Do not use an `OPType` beginning with `F_` — that prefix is reserved for Flare system operations.
+
+## Handler shape
+
+```
+POST /action (WRAITH / EVAL_ORDER)
+ │
+ ├─ decode instruction → (orderId, contractAddr, ciphertext)
+ ├─ decrypt ciphertext via the TEE node /decrypt endpoint on SIGN_PORT
+ ├─ read the FTSO feed over RPC, from inside the enclave
+ ├─ trigger.Evaluate(terms, observation, now)
+ │
+ ├─ not fired → status 1, no-op result (indistinguishable from any other tick)
+ └─ fired → status 1, ABI-encoded result for WraithOrders.execute()
+```
+
+Reading FTSO from inside the enclave rather than accepting a price from the keeper keeps the keeper out of the trust path: it can withhold ticks, but it cannot lie about the price.
+
+## Two constraints worth knowing
+
+**State is volatile.** The enclave has no sealed storage, so nothing here may be treated as durable. The on-chain ciphertext is the canonical copy of an order and is re-decrypted on every tick.
+
+**FDC is not callable from inside the enclave.** The TEE-based FDC is a Flare *system* application with no developer SDK surface. Cross-chain triggers therefore take their attestation proof from the instruction payload rather than fetching it here. Only the *observed data* is public that way — the threshold it is compared against stays secret, which is the property that matters.
diff --git a/extension/go.mod b/extension/go.mod
new file mode 100644
index 0000000..d87cc64
--- /dev/null
+++ b/extension/go.mod
@@ -0,0 +1,3 @@
+module github.com/LSUDOKO/Wraith/extension
+
+go 1.23
diff --git a/extension/internal/config/config.go b/extension/internal/config/config.go
new file mode 100644
index 0000000..0fd60dc
--- /dev/null
+++ b/extension/internal/config/config.go
@@ -0,0 +1,21 @@
+// Package config holds the Wraith extension's operation identifiers and tunables.
+//
+// The OPType and OPCommand strings must match the bytes32 constants in
+// contracts/src/WraithOrders.sol exactly. A mismatch is the most common cause of
+// "unsupported op type" / "unsupported op command" responses from the TEE node.
+package config
+
+const (
+ // Version is part of the extension lifecycle: bump it whenever behavior or
+ // the on-chain interface changes, because the TEE registration path treats
+ // the code version as significant.
+ Version = "0.1.0"
+
+ // OPTypeWraith must equal bytes32("WRAITH") in WraithOrders.sol.
+ //
+ // Names starting with "F_" are reserved for Flare system operations.
+ OPTypeWraith = "WRAITH"
+
+ // OPCommandEvalOrder must equal bytes32("EVAL_ORDER") in WraithOrders.sol.
+ OPCommandEvalOrder = "EVAL_ORDER"
+)
diff --git a/extension/internal/trigger/trigger.go b/extension/internal/trigger/trigger.go
new file mode 100644
index 0000000..5d77277
--- /dev/null
+++ b/extension/internal/trigger/trigger.go
@@ -0,0 +1,213 @@
+// Package trigger evaluates a decrypted order's private condition.
+//
+// This is the only place the plaintext of an order exists, and it exists only
+// inside the enclave. Everything here is deliberately dependency-free and pure
+// so the decision logic can be tested directly.
+package trigger
+
+import (
+ "errors"
+ "fmt"
+ "math/big"
+ "strings"
+ "time"
+)
+
+// Direction is which side of the threshold fires the order.
+type Direction string
+
+const (
+ // Below fires when the price falls to or through the threshold — a stop-loss.
+ Below Direction = "below"
+ // Above fires when the price rises to or through the threshold — a take-profit.
+ Above Direction = "above"
+)
+
+// Action mirrors the ACTION_* constants in WraithOrders.sol.
+type Action uint8
+
+const (
+ ActionSwap Action = 0
+ ActionRedeem Action = 1
+)
+
+// scale is the fixed-point scale (1e18) that thresholds and normalized prices
+// share, so a threshold is comparable to any feed regardless of its decimals.
+const scale = 18
+
+// maxExponent bounds decimal normalization. FTSO decimals are an int8, so a
+// hostile or corrupt value could otherwise ask for an astronomically large
+// big.Int allocation.
+const maxExponent = 60
+
+// Terms is the plaintext of an order: the secret the whole system protects.
+// It never leaves the enclave.
+type Terms struct {
+ OrderID uint64
+ Contract string // Wraith deployment this order belongs to, "0x…"
+ FeedID string // FTSO feed id, e.g. "0x01464c522f55534400000000000000000000000000"
+
+ Direction Direction
+ ThresholdE18 *big.Int // trigger price, scaled by 1e18
+
+ Action Action
+ MinOutOrLots *big.Int // swap: minimum output; redeem: lot count
+ TokenOut string // swap only
+ UnderlyingAddress string // redeem only: XRPL r-address
+
+ Expiry uint64 // unix seconds
+}
+
+// Observation is a price reading from FTSO, in the shape getFeedById returns:
+// the true price is Value / 10^Decimals.
+type Observation struct {
+ Value *big.Int
+ Decimals int8
+ Time time.Time
+}
+
+// Decision is the outcome of evaluating one order.
+type Decision struct {
+ Fire bool
+ // Reason is for enclave-local logging only. It describes the private terms,
+ // so it must never be returned to the chain or to a caller.
+ Reason string
+}
+
+var (
+ ErrNilTerms = errors.New("nil terms")
+ ErrNilObservation = errors.New("nil observation")
+ ErrNoThreshold = errors.New("terms missing threshold")
+ ErrBadDirection = errors.New("unknown direction")
+ ErrBadAction = errors.New("unknown action")
+ ErrExpired = errors.New("order expired")
+ ErrStalePrice = errors.New("price observation is stale")
+ ErrBadDecimals = errors.New("feed decimals out of range")
+ ErrContractMissing = errors.New("terms missing contract address")
+ ErrBadRedeem = errors.New("redeem requires lots and an underlying address")
+ ErrBadSwap = errors.New("swap requires a positive minimum output and a token out")
+)
+
+// Validate reports whether the decrypted terms are internally coherent. It is
+// separate from Evaluate so a malformed order is rejected once, on decrypt,
+// rather than silently never firing.
+func (t *Terms) Validate() error {
+ if t == nil {
+ return ErrNilTerms
+ }
+ if strings.TrimSpace(t.Contract) == "" {
+ return ErrContractMissing
+ }
+ if t.ThresholdE18 == nil || t.ThresholdE18.Sign() <= 0 {
+ return ErrNoThreshold
+ }
+ if t.Direction != Below && t.Direction != Above {
+ return fmt.Errorf("%w: %q", ErrBadDirection, t.Direction)
+ }
+
+ switch t.Action {
+ case ActionSwap:
+ if t.MinOutOrLots == nil || t.MinOutOrLots.Sign() <= 0 || strings.TrimSpace(t.TokenOut) == "" {
+ return ErrBadSwap
+ }
+ case ActionRedeem:
+ if t.MinOutOrLots == nil || t.MinOutOrLots.Sign() <= 0 || strings.TrimSpace(t.UnderlyingAddress) == "" {
+ return ErrBadRedeem
+ }
+ default:
+ return fmt.Errorf("%w: %d", ErrBadAction, t.Action)
+ }
+
+ return nil
+}
+
+// Evaluate decides whether an order's condition has fired.
+//
+// It returns an error rather than a false Decision when it cannot answer
+// safely — expired, stale, or malformed. The caller reports those as a failed
+// action, which the contract will not settle.
+func Evaluate(t *Terms, obs *Observation, now time.Time) (Decision, error) {
+ if err := t.Validate(); err != nil {
+ return Decision{}, err
+ }
+ if obs == nil || obs.Value == nil {
+ return Decision{}, ErrNilObservation
+ }
+
+ if t.Expiry != 0 && uint64(now.Unix()) >= t.Expiry {
+ return Decision{}, ErrExpired
+ }
+
+ age := now.Sub(obs.Time)
+ if age < 0 {
+ age = -age
+ }
+ if age > maxPriceAge {
+ return Decision{}, fmt.Errorf("%w: %s old", ErrStalePrice, age)
+ }
+
+ priceE18, err := NormalizeE18(obs.Value, obs.Decimals)
+ if err != nil {
+ return Decision{}, err
+ }
+
+ cmp := priceE18.Cmp(t.ThresholdE18)
+
+ // Both boundaries are inclusive: a stop set at exactly the traded price
+ // should fire, which is what a trader expects from "stop at X".
+ var fire bool
+ switch t.Direction {
+ case Below:
+ fire = cmp <= 0
+ case Above:
+ fire = cmp >= 0
+ default:
+ return Decision{}, fmt.Errorf("%w: %q", ErrBadDirection, t.Direction)
+ }
+
+ return Decision{
+ Fire: fire,
+ Reason: fmt.Sprintf("price %s vs threshold %s (%s)", priceE18, t.ThresholdE18, t.Direction),
+ }, nil
+}
+
+// maxPriceAge is a package-level variable only so tests can narrow it; production
+// callers get the config default.
+var maxPriceAge = 2 * time.Minute
+
+// SetMaxPriceAge overrides the staleness bound. Intended for wiring from config
+// at startup, not for changing mid-flight.
+func SetMaxPriceAge(d time.Duration) {
+ if d > 0 {
+ maxPriceAge = d
+ }
+}
+
+// NormalizeE18 converts a raw FTSO reading to a 1e18-scaled integer, so feeds
+// with different decimals compare against one threshold scale.
+//
+// Down-scaling (decimals > 18) truncates. That loses sub-1e-18 precision, which
+// no feed carries, so it cannot change a comparison in practice.
+func NormalizeE18(value *big.Int, decimals int8) (*big.Int, error) {
+ if value == nil {
+ return nil, ErrNilObservation
+ }
+
+ exp := int(scale) - int(decimals)
+ if exp > maxExponent || exp < -maxExponent {
+ return nil, fmt.Errorf("%w: %d", ErrBadDecimals, decimals)
+ }
+
+ out := new(big.Int).Set(value)
+ if exp == 0 {
+ return out, nil
+ }
+
+ if exp > 0 {
+ factor := new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(exp)), nil)
+ return out.Mul(out, factor), nil
+ }
+
+ factor := new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(-exp)), nil)
+ return out.Quo(out, factor), nil
+}
diff --git a/extension/internal/trigger/trigger_test.go b/extension/internal/trigger/trigger_test.go
new file mode 100644
index 0000000..8232e40
--- /dev/null
+++ b/extension/internal/trigger/trigger_test.go
@@ -0,0 +1,232 @@
+package trigger
+
+import (
+ "errors"
+ "math/big"
+ "testing"
+ "time"
+)
+
+var now = time.Unix(1_000_000, 0)
+
+func e18(n int64) *big.Int {
+ return new(big.Int).Mul(big.NewInt(n), new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil))
+}
+
+// validTerms is a stop-loss: sell if FXRP falls to $2.00 or below.
+func validTerms() *Terms {
+ return &Terms{
+ OrderID: 1,
+ Contract: "0x00000000000000000000000000000000000000aa",
+ FeedID: "0x01464c522f55534400000000000000000000000000",
+ Direction: Below,
+ ThresholdE18: e18(2),
+ Action: ActionSwap,
+ MinOutOrLots: big.NewInt(1),
+ TokenOut: "0x00000000000000000000000000000000000000bb",
+ Expiry: uint64(now.Unix()) + 3600,
+ }
+}
+
+// obs builds a reading of `price` dollars at `decimals` precision.
+func obs(price int64, decimals int8, t time.Time) *Observation {
+ v := new(big.Int).Mul(big.NewInt(price), new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(decimals)), nil))
+ return &Observation{Value: v, Decimals: decimals, Time: t}
+}
+
+func TestEvaluate_StopLossFiresAtOrBelowThreshold(t *testing.T) {
+ tests := []struct {
+ name string
+ price int64
+ want bool
+ }{
+ {"well above threshold", 5, false},
+ {"just above threshold", 3, false},
+ {"exactly at threshold", 2, true},
+ {"below threshold", 1, true},
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ got, err := Evaluate(validTerms(), obs(tc.price, 6, now), now)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if got.Fire != tc.want {
+ t.Errorf("price %d vs threshold 2: Fire = %v, want %v", tc.price, got.Fire, tc.want)
+ }
+ })
+ }
+}
+
+func TestEvaluate_TakeProfitFiresAtOrAboveThreshold(t *testing.T) {
+ tests := []struct {
+ name string
+ price int64
+ want bool
+ }{
+ {"below threshold", 1, false},
+ {"exactly at threshold", 2, true},
+ {"above threshold", 9, true},
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ terms := validTerms()
+ terms.Direction = Above
+
+ got, err := Evaluate(terms, obs(tc.price, 6, now), now)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if got.Fire != tc.want {
+ t.Errorf("price %d vs threshold 2: Fire = %v, want %v", tc.price, got.Fire, tc.want)
+ }
+ })
+ }
+}
+
+// A feed's decimals must not change the decision.
+func TestEvaluate_DecisionIsIndependentOfFeedDecimals(t *testing.T) {
+ for _, decimals := range []int8{0, 2, 6, 8, 18} {
+ got, err := Evaluate(validTerms(), obs(1, decimals, now), now)
+ if err != nil {
+ t.Fatalf("decimals %d: unexpected error: %v", decimals, err)
+ }
+ if !got.Fire {
+ t.Errorf("decimals %d: price 1 is below threshold 2, expected fire", decimals)
+ }
+ }
+}
+
+func TestEvaluate_RejectsExpiredOrder(t *testing.T) {
+ terms := validTerms()
+ terms.Expiry = uint64(now.Unix())
+
+ _, err := Evaluate(terms, obs(1, 6, now), now)
+ if !errors.Is(err, ErrExpired) {
+ t.Fatalf("got %v, want ErrExpired", err)
+ }
+}
+
+// An irreversible trade must not fire on a stale price. Missing a tick is cheap;
+// the keeper ticks again seconds later.
+func TestEvaluate_RejectsStalePrice(t *testing.T) {
+ stale := now.Add(-maxPriceAge - time.Second)
+
+ _, err := Evaluate(validTerms(), obs(1, 6, stale), now)
+ if !errors.Is(err, ErrStalePrice) {
+ t.Fatalf("got %v, want ErrStalePrice", err)
+ }
+}
+
+func TestEvaluate_AcceptsPriceWithinStalenessWindow(t *testing.T) {
+ fresh := now.Add(-maxPriceAge + time.Second)
+
+ if _, err := Evaluate(validTerms(), obs(1, 6, fresh), now); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+}
+
+func TestEvaluate_RejectsNilObservation(t *testing.T) {
+ if _, err := Evaluate(validTerms(), nil, now); !errors.Is(err, ErrNilObservation) {
+ t.Fatalf("got %v, want ErrNilObservation", err)
+ }
+}
+
+func TestValidate_RejectsMalformedTerms(t *testing.T) {
+ tests := []struct {
+ name string
+ mutate func(*Terms)
+ wantErr error
+ }{
+ {"missing contract", func(tm *Terms) { tm.Contract = "" }, ErrContractMissing},
+ {"nil threshold", func(tm *Terms) { tm.ThresholdE18 = nil }, ErrNoThreshold},
+ {"zero threshold", func(tm *Terms) { tm.ThresholdE18 = big.NewInt(0) }, ErrNoThreshold},
+ {"negative threshold", func(tm *Terms) { tm.ThresholdE18 = big.NewInt(-1) }, ErrNoThreshold},
+ {"unknown direction", func(tm *Terms) { tm.Direction = "sideways" }, ErrBadDirection},
+ {"unknown action", func(tm *Terms) { tm.Action = Action(9) }, ErrBadAction},
+ {"swap without tokenOut", func(tm *Terms) { tm.TokenOut = "" }, ErrBadSwap},
+ {"swap without minimum output", func(tm *Terms) { tm.MinOutOrLots = big.NewInt(0) }, ErrBadSwap},
+ {
+ "redeem without underlying address",
+ func(tm *Terms) { tm.Action = ActionRedeem; tm.UnderlyingAddress = "" },
+ ErrBadRedeem,
+ },
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ terms := validTerms()
+ tc.mutate(terms)
+
+ if err := terms.Validate(); !errors.Is(err, tc.wantErr) {
+ t.Fatalf("got %v, want %v", err, tc.wantErr)
+ }
+ // Malformed terms must fail evaluation too, not merely validation.
+ if _, err := Evaluate(terms, obs(1, 6, now), now); err == nil {
+ t.Fatal("Evaluate accepted malformed terms")
+ }
+ })
+ }
+}
+
+func TestValidate_AcceptsWellFormedRedeem(t *testing.T) {
+ terms := validTerms()
+ terms.Action = ActionRedeem
+ terms.MinOutOrLots = big.NewInt(3)
+ terms.UnderlyingAddress = "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
+ terms.TokenOut = ""
+
+ if err := terms.Validate(); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+}
+
+func TestNormalizeE18(t *testing.T) {
+ tests := []struct {
+ name string
+ value *big.Int
+ decimals int8
+ want *big.Int
+ }{
+ {"already 1e18", e18(7), 18, e18(7)},
+ {"six decimals scales up", big.NewInt(7_000_000), 6, e18(7)},
+ {"zero decimals scales up", big.NewInt(7), 0, e18(7)},
+ {"negative decimals scale further up", big.NewInt(7), -2, new(big.Int).Mul(e18(7), big.NewInt(100))},
+ {"more than 18 decimals truncates down", new(big.Int).Mul(e18(7), big.NewInt(100)), 20, e18(7)},
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ got, err := NormalizeE18(tc.value, tc.decimals)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if got.Cmp(tc.want) != 0 {
+ t.Errorf("got %s, want %s", got, tc.want)
+ }
+ })
+ }
+}
+
+// A corrupt decimals value must not induce a huge allocation.
+func TestNormalizeE18_RejectsOutOfRangeDecimals(t *testing.T) {
+ for _, decimals := range []int8{-127, 127} {
+ if _, err := NormalizeE18(big.NewInt(1), decimals); !errors.Is(err, ErrBadDecimals) {
+ t.Errorf("decimals %d: got %v, want ErrBadDecimals", decimals, err)
+ }
+ }
+}
+
+func TestNormalizeE18_DoesNotMutateInput(t *testing.T) {
+ value := big.NewInt(7_000_000)
+ original := new(big.Int).Set(value)
+
+ if _, err := NormalizeE18(value, 6); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if value.Cmp(original) != 0 {
+ t.Fatalf("input mutated: got %s, want %s", value, original)
+ }
+}
diff --git a/frontend/.env.example b/frontend/.env.example
new file mode 100644
index 0000000..dbc062f
--- /dev/null
+++ b/frontend/.env.example
@@ -0,0 +1,16 @@
+# Server-side only. The browser never talks to the extension proxy directly —
+# the /api/info route relays it, because the proxy sets no CORS headers and its
+# tunnel URL should not ship in a client bundle.
+EXT_PROXY_URL=http://127.0.0.1:6674
+
+# Deployed WraithOrders on Coston2 (INSTRUCTION_SENDER from config/extension.env).
+NEXT_PUBLIC_WRAITH_ADDRESS=0x
+
+# Asset escrowed by an order.
+NEXT_PUBLIC_FXRP_ADDRESS=0x
+
+# Asset a swap trigger buys.
+NEXT_PUBLIC_TOKEN_OUT=0x
+
+# FTSO feed the trigger watches. Default is FLR/USD.
+NEXT_PUBLIC_FEED_ID=0x01464c522f55534400000000000000000000000000
diff --git a/frontend/README.md b/frontend/README.md
new file mode 100644
index 0000000..13dcac0
--- /dev/null
+++ b/frontend/README.md
@@ -0,0 +1,36 @@
+# Wraith frontend
+
+Where an order's condition is encrypted — in the user's own browser, before anything reaches the chain.
+
+## Run
+
+```bash
+npm install
+cp .env.example .env.local # fill in the deployed addresses
+npm run dev
+```
+
+Connect MetaMask on Coston2 (chain ID 114) and fund it from the [Coston2 faucet](https://faucet.flare.network/coston2).
+
+The extension stack must be running, since the app fetches the enclave's public key from the proxy's `/info` endpoint before it can seal anything.
+
+## How the encryption path works
+
+1. `/api/info` (server-side) fetches the enclave public key from the extension proxy. It is relayed rather than called from the browser because the proxy sets no CORS headers, and its tunnel URL should not ship in a client bundle.
+2. `sealTerms()` ABI-encodes the order terms and ECIES-encrypts them to that key. This happens in the browser; the plaintext never leaves the page.
+3. `createOrder()` stores the ciphertext on Coston2 alongside the escrow.
+
+From then on the condition is readable only inside the enclave.
+
+## Design
+
+**Darkroom safelight.** A darkroom is where things develop unseen and light destroys them, which is the right world for an order whose condition must never be exposed. Violet-cast ink ground, one signal colour (safelight amber), and a single type family.
+
+Two decisions carry the idea:
+
+- **Mono is reserved for cipher bytes.** Nothing else on the page is monospaced, so the unreadable material reads as the most privileged thing on screen.
+- **The seal is the signature element.** Every legible fact about an order sits above a hex block with a slow safelight sweep across it. The design's whole argument is the contrast: everything is public except the one thing that matters.
+
+Fields whose values are encrypted carry an amber left border, so it is visually obvious which parts of the form stay secret.
+
+Motion is one ambient sweep, disabled under `prefers-reduced-motion`.
diff --git a/frontend/app/api/info/route.ts b/frontend/app/api/info/route.ts
new file mode 100644
index 0000000..eb8992f
--- /dev/null
+++ b/frontend/app/api/info/route.ts
@@ -0,0 +1,33 @@
+import { NextResponse } from "next/server";
+
+// The extension proxy is reached server-side so the browser never makes a
+// cross-origin request to it. The proxy has no CORS headers, and its URL is a
+// local tunnel that should not be baked into client bundles.
+const EXT_PROXY_URL = (process.env.EXT_PROXY_URL ?? "http://127.0.0.1:6674").replace(/\/$/, "");
+
+export const dynamic = "force-dynamic";
+
+export async function GET() {
+ try {
+ const response = await fetch(`${EXT_PROXY_URL}/info`, { cache: "no-store" });
+ if (!response.ok) {
+ return NextResponse.json(
+ { error: `extension proxy returned ${response.status}` },
+ { status: 502 },
+ );
+ }
+
+ const info = await response.json();
+ const publicKey = info?.machineData?.publicKey ?? info?.publicKey;
+ if (!publicKey) {
+ return NextResponse.json({ error: "proxy /info carried no public key" }, { status: 502 });
+ }
+
+ return NextResponse.json({ publicKey, machineData: info?.machineData ?? null });
+ } catch {
+ return NextResponse.json(
+ { error: `cannot reach the extension proxy at ${EXT_PROXY_URL}` },
+ { status: 502 },
+ );
+ }
+}
diff --git a/frontend/app/globals.css b/frontend/app/globals.css
new file mode 100644
index 0000000..85f5f56
--- /dev/null
+++ b/frontend/app/globals.css
@@ -0,0 +1,365 @@
+/*
+ * Darkroom safelight.
+ *
+ * A darkroom is where things develop unseen and light destroys them — the right
+ * world for an order whose condition must never be exposed. The ground is a
+ * violet-cast ink, the single signal colour is safelight amber, and mono type is
+ * reserved exclusively for cipher bytes so the unreadable material reads as the
+ * most privileged thing on the page.
+ */
+
+:root {
+ --ink: #0e0b14;
+ --surface: #16121f;
+ --surface-raised: #1d1828;
+ --line: #2c2438;
+ --line-bright: #3d3350;
+ --text: #e8e2f0;
+ --muted: #9a90ad;
+ --amber: #ff9e3d;
+ --amber-dim: #b36b22;
+ --amber-glow: rgba(255, 158, 61, 0.14);
+
+ --step-0: 0.9375rem;
+ --step-1: 1.125rem;
+ --step-2: 1.5rem;
+ --step-3: 2.25rem;
+ --step-4: clamp(2.75rem, 7vw, 5.25rem);
+
+ --gutter: clamp(1.25rem, 4vw, 3.5rem);
+}
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+html {
+ color-scheme: dark;
+}
+
+body {
+ margin: 0;
+ background: var(--ink);
+ color: var(--text);
+ font-family: var(--font-archivo), system-ui, sans-serif;
+ font-size: var(--step-0);
+ line-height: 1.55;
+ -webkit-font-smoothing: antialiased;
+}
+
+/* The safelight: a single fixed wash so the page feels lit rather than painted. */
+body::before {
+ content: "";
+ position: fixed;
+ inset: 0;
+ pointer-events: none;
+ background: radial-gradient(120% 80% at 78% -10%, var(--amber-glow), transparent 60%);
+ z-index: 0;
+}
+
+main {
+ position: relative;
+ z-index: 1;
+}
+
+:focus-visible {
+ outline: 2px solid var(--amber);
+ outline-offset: 3px;
+}
+
+/* --- Masthead --- */
+
+.masthead {
+ padding: clamp(3rem, 9vw, 7rem) var(--gutter) clamp(2rem, 5vw, 3.5rem);
+ border-bottom: 1px solid var(--line);
+}
+
+.wordmark {
+ margin: 0;
+ font-size: var(--step-4);
+ font-weight: 700;
+ letter-spacing: -0.045em;
+ line-height: 0.86;
+ text-transform: uppercase;
+}
+
+/* The one flourish: the mark half-emerges from the ground, as if not fully developed. */
+.wordmark span {
+ color: transparent;
+ background-image: linear-gradient(103deg, var(--text) 0%, var(--text) 46%, var(--muted) 63%, #3a3049 100%);
+ -webkit-background-clip: text;
+ background-clip: text;
+}
+
+.thesis {
+ margin: 1.25rem 0 0;
+ max-width: 46ch;
+ font-size: var(--step-1);
+ color: var(--muted);
+ text-wrap: balance;
+}
+
+.chain-note {
+ margin-top: 1.5rem;
+ font-size: 0.8125rem;
+ color: var(--muted);
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+}
+
+/* --- Layout --- */
+
+.workspace {
+ display: grid;
+ gap: clamp(2rem, 5vw, 4rem);
+ padding: clamp(2rem, 5vw, 4rem) var(--gutter) 6rem;
+ grid-template-columns: 1fr;
+ align-items: start;
+}
+
+@media (min-width: 62rem) {
+ .workspace {
+ grid-template-columns: minmax(0, 27rem) minmax(0, 1fr);
+ }
+}
+
+.panel-title {
+ margin: 0 0 1.5rem;
+ font-size: 0.8125rem;
+ font-weight: 600;
+ letter-spacing: 0.16em;
+ text-transform: uppercase;
+ color: var(--muted);
+}
+
+/* --- Compose form --- */
+
+.compose {
+ background: var(--surface);
+ border: 1px solid var(--line);
+ border-radius: 4px;
+ padding: clamp(1.5rem, 3vw, 2rem);
+}
+
+.field {
+ display: block;
+ margin-bottom: 1.25rem;
+}
+
+.field-label {
+ display: block;
+ margin-bottom: 0.4rem;
+ font-size: 0.8125rem;
+ color: var(--muted);
+}
+
+.field-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 0.75rem;
+}
+
+input,
+select {
+ width: 100%;
+ padding: 0.6rem 0.75rem;
+ background: var(--ink);
+ border: 1px solid var(--line);
+ border-radius: 3px;
+ color: var(--text);
+ font: inherit;
+}
+
+input:hover,
+select:hover {
+ border-color: var(--line-bright);
+}
+
+/* Fields that carry the secret are marked, so the user can see what stays hidden. */
+.field-secret input,
+.field-secret select {
+ border-left: 2px solid var(--amber-dim);
+}
+
+.secret-note {
+ margin: 1.25rem 0;
+ padding: 0.85rem 1rem;
+ border-left: 2px solid var(--amber-dim);
+ background: rgba(255, 158, 61, 0.05);
+ font-size: 0.8125rem;
+ color: var(--muted);
+}
+
+.submit {
+ width: 100%;
+ padding: 0.8rem 1rem;
+ background: var(--amber);
+ border: 0;
+ border-radius: 3px;
+ color: #1a0f02;
+ font: inherit;
+ font-weight: 650;
+ letter-spacing: 0.02em;
+ cursor: pointer;
+}
+
+.submit:hover:not(:disabled) {
+ background: #ffb267;
+}
+
+.submit:disabled {
+ background: var(--line-bright);
+ color: var(--muted);
+ cursor: not-allowed;
+}
+
+.status {
+ margin-top: 1rem;
+ font-size: 0.8125rem;
+ color: var(--muted);
+ min-height: 1.4em;
+}
+
+.status[data-tone="error"] {
+ color: #ff8b7a;
+}
+
+/* --- Sealed orders --- */
+
+.orders {
+ display: grid;
+ gap: 1rem;
+}
+
+.order {
+ background: var(--surface);
+ border: 1px solid var(--line);
+ border-radius: 4px;
+ padding: clamp(1.25rem, 2.5vw, 1.75rem);
+}
+
+.order-head {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.75rem 1.5rem;
+ align-items: baseline;
+ justify-content: space-between;
+ margin-bottom: 1.25rem;
+}
+
+.order-id {
+ font-size: var(--step-2);
+ font-weight: 700;
+ letter-spacing: -0.02em;
+}
+
+.state {
+ font-size: 0.75rem;
+ letter-spacing: 0.14em;
+ text-transform: uppercase;
+ padding: 0.2rem 0.55rem;
+ border: 1px solid var(--line-bright);
+ border-radius: 2px;
+ color: var(--muted);
+}
+
+.state[data-state="sealed"] {
+ color: var(--amber);
+ border-color: var(--amber-dim);
+}
+
+.facts {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
+ gap: 1rem;
+ margin-bottom: 1.5rem;
+}
+
+.fact-label {
+ font-size: 0.75rem;
+ color: var(--muted);
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+}
+
+.fact-value {
+ margin-top: 0.2rem;
+ font-variant-numeric: tabular-nums;
+}
+
+/*
+ * The seal — the signature element.
+ *
+ * Every legible fact about an order sits above; this is the one thing that
+ * matters and it is bytes. A slow safelight sweep passes over it so the block
+ * reads as sealed rather than merely encoded.
+ */
+.seal {
+ position: relative;
+ overflow: hidden;
+ padding: 1rem;
+ background: var(--surface-raised);
+ border: 1px solid var(--line);
+ border-radius: 3px;
+}
+
+.seal::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background: linear-gradient(100deg, transparent 38%, var(--amber-glow) 50%, transparent 62%);
+ transform: translateX(-100%);
+ animation: sweep 7s ease-in-out infinite;
+ pointer-events: none;
+}
+
+@keyframes sweep {
+ 0%,
+ 55% {
+ transform: translateX(-100%);
+ }
+ 100% {
+ transform: translateX(100%);
+ }
+}
+
+.seal-label {
+ display: block;
+ margin-bottom: 0.6rem;
+ font-size: 0.75rem;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ color: var(--muted);
+}
+
+.cipher {
+ margin: 0;
+ font-family: var(--font-mono), ui-monospace, monospace;
+ font-size: 0.8125rem;
+ line-height: 1.75;
+ letter-spacing: 0.06em;
+ color: #b9aecb;
+ overflow-wrap: anywhere;
+}
+
+.empty {
+ padding: 3rem 1.5rem;
+ border: 1px dashed var(--line);
+ border-radius: 4px;
+ color: var(--muted);
+ max-width: 42ch;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .seal::after {
+ animation: none;
+ }
+
+ *,
+ *::before,
+ *::after {
+ transition-duration: 0.01ms !important;
+ }
+}
diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx
new file mode 100644
index 0000000..469d0d0
--- /dev/null
+++ b/frontend/app/layout.tsx
@@ -0,0 +1,30 @@
+import type { Metadata } from "next";
+import { Archivo, JetBrains_Mono } from "next/font/google";
+import "./globals.css";
+
+const archivo = Archivo({
+ subsets: ["latin"],
+ weight: ["400", "600", "700"],
+ variable: "--font-archivo",
+});
+
+// Reserved for cipher bytes and addresses only — nothing else on the page is mono.
+const mono = JetBrains_Mono({
+ subsets: ["latin"],
+ weight: ["400"],
+ variable: "--font-mono",
+});
+
+export const metadata: Metadata = {
+ title: "Wraith — conditional orders that never announce themselves",
+ description:
+ "Private conditional orders on Flare. Your trigger is encrypted to a TEE and never published, so it cannot be hunted.",
+};
+
+export default function RootLayout({ children }: { children: React.ReactNode }) {
+ return (
+
+
{children}
+
+ );
+}
diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx
new file mode 100644
index 0000000..fe9a712
--- /dev/null
+++ b/frontend/app/page.tsx
@@ -0,0 +1,317 @@
+"use client";
+
+import { useCallback, useEffect, useState } from "react";
+import { createPublicClient, createWalletClient, custom, http, parseUnits, type Address, type Hex } from "viem";
+import {
+ coston2,
+ ERC20_ABI,
+ WRAITH_ABI,
+ formatCipher,
+ priceToE18,
+ sealTerms,
+ type ActionKind,
+ type Direction,
+} from "@/lib/wraith";
+
+const WRAITH_ADDRESS = (process.env.NEXT_PUBLIC_WRAITH_ADDRESS ?? "") as Address;
+const FXRP_ADDRESS = (process.env.NEXT_PUBLIC_FXRP_ADDRESS ?? "") as Address;
+const TOKEN_OUT = (process.env.NEXT_PUBLIC_TOKEN_OUT ?? "") as Address;
+// FTSO feed id for FLR/USD. Swap for the feed your order should watch.
+const FEED_ID = (process.env.NEXT_PUBLIC_FEED_ID ?? "0x01464c522f55534400000000000000000000000000") as Hex;
+
+type Order = {
+ id: number;
+ owner: Address;
+ amountIn: bigint;
+ expiry: bigint;
+ executed: boolean;
+ cancelled: boolean;
+ encrypted: Hex;
+};
+
+const publicClient = createPublicClient({ chain: coston2, transport: http() });
+
+export default function Home() {
+ const [account, setAccount] = useState();
+ const [teeKey, setTeeKey] = useState();
+ const [orders, setOrders] = useState([]);
+ const [status, setStatus] = useState("");
+ const [tone, setTone] = useState<"info" | "error">("info");
+ const [busy, setBusy] = useState(false);
+
+ const [amount, setAmount] = useState("100");
+ const [direction, setDirection] = useState("below");
+ const [threshold, setThreshold] = useState("2.00");
+ const [action, setAction] = useState("swap");
+ const [minOut, setMinOut] = useState("150");
+ const [xrplAddress, setXrplAddress] = useState("");
+ const [days, setDays] = useState("7");
+
+ const say = (message: string, kind: "info" | "error" = "info") => {
+ setStatus(message);
+ setTone(kind);
+ };
+
+ const loadOrders = useCallback(async () => {
+ if (!WRAITH_ADDRESS) return;
+ try {
+ const count = await publicClient.readContract({
+ address: WRAITH_ADDRESS,
+ abi: WRAITH_ABI,
+ functionName: "orderCount",
+ });
+
+ const loaded: Order[] = [];
+ for (let id = 0n; id < count; id++) {
+ const [owner, , amountIn, expiry, executed, cancelled, encrypted] = await publicClient.readContract({
+ address: WRAITH_ADDRESS,
+ abi: WRAITH_ABI,
+ functionName: "getOrder",
+ args: [id],
+ });
+ loaded.push({ id: Number(id), owner, amountIn, expiry, executed, cancelled, encrypted });
+ }
+ setOrders(loaded.reverse());
+ } catch {
+ say("Cannot read orders. Check NEXT_PUBLIC_WRAITH_ADDRESS and your RPC.", "error");
+ }
+ }, []);
+
+ useEffect(() => {
+ fetch("/api/info")
+ .then((r) => r.json())
+ .then((info) => {
+ if (info.publicKey) setTeeKey(info.publicKey);
+ else say(info.error ?? "The extension proxy did not return a public key.", "error");
+ })
+ .catch(() => say("Cannot reach the extension proxy.", "error"));
+
+ loadOrders();
+ }, [loadOrders]);
+
+ async function connect() {
+ const injected = (globalThis as { ethereum?: unknown }).ethereum;
+ if (!injected) {
+ say("No wallet found. Install MetaMask and switch to Coston2.", "error");
+ return;
+ }
+ const wallet = createWalletClient({ chain: coston2, transport: custom(injected as never) });
+ const [address] = await wallet.requestAddresses();
+ setAccount(address);
+ say(`Connected ${address.slice(0, 6)}…${address.slice(-4)}`);
+ }
+
+ async function seal(event: React.FormEvent) {
+ event.preventDefault();
+ if (!account || !teeKey) return;
+
+ setBusy(true);
+ try {
+ const injected = (globalThis as { ethereum?: unknown }).ethereum;
+ const wallet = createWalletClient({ account, chain: coston2, transport: custom(injected as never) });
+
+ const decimals = await publicClient.readContract({
+ address: FXRP_ADDRESS,
+ abi: ERC20_ABI,
+ functionName: "decimals",
+ });
+ const amountIn = parseUnits(amount, decimals);
+ const expiry = BigInt(Math.floor(Date.now() / 1000) + Number(days) * 86_400);
+
+ say("Encrypting your condition in this browser…");
+ const encrypted = sealTerms(
+ {
+ contract: WRAITH_ADDRESS,
+ feedId: FEED_ID,
+ direction,
+ thresholdE18: priceToE18(threshold),
+ action,
+ minOutOrLots: action === "swap" ? parseUnits(minOut, decimals) : BigInt(minOut),
+ tokenOut: TOKEN_OUT,
+ underlyingAddress: xrplAddress,
+ expiry,
+ },
+ teeKey,
+ );
+
+ say("Approving escrow…");
+ const approveHash = await wallet.writeContract({
+ address: FXRP_ADDRESS,
+ abi: ERC20_ABI,
+ functionName: "approve",
+ args: [WRAITH_ADDRESS, amountIn],
+ });
+ await publicClient.waitForTransactionReceipt({ hash: approveHash });
+
+ say("Sealing the order on Coston2…");
+ const hash = await wallet.writeContract({
+ address: WRAITH_ADDRESS,
+ abi: WRAITH_ABI,
+ functionName: "createOrder",
+ args: [encrypted, FXRP_ADDRESS, amountIn, expiry],
+ });
+ await publicClient.waitForTransactionReceipt({ hash });
+
+ say("Sealed. Your trigger never touched the chain in the clear.");
+ await loadOrders();
+ } catch (error) {
+ const message = error instanceof Error ? error.message : String(error);
+ say(message.split("\n")[0], "error");
+ } finally {
+ setBusy(false);
+ }
+ }
+
+ return (
+
+
+
+ Wraith
+
+
+ Conditional orders that never announce themselves. Your trigger is encrypted to a trusted enclave, so
+ nobody can trade against a price they cannot see.
+
+ Flare Coston2 · FTSO price triggers · FXRP settlement
+
+
+
+
+
+ Compose an order
+
+
+
+
+
+
+
+ Sealed orders
+
+
+ {orders.length === 0 ? (
+
+ No sealed orders yet. Compose one — everything about it will be public except the thing that matters.
+
+ ) : (
+
+ {orders.map((order) => {
+ const state = order.executed
+ ? "executed"
+ : order.cancelled
+ ? "cancelled"
+ : BigInt(Math.floor(Date.now() / 1000)) >= order.expiry
+ ? "expired"
+ : "sealed";
+
+ return (
+
+
+ Order {order.id}
+
+ {state}
+
+
+
+
+
+
Owner
+
+ {order.owner.slice(0, 6)}…{order.owner.slice(-4)}
+
+
+
+
Escrow
+
{(Number(order.amountIn) / 1e18).toLocaleString()} FXRP
+
+
+
Expires
+
+ {new Date(Number(order.expiry) * 1000).toLocaleDateString()}
+
+
+
+
+
+
Condition · sealed
+
{formatCipher(order.encrypted)}
+
+
+ );
+ })}
+
+ )}
+
+
+
+ );
+}
diff --git a/frontend/lib/wraith.ts b/frontend/lib/wraith.ts
new file mode 100644
index 0000000..10ab1a1
--- /dev/null
+++ b/frontend/lib/wraith.ts
@@ -0,0 +1,89 @@
+import { encrypt } from "eciesjs";
+import { encodeAbiParameters, parseAbi, type Address, type Hex } from "viem";
+
+export const WRAITH_ABI = parseAbi([
+ "function orderCount() view returns (uint256)",
+ "function createOrder(bytes encrypted, address tokenIn, uint256 amountIn, uint64 expiry) returns (uint256)",
+ "function getOrder(uint256 orderId) view returns (address owner, address tokenIn, uint256 amountIn, uint64 expiry, bool executed, bool cancelled, bytes encrypted)",
+]);
+
+export const ERC20_ABI = parseAbi([
+ "function approve(address spender, uint256 amount) returns (bool)",
+ "function decimals() view returns (uint8)",
+]);
+
+export const coston2 = {
+ id: 114,
+ name: "Coston2",
+ nativeCurrency: { name: "Coston2 Flare", symbol: "C2FLR", decimals: 18 },
+ rpcUrls: { default: { http: ["https://coston2-api.flare.network/ext/C/rpc"] } },
+ blockExplorers: { default: { name: "Explorer", url: "https://coston2.testnet.flarescan.com" } },
+} as const;
+
+export type Direction = "below" | "above";
+export type ActionKind = "swap" | "redeem";
+
+/** The plaintext of an order. This shape is only ever encrypted, never sent as-is. */
+export type Terms = {
+ contract: Address;
+ feedId: Hex;
+ direction: Direction;
+ thresholdE18: bigint;
+ action: ActionKind;
+ minOutOrLots: bigint;
+ tokenOut: Address;
+ underlyingAddress: string;
+ expiry: bigint;
+};
+
+const TERMS_LAYOUT = [
+ { name: "contract", type: "address" },
+ { name: "feedId", type: "bytes21" },
+ { name: "direction", type: "string" },
+ { name: "thresholdE18", type: "uint256" },
+ { name: "action", type: "uint8" },
+ { name: "minOutOrLots", type: "uint256" },
+ { name: "tokenOut", type: "address" },
+ { name: "underlyingAddress", type: "string" },
+ { name: "expiry", type: "uint64" },
+] as const;
+
+/**
+ * ABI-encode terms and encrypt them to the enclave's public key.
+ *
+ * This is the only moment the condition exists in the clear anywhere outside the
+ * TEE, and it happens in the user's own browser. What reaches the chain is
+ * ciphertext.
+ */
+export function sealTerms(terms: Terms, teePublicKey: string): Hex {
+ const encoded = encodeAbiParameters(TERMS_LAYOUT, [
+ terms.contract,
+ terms.feedId,
+ terms.direction,
+ terms.thresholdE18,
+ terms.action === "swap" ? 0 : 1,
+ terms.minOutOrLots,
+ terms.tokenOut,
+ terms.underlyingAddress,
+ terms.expiry,
+ ]);
+
+ const key = teePublicKey.startsWith("0x") ? teePublicKey.slice(2) : teePublicKey;
+ const ciphertext = encrypt(Buffer.from(key, "hex"), Buffer.from(encoded.slice(2), "hex"));
+
+ return `0x${Buffer.from(ciphertext).toString("hex")}`;
+}
+
+/** Render ciphertext as grouped hex, truncated — it is meant to be looked at, not read. */
+export function formatCipher(bytes: Hex, groups = 24): string {
+ const hex = bytes.slice(2);
+ const pairs = hex.match(/.{1,2}/g) ?? [];
+ const shown = pairs.slice(0, groups).join(" ");
+ return pairs.length > groups ? `${shown} … +${pairs.length - groups} bytes` : shown;
+}
+
+export function priceToE18(input: string): bigint {
+ const [whole, frac = ""] = input.trim().split(".");
+ const padded = (frac + "0".repeat(18)).slice(0, 18);
+ return BigInt(whole || "0") * 10n ** 18n + BigInt(padded || "0");
+}
diff --git a/frontend/next-env.d.ts b/frontend/next-env.d.ts
new file mode 100644
index 0000000..830fb59
--- /dev/null
+++ b/frontend/next-env.d.ts
@@ -0,0 +1,6 @@
+///
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/frontend/next.config.mjs b/frontend/next.config.mjs
new file mode 100644
index 0000000..d5456a1
--- /dev/null
+++ b/frontend/next.config.mjs
@@ -0,0 +1,6 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ reactStrictMode: true,
+};
+
+export default nextConfig;
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
new file mode 100644
index 0000000..da8c3c7
--- /dev/null
+++ b/frontend/package-lock.json
@@ -0,0 +1,1231 @@
+{
+ "name": "wraith-frontend",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "wraith-frontend",
+ "version": "0.0.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "eciesjs": "^0.4.7",
+ "next": "^15.1.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "viem": "^2.21.0"
+ },
+ "devDependencies": {
+ "@types/node": "^22.10.0",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
+ "typescript": "^5.7.0"
+ }
+ },
+ "node_modules/@adraffy/ens-normalize": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz",
+ "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==",
+ "license": "MIT"
+ },
+ "node_modules/@ecies/ciphers": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.6.tgz",
+ "integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==",
+ "license": "MIT",
+ "engines": {
+ "bun": ">=1",
+ "deno": ">=2.7.10",
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "@noble/ciphers": "^1.0.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
+ "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@img/colour": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
+ "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
+ "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
+ "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
+ "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
+ "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
+ "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
+ "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
+ "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-riscv64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
+ "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
+ "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
+ "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
+ "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
+ "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
+ "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
+ "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-ppc64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
+ "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-ppc64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-riscv64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
+ "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-riscv64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
+ "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
+ "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
+ "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
+ "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
+ "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.7.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
+ "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
+ "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
+ "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.23.tgz",
+ "integrity": "sha512-Mv3Z9hVbFcPnoLevsZ6rnX1TBtyHb5E17yN7HTPDXSXxeNsGBjUFrdbjRXKKXIOhfth7/cg6Ay7PZ2UFawaWsQ==",
+ "license": "MIT"
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.23.tgz",
+ "integrity": "sha512-SrEwOROH/rhA03F59hHtdhgtfZMWGzr5duDBWgRQt2rS3mJhqMKOcnNx6txOd0/i3E3D3uFKYFvyHsEiwQxzag==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.23.tgz",
+ "integrity": "sha512-f0FpFbG2EhDCuptBGcfrLcYMDuQAhe6m1QA4VVfXFrIBoFXvXt/olGbBkYkloKlXQtmhuzvtdYyuu/6zf07GIg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.23.tgz",
+ "integrity": "sha512-WlNtfepUXKX2u2ZsJZ8c3c8+tJSRZqsYzoMwLOY72A8ucKCCgxgNhiePA3qzFYahVWrwcQd8jOeJmBinc+VFVQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.23.tgz",
+ "integrity": "sha512-W/6qKk7UG93mg14PmQC+2urt69MIdwTBLNQ6MJyeC4wOCIHCjz+VfgssvS1pK7mgYBtLC1g6VKNoHD9xB0WWGg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.23.tgz",
+ "integrity": "sha512-vzefI32mi6VMk96RaTAyxApgfGbiFzQBXVsekEjsDv1fr48mlABTWx0sUYhaYCBHWqCalxmz3DxbxFcbFvzNtw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.23.tgz",
+ "integrity": "sha512-qppK/3dTGOTI+aoWWBZc3DshFIhrzgL8guATlaN9V6M1QJxbkP/rhEZ22tdICsQ/2WWXopMZ2Jokzj2u3uKY3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.23.tgz",
+ "integrity": "sha512-Wc29KFOdT7XBcII3Vtmw7aoU8Uk3Mes/FNJfhFeSHdYBFJWMcR/DsI8U9BCPUhq/uycsUVuqSKGthW15tLsigA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.23.tgz",
+ "integrity": "sha512-/C7wRW4fa9s/PKA18zGPPpVmx8ycgVpP8yOxro4gzGTzjPJdscbAP3ODeFvgiIovxD176Z2J/SXO9t8PJKHLeQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@noble/ciphers": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
+ "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/curves": {
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz",
+ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/base": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
+ "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip32": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz",
+ "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "~1.9.0",
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip39": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz",
+ "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.15",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
+ "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.8.0"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "22.20.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.1.tgz",
+ "integrity": "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/react": {
+ "version": "19.2.18",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz",
+ "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.2.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.4.tgz",
+ "integrity": "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
+ "node_modules/abitype": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz",
+ "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/wevm"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.0.4",
+ "zod": "^3.22.0 || ^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ },
+ "zod": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001809",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz",
+ "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
+ "license": "MIT"
+ },
+ "node_modules/csstype": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eciesjs": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.18.tgz",
+ "integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@ecies/ciphers": "^0.2.5",
+ "@noble/ciphers": "^1.3.0",
+ "@noble/curves": "^1.9.7",
+ "@noble/hashes": "^1.8.0"
+ },
+ "engines": {
+ "bun": ">=1",
+ "deno": ">=2",
+ "node": ">=16"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "license": "MIT"
+ },
+ "node_modules/isows": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz",
+ "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
+ "peerDependencies": {
+ "ws": "*"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.18",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
+ "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/next": {
+ "version": "15.5.23",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.5.23.tgz",
+ "integrity": "sha512-Gvd2WKgvxIXCGotxcI1im/Uf3rS3J3oZGw0g/uskg6AVBZhyE3aAbujkYWzS3xLmEPEtTLfkaVQUKK0KMTSIkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "15.5.23",
+ "@swc/helpers": "0.5.15",
+ "caniuse-lite": "^1.0.30001579",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.6"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "15.5.23",
+ "@next/swc-darwin-x64": "15.5.23",
+ "@next/swc-linux-arm64-gnu": "15.5.23",
+ "@next/swc-linux-arm64-musl": "15.5.23",
+ "@next/swc-linux-x64-gnu": "15.5.23",
+ "@next/swc-linux-x64-musl": "15.5.23",
+ "@next/swc-win32-arm64-msvc": "15.5.23",
+ "@next/swc-win32-x64-msvc": "15.5.23",
+ "sharp": "^0.34.3"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.51.1",
+ "babel-plugin-react-compiler": "*",
+ "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ox": {
+ "version": "0.14.33",
+ "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.33.tgz",
+ "integrity": "sha512-rooA/4o7bBof4Ge2VH/eovfNPb/AEEYyrNj03wggc55g5HZD8Pjs/OeWhttgjic3dDcqn0r29bDuvQEdTiUemQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@adraffy/ens-normalize": "^1.11.0",
+ "@noble/ciphers": "^1.3.0",
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "^1.8.0",
+ "@scure/bip32": "^1.7.0",
+ "@scure/bip39": "^1.6.0",
+ "abitype": "^1.2.3",
+ "eventemitter3": "5.0.1"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ox/node_modules/@noble/curves": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.2.8",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
+ "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.8",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz",
+ "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.8"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "license": "ISC",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sharp": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
+ "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@img/colour": "^1.0.0",
+ "detect-libc": "^2.1.2",
+ "semver": "^7.7.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.34.5",
+ "@img/sharp-darwin-x64": "0.34.5",
+ "@img/sharp-libvips-darwin-arm64": "1.2.4",
+ "@img/sharp-libvips-darwin-x64": "1.2.4",
+ "@img/sharp-libvips-linux-arm": "1.2.4",
+ "@img/sharp-libvips-linux-arm64": "1.2.4",
+ "@img/sharp-libvips-linux-ppc64": "1.2.4",
+ "@img/sharp-libvips-linux-riscv64": "1.2.4",
+ "@img/sharp-libvips-linux-s390x": "1.2.4",
+ "@img/sharp-libvips-linux-x64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
+ "@img/sharp-linux-arm": "0.34.5",
+ "@img/sharp-linux-arm64": "0.34.5",
+ "@img/sharp-linux-ppc64": "0.34.5",
+ "@img/sharp-linux-riscv64": "0.34.5",
+ "@img/sharp-linux-s390x": "0.34.5",
+ "@img/sharp-linux-x64": "0.34.5",
+ "@img/sharp-linuxmusl-arm64": "0.34.5",
+ "@img/sharp-linuxmusl-x64": "0.34.5",
+ "@img/sharp-wasm32": "0.34.5",
+ "@img/sharp-win32-arm64": "0.34.5",
+ "@img/sharp-win32-ia32": "0.34.5",
+ "@img/sharp-win32-x64": "0.34.5"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
+ "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
+ "license": "MIT",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/viem": {
+ "version": "2.55.13",
+ "resolved": "https://registry.npmjs.org/viem/-/viem-2.55.13.tgz",
+ "integrity": "sha512-Rt1NAsdtTdvJgqaCxsv2TuO55xv2d2dKEuRuzrg34xMGxvTSFOX0iIFvEfymPvh+fwN2tbgEU2JwN0YHOVM+Bg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "1.8.0",
+ "@scure/bip32": "1.7.0",
+ "@scure/bip39": "1.6.0",
+ "abitype": "1.2.3",
+ "isows": "1.0.7",
+ "ox": "0.14.33",
+ "ws": "8.21.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.0.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/viem/node_modules/@noble/curves": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz",
+ "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ }
+ }
+}
diff --git a/frontend/package.json b/frontend/package.json
new file mode 100644
index 0000000..a622bb8
--- /dev/null
+++ b/frontend/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "wraith-frontend",
+ "version": "0.0.0",
+ "private": true,
+ "license": "Apache-2.0",
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "eciesjs": "^0.4.7",
+ "next": "^15.1.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "viem": "^2.21.0"
+ },
+ "devDependencies": {
+ "@types/node": "^22.10.0",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
+ "typescript": "^5.7.0"
+ }
+}
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
new file mode 100644
index 0000000..afedc74
--- /dev/null
+++ b/frontend/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [{ "name": "next" }],
+ "paths": { "@/*": ["./*"] }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/frontend/tsconfig.tsbuildinfo b/frontend/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..eb681fb
--- /dev/null
+++ b/frontend/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/web-globals/streams.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/@types/react/compiler-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/static.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/root-params.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./app/api/info/route.ts","./node_modules/eciesjs/dist/config.d.ts","./node_modules/eciesjs/dist/keys/PublicKey.d.ts","./node_modules/eciesjs/dist/keys/PrivateKey.d.ts","./node_modules/eciesjs/dist/keys/index.d.ts","./node_modules/eciesjs/dist/index.d.ts","./node_modules/abitype/dist/types/register.d.ts","./node_modules/abitype/dist/types/types.d.ts","./node_modules/abitype/dist/types/abi.d.ts","./node_modules/abitype/dist/types/errors.d.ts","./node_modules/abitype/dist/types/narrow.d.ts","./node_modules/abitype/dist/types/generated.d.ts","./node_modules/abitype/dist/types/utils.d.ts","./node_modules/abitype/dist/types/human-readable/types/signatures.d.ts","./node_modules/abitype/dist/types/human-readable/formatAbiParameter.d.ts","./node_modules/abitype/dist/types/human-readable/formatAbiParameters.d.ts","./node_modules/abitype/dist/types/human-readable/formatAbiItem.d.ts","./node_modules/abitype/dist/types/human-readable/formatAbi.d.ts","./node_modules/abitype/dist/types/human-readable/types/utils.d.ts","./node_modules/abitype/dist/types/human-readable/types/structs.d.ts","./node_modules/abitype/dist/types/human-readable/parseAbi.d.ts","./node_modules/abitype/dist/types/human-readable/parseAbiItem.d.ts","./node_modules/abitype/dist/types/human-readable/parseAbiParameter.d.ts","./node_modules/abitype/dist/types/human-readable/parseAbiParameters.d.ts","./node_modules/abitype/dist/types/human-readable/errors/abiItem.d.ts","./node_modules/abitype/dist/types/human-readable/errors/abiParameter.d.ts","./node_modules/abitype/dist/types/human-readable/errors/signature.d.ts","./node_modules/abitype/dist/types/human-readable/errors/splitParameters.d.ts","./node_modules/abitype/dist/types/human-readable/errors/struct.d.ts","./node_modules/abitype/dist/types/exports/index.d.ts","./node_modules/ox/_types/core/Errors.d.ts","./node_modules/ox/_types/core/internal/bytes.d.ts","./node_modules/ox/_types/core/internal/hex.d.ts","./node_modules/ox/_types/core/Hex.d.ts","./node_modules/ox/_types/core/Bytes.d.ts","./node_modules/ox/_types/core/Hash.d.ts","./node_modules/ox/_types/core/internal/types.d.ts","./node_modules/ox/_types/core/PublicKey.d.ts","./node_modules/ox/_types/core/Address.d.ts","./node_modules/ox/_types/core/Withdrawal.d.ts","./node_modules/ox/_types/core/BlockOverrides.d.ts","./node_modules/ox/_types/core/Base64.d.ts","./node_modules/ox/_types/core/Signature.d.ts","./node_modules/@noble/hashes/esm/utils.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/utils.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/modular.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/curve.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/weierstrass.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/_shortw_utils.d.ts","./node_modules/ox/_types/core/P256.d.ts","./node_modules/ox/_types/webauthn/Types.d.ts","./node_modules/ox/_types/webauthn/Credential.d.ts","./node_modules/ox/_types/webauthn/Authentication.d.ts","./node_modules/ox/_types/core/internal/cursor.d.ts","./node_modules/ox/_types/core/Cbor.d.ts","./node_modules/ox/_types/webauthn/Authenticator.d.ts","./node_modules/ox/_types/core/CoseKey.d.ts","./node_modules/ox/_types/core/internal/webauthn.d.ts","./node_modules/ox/_types/webauthn/Registration.d.ts","./node_modules/ox/_types/core/WebAuthnP256.d.ts","./node_modules/viem/_types/types/utils.d.ts","./node_modules/@scure/bip32/lib/esm/index.d.ts","./node_modules/viem/_types/types/account.d.ts","./node_modules/viem/_types/types/misc.d.ts","./node_modules/viem/_types/types/authorization.d.ts","./node_modules/viem/_types/types/eip4844.d.ts","./node_modules/viem/_types/types/fee.d.ts","./node_modules/viem/_types/types/kzg.d.ts","./node_modules/viem/_types/types/contract.d.ts","./node_modules/viem/_types/types/log.d.ts","./node_modules/viem/_types/types/transaction.d.ts","./node_modules/viem/_types/types/typedData.d.ts","./node_modules/viem/_types/errors/utils.d.ts","./node_modules/viem/_types/accounts/utils/parseAccount.d.ts","./node_modules/viem/_types/tokens/defineToken.d.ts","./node_modules/viem/_types/types/withdrawal.d.ts","./node_modules/viem/_types/types/block.d.ts","./node_modules/ox/_types/core/AbiItem.d.ts","./node_modules/ox/_types/core/internal/abiParameters.d.ts","./node_modules/ox/_types/core/AbiParameters.d.ts","./node_modules/ox/_types/core/internal/abiItem.d.ts","./node_modules/ox/_types/core/Abi.d.ts","./node_modules/ox/_types/core/internal/abiConstructor.d.ts","./node_modules/ox/_types/core/AbiConstructor.d.ts","./node_modules/ox/_types/core/internal/abiError.d.ts","./node_modules/ox/_types/core/AbiError.d.ts","./node_modules/ox/_types/core/AccessList.d.ts","./node_modules/ox/_types/core/Rlp.d.ts","./node_modules/ox/_types/core/Authorization.d.ts","./node_modules/ox/_types/core/Transaction.d.ts","./node_modules/ox/_types/core/Block.d.ts","./node_modules/ox/_types/core/Filter.d.ts","./node_modules/ox/_types/core/internal/abiEvent.d.ts","./node_modules/ox/_types/core/AbiEvent.d.ts","./node_modules/ox/_types/core/internal/abiFunction.d.ts","./node_modules/ox/_types/core/AbiFunction.d.ts","./node_modules/ox/_types/core/AccountProof.d.ts","./node_modules/ox/_types/core/AesGcm.d.ts","./node_modules/ox/_types/core/Base32.d.ts","./node_modules/ox/_types/core/internal/base58.d.ts","./node_modules/ox/_types/core/Base58.d.ts","./node_modules/ox/_types/core/Bech32m.d.ts","./node_modules/ox/_types/core/BinaryStateTree.d.ts","./node_modules/ox/_types/core/Kzg.d.ts","./node_modules/ox/_types/core/Blobs.d.ts","./node_modules/ox/_types/core/Bloom.d.ts","./node_modules/ox/_types/core/BlsPoint.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/hash-to-curve.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/tower.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/bls.d.ts","./node_modules/ox/_types/core/Bls.d.ts","./node_modules/ox/_types/core/internal/lru.d.ts","./node_modules/ox/_types/core/Caches.d.ts","./node_modules/ox/_types/core/CompactSize.d.ts","./node_modules/ox/_types/core/ContractAddress.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/edwards.d.ts","./node_modules/ox/_types/core/Ed25519.d.ts","./node_modules/ox/_types/core/internal/ens.d.ts","./node_modules/ox/_types/core/Ens.d.ts","./node_modules/ox/_types/core/Fee.d.ts","./node_modules/ox/_types/core/internal/hdKey.d.ts","./node_modules/ox/_types/core/HdKey.d.ts","./node_modules/ox/_types/core/Log.d.ts","./node_modules/ox/_types/core/StateOverrides.d.ts","./node_modules/ox/_types/core/TransactionReceipt.d.ts","./node_modules/ox/_types/core/TransactionRequest.d.ts","./node_modules/ox/_types/core/internal/rpcSchemas/eth.d.ts","./node_modules/ox/_types/core/internal/rpcSchemas/wallet.d.ts","./node_modules/ox/_types/core/RpcSchema.d.ts","./node_modules/ox/_types/core/internal/register.d.ts","./node_modules/ox/_types/core/Json.d.ts","./node_modules/ox/_types/core/Keystore.d.ts","./node_modules/@scure/bip39/esm/wordlists/czech.d.ts","./node_modules/@scure/bip39/esm/wordlists/english.d.ts","./node_modules/@scure/bip39/esm/wordlists/french.d.ts","./node_modules/@scure/bip39/esm/wordlists/italian.d.ts","./node_modules/@scure/bip39/esm/wordlists/japanese.d.ts","./node_modules/@scure/bip39/esm/wordlists/korean.d.ts","./node_modules/@scure/bip39/esm/wordlists/portuguese.d.ts","./node_modules/@scure/bip39/esm/wordlists/simplified-chinese.d.ts","./node_modules/@scure/bip39/esm/wordlists/spanish.d.ts","./node_modules/@scure/bip39/esm/wordlists/traditional-chinese.d.ts","./node_modules/ox/_types/core/internal/mnemonic/wordlists.d.ts","./node_modules/ox/_types/core/Mnemonic.d.ts","./node_modules/ox/_types/core/PersonalMessage.d.ts","./node_modules/eventemitter3/index.d.ts","./node_modules/ox/_types/core/internal/rpcSchema.d.ts","./node_modules/ox/_types/core/Provider.d.ts","./node_modules/ox/_types/core/RpcRequest.d.ts","./node_modules/ox/_types/core/internal/promise.d.ts","./node_modules/ox/_types/core/internal/rpcTransport.d.ts","./node_modules/ox/_types/core/RpcTransport.d.ts","./node_modules/ox/_types/core/Secp256k1.d.ts","./node_modules/ox/_types/core/Siwe.d.ts","./node_modules/ox/_types/core/Solidity.d.ts","./node_modules/ox/_types/core/TxEnvelope.d.ts","./node_modules/ox/_types/core/TxEnvelopeEip1559.d.ts","./node_modules/ox/_types/core/TxEnvelopeEip2930.d.ts","./node_modules/ox/_types/core/TxEnvelopeEip4844.d.ts","./node_modules/ox/_types/core/TxEnvelopeEip7702.d.ts","./node_modules/ox/_types/core/TxEnvelopeLegacy.d.ts","./node_modules/ox/_types/core/TypedData.d.ts","./node_modules/ox/_types/core/ValidatorData.d.ts","./node_modules/ox/_types/core/Value.d.ts","./node_modules/ox/_types/core/WebCryptoP256.d.ts","./node_modules/ox/node_modules/@noble/curves/esm/abstract/montgomery.d.ts","./node_modules/ox/_types/core/X25519.d.ts","./node_modules/ox/_types/index.d.ts","./node_modules/ox/_types/core/RpcResponse.d.ts","./node_modules/viem/_types/types/proof.d.ts","./node_modules/viem/_types/types/rpc.d.ts","./node_modules/viem/_types/account-abstraction/types/userOperation.d.ts","./node_modules/viem/_types/account-abstraction/types/rpc.d.ts","./node_modules/viem/_types/errors/base.d.ts","./node_modules/viem/_types/errors/request.d.ts","./node_modules/viem/_types/errors/rpc.d.ts","./node_modules/viem/_types/utils/promise/createBatchScheduler.d.ts","./node_modules/viem/_types/utils/promise/withRetry.d.ts","./node_modules/viem/_types/utils/rpc/socket.d.ts","./node_modules/viem/_types/utils/buildRequest.d.ts","./node_modules/viem/_types/experimental/erc7895/actions/addSubAccount.d.ts","./node_modules/viem/_types/utils/siwe/types.d.ts","./node_modules/viem/_types/types/register.d.ts","./node_modules/viem/_types/types/capabilities.d.ts","./node_modules/viem/_types/types/eip1193.d.ts","./node_modules/viem/_types/clients/transports/createTransport.d.ts","./node_modules/viem/_types/errors/fee.d.ts","./node_modules/viem/_types/types/stateOverride.d.ts","./node_modules/viem/_types/utils/signature/recoverAddress.d.ts","./node_modules/viem/_types/utils/data/concat.d.ts","./node_modules/viem/_types/utils/data/isHex.d.ts","./node_modules/viem/_types/errors/data.d.ts","./node_modules/viem/_types/utils/data/pad.d.ts","./node_modules/viem/_types/errors/encoding.d.ts","./node_modules/viem/_types/utils/data/size.d.ts","./node_modules/viem/_types/utils/data/trim.d.ts","./node_modules/viem/_types/utils/encoding/fromHex.d.ts","./node_modules/viem/_types/utils/encoding/toHex.d.ts","./node_modules/viem/_types/utils/encoding/toBytes.d.ts","./node_modules/viem/_types/errors/cursor.d.ts","./node_modules/viem/_types/utils/cursor.d.ts","./node_modules/viem/_types/utils/encoding/toRlp.d.ts","./node_modules/viem/_types/utils/hash/keccak256.d.ts","./node_modules/viem/_types/utils/authorization/hashAuthorization.d.ts","./node_modules/viem/_types/utils/authorization/recoverAuthorizationAddress.d.ts","./node_modules/viem/_types/errors/estimateGas.d.ts","./node_modules/viem/_types/errors/transaction.d.ts","./node_modules/viem/_types/utils/transaction/getTransactionType.d.ts","./node_modules/viem/_types/utils/authorization/serializeAuthorizationList.d.ts","./node_modules/viem/_types/utils/blob/blobsToCommitments.d.ts","./node_modules/viem/_types/utils/blob/blobsToProofs.d.ts","./node_modules/viem/_types/utils/hash/sha256.d.ts","./node_modules/viem/_types/utils/blob/commitmentToVersionedHash.d.ts","./node_modules/viem/_types/utils/blob/commitmentsToVersionedHashes.d.ts","./node_modules/viem/_types/errors/blob.d.ts","./node_modules/viem/_types/utils/blob/toBlobs.d.ts","./node_modules/viem/_types/utils/blob/toBlobSidecars.d.ts","./node_modules/viem/_types/errors/address.d.ts","./node_modules/viem/_types/errors/chain.d.ts","./node_modules/viem/_types/errors/node.d.ts","./node_modules/viem/_types/utils/lru.d.ts","./node_modules/viem/_types/utils/address/isAddress.d.ts","./node_modules/viem/_types/utils/transaction/assertTransaction.d.ts","./node_modules/viem/_types/utils/transaction/serializeAccessList.d.ts","./node_modules/viem/_types/utils/transaction/serializeTransaction.d.ts","./node_modules/viem/_types/accounts/utils/sign.d.ts","./node_modules/viem/_types/accounts/utils/signTransaction.d.ts","./node_modules/viem/_types/errors/account.d.ts","./node_modules/viem/_types/utils/chain/assertCurrentChain.d.ts","./node_modules/viem/_types/utils/errors/getTransactionError.d.ts","./node_modules/viem/_types/utils/formatters/formatter.d.ts","./node_modules/viem/_types/utils/formatters/transactionRequest.d.ts","./node_modules/viem/_types/utils/transaction/assertRequest.d.ts","./node_modules/viem/_types/actions/public/getChainId.d.ts","./node_modules/viem/_types/actions/wallet/sendRawTransaction.d.ts","./node_modules/viem/_types/actions/wallet/sendTransaction.d.ts","./node_modules/viem/_types/utils/errors/getNodeError.d.ts","./node_modules/viem/_types/utils/errors/getEstimateGasError.d.ts","./node_modules/viem/_types/actions/public/estimateGas.d.ts","./node_modules/viem/_types/errors/block.d.ts","./node_modules/viem/_types/utils/formatters/transaction.d.ts","./node_modules/viem/_types/utils/formatters/block.d.ts","./node_modules/viem/_types/actions/public/getBlock.d.ts","./node_modules/viem/_types/utils/block/formatBlockParameter.d.ts","./node_modules/viem/_types/actions/public/getTransactionCount.d.ts","./node_modules/viem/_types/actions/wallet/prepareTransactionRequest.d.ts","./node_modules/viem/_types/actions/public/getGasPrice.d.ts","./node_modules/viem/_types/actions/public/estimateMaxPriorityFeePerGas.d.ts","./node_modules/viem/_types/actions/public/estimateFeesPerGas.d.ts","./node_modules/viem/_types/errors/abi.d.ts","./node_modules/viem/_types/utils/data/slice.d.ts","./node_modules/viem/_types/utils/abi/encodeAbiParameters.d.ts","./node_modules/viem/_types/utils/abi/encodeDeployData.d.ts","./node_modules/viem/_types/utils/hash/hashSignature.d.ts","./node_modules/viem/_types/utils/hash/normalizeSignature.d.ts","./node_modules/viem/_types/utils/hash/toSignature.d.ts","./node_modules/viem/_types/utils/hash/toSignatureHash.d.ts","./node_modules/viem/_types/utils/hash/toFunctionSelector.d.ts","./node_modules/viem/_types/utils/abi/formatAbiItem.d.ts","./node_modules/viem/_types/utils/abi/getAbiItem.d.ts","./node_modules/viem/_types/utils/abi/encodeFunctionData.d.ts","./node_modules/viem/_types/utils/address/getAddress.d.ts","./node_modules/viem/_types/utils/address/isAddressEqual.d.ts","./node_modules/viem/_types/utils/signature/serializeSignature.d.ts","./node_modules/viem/_types/utils/encoding/fromBytes.d.ts","./node_modules/viem/_types/utils/abi/decodeAbiParameters.d.ts","./node_modules/viem/_types/utils/abi/decodeErrorResult.d.ts","./node_modules/viem/_types/errors/contract.d.ts","./node_modules/viem/_types/utils/abi/decodeFunctionResult.d.ts","./node_modules/viem/_types/utils/chain/getChainContractAddress.d.ts","./node_modules/viem/_types/utils/errors/getCallError.d.ts","./node_modules/viem/_types/errors/stateOverride.d.ts","./node_modules/viem/_types/utils/stateOverride.d.ts","./node_modules/viem/_types/actions/public/call.d.ts","./node_modules/viem/_types/actions/public/getCode.d.ts","./node_modules/viem/_types/utils/errors/getContractError.d.ts","./node_modules/viem/_types/actions/public/readContract.d.ts","./node_modules/viem/_types/actions/public/verifyHash.d.ts","./node_modules/viem/_types/types/chain.d.ts","./node_modules/viem/_types/types/dataSuffix.d.ts","./node_modules/viem/_types/errors/ccip.d.ts","./node_modules/viem/_types/utils/ccip.d.ts","./node_modules/viem/_types/utils/ens/encodedLabelToLabelhash.d.ts","./node_modules/viem/_types/utils/ens/namehash.d.ts","./node_modules/viem/_types/utils/ens/encodeLabelhash.d.ts","./node_modules/viem/_types/utils/ens/labelhash.d.ts","./node_modules/viem/_types/utils/ens/packetToBytes.d.ts","./node_modules/viem/_types/actions/ens/getEnsAddress.d.ts","./node_modules/viem/_types/types/ens.d.ts","./node_modules/viem/_types/errors/ens.d.ts","./node_modules/viem/_types/utils/ens/avatar/utils.d.ts","./node_modules/viem/_types/utils/ens/avatar/parseAvatarRecord.d.ts","./node_modules/viem/_types/actions/ens/getEnsText.d.ts","./node_modules/viem/_types/actions/ens/getEnsAvatar.d.ts","./node_modules/viem/_types/actions/ens/getEnsName.d.ts","./node_modules/viem/_types/actions/ens/getEnsResolver.d.ts","./node_modules/viem/_types/actions/public/createAccessList.d.ts","./node_modules/viem/_types/types/filter.d.ts","./node_modules/viem/_types/actions/public/createBlockFilter.d.ts","./node_modules/viem/_types/errors/log.d.ts","./node_modules/viem/_types/utils/hash/toEventSelector.d.ts","./node_modules/viem/_types/utils/abi/encodeEventTopics.d.ts","./node_modules/viem/_types/actions/public/createContractEventFilter.d.ts","./node_modules/viem/_types/actions/public/createEventFilter.d.ts","./node_modules/viem/_types/actions/public/createPendingTransactionFilter.d.ts","./node_modules/viem/_types/actions/public/estimateContractGas.d.ts","./node_modules/viem/_types/actions/public/fillTransaction.d.ts","./node_modules/viem/_types/actions/public/getBalance.d.ts","./node_modules/viem/_types/actions/public/getBlobBaseFee.d.ts","./node_modules/viem/_types/utils/promise/withCache.d.ts","./node_modules/viem/_types/actions/public/getBlockNumber.d.ts","./node_modules/viem/_types/utils/formatters/transactionReceipt.d.ts","./node_modules/viem/_types/actions/public/getBlockReceipts.d.ts","./node_modules/viem/_types/actions/public/getBlockTransactionCount.d.ts","./node_modules/viem/_types/utils/abi/decodeEventLog.d.ts","./node_modules/viem/_types/utils/formatters/log.d.ts","./node_modules/viem/_types/actions/public/getLogs.d.ts","./node_modules/viem/_types/actions/public/getContractEvents.d.ts","./node_modules/viem/_types/actions/public/getDelegation.d.ts","./node_modules/viem/_types/errors/eip712.d.ts","./node_modules/viem/_types/actions/public/getEip712Domain.d.ts","./node_modules/viem/_types/utils/formatters/feeHistory.d.ts","./node_modules/viem/_types/actions/public/getFeeHistory.d.ts","./node_modules/viem/_types/actions/public/getFilterChanges.d.ts","./node_modules/viem/_types/actions/public/getFilterLogs.d.ts","./node_modules/viem/_types/utils/formatters/proof.d.ts","./node_modules/viem/_types/actions/public/getProof.d.ts","./node_modules/viem/_types/actions/public/getRawTransaction.d.ts","./node_modules/viem/_types/actions/public/getStorageAt.d.ts","./node_modules/viem/_types/accounts/generateMnemonic.d.ts","./node_modules/viem/_types/accounts/generatePrivateKey.d.ts","./node_modules/viem/_types/accounts/toAccount.d.ts","./node_modules/viem/_types/accounts/utils/publicKeyToAddress.d.ts","./node_modules/viem/_types/utils/signature/hashMessage.d.ts","./node_modules/viem/_types/accounts/utils/signMessage.d.ts","./node_modules/viem/_types/utils/typedData.d.ts","./node_modules/viem/_types/utils/signature/hashTypedData.d.ts","./node_modules/viem/_types/accounts/utils/signTypedData.d.ts","./node_modules/viem/_types/accounts/privateKeyToAccount.d.ts","./node_modules/viem/_types/accounts/hdKeyToAccount.d.ts","./node_modules/viem/_types/accounts/mnemonicToAccount.d.ts","./node_modules/viem/_types/accounts/utils/privateKeyToAddress.d.ts","./node_modules/viem/_types/accounts/utils/signAuthorization.d.ts","./node_modules/viem/_types/accounts/wordlists.d.ts","./node_modules/viem/_types/accounts/index.d.ts","./node_modules/viem/_types/actions/public/getTransaction.d.ts","./node_modules/viem/_types/actions/public/getTransactionConfirmations.d.ts","./node_modules/viem/_types/actions/public/getTransactionReceipt.d.ts","./node_modules/viem/_types/types/multicall.d.ts","./node_modules/viem/_types/actions/public/multicall.d.ts","./node_modules/viem/_types/types/calls.d.ts","./node_modules/viem/_types/actions/public/simulateBlocks.d.ts","./node_modules/viem/_types/actions/public/simulateCalls.d.ts","./node_modules/viem/_types/utils/observe.d.ts","./node_modules/viem/_types/clients/transports/fallback.d.ts","./node_modules/viem/_types/types/transport.d.ts","./node_modules/viem/_types/utils/poll.d.ts","./node_modules/viem/_types/actions/public/watchBlockNumber.d.ts","./node_modules/viem/_types/actions/public/waitForTransactionReceipt.d.ts","./node_modules/viem/_types/utils/abi/decodeFunctionData.d.ts","./node_modules/viem/_types/utils/abi/encodeErrorResult.d.ts","./node_modules/viem/_types/utils/abi/encodeFunctionResult.d.ts","./node_modules/viem/_types/utils/abi/encodePacked.d.ts","./node_modules/viem/_types/utils/abi/formatAbiItemWithArgs.d.ts","./node_modules/viem/_types/utils/abi/parseEventLogs.d.ts","./node_modules/viem/_types/utils/data/isBytes.d.ts","./node_modules/viem/_types/utils/address/getContractAddress.d.ts","./node_modules/viem/_types/utils/authorization/verifyAuthorization.d.ts","./node_modules/viem/_types/utils/ccipTunnel.d.ts","./node_modules/viem/_types/utils/chain/defineChain.d.ts","./node_modules/viem/_types/utils/chain/extractChain.d.ts","./node_modules/viem/_types/utils/chain/filterChains.d.ts","./node_modules/viem/_types/utils/encoding/fromRlp.d.ts","./node_modules/viem/_types/utils/formatters/extract.d.ts","./node_modules/viem/_types/constants/abis.d.ts","./node_modules/viem/_types/actions/wallet/writeContractSync.d.ts","./node_modules/viem/_types/actions/token/internal.d.ts","./node_modules/viem/_types/actions/token/approve.d.ts","./node_modules/viem/_types/actions/token/approveSync.d.ts","./node_modules/viem/_types/actions/token/getAllowance.d.ts","./node_modules/viem/_types/actions/token/getBalance.d.ts","./node_modules/viem/_types/actions/token/getMetadata.d.ts","./node_modules/viem/_types/actions/token/getTotalSupply.d.ts","./node_modules/viem/_types/actions/token/transfer.d.ts","./node_modules/viem/_types/actions/token/transferSync.d.ts","./node_modules/viem/_types/actions/token/index.d.ts","./node_modules/viem/_types/actions/wallet/addChain.d.ts","./node_modules/viem/_types/actions/wallet/deployContract.d.ts","./node_modules/viem/_types/actions/wallet/getAddresses.d.ts","./node_modules/viem/_types/actions/wallet/getCallsStatus.d.ts","./node_modules/viem/_types/actions/wallet/getCapabilities.d.ts","./node_modules/viem/_types/actions/wallet/getPermissions.d.ts","./node_modules/viem/_types/actions/wallet/prepareAuthorization.d.ts","./node_modules/viem/_types/actions/wallet/requestAddresses.d.ts","./node_modules/viem/_types/actions/wallet/requestPermissions.d.ts","./node_modules/viem/_types/actions/wallet/sendCalls.d.ts","./node_modules/viem/_types/actions/wallet/waitForCallsStatus.d.ts","./node_modules/viem/_types/actions/wallet/sendCallsSync.d.ts","./node_modules/viem/_types/actions/wallet/showCallsStatus.d.ts","./node_modules/viem/_types/actions/wallet/signAuthorization.d.ts","./node_modules/viem/_types/actions/wallet/signMessage.d.ts","./node_modules/viem/_types/actions/wallet/signTransaction.d.ts","./node_modules/viem/_types/utils/stringify.d.ts","./node_modules/viem/_types/actions/wallet/signTypedData.d.ts","./node_modules/viem/_types/actions/wallet/switchChain.d.ts","./node_modules/viem/_types/actions/wallet/watchAsset.d.ts","./node_modules/viem/_types/clients/decorators/wallet.d.ts","./node_modules/viem/_types/utils/getAction.d.ts","./node_modules/viem/_types/utils/hash/isHash.d.ts","./node_modules/viem/_types/utils/hash/ripemd160.d.ts","./node_modules/viem/_types/utils/hash/toEventHash.d.ts","./node_modules/viem/_types/utils/hash/toEventSignature.d.ts","./node_modules/viem/_types/utils/hash/toFunctionHash.d.ts","./node_modules/viem/_types/utils/hash/toFunctionSignature.d.ts","./node_modules/viem/_types/utils/regex.d.ts","./node_modules/viem/_types/utils/promise/withTimeout.d.ts","./node_modules/viem/_types/utils/rpc/http.d.ts","./node_modules/viem/_types/utils/rpc/compat.d.ts","./node_modules/viem/_types/utils/rpc/webSocket.d.ts","./node_modules/viem/_types/utils/signature/isErc6492Signature.d.ts","./node_modules/viem/_types/utils/signature/isErc8010Signature.d.ts","./node_modules/viem/_types/utils/signature/parseErc6492Signature.d.ts","./node_modules/viem/_types/utils/signature/parseErc8010Signature.d.ts","./node_modules/viem/_types/utils/signature/recoverMessageAddress.d.ts","./node_modules/viem/_types/utils/signature/recoverPublicKey.d.ts","./node_modules/viem/_types/utils/signature/recoverTypedDataAddress.d.ts","./node_modules/viem/_types/utils/signature/serializeErc6492Signature.d.ts","./node_modules/viem/_types/utils/signature/serializeErc8010Signature.d.ts","./node_modules/viem/_types/utils/signature/verifyHash.d.ts","./node_modules/viem/_types/utils/signature/verifyMessage.d.ts","./node_modules/viem/_types/utils/signature/verifyTypedData.d.ts","./node_modules/viem/_types/utils/transaction/getSerializedTransactionType.d.ts","./node_modules/viem/_types/utils/transaction/parseTransaction.d.ts","./node_modules/viem/_types/utils/unit/formatUnits.d.ts","./node_modules/viem/_types/utils/unit/formatEther.d.ts","./node_modules/viem/_types/utils/unit/formatGwei.d.ts","./node_modules/viem/_types/utils/unit/parseUnits.d.ts","./node_modules/viem/_types/utils/unit/parseEther.d.ts","./node_modules/viem/_types/utils/unit/parseGwei.d.ts","./node_modules/viem/_types/utils/index.d.ts","./node_modules/viem/_types/actions/wallet/sendRawTransactionSync.d.ts","./node_modules/viem/_types/actions/wallet/sendTransactionSync.d.ts","./node_modules/viem/_types/actions/wallet/writeContract.d.ts","./node_modules/viem/_types/actions/public/simulateContract.d.ts","./node_modules/viem/_types/actions/public/uninstallFilter.d.ts","./node_modules/viem/_types/actions/public/verifyMessage.d.ts","./node_modules/viem/_types/actions/public/verifyTypedData.d.ts","./node_modules/viem/_types/actions/public/watchBlocks.d.ts","./node_modules/viem/_types/actions/public/watchContractEvent.d.ts","./node_modules/viem/_types/actions/public/watchEvent.d.ts","./node_modules/viem/_types/actions/public/watchPendingTransactions.d.ts","./node_modules/viem/_types/utils/siwe/validateSiweMessage.d.ts","./node_modules/viem/_types/actions/siwe/verifySiweMessage.d.ts","./node_modules/viem/_types/clients/decorators/public.d.ts","./node_modules/viem/_types/clients/createClient.d.ts","./node_modules/viem/_types/utils/nonceManager.d.ts","./node_modules/viem/_types/accounts/types.d.ts","./node_modules/viem/_types/account-abstraction/accounts/types.d.ts","./node_modules/viem/_types/account-abstraction/types/entryPointVersion.d.ts","./node_modules/viem/_types/actions/getContract.d.ts","./node_modules/viem/_types/actions/test/dumpState.d.ts","./node_modules/viem/_types/actions/test/getAutomine.d.ts","./node_modules/viem/_types/actions/test/getTxpoolContent.d.ts","./node_modules/viem/_types/actions/test/getTxpoolStatus.d.ts","./node_modules/viem/_types/actions/test/impersonateAccount.d.ts","./node_modules/viem/_types/actions/test/increaseTime.d.ts","./node_modules/viem/_types/actions/test/inspectTxpool.d.ts","./node_modules/viem/_types/actions/test/loadState.d.ts","./node_modules/viem/_types/actions/test/mine.d.ts","./node_modules/viem/_types/actions/test/reset.d.ts","./node_modules/viem/_types/actions/test/revert.d.ts","./node_modules/viem/_types/actions/test/sendUnsignedTransaction.d.ts","./node_modules/viem/_types/actions/test/setBalance.d.ts","./node_modules/viem/_types/actions/test/setBlockGasLimit.d.ts","./node_modules/viem/_types/actions/test/setBlockTimestampInterval.d.ts","./node_modules/viem/_types/actions/test/setCode.d.ts","./node_modules/viem/_types/actions/test/setCoinbase.d.ts","./node_modules/viem/_types/actions/test/setIntervalMining.d.ts","./node_modules/viem/_types/actions/test/setMinGasPrice.d.ts","./node_modules/viem/_types/actions/test/setNextBlockBaseFeePerGas.d.ts","./node_modules/viem/_types/actions/test/setNextBlockTimestamp.d.ts","./node_modules/viem/_types/actions/test/setNonce.d.ts","./node_modules/viem/_types/actions/test/setStorageAt.d.ts","./node_modules/viem/_types/actions/test/stopImpersonatingAccount.d.ts","./node_modules/viem/_types/clients/decorators/test.d.ts","./node_modules/viem/_types/clients/createTestClient.d.ts","./node_modules/viem/_types/actions/test/dropTransaction.d.ts","./node_modules/viem/_types/actions/test/removeBlockTimestampInterval.d.ts","./node_modules/viem/_types/actions/test/setAutomine.d.ts","./node_modules/viem/_types/actions/test/setLoggingEnabled.d.ts","./node_modules/viem/_types/actions/test/setRpcUrl.d.ts","./node_modules/viem/_types/actions/test/snapshot.d.ts","./node_modules/viem/_types/clients/createPublicClient.d.ts","./node_modules/viem/_types/clients/createWalletClient.d.ts","./node_modules/viem/_types/clients/transports/custom.d.ts","./node_modules/viem/_types/errors/transport.d.ts","./node_modules/viem/_types/clients/transports/http.d.ts","./node_modules/viem/_types/clients/transports/webSocket.d.ts","./node_modules/viem/_types/constants/address.d.ts","./node_modules/viem/_types/constants/bytes.d.ts","./node_modules/viem/_types/constants/contracts.d.ts","./node_modules/viem/_types/constants/number.d.ts","./node_modules/viem/_types/constants/strings.d.ts","./node_modules/viem/_types/constants/unit.d.ts","./node_modules/viem/_types/errors/calls.d.ts","./node_modules/viem/_types/errors/typedData.d.ts","./node_modules/viem/_types/errors/unit.d.ts","./node_modules/viem/_types/utils/abi/decodeDeployData.d.ts","./node_modules/viem/_types/utils/abi/prepareEncodeFunctionData.d.ts","./node_modules/viem/_types/utils/blob/fromBlobs.d.ts","./node_modules/viem/_types/utils/blob/sidecarsToVersionedHashes.d.ts","./node_modules/viem/_types/utils/ens/toCoinType.d.ts","./node_modules/viem/_types/utils/kzg/defineKzg.d.ts","./node_modules/viem/_types/utils/kzg/setupKzg.d.ts","./node_modules/viem/_types/utils/signature/compactSignatureToSignature.d.ts","./node_modules/viem/_types/utils/signature/parseCompactSignature.d.ts","./node_modules/viem/_types/utils/signature/parseSignature.d.ts","./node_modules/viem/_types/utils/signature/recoverTransactionAddress.d.ts","./node_modules/viem/_types/utils/signature/serializeCompactSignature.d.ts","./node_modules/viem/_types/utils/signature/signatureToCompactSignature.d.ts","./node_modules/viem/_types/utils/signature/toPrefixedMessage.d.ts","./node_modules/viem/_types/index.d.ts","./lib/wraith.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/shared/lib/runtime-config.external.d.ts","./node_modules/next/config.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/dist/compiled/@next/font/dist/types.d.ts","./node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","./node_modules/next/font/google/index.d.ts","./app/layout.tsx","./app/page.tsx"],"fileIdsList":[[95,144,161,162,448],[95,144,161,162,1022,1025],[95,144,161,162,197,970,971],[95,144,161,162,454,970],[95,144,161,162],[95,141,142,144,161,162],[95,143,144,161,162],[144,161,162],[95,144,149,161,162,179],[95,144,145,150,155,161,162,164,176,187],[95,144,145,146,155,161,162,164],[90,91,92,95,144,161,162],[95,144,147,161,162,188],[95,144,148,149,156,161,162,165],[95,144,149,161,162,176,184],[95,144,150,152,155,161,162,164],[95,143,144,151,161,162],[95,144,152,153,161,162],[95,144,154,155,161,162],[95,143,144,155,161,162],[95,144,155,156,157,161,162,176,187],[95,144,155,156,157,161,162,171,176,179],[95,136,144,152,155,158,161,162,164,176,187],[95,144,155,156,158,159,161,162,164,176,184,187],[95,144,158,160,161,162,176,184,187],[93,94,95,96,97,98,99,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193],[95,144,155,161,162],[95,144,161,162,163,187],[95,144,152,155,161,162,164,176],[95,144,161,162,165],[95,144,161,162,166],[95,143,144,161,162,167],[95,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193],[95,144,161,162,169],[95,144,161,162,170],[95,144,155,161,162,171,172],[95,144,161,162,171,173,188,190],[95,144,156,161,162],[95,144,155,161,162,176,177,179],[95,144,161,162,178,179],[95,144,161,162,176,177],[95,144,161,162,179],[95,144,161,162,180],[95,141,144,161,162,176,181,187],[95,144,155,161,162,182,183],[95,144,161,162,182,183],[95,144,149,161,162,164,176,184],[95,144,161,162,185],[95,144,161,162,164,186],[95,144,158,161,162,170,187],[95,144,149,161,162,188],[95,144,161,162,176,189],[95,144,161,162,163,190],[95,144,161,162,191],[95,136,144,161,162],[95,136,144,155,157,161,162,167,176,179,187,189,190,192],[95,144,161,162,176,193],[95,144,161,162,197,198,199,200,201,202,432,444,975],[95,144,161,162,197],[95,144,161,162,197,198,199,200,201,350,432,444,975],[95,144,161,162,197,198,199,201,202,432,444,975],[95,144,161,162,197,202,350,351],[95,144,161,162,197,202,350],[95,144,161,162,197,199,200,201,202,432,444,975],[95,144,161,162,197,198,200,201,202,432,444,975],[95,144,161,162,195,196],[95,144,161,162,455,456],[95,144,161,162,456],[95,144,161,162,455,457,458,459,461,463,464,465,466,469,470,471,472,473,474,475,476,477],[95,144,161,162,458],[95,144,161,162,457,458,462],[95,144,161,162,457,458],[95,144,161,162,457,465],[95,144,161,162,457,462,464],[95,144,161,162,456,457,462],[95,144,161,162,456,457,463],[95,144,161,162,456,457,462,467,468],[95,144,161,162,456,457,459,462,467,468],[95,144,161,162,456,457],[95,144,161,162,456,457,462,467],[95,144,161,162,455,456,457,462,468],[95,144,161,162,455,456,457,460],[95,144,161,162,450,453],[95,144,161,162,450,451],[95,144,161,162,450,452],[95,144,161,162,451,452],[95,144,161,162,977],[95,144,161,162,979],[95,144,161,162,981,982,983,984],[95,144,161,162,986],[86,95,144,161,162,215,216,217,219,436],[86,95,144,161,162,205,248,250,252,253,256,436],[86,95,144,161,162,205,221,227,228,232,233,234,407,436],[95,144,161,162,436],[95,144,161,162,216,316,388,397,414],[86,95,144,161,162],[95,144,161,162,203,414],[95,144,161,162,259],[95,144,161,162,205,258,436],[95,144,158,161,162,296,316,345,1020],[95,144,158,161,162,309,325,397,413],[95,144,158,161,162,363],[95,144,161,162,401],[95,144,161,162,400,401,402],[95,144,161,162,400],[86,89,95,144,158,161,162,203,212,213,216,220,221,227,235,236,237,356,379,398,432,436],[86,95,144,161,162,218,244,248,249,254,255,436,1020],[95,144,161,162,218,1020],[95,144,161,162,237,244,294,436,1020],[95,144,161,162,1020],[86,95,144,161,162,218,219,1020],[95,144,161,162,251,1020],[95,144,161,162,213,399,406],[95,144,161,162,170,267,414],[95,144,161,162,267,414],[95,144,161,162,197,267],[95,144,161,162,197,317],[95,144,161,162,313,361,414,1012,1013],[95,144,161,162,394,1006,1007,1008,1009,1011],[95,144,161,162,393],[95,144,161,162,393,394],[95,144,161,162,228,357,358,359],[95,144,161,162,357,360,361],[95,144,161,162,1010],[95,144,161,162,357,361],[87,95,144,161,162,197,1000],[95,144,161,162,187,197],[95,144,161,162,197,218,284],[95,144,161,162,197,218],[95,144,161,162,282,286],[95,144,161,162,197,283,434],[95,144,161,162,1023],[95,144,158,161,162,194,197,198,199,200,201,202,432,442,443,975],[95,144,158,161,162],[95,144,158,161,162,204,221,226,357,367,380,388,403,404,436,1020],[95,144,161,162,212,405],[95,144,161,162,432],[85,95,144,161,162],[95,144,161,162,197,296,312,324,334,336,413],[95,144,161,162,170,296,312,333,334,335,413,1019],[95,144,161,162,327,328,329,330,331,332],[95,144,161,162,329],[95,144,161,162,333],[95,144,161,162,265,266,267,269],[95,144,161,162,197,260,261,262,268],[95,144,161,162,265,268],[95,144,161,162,263],[95,144,161,162,264],[95,144,161,162,197,267,283,434],[95,144,161,162,197,267,433,434],[95,144,161,162,197,267,434],[95,144,161,162,380,410],[95,144,161,162,410],[95,144,158,161,162,204,434],[95,144,161,162,321],[95,143,144,161,162,320],[95,144,161,162,204,229,238,304,306,308,309,310,311,354,357,413,416],[95,144,161,162,238,342,357,361],[95,144,161,162,309,413],[95,144,161,162,197,309,318,319,321,322,323,324,325,326,337,338,339,340,341,343,344,413,414,1020],[95,144,161,162,303],[95,144,158,161,162,170,204,205,226,238,239,278,310,354,355,356,361,380,388,409,432,436,1020],[95,144,161,162,413],[95,143,144,161,162,204,216,307,310,356,409,411,412],[95,144,161,162,309],[95,143,144,161,162,226,298,299,300,301,302,303,304,305,306,308,413,414],[95,144,158,161,162,204,205,298,299,437],[95,144,161,162,204,216,356,357,380,409,413],[95,144,158,161,162,205,436],[95,144,158,161,162,176,204,205,416],[83,95,144,158,161,162,170,187,203,204,205,218,221,229,238,239,241,276,278,306,310,357,367,368,370,372,375,376,377,378,379,388,408,409,414,416,417,436],[95,144,158,161,162,176],[86,87,88,95,144,161,162,218,221,233,235,244,408,416,432,434,435,1020],[95,144,158,161,162,176,187,256,257,259,260,261,262,269,1020],[95,144,161,162,170,187,203,248,257,273,276,277,306,357,368,379,380,388,409,414,416,421,422,428,429],[95,144,161,162,212,213,235,356,379,409,436],[87,95,144,158,161,162,187,221,306,416,426,436],[95,144,161,162,295],[95,144,158,161,162,271,272,385],[95,144,161,162,416,436],[95,144,161,162,304,307],[95,144,161,162,306,310,408,434],[95,144,158,161,162,170,242,248,273,276,277,380,416,428,431],[95,144,158,161,162,212,213,248,381],[86,95,144,161,162,241,383,408,436],[95,144,158,161,162,187,436],[95,144,158,161,162,218,240,241,242,253,270,382,384,408,436],[89,95,144,161,162,238,310,387,432,434],[83,95,144,158,161,162,170,187,212,213,220,221,229,239,277,278,306,357,368,370,380,388,408,409,414,415,416,421,422,423,425,427,434],[95,144,158,161,162,176,213,385,416,428,430],[95,144,161,162,207,208,209,210,211],[95,144,161,162,371,417],[95,144,161,162,373],[95,144,161,162,371],[95,144,161,162,373,374],[95,144,158,161,162,204,221,226,227,228],[85,87,95,144,158,161,162,170,205,229,238,278,310,365,366,388,416,432,434],[95,144,158,161,162,170,187,204,228,230,306,366,415],[95,144,161,162,299],[95,144,161,162,300],[95,144,161,162,301],[95,144,161,162,414],[95,144,161,162,223,224],[95,144,158,161,162,221,223,229],[95,144,161,162,222,224],[95,144,161,162,225],[95,144,161,162,223,257],[95,144,161,162,223,279],[95,144,161,162,223],[95,144,161,162,275,415,417],[95,144,161,162,274],[95,144,161,162,257,414,415],[95,144,161,162,369,415],[95,144,161,162,257,414],[95,144,161,162,354],[95,144,161,162,204,221,229,233,293,296,304,306,310,312,315,346,349,353,357,387,408,416],[95,144,161,162,287,290,291,292,313,314,361],[95,144,161,162,197,200,201,202,267,347,348],[95,144,161,162,197,200,201,202,267,347,348,352],[95,144,161,162,396],[95,144,161,162,216,309,310,321,325,357,387,389,390,391,392,394,395,398,408,413,436,437],[95,144,161,162,361],[95,144,161,162,365],[95,144,158,161,162,229,280,362,364,367,387,416,432,434],[95,144,161,162,287,288,289,290,291,292,313,314,361,433],[89,95,144,158,161,162,170,187,204,223,239,257,278,306,310,385,386,388,408,409,432,436],[95,144,161,162,409,421,437,438],[95,144,158,161,162,417,436],[95,144,161,162,298,309],[95,144,161,162,297],[83,95,144,161,162,437],[95,144,161,162,298,418,436],[95,144,158,161,162,204,230,419,420,436,437,438],[95,144,161,162,197,357,358,360],[95,144,161,162,243],[87,95,144,161,162,197],[95,144,161,162,197,414],[89,95,144,161,162,197,278,310,432,434],[87,95,144,161,162,1000,1001],[95,144,161,162,197,286],[85,95,144,161,162,170,187,197,255,281,283,285,434],[95,144,161,162,204,218,414],[95,144,161,162,414,424],[95,144,161,162,357],[85,95,144,156,158,161,162,170,197,244,250,286,432,433],[95,144,161,162,197,198,199,200,201,202,432,444],[95,144,161,162,197,972,973,974,975],[95,144,149,161,162],[95,144,161,162,245,246,247],[95,144,161,162,245],[85,95,144,158,160,161,162,170,194,197,198,199,200,201,202,203,205,239,333,431,434,436,444,975],[95,144,161,162,988],[95,144,161,162,990],[95,144,161,162,992],[95,144,161,162,1024],[95,144,161,162,994],[95,144,161,162,996,997,998],[95,144,161,162,1002],[95,144,161,162,448,976,978,980,985,987,989,991,993,995,999,1003,1005,1015,1016,1018,1019,1020,1021],[95,144,161,162,1004],[95,144,161,162,1014],[95,144,161,162,283],[95,144,161,162,1017],[95,143,144,161,162,324,414,419,421,437,438,439,440,441,444,445,446,447],[95,144,161,162,194],[95,144,161,162,478,479,529],[95,144,161,162,478,479,482,485,526,528,530,531],[95,144,161,162,478,479,482,485,526,528,529,530,533],[95,144,161,162,478,479,482,483,484,485,487,526,528,529,530,541],[95,144,161,162,478,479,482,485,526,527,528,529,530,543],[95,144,161,162,478,479,482,484,485,529,530],[95,144,161,162,478,479,482,483,527],[95,144,161,162,479,482,485,487],[95,144,161,162,616],[95,144,161,162,478,479,483,484,486],[95,144,161,162,479,482,483],[95,144,161,162,479,482,484,485,487,491,536],[95,144,161,162,479,482,483,548],[95,144,161,162,479],[95,144,161,162,483,485],[95,144,161,162,479,482,483,485,502,552],[95,144,161,162,479,482,485,487,488,538],[95,144,161,162,482,487,488],[95,144,161,162,479,482,483,484],[95,144,161,162,479,482,483,485,555,558],[95,144,161,162,479,482,483,485],[95,144,161,162,479,480,481,482],[95,144,161,162,560],[95,144,161,162,479,482,483,502],[95,144,161,162,479,482,483,484,485,487,536],[95,144,161,162,479,482,486,503],[95,144,161,162,479,482,483,564],[95,144,161,162,479,482,483,484,566],[95,144,161,162,482,485],[95,144,161,162,479,482,485,487,539],[95,144,161,162,479,482,483,486,510,569],[95,144,161,162,479,480,481,483],[95,144,161,162,482,483],[95,144,161,162,479,483],[95,144,161,162,479,482,483,570,591],[95,144,161,162,479,482,483,486,491,497],[95,144,161,162,479,485,487,577,594,595,617],[95,144,161,162,479,482,483,485,502],[95,144,161,162,485,577,595,616],[95,144,161,162,485,616],[95,144,161,162,485,575,576,578],[95,144,161,162,479,485,577,595,598,599,617],[95,144,161,162,479,482,483,485,486,487,491,497],[95,144,161,162,479,485,487],[95,144,161,162,482,485,487],[95,144,161,162,479,482,485,487,491,535,537],[95,144,161,162,479,482,485,487,571],[95,144,161,162,479,482,485,487,535,537],[95,144,161,162,479,482,484,485,487,491,535,536,604],[95,144,161,162,479,482,484,485,491,535,536,553,604,605],[95,144,161,162,479,482,484,485,487,491,535,536,537,604],[95,144,161,162,479,482,484,485,487,491,536,604],[95,144,161,162,478,479,482,483,484,485,487,528,579],[95,144,161,162,479,482,483,484,487],[95,144,161,162,499,500,501,504,507],[95,144,161,162,479,482,483,485,486,491],[95,144,161,162,479,482],[95,144,161,162,479,482,483,614],[95,144,161,162,485,529],[95,144,161,162,478,482,485,529,540],[95,144,161,162,478,479,485,526,528,530],[95,144,161,162,478,479,482,483,485,487,502,528],[95,144,161,162,479,482,567,616],[95,144,161,162,479,510,570],[95,144,161,162,581,582,583,584,585,586,587,588,589,590],[95,144,161,162,577],[95,144,161,162,485,577],[95,144,161,162,482,487,489,538,539,540,545,568,571,572,573,574,577],[95,144,161,162,482,485,487,573,574,577],[95,144,161,162,479,485,577,597,600,617],[95,144,161,162,479,486,507],[95,144,161,162,479,482,483,484,486,487,488,489,490,491,498,503,505,508,526,528,530,532,534,535,536,537,538,539,540,542,544,545,546,547,549,550,551,552,553,554,555,559,561,562,563,565,567,568,570,571,572,573,574,577,578,579,580,592,593,596,597,600,601,602,603,604,605,606,607,608,609,610,611,612,613,615,617],[95,144,161,162,479,482,483,484,485,486,490,491,498,499,500],[95,144,161,162,479,482,483,486,499,503],[95,144,161,162,479,482,485,486,490,499],[95,144,161,162,479,482,483,484,485,486,490,491,498,499,500,503,505,506],[95,144,161,162,482],[95,144,161,162,492,493,496],[95,144,161,162,493,494,496,556,557],[95,144,161,162,494],[95,144,161,162,493,495],[95,144,161,162,493,494,495],[95,144,161,162,494,496],[95,144,161,162,176,194],[95,108,112,144,161,162,187],[95,108,144,161,162,176,187],[95,103,144,161,162],[95,105,108,144,161,162,184,187],[95,144,161,162,164,184],[95,103,144,161,162,194],[95,105,108,144,161,162,164,187],[95,100,101,104,107,144,155,161,162,176,187],[95,108,115,144,161,162],[95,100,106,144,161,162],[95,108,129,130,144,161,162],[95,104,108,144,161,162,179,187,194],[95,129,144,161,162,194],[95,102,103,144,161,162,194],[95,108,144,161,162],[95,102,103,104,105,106,107,108,109,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,144,161,162],[95,108,123,144,161,162],[95,108,115,116,144,161,162],[95,106,108,116,117,144,161,162],[95,107,144,161,162],[95,100,103,108,144,161,162],[95,108,112,116,117,144,161,162],[95,112,144,161,162],[95,106,108,111,144,161,162,187],[95,100,105,108,115,144,161,162],[95,144,161,162,176],[95,103,108,129,144,161,162,192,194],[95,144,161,162,478,508,509,512,520,620,634,727,903,904,905,907],[95,144,161,162,906],[95,144,161,162,512,619,620,907],[95,144,161,162,478,509,512,513,518,519,907],[95,144,161,162,521],[95,144,161,162,512,521,646],[95,144,161,162,511,521,646,787,905],[95,144,161,162,478,510,522,674,675,712,778,779,780,781,783,786,787,788,789,790,791,792,904,905],[95,144,161,162,521,788,905],[95,144,161,162,512,521,646,674,675,780,781,783,786,904,905],[95,144,161,162,478,521,666,670,905],[95,144,161,162,478,509,511,512,513,519,520,673,791,904,906],[95,144,161,162,478,521,905],[95,144,161,162,478,512,521,646,781],[95,144,161,162,478,512,521,651,710],[95,144,161,162,512,521,639,646,647],[95,144,161,162,509,512,513,521,652,674],[95,144,161,162,512,521,674,782],[95,144,161,162,512,519,521,651,656,673,674],[95,144,161,162,478,512,520,521,674,785],[95,144,161,162,478,509,521,634,643,644,646,709,710,717,718,725,727,732,735,903],[95,144,161,162,509,521,634,727,737,740,741,903],[95,144,161,162,478,509,521,634,718,725,727,735,903],[95,144,161,162,478,509,521,634,646,718,725,727,735,903],[95,144,161,162,478,509,634,646,709,717,718,725,727,732,735,903],[95,144,161,162,478,509,517,521,634,725,727,751,754,766,891,892,897,903,905],[95,144,161,162,478,489,509,512,521,522,525,625,628,633,634,636,680,681,692,701,709,716,717,718,719,721,727,903,905],[95,144,161,162,478,509,519,522,525,622,628,634,646,680,681,719,727,903,905],[95,144,161,162,521,628,634,727,746,903],[95,144,161,162,478,517,521,525,628,634,646,727,746,750,903],[95,144,161,162,478,509,517,521,525,628,634,646,727,746,750,903],[95,144,161,162,478,509,512,517,522,634,687,709,724,727,903,905],[95,144,161,162,511,515,521,525,634,635,694,695,696,727,903],[95,144,161,162,478,509,522,525,628,634,636,646,653,680,681,686,694,727,903,905],[95,144,161,162,511,521,525,628,634,635,645,691,694,695,727,903],[95,144,161,162,478,509,511,512,521,632,634,678,680,689,727,903,904],[95,144,161,162,478,512,521,525,628,634,692,727,903],[95,144,161,162,521,628,634,727,903,905],[95,144,161,162,509,512,521,525,628,634,646,688,690,727,903,905],[95,144,161,162,521,628,634,727,758,903],[95,144,161,162,512,521,525,628,634,646,688,727,760,903],[95,144,161,162,512,521,525,628,634,645,646,727,903],[95,144,161,162,521,628,634,645,727,903,905],[95,144,161,162,478,512,517,518,521,525,634,708,727,765,903],[95,144,161,162,478,521,525,634,643,699,710,723,727,903],[95,144,161,162,478,509,512,521,634,725,768,903],[95,144,161,162,515,525,628,634,646,727,770,903],[95,144,161,162,478,512,518,521,525,628,634,727,746,763,764,903],[95,144,161,162,478,518,521,525,628,634,727,746,763,764,903],[95,144,161,162,478,512,517,518,521,525,628,634,646,727,750,763,764,903],[95,144,161,162,478,512,521,525,618,628,634,692,727,774,903],[95,144,161,162,512,521,628,634,655,727,903],[95,144,161,162,509,512,521,525,628,634,646,655,689,727,793,903],[95,144,161,162,512,521,634,727,759,760,794,903],[95,144,161,162,478,512,521,525,628,634,645,692,727,903,905],[95,144,161,162,512,521,628,634,655,727,760,903,970],[95,144,161,162,478,517,521,625,634,709,717,718,722,724,725,727,797,903],[95,144,161,162,478,509,517,634,709,717,722,724,727,903],[95,144,161,162,478,489,509,511,512,518,519,521,522,525,634,636,646,680,681,685,690,709,717,721,727,797,799,903],[95,144,161,162,478,511,512,518,521,525,544,634,636,709,727,745,797,799,800,903],[95,144,161,162,478,509,511,512,517,519,521,522,634,709,717,722,724,727,891,903],[95,144,161,162,478,509,512,521,525,634,637,638,639,642,646,701,709,710,711,712,722,723,725,727,903],[95,144,161,162,478,509,512,521,634,726,727,782,903],[95,144,161,162,478,512,520,521,634,726,727,785,903],[95,144,161,162,512,519,521,626,634,655,691,727,794,796,802,806,903],[95,144,161,162,521,634,727,759,804,805,903],[95,144,161,162,521,525,634,691,727,804,805,851,903],[95,144,161,162,478,517,518,521,525,634,727,802,804,851,903],[95,144,161,162,512,521,634,727,802,804,851,903],[95,144,161,162,509,512,521,634,726,727,782,900,903],[95,144,161,162,511,512,521,628,634,727,934],[95,144,161,162,511,521,628,634,727,934],[95,144,161,162,478,511,521,619,628,634,727,934],[95,144,161,162,478,511,521,628,634,727,934],[95,144,161,162,511,521,619,628,634,727,934],[95,144,161,162,511,512,521,628,634,680,727,934],[95,144,161,162,478,511,512,521,628,634,727,934],[95,144,161,162,478,518,523,622,634,727,823,824,825,891,892,903,905,970],[95,144,161,162,509,517,519,523,622,634,727,823,826,903,905],[95,144,161,162,478,523,634,727,825,903,905,970],[95,144,161,162,478,511,523,634,727,825,903,905,970],[95,144,161,162,523,634,727,825,903,905],[95,144,161,162,826,827,828,829,830,831,832,833],[95,144,161,162,478,509,512,517,523,634,725,727,824,903,905],[95,144,161,162,509,517,519,523,622,634,727,823,832,903,905],[95,144,161,162,521,628,634,646,727,903,905],[95,144,161,162,478,509,512,517,521,634,684,727,903,905],[95,144,161,162,478,521,628,634,710,727,903,905],[95,144,161,162,509,511,521,628,632,633,634,727,903],[95,144,161,162,478,509,511,521,628,632,634,903],[95,144,161,162,521,628,633,634,727,903,905],[95,144,161,162,478,509,511,513,521,522,628,634,676,727,903,905],[95,144,161,162,478,509,511,516,519,522,632,634,656,669,676,680,681,687,691,693,697,727,903,904,905],[95,144,161,162,478,521,628,634,727,903,905],[95,144,161,162,509,521,628,633,634,727,903,905],[95,144,161,162,478,509,511,521,628,632,633,634,727,799,903],[95,144,161,162,511,634,727,838,844,845,903],[95,144,161,162,512,519,521,628,634,727,903],[95,144,161,162,519,521,628,634,727,888,903],[95,144,161,162,478,509,511,512,516,521,522,628,634,653,675,676,677,678,680,681,682,683,694,727,903,905],[95,144,161,162,478,509,511,512,516,521,522,628,634,653,655,675,676,677,678,680,681,682,694,727,807,889,903,905],[95,144,161,162,511,521,628,634,727,903],[95,144,161,162,521,522,634,676,727,791,841,903,905],[95,144,161,162,511,512,521,522,628,634,646,727,783,903,905],[95,144,161,162,509,511,516,519,521,522,628,634,646,656,675,677,680,681,682,727,903,905],[95,144,161,162,478,511,512,520,521,522,628,634,639,676,727,784,786,851,903,905],[95,144,161,162,521,622,626,634,727,802,805,838,903],[95,144,161,162,478,509,511,512,517,521,522,634,676,680,684,709,724,727,890,892,903,905],[95,144,161,162,478,517,634,727,890,891,903,905],[95,144,161,162,478,509,511,521,522,523,525,633,634,727,728,730,855,902,905],[95,144,161,162,478,509,511,521,523,633,634,727,902,903],[95,144,161,162,478,509,511,521,633,634,727,903,905,933],[95,144,161,162,478,509,511,521,523,633,634,727,855,903,905],[95,144,161,162,478,511,515,517,523,525,634,682,683,687,691,693,694,695,696,697,722,723,725,726,727,736,741,742,743,744,745,746,747,751,752,753,754,755,756,757,759,761,762,765,766,767,769,771,772,773,775,776,777,794,795,796,798,800,801,806,807,825,834,889,892,893,894,895,896,897,898,899,901,903],[95,144,161,162,511,619,634,727,903,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,934,935],[95,144,161,162,478,517,523,634,682,683,684,694,727,755,824,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,852,853,854,889,890,891,903,905],[95,144,161,162,509,511,521,633,727,903],[95,144,161,162,521,634],[95,144,161,162,521,634,727],[95,144,161,162,521,633,634,865,944],[95,144,161,162,478,512,521,619,627,634,867,944],[95,144,161,162,478,512,622],[95,144,161,162,622],[95,144,161,162,512,622],[95,144,161,162,622,838],[95,144,161,162,622,727],[95,144,161,162,478,512,622,715,722,727],[95,144,161,162,478,622],[95,144,161,162,622,687,727,905],[95,144,161,162,509,622],[95,144,161,162,622,636],[95,144,161,162,512,519,525,622,684,727,905],[95,144,161,162,478],[95,144,161,162,478,509,512,628,634,727,903],[95,144,161,162,478,489,509,511,512,513,514,515,516,517,518,519,520,523,524,525,619,620,621,622,623,624,626,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,650,651,654,655,656,658,659,660,661,662,664,665,666,667,668,670,671,672,673,677,680,681,682,683,684,687,688,689,690,691,693,694,695,696,697,698,699,700,701,706,708,709,710,711,712,713,714,715,716,717,718,720,722,723,724,725,726,727,728,730,732,734,736,737,738,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,769,771,772,773,775,776,777,782,784,785,794,795,796,797,798,799,800,801,803,804,806,807,808,809,810,811,813,814,815,817,818,819,821,823,824,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,857,858,859,860,861,862,864,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,889,890,891,892,893,894,895,896,897,898,899,902,903,904,905,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969],[95,144,161,162,478,509,510,905],[95,144,161,162,478,509,512],[95,144,161,162,478,512,519,524],[95,144,161,162,478,509,512,797],[95,144,161,162,509,512,629,630,631],[95,144,161,162,478,509,511,515,519,634,673,690,694,697,726,903],[95,144,161,162,478,509,512,519],[95,144,161,162,512],[95,144,161,162,478,489,509,512,519,525,617,619,621,632],[95,144,161,162,509],[95,144,161,162,478,509,512,517,525,633],[95,144,161,162,478,509,512,519,905],[95,144,161,162,478,512,517],[95,144,161,162,478,509,517],[95,144,161,162,478,512],[95,144,161,162,632],[95,144,161,162,478,509,512,515,518,519,525,618],[95,144,161,162,478,509,512,513,514,515,516,518],[95,144,161,162,509,634,803],[95,144,161,162,478,509],[95,144,161,162,478,512,521,643,646,647,649,698,699,710,713],[95,144,161,162,478,512,517,521,698,714],[95,144,161,162,478,509,512,517,521,622,698,706,707,714],[95,144,161,162,478,509,512,517,521,698,707,714,749],[95,144,161,162,478,509,512,517,521,698,699,706,707,714],[95,144,161,162,478,509,512,517,521,698,708,714],[95,144,161,162,478,512,521,638,641,643,646,666,670,698,699],[95,144,161,162,478,509,512,517,521,638,698,700],[95,144,161,162,478,509,512,517,521,638,700,706,707,708],[95,144,161,162,478,509,512,517,521,647,651,698,700,707,708,748,749],[95,144,161,162,478,509,512,517,521,638,698,700,706,707,708],[95,144,161,162,478,509,512,517,521,698,700,708],[95,144,161,162,478,512,521,638,641,646,666,670,698],[95,144,161,162,478,517,521,698],[95,144,161,162,517,521],[95,144,161,162,478,509,512,517,521,639,670,698,706],[95,144,161,162,478,517,518,521,619,763],[95,144,161,162,478,509,512,517,521,638,698,706,707,708],[95,144,161,162,478,521,647,651,670],[95,144,161,162,478,512,521,638,641,647,650,651,699,710,814],[95,144,161,162,478,521,669],[95,144,161,162,478,521,666],[95,144,161,162,512,513,521,638,646,647,650,651],[95,144,161,162,478,509,512,513,521,637,652],[95,144,161,162,513,521],[95,144,161,162,478,521,653,710,711],[95,144,161,162,512,516,521,646,647],[95,144,161,162,512,521,646,660],[95,144,161,162,512,521,661],[95,144,161,162,512,521,646,647,649],[95,144,161,162,512,514,521,661],[95,144,161,162,509,512,514,516,521,658,659,664],[95,144,161,162,512,521,643,646,647,649,663],[95,144,161,162,512,525,619,622,646],[95,144,161,162,521,623,624,625,626,627,633],[95,144,161,162,478,512,521,623,633,634,722,727,729,903],[95,144,161,162,730],[95,144,161,162,521,667,727],[95,144,161,162,509,727],[95,144,161,162,521,727],[95,144,161,162,521,523,727],[95,144,161,162,667,727],[95,144,161,162,512,521,648],[95,144,161,162,512,521],[95,144,161,162,512,521,640],[95,144,161,162,512,521,639],[95,144,161,162,512,521,639,640,643],[95,144,161,162,512,521,644,645,646],[95,144,161,162,512,521,642,643,644,647],[95,144,161,162,512,521,622,642,646,647,649,650],[95,144,161,162,512,521,639,641,645,646],[95,144,161,162,512,521,641,642,645],[95,144,161,162,521,634,727,737,739,903],[95,144,161,162,478,521,634,725,727,737,738,903],[95,144,161,162,521,646,647,651,731],[95,144,161,162,521,638,646,647,651,731],[95,144,161,162,512,521,647,733,734],[95,144,161,162,521,738],[95,144,161,162,521,685,716,722,727],[95,144,161,162,478,521,716],[95,144,161,162,521,654,685,687,727,905],[95,144,161,162,509,622,668,684],[95,144,161,162,521,655,684,685,727,905],[95,144,161,162,509,512,521,525,619,679,689,727],[95,144,161,162,515,521,619],[95,144,161,162,509,521],[95,144,161,162,509,518,521,619],[95,144,161,162,509,521,618,619],[95,144,161,162,509,519,521,525,619,679,727],[95,144,161,162,509,519,521,619,679,727],[95,144,161,162,509,511,519,521,619,679,727],[95,144,161,162,511,633,634,727,855,902,903],[95,144,161,162,521,647,651],[95,144,161,162,512,521,639,643],[95,144,161,162,705],[95,144,161,162,521,705],[95,144,161,162,704],[95,144,161,162,478,521,699,705],[95,144,161,162,478,521,703],[95,144,161,162,478,521,702,704],[95,144,161,162,478,522,627,628,637,638,639,641,643,644,645,646,647,650,651,652,653,656,657,660,670,671,672,673,677,678,679,680,681,685,686,689,690,699,700,701,706,707,708,709,710,711,713,714,715,717,718,719,724,730,749,750,760,763,764,781,782,784,785,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,851,856,857,858,859,860,861,862,863,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,904],[95,144,161,162,516,521],[95,144,161,162,521,961],[95,144,161,162,478,509,903],[95,144,161,162,521,619,623,627,864,865],[95,144,161,162,509,521,619,623,864],[95,144,161,162,521,619,625],[95,144,161,162,627],[95,144,161,162,512,521,646,647],[95,144,161,162,512,521,651],[95,144,161,162,478,509,512,520,521,646,651,700,784],[95,144,161,162,512,521,699],[95,144,161,162,478,509,512,521,714,868],[95,144,161,162,478,509,512,513,521,869],[95,144,161,162,478,512,521],[95,144,161,162,478,512,521,637,782],[95,144,161,162,512,521,639,645],[95,144,161,162,478,512,519,521,637,651,673,712],[95,144,161,162,478,512,520,521,637,785],[95,144,161,162,512,521,645],[95,144,161,162,478,512,513,521],[95,144,161,162,512,521,645,646],[95,144,161,162,512,521,638,646],[95,144,161,162,478,512,521,637,710,711],[95,144,161,162,478,512,521,710,711,872],[95,144,161,162,478,512,520,521,710,711,874],[95,144,161,162,478,509,630],[95,144,161,162,619,636,640,646,666,720],[95,144,161,162,509,521,522,655,666,668,684,727],[95,144,161,162,519,521,622,663,666,667,668,670],[95,144,161,162,509,519,521,645,655,699,970],[95,144,161,162,509,519,521,655,970],[95,144,161,162,509,512,519,521,639,641,645,650,655,666,670,671,821,880],[95,144,161,162,512,519,521,650,655,666,670],[95,144,161,162,509,512,519,521,638,646,650,655,656,657,658,659,662,665,671,672],[95,144,161,162,478,512,520,521,643,646,670,785],[95,144,161,162,882],[95,144,161,162,521,885]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"5f90b8c733a1bda63e42160b15a2301051e83a6f9d5332a59d16eb12f463270d","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"d61e0a64cd175208ac0b83670151a9a6b5916f0d1ffcdc5c29c90b1cebfc5045","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"814d5c7384f3ca276e9dc4bcfde5545801a3ea0bfae09916b3336774e662fd1b","impliedFormat":1},{"version":"2beff543f6e9a9701df88daeee3cdd70a34b4a1c11cb4c734472195a5cb2af54","impliedFormat":1},{"version":"2e07abf27aa06353d46f4448c0bbac73431f6065eef7113128a5cd804d0c384d","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"66be1299a7a3129ceb488b340c291cf575bebb0e337f92e169dec38231472e34","impliedFormat":1},{"version":"9894dafe342b976d251aac58e616ac6df8db91fb9d98934ff9dd103e9e82578f","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"b838d4c72740eb0afd284bf7575b74c624b105eff2e8c7b4aeead57e7ac320ff","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"e91f7b1344577a02f051b9b471f33044fef8334a76dc9e1de003d17595a5219b","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"71d8ba39a9e024d9e4bb922464d18542ed8d2c25ee78efa7890c27213cc6e5d3","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"c30436b130b6218b7714314dc41d3f459590db4bdf099eecd51cb1bda32109a8","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"bc03c3c352f689e38c0ddd50c39b1e65d59273991bfc8858a9e3c0ebb79c023b","impliedFormat":1},{"version":"19df3488557c2fc9b4d8f0bac0fd20fb59aa19dec67c81f93813951a81a867f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"b25350193e103ae90423c5418ddb0ad1168dc9c393c9295ef34980b990030617","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"c1de754ab5f3b0f4036d6893c74a0fc984c7fcb07936086f19bbe2974406775b","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"efc0e6a64feef102d5edef7525de0c2ac5961821f12ae5038f0d3a8631457e10","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"a84d677a6172185d541b1b00ea8e4e04217b64351098f9e5c07403fdec305683","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"d9c46395b3980848a6c4b2f44e986d27d07faee3b3b4b1f214793255b8c64f2a","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},"460a65038678a419cd3bd656c733eca32b4ddb50afdc0a5bf356076b0a6f7575",{"version":"08b93876d90e0a1680bb4d86b11f4e6610e8bb8f9b5082b28bc095d178b067cb","impliedFormat":1},{"version":"1358179e025cfff277b0c3838ebae445682a849aaccced5b4526e689adf41dae","impliedFormat":1},{"version":"31fffdbb504cb50e7284b995d53d2bee67ffb6505f5b5328e3ddbb5ea28fcc3f","impliedFormat":1},{"version":"4108cdcf76ed758efa16b316a542bda1c7d5e6f0a794ebdccb3c24820f818ae8","impliedFormat":1},{"version":"3c7014f1dd2c1d91db82aaf3e09b8c616c4ba33564d1ee3b82a7f7a837129d10","impliedFormat":1},{"version":"d3a864a0d50b7a36c9b65936566872bd30463770e53cbf527c9c5dead7ee957d","impliedFormat":99},{"version":"a623d5cf7925e72dbf4602862499564389c7c3dc0ce049733cc0ec756a846667","impliedFormat":99},{"version":"d9028ded7b00c211d789db29f1b2d9d1b7600a4edcbbd087f1faf0495229d179","impliedFormat":99},{"version":"63634c0855e639ea7f609613d799bbb0dc774ec9f3242bc272c5567dc5ccd485","impliedFormat":99},{"version":"592f06c425ab27b4bafec624ef5b153cbdde9ac58f7113100a2da1c4309d1309","impliedFormat":99},{"version":"8af1f8bcb11fa44a10f7d9e73ad8d791a890b888393e995378d91ac7c4a6be0b","impliedFormat":99},{"version":"817b62c988a2a71341f4ebd8bab8e76474da43c5ed7cff8984f26ffb824d9737","impliedFormat":99},{"version":"7f9f70a85911c33580f5ab3563b379dcf23287e37e9db6ac1b218d7abe526f0b","impliedFormat":99},{"version":"fb4f06b2af9ee4b2d2be8c964b0a8f6dd260be9048488ffcf04eb5c0fcb8bf61","impliedFormat":99},{"version":"f185055f36d76e2df5eeb87ae1148a25a125be2bff2095e1bd39c1c7ce85a640","impliedFormat":99},{"version":"9fcb4ef8bf8955c4e9c81bdf4e239d4c0c22869b6cf6ce2ecc95743bf683cb9f","impliedFormat":99},{"version":"979fdebc12d30becce6a15e68d99bc8a2a470a8dcf0898ac9e2d241a7e531940","impliedFormat":99},{"version":"1824ad7d4259910646279d667e517334c0aa24d5c810e8ea6da756fc2e02372f","impliedFormat":99},{"version":"989e9060e220ff86025044ba3c867a83512a655b7cf6253b2bd682192debf390","impliedFormat":99},{"version":"9a16d670b1245df8d0835ed5451a68b226d86b5054db098dce3f496737701b68","impliedFormat":99},{"version":"8fab988b0129e674afc0bc0e95329b4052cf027f5d5b5b3e6e92d055b5ba88ef","impliedFormat":99},{"version":"4fe56d524ab24c225668803c1792945053e648b4e8fa4e50fa35594495b56732","impliedFormat":99},{"version":"2652931b8f7dca9a57f21aeb25b5d46851dcf17e4d5ed54b9b57d5d26e647680","impliedFormat":99},{"version":"d364c8df7d52199f5d011b4ded96f36dd114b984f5ee2e50ffe7d30ac1ab4bba","impliedFormat":99},{"version":"408f9eb3c7a3533bf5f07e0cde110a5ee0702864795ee6727792520fe60320b6","impliedFormat":99},{"version":"ba79eb15c36ff23e352ef608ceb7f9f0f278b15ad42512c05eedbe78f228e0e4","impliedFormat":99},{"version":"4cd233c6af471432253a67ae4f3b43c85e58a71418d98c3e162a1dac975c68f6","impliedFormat":99},{"version":"aa77c7d8ddc961e8192bcaa92da140e1205f8aee78bfadead5f52b8844d7d05c","impliedFormat":99},{"version":"37e37d3a525a207efab5458069fd9a27a174d2dc3af729702c81729ca03a349f","impliedFormat":99},{"version":"d5feacc0fdab68fbc8a3af00e800049146895df77f7befe1b1e4554c4a62f74d","impliedFormat":1},{"version":"7fdaebdb3780d0549a8e0abcb18965e2f62224bdde633aeafb22c64c02fe9e9d","impliedFormat":1},{"version":"24f848479d1fd142d3d7cf034bedca247d1d9b8b31c2632c09695bd6a0441141","impliedFormat":1},{"version":"7e977910c045ec087f435905eb730e9c84e8d6b97f0dd0fe0c022dfed665613a","impliedFormat":1},{"version":"9c4ec2692cdb791823b9407753dec50d69b1b990cf7038cac3fab01e8ed5f709","impliedFormat":1},{"version":"b2a13a9d36f0f52a9e7b72694a8f333b80bcb22ba1185920d5d420f6ea4b23d5","impliedFormat":1},{"version":"301a1ba797c537d2598a557af4862e7823353c80529c9a58bc1a0c08779deb5d","impliedFormat":1},{"version":"2f37ef3a5d3fb119b390cb48c77352914c814b98948633deac90099faae320a6","impliedFormat":1},{"version":"6df476029632e337e469e8f83555919b6aecffbf975cb95710cb3e5f8bcb792e","impliedFormat":1},{"version":"d4832d1deaacad5d196b2a83239fb94c80f97df889c02a75859b05b460885300","impliedFormat":1},{"version":"1b105a40480faa8c292868597cccea1384e26c034ea0b7e2c6e9d834259f7ef3","impliedFormat":1},{"version":"c53f7caa42ad0bff2b3cad20e4780990aadf647c845cb66cec004062cc4ae549","impliedFormat":1},{"version":"a82f1d66de93c80bca7a744647c748657c050341e53de63fae5aecb72f85f5e6","impliedFormat":1},{"version":"b0bf8f866d3c05dce6c2778455252391bbc3fa0e8c1675e78dcee8fab2e1dd96","impliedFormat":99},{"version":"e7c8f5799dbd757a856ea16aa7559efbf77130bffd7af922a076708a125a751c","impliedFormat":99},{"version":"b1ede571f4b0373b70706c32ce2bfc8300a51b99c5c8d29b46ce67f80673dd6d","impliedFormat":99},{"version":"a1b750892fdb9fbfaba761d05a119294816249789e22d7c7babb6cc06ef0f6f0","impliedFormat":99},{"version":"b04e50b2d0ff63bdd8af9356ba322599420f1ae0067031f8a5951e27a37d68e9","impliedFormat":99},{"version":"dec143bcedd3291cbd81587f62568b9956095882c5523d91e77b56b240f63998","impliedFormat":99},{"version":"34107dd58ef990f97ac495c9719871b8125ab3ed3bb6c3dcd8db37d3333a2519","impliedFormat":1},{"version":"e3efc16fd0fd088ebdd6bb33290967348a8e2572f12dd31be04c94806493fe6b","impliedFormat":1},{"version":"a6d465374bd5e3d0dfdd33577e59a8b6565ce878104a425775d077c6df8cfb59","impliedFormat":1},{"version":"1cb957f735c33c0f650f1403f5c148be9d72c9104e9117f3645ec5d6feb07dab","impliedFormat":1},{"version":"728ec07c8a50b9f22da9c9aa8859e29462526fd996ac1d21c6c9a81b78106dd5","impliedFormat":1},{"version":"ea9b6a9435246b8c1a21a00cff5dd8075e1cc172ee4354397785f9b0ca216484","impliedFormat":1},{"version":"df3bca110b4e6b9c23b61317514adc23ab1d32de7c20e345516d165e77aa0ee0","impliedFormat":1},{"version":"dc44bd32836d62fe28e5c98138a1645967822f8a59d7a3c9e6bcefd4689e4a56","impliedFormat":1},{"version":"0b9eeae1bebb738dd089a1781c945fb19f7dd1db395fb7e65df31fae300f8949","impliedFormat":1},{"version":"2067810082bc58c02bfb07944b192c53a4c80a49b1a3534d747df10739cae21d","impliedFormat":1},{"version":"447e4cc79083ba5ebdab9b0972d9301ff96cb6213cb8d3b3bb612b3994ed4f16","impliedFormat":1},{"version":"3ccddaa225817a1c59fb9a939c10769524a4e4e37c53bba03f85c5b567b6ecef","impliedFormat":99},{"version":"1ddd1ca692a6c656ade0a85c9a722b3679b3d0bf113b699908e0325cf3537dbe","impliedFormat":99},{"version":"b27cc4276175cf9f88be8fdffcbc8aa8a5455b68c84d9dffeb9d2e608ba2fd42","impliedFormat":99},{"version":"ac070c8464a0aee4c36ec4800608440a5a3bf6baebe81330bb0915e0e85c77d2","impliedFormat":99},{"version":"07ab076e1d2663b27c7ea5e565bef05dd2106ee9be762237f7ed35482f5fc14c","impliedFormat":99},{"version":"007dfb1f314277f6e211fec9c5f62fd182e3bb76f1fe1f165228a259ae0b91b8","impliedFormat":99},{"version":"a6aa3bd9c165acb07db158897587581d7b081ce4271579b720a94f95c8c487d5","impliedFormat":99},{"version":"904714e49891cc1e136cf104f4bc9adfc846be9bd28ac55e101145a0d8103b30","impliedFormat":99},{"version":"7b4075751e83e77fa5a4873769a122fe3e5bfd567e35edc7904987e248523ec3","impliedFormat":99},{"version":"98c5701e1939fd10cfff65b250fe61f01308347c353c9edbc4153a40cbba7103","impliedFormat":99},{"version":"eb149b5dbcba0b65f4615cfdf508e8fe1f1ac5f06be428ca7d1196a83cb18c74","impliedFormat":99},{"version":"db73fc05812040ab47ad7f8a7766103e42958c58d69e53a3d3cabfe6de8cfc03","impliedFormat":99},{"version":"a5c15ccb4615e088d68669848b7206da46e6f8aaa83fc4b9fea091423a076dc8","impliedFormat":99},{"version":"29150e44771dac0aeb711badc04e08fccd01b46efc560bd6e01b96d746a3f26c","impliedFormat":99},{"version":"2840afc40f3690f525adb1c03dc3cfcb1d855ea3e176b68ad2e6f9cb8979163f","impliedFormat":99},{"version":"b9c9c9352d6606fe440735ccad134563017fc5aff8dcd418c58f778437339f06","impliedFormat":99},{"version":"60132648ecac61497e0fb995c96909b54f10ffc7d488183d66bdd94b95f7e759","impliedFormat":99},{"version":"a57611e4d88d1a36e817fe684f3e3d59bbf099fbd81a4465ac308f4095125389","impliedFormat":1},{"version":"327445a1a718aff4f98f8472e1f50b61e08696f379a8154e67f312f9151e2295","impliedFormat":1},{"version":"f58e5f53ffdcac8ebbfdad16ea7e6164fc25e63f5e3cae8cb13395100ebb8da8","impliedFormat":1},{"version":"be9ef0a0446cf28d529a684e4a7d14101f03e054896704fbdc5470d8fa4de6b4","impliedFormat":1},{"version":"acd32f2f192d93e8161938ebfd74fa063e67a09cbe0156a74ae2e421a1e8f786","impliedFormat":1},{"version":"1eeb9deebe9a0a6cc52a32aa1533a1535ecc1b4e831290c753e72e0394e866a9","impliedFormat":1},{"version":"721a89dd556b6cee72b5279ec5142f13bbfdd71e780097c940fcf3864d536569","impliedFormat":1},{"version":"a3d0b36bb3185da856cc0a7df02f63008935602ed09f84b0d960c7f9f7f6d63d","impliedFormat":1},{"version":"3828fd8c81a1850d8bbf3a3633ec43406918fd45494e4f89c5d54953883ac835","impliedFormat":1},{"version":"30ceaf6e65817221c5c62cedfc26892a4b79a78c7eb7367bcccc0e217b517bf1","impliedFormat":1},{"version":"a3ea4adb87d130799d26945196bba7e889056c74dac98069d58c015d10f3c053","impliedFormat":1},{"version":"5677e07fa26c97fe03c34a478ca2440739f9dbdbcbacc68de64e5e3d73aaf028","impliedFormat":1},{"version":"ff078e2cab8f6211b570a0d03cf24e1b3ee325806c73638bbfd4ad07ffa998c9","impliedFormat":1},{"version":"108153ebe21324639d95424fe8252c00f524919272fc8014e2b2a6efb9d7d69b","impliedFormat":1},{"version":"4ec19d58993999260e0df245eec5fd6d7dd92978360c4f0706c9260091f55c70","impliedFormat":1},{"version":"0bc4f86d58f4a4b5a9563ba8d2b23a3fac187a6e167772f6689ea807081ed631","impliedFormat":1},{"version":"495a1b60b94943c48a5c3c797368ecc3058a6a40e18a03e924e88b74f30e2371","impliedFormat":1},{"version":"496ee894efcd5de63169a3a4e47d74f16f754eb212b1ef209f9255aaaeef3450","impliedFormat":1},{"version":"592b925e97c441836b09e77bd3356467d1f2d3c902d9740229af42d0fa8f9205","impliedFormat":1},{"version":"3ee38e0bac65430814b195ed22b5aadfbe4fbd8890c5e5b45a7ba13f05c0ea0d","impliedFormat":1},{"version":"45181e4221f90d98bf2046ba55cdc22411dc64b9a8cc04f1c8702038b7334d01","impliedFormat":1},{"version":"9dbc1bbb7776889c5dd1e569d0152464dce0af9885e6ec95dfc2aecc01238fb6","impliedFormat":1},{"version":"7fe0253ff44f072ea13fa372e2fbd007aa439df9560762950d38b4c203b2c51a","impliedFormat":1},{"version":"bf4ebcedc7324dd0cbe83488830f7966e808fabf4836d516d1b591ea91417c68","impliedFormat":1},{"version":"b1ae2dc2f6f298516c83a649fef576f55bbec21171b8ade99320961c3c06e882","impliedFormat":1},{"version":"5cc968707e8d5e146d075fb83c33a242dd874ef44356969f0ac243dcfd483270","impliedFormat":1},{"version":"af0dfd141ecb2e24ef9a3028727214a69aa528d0be91e8728a7abd4fd6659b5f","impliedFormat":1},{"version":"1b4fcfac479e70ee92821fbe9dfb0ee3f115e70f19cfcf1c1bf1f060bfaf59b7","impliedFormat":1},{"version":"418fdcdefc32953c6c7ea7e9979ce84b87618de9def698e73da2c16697fe023b","impliedFormat":1},{"version":"4d0db315ab6869de22694dc968fe740cfef635a21455a4d2bd33bc95b8eec381","impliedFormat":1},{"version":"0a264cbb3f65a6f314a4a6b872d4787bd4f49c6582319114bb242ccce8bdd209","impliedFormat":99},{"version":"e9ecf153356cbe27354242dcb6a62234bf6d83c8c19d5204694694783c0b905c","impliedFormat":99},{"version":"83d783e14ae73ab5adeced6c66526daa1155f74512c00ce72902d1fc7c02484d","impliedFormat":99},{"version":"6bd1797c0d0a04196aa9f30dd3362b62020e5e60b9a7fea205bf964dd8418c3e","impliedFormat":1},{"version":"08447e8b528a1f8d1162aa044695d460ce5179a78bd174fa0673fa16b06011aa","impliedFormat":1},{"version":"8e532c6486042736463d1116d45b0db814d969ffd2ee822e4e5ce975807c16f0","impliedFormat":1},{"version":"039fce54597b423ab9ebe8010219e8fb6539e6ccb18353577fdc444d959cb875","impliedFormat":1},{"version":"40068da2ba99add08477c6be1946795ace73c46277dde3ff44b5270fd0e05055","impliedFormat":1},{"version":"5c46488ed1fcd837f4c6e7dac52bba578587790db3a905245026e47de7118ff3","impliedFormat":99},{"version":"1dd75be7df8d725995c500820cc5c30cf9d47d629158f484d79feb0ef1877e93","impliedFormat":1},{"version":"7b4b0aaf0978122b44aa6317977be3e2f9d3d261ae4a8d93bfd511a7ddee7dfe","impliedFormat":1},{"version":"cb5def9d6efe73b09a7adce13bbb7fad7ee6df7a59259300de6ca77fe84041fc","impliedFormat":1},{"version":"58b5bc399cd98b87eff2c80d995d4dd63e69c801ec880b85c7da73ddc561a751","impliedFormat":1},{"version":"16c6ff8bcfef0ad22abffa3329760bb611c4c4aa098ece0d6bcfd1cd16610997","impliedFormat":1},{"version":"3e97a216fa920ab79acc44921b80108dda9a7a1198747a39b0fbbcfb68cb65b8","impliedFormat":1},{"version":"af81e13747ef7589a726505dd4c2dcf00bb2b9fd7c3c84d580c1d02dbc3b58a9","impliedFormat":1},{"version":"67ddace2fd97646b97e56794034fe5147674a83b7b21c47ec822c25284287497","impliedFormat":1},{"version":"883f2f34243b4ab70923709eefcd2a68822542829c840ee877797f7c04d08e5f","impliedFormat":1},{"version":"ee8e4eac4e7a9099815bc3200e9a4fb2eaf8fa80e810810146032688d713c1d2","impliedFormat":1},{"version":"08ceda2bf37a4011bfd1373f2993cf3b5495968f744c5c0d7c411edf20c824f9","impliedFormat":1},{"version":"23fcf8ae54dbefaa3c72f0bc063de65992550f04bdb94653634d179777d13f4f","impliedFormat":1},{"version":"f4a6cc3a139bc6a171127d22ec6877232c9cc89071a0ef754fe24eb5c26b3629","impliedFormat":1},{"version":"f8e02592fc856b10dc693acf63ab56044eb11ef9e0f4d18096825fd066963960","impliedFormat":1},{"version":"9ec4c3e451a1c57b7d7ed2e6a0d028dc95eafbce71afde3cd6824d446147229e","impliedFormat":1},{"version":"ee9527c1d14fd23907631e7fa14a4dc46800224fc4c7ddde1613fb261ef2414f","impliedFormat":1},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"6a1197b37f8f406bfb74528ca1fb90659c6d1a251d472b1c65affb5c6a6ba5f8","impliedFormat":99},{"version":"516c53364c6b242591c65afc8b0f0f0cee74ac8a04f52470a539fcb33da2e318","impliedFormat":1},{"version":"77088aa8cbb159a172d9d16159b324686f2f11626f27d90a24f6ae4eaa76f947","impliedFormat":1},{"version":"e8ee036c1281885b9cc58f9d1d47472037d080a45b44a3ecbb8fea445e87415d","impliedFormat":1},{"version":"27679e96d1bd38c5938178aaf4abe8627493090b63d6bae2ce8436e6a87ebe4d","impliedFormat":1},{"version":"cca7da500accfa2e8689e453b1d74d05bcbf1dc6ef86f12b8cb1518a880adffa","impliedFormat":1},{"version":"2836592fc2f0999359c8dc0fc2164b933c3fc25a8460440f5aad860e298f9066","impliedFormat":1},{"version":"da467b8b3222251f64abc606e41591d55b4ee9aa9399c61c5d2fc7ad3818a6ff","impliedFormat":1},{"version":"312476b9c5aa822a32c969ad650d1b475b631506af9a1448abf2d714997f7510","impliedFormat":1},{"version":"2dc955a0fbc3c0b9a49bcc3ffb9dfb31b3a53af0db862260dd4f824c6b4ff36c","impliedFormat":1},{"version":"34ee3dee7395410a25936827e8989269bf0008fb7b1450cf7bc4639a69ff952b","impliedFormat":1},{"version":"8afa52ed2535119e81a78754b48c1335547b38f4953d6ef2c5c41f11a56ab2ec","impliedFormat":1},{"version":"0c904d0442caed7effc17e2c70c7c96df0b34797e1adb9999ce5e5bbbf7e1471","impliedFormat":1},{"version":"4e42a180e6ad34da29c0f9e0e34dfe728292d4148aeb1a36e3ca8e6551f0fc42","impliedFormat":1},{"version":"44548e0a6261758602290dd94c545ced5fa357ea9c050cb7ad0e200d14f6c435","impliedFormat":1},{"version":"f998738ce121ebf5e8546e6da8453e801520f2adefc247ac66e1afa5793214e6","impliedFormat":1},{"version":"a5a967b9bd28c5dce7236418159bcbc1d174fcf83d64a0254fa4511a0528a23a","impliedFormat":1},{"version":"b0a9ad197e65b7c962341716c12fe5b4cbc359e451d5dc05b1fcd44dda8ed7c5","impliedFormat":1},{"version":"4a90ba17d993ec41567fbc17fa61afa37a658a8abd193f8b1a9e05b7952ed52f","impliedFormat":1},{"version":"1f636b80d86b158041b927f75b1f9c1164b48002b326f6923610ad8900e1b4bf","impliedFormat":1},{"version":"b8ce9ac12c6cb5915ba4efcfa123fb1626f60272114ace09e0554ede5dacbf0e","impliedFormat":1},{"version":"f116a1399a2583ff7ce15068f007e5c47d06c9964674bc48ea6e69867d0692a5","impliedFormat":1},{"version":"68cabe63e69d17160c77eeefafd83df10a4c0ec3353b6a91a48a205e9dd505ab","impliedFormat":1},{"version":"c3407dfe514b4124aac03cb4a4df6ea6e765e3a5eaade56d406ebaebbc436d98","impliedFormat":1},{"version":"51ce998c34639f04393ac8b7f8d547c70c577030acd39c08edd5059fef7280a4","impliedFormat":99},{"version":"8c39fad5cd1710227fe8e78d7f7881cc38c036dd280e6d2de8747ef3d87cf035","impliedFormat":1},{"version":"b7d6840c774f4ad174f09eb05508b3886b143d63c905408a54bf3007b2ad0184","impliedFormat":1},{"version":"5f88e6ca258419c3602a9b8006c1e478bc8492c7b1951594fb1f5e97fd8a8bc0","impliedFormat":1},{"version":"d09f6a6dab49823b554255030c4ee8d49a2a993bd02f2cff2e444b2627dffc5a","impliedFormat":99},{"version":"26dd42e14079bf0f83b4c3591e260e55d5bdda6162fa3a0f418b2c9c5bde7974","impliedFormat":99},{"version":"38e322fa6a18815f30c6a065029ca96844aa63428b37c3c4bb913f9b07fe6c89","impliedFormat":99},{"version":"a62075dd9999f04f8e5fd1c3d675766f7641bb6dfa6596dbdf000617831c800a","impliedFormat":99},{"version":"0717c1a24cd66da2d50833ba78f89d994d1ebe494e0105ac67caa1e1a32a298d","impliedFormat":99},{"version":"9be30d4d0514bc61325bcf7587c5b524d8e485ecd534e343e666687da4670897","impliedFormat":99},{"version":"84869cfa70467df7c1a276faf36a31acf1885c4883f7077aa9d28560eaa499e3","impliedFormat":99},{"version":"e3e20ed4715775989c0ee8c2be8e657503503ba75c03defe13b99dc317baf3e7","impliedFormat":99},{"version":"ba1c11c99629934d58eb0b8f8e6475f0fbebbd500d1e646cdbf51375496c3ef4","impliedFormat":99},{"version":"25f4844c43db0eafda03c8b32d5080a66b4d9f5aba6d06c60a0af370705270dc","impliedFormat":99},{"version":"a25d926b192ec6802424460bdb7f0c7b89042bcf3f4a14f1f9b76f2da4b05062","impliedFormat":99},{"version":"9a1cb3741e94561a56bb4b9360220cfa5d64f02c2d51e35f59e433612638ee77","impliedFormat":99},{"version":"743e3303fed6823026dba4b34833ee6b59779678fd7daf64e1e9049114016b1a","impliedFormat":99},{"version":"4664cabfb4158ffebcb583b60e6730dae651d15049ff610ee3ff609fe23249e3","impliedFormat":99},{"version":"d2f06037b2b81794c9159972ede786f5d2b0f77f5e809f5427d838c6dd004603","impliedFormat":99},{"version":"e73bee9591d6cb8f082e5a9799e715881bcf1b70f85ae1277e69ea3518a89835","impliedFormat":99},{"version":"c8deeb9589ff4f16637e2b47a676e823e62e93778110e0ef74248bde75dd4e01","impliedFormat":99},{"version":"cf4bdd9324f9116bf29daf9add3fefe4e609be0dc3bdba1759cf1a6654047726","impliedFormat":99},{"version":"48ff4dab14889a41f5b0b94aacb853b96f8778888167625a42ba7a45250a15b7","impliedFormat":99},{"version":"0b7ba5ddc48474cb3d2b23e468e23919e583dde3ec8b473b3385df4f0e443c59","impliedFormat":99},{"version":"d3763a4abd763d825a766d636661ee3ec52fa8477eb63c243b8dcd033ba23789","impliedFormat":99},{"version":"f4377e81d50af3f689cc5dd2005be3b79dfbbcb3f5a0301c843e8daf1cc9ddda","impliedFormat":99},{"version":"ac1e8ae42e98e9a296d467169321f4cf8802643302f619b025117c4ed5a2d200","impliedFormat":99},{"version":"4cdbcd7e8e8a5beb593e726a2abc758d54efd4828048dce812b4c94fed24a62d","impliedFormat":99},{"version":"8b616f11de7c5c0adb0a075c0935b9caef3d46d7fa10a8e09fdc813fd4062a0d","impliedFormat":99},{"version":"e2ef2006aa0a9b806063cb510989bafad85e71f21cd7e25783b8876203594dc7","impliedFormat":99},{"version":"5683b6c327ab05195ba14856985488b486117687e3f1b94991e787b25fd6cbb0","impliedFormat":99},{"version":"545622361a7b2a9700ff3ab1abadabc09284251b8d21bee64514a9ff542c63ca","impliedFormat":99},{"version":"f26ba893d9cda649365c19c9929d53ba069d829caa98dea1ad3c90374704cf54","impliedFormat":99},{"version":"9eea04c6c43649983516ae586e2b40ea99b808552d3ddf8a0b7725a490c5914a","impliedFormat":99},{"version":"4179d52fc45e3c72cab28cedf19d10a915522d5f3f83979e61213137bfc794e9","impliedFormat":99},{"version":"3c628794e72068afb3d10eb8e7022f2e7e66594981edae5d24fbdbdc3a34d412","impliedFormat":99},{"version":"2748451f1cb5d1594fec48577685ef0cdefea02fea292873b9ab74aa47ff57ad","impliedFormat":99},{"version":"cece3e0e89f3e9a526ce76bf9bf3aab41bf83a58d625558a671f9058b5e822e6","impliedFormat":99},{"version":"8f7706493348b0f5960d778f804905e68bf7564bc037a9954cc71c18d419e562","impliedFormat":99},{"version":"dd1bb0047f911d2fa01662720bf5f8da6e9cb30db7b2909f3ac4fdcf0eec34db","impliedFormat":99},{"version":"4ab90837f0df1a6c8039689ea77d7d28a06eb1bbf2bc129c271e8a6c01a0f391","impliedFormat":99},{"version":"61a830fa82a415e804b8f23a166ba5917c5401a51cd7325d51c4e345befecc3b","impliedFormat":99},{"version":"171f9f3da4589275b3ca1472e2ee0f32f4b16d5e2c41f79db8bb209433f30d67","impliedFormat":99},{"version":"e495c1011281c8900998e4001777acd8863d9c901410ef2ff2cc21174ef3af49","impliedFormat":99},{"version":"0d7db9b74a017be10aa36509dd2ae4499260381aabc6772feef677fa16f3a1f4","impliedFormat":99},{"version":"e59ef219cec3c3faab54d5cb12222a04d3e095c84abf94088920c1584832ce43","impliedFormat":99},{"version":"786c15fcfa8b821410e278a740f9dc81c44546259d1cc0143646876a0c030cc0","impliedFormat":99},{"version":"99ea681335aa97ba7618ac3db69a2e2da87da7faf8a39f822030ec4db96ca023","impliedFormat":99},{"version":"d7169a2b449d5b8e309edd84624649d04b746be48fe93b2e69bb7a85653b1e97","impliedFormat":99},{"version":"c462479720ea1932e5adc0bd4808be8ee2c83488be1012bf48f4bbb532b63758","impliedFormat":99},{"version":"d72479ce8210c21451cadef350179fbf3729c0e29005aca2d7e0c6ad031a4afa","impliedFormat":99},{"version":"d0e0354d3d4ac41cb7a67c10ca59652f8cba9eeb0929fcc878e492691f73d02a","impliedFormat":99},{"version":"fbe06770551602ccc8e240a24793a8268b1bce44de38c26a7710f7bf1702f9b5","impliedFormat":99},{"version":"e4859560e5d635efa084427db27d6e31780eb570c2a567e95ed12f3828199710","impliedFormat":99},{"version":"6f29c691b977d5fdebefbc109c896fa863e95ae4464d959cc1506f45ad01da8e","impliedFormat":99},{"version":"ddf805d002fbf463fe2e40e78a4c7d1773a62f18716ce452cc02ba185c6c9c0e","impliedFormat":99},{"version":"d7aeffb82f803488ad4f918929a3a980e387c64c395ea793f6167c9704d4502a","impliedFormat":99},{"version":"2ede90710bab4dcdef47b532a8b3a1d63b7c366b058e95c705e9d9634f29f445","impliedFormat":99},{"version":"887a73b0167b36d4aed6d2549b19c4bcc6f2f50248b20d4d10ee2a10ef0516e8","impliedFormat":99},{"version":"5e11da58473efe80dd7a2ef809509b19fb43d5301347a4f9e0bf94db061a24dc","impliedFormat":99},{"version":"dfcd3a89713cc54e2b3d88f01c2a0fcd46335865a0397e9381606910486bf0bd","impliedFormat":99},{"version":"62c9a85d5dc9da38e54f1d802b7b62b82170f3a4571e3c992f1db09f60dce051","impliedFormat":99},{"version":"56e14052acc507ace03e94e8ec6cc22c84a65db751f11ca20349a4ea396f72ab","impliedFormat":99},{"version":"1c7dde9d6e45e71504fd8ba6a9c29db164e7a8040bc1782c2a80a3098d0a86c8","impliedFormat":99},{"version":"916e966405a9923eef3123175b1d31188945917edc14027ebe5df1c1f4ba0c70","impliedFormat":99},{"version":"9f63592e11d89cc091a9fa20c3b1e107468607d95399a9ccf879cd2d82e71fda","impliedFormat":99},{"version":"2434d1aaed006bd90e40a1a51682c40ee8d8cd22521024ada73c5abc0fb40a67","impliedFormat":99},{"version":"830d0f69628cacd0592caae3c1405a3e9545640ab502f3abc1592d302c2b9078","impliedFormat":99},{"version":"2c26bbcb3898665e821d93f28d9c4b7d712ca23743d8a7a9d89e2aec794bdf40","impliedFormat":99},{"version":"c0e0fc040511ce5af4e546fabe949945c67507cf1f1bc7211448f2e6832bf0bc","impliedFormat":99},{"version":"24da13bc915471ae2004459ea4326c0a50c396485f15b27b7bfc1f9d18666ab8","impliedFormat":99},{"version":"e6f70e3c94d2b1d7c5112ad6df2dd7c2ae5dc81bc89510bbdd4478614cf80594","impliedFormat":99},{"version":"146e5c86d78b4a7ff6dcaf9835b3a6a639dd414d21a30c69df5183bca5596d15","impliedFormat":99},{"version":"50cb035ac86a71eed554fb69d93edb20aef7b557d11f17ad1719a651a646b0db","impliedFormat":99},{"version":"2e24d2d878e6b0e745d3814ccb2186520c6ffc6b3ee3facc329741c100ff42ae","impliedFormat":99},{"version":"d177736c8ef88a09946d68b19cf6fc44dbd9378495eaf95251ce009742e6b888","impliedFormat":99},{"version":"05a12dd47325e1a98a4a18c82eba8460a98e4e71b993ac8547b3d7c23b79aada","impliedFormat":99},{"version":"002e4706e836748cffa704ebdf6d5a267560f430eef443724fd6b35b8fb8cf23","impliedFormat":99},{"version":"336dbde16095ec3ea52588d098e589165e8aade95e3ebddf26b9e742bb0b712f","impliedFormat":99},{"version":"fe7f3cc32c3eb140ff166f508c50ab9391011775e53780d32d2b10af95c27c86","impliedFormat":99},{"version":"fabb392460c11d6f961b060ab890222b2d812f1cbb86f95da9499881013fcdee","impliedFormat":99},{"version":"c6c694fe37d60819f29e998c03d875609d07a2f3d2a280d096474823384bff70","impliedFormat":99},{"version":"bef91715ce6ce4df501ed2fb71a28f24b3436c3bb7b8265987dfb4e532faff40","impliedFormat":99},{"version":"82e5bb555d1f1b9344b367e2761eeca6609ff1bc69908d779660e0ddb1c192c3","impliedFormat":99},{"version":"9c1f2c228191fab42ccb48fd3322f5786272c867b942bf3a6738f7e3ed9baa03","impliedFormat":99},{"version":"389a2c2135dd3de1844b996d661ef3a5ffb978356994841fca0f0a99b1728e28","impliedFormat":99},{"version":"d0b15e7d5e699fbaf267f2de6e650b29ce25c0cec65d9579928aa8e511cd83ba","impliedFormat":99},{"version":"6f2a826f77810913e18a6a5ac87e5783f600961d4d7bc20315db13f69e2280de","impliedFormat":99},{"version":"3dde2bf37c65066fabe0de6913b8eb438813c029df9ae93c9251c8e56c0d6d2b","impliedFormat":99},{"version":"e0494aecf0482850786831665c0f976125882c17084022efc6f8a51443b3a7f4","impliedFormat":99},{"version":"ede7ecc62da0236596749292448b282d9c5e846c95e107d6e87720204b792250","impliedFormat":99},{"version":"557981373fbd676739d62fb4aa7b601a639bfb39f7b563ab2c9a2350aa5d7298","impliedFormat":99},{"version":"078045f76bc547eeae562dde79c81e2565be6fecbdbbc4bfbd03fd16cfcad523","impliedFormat":99},{"version":"131906682a56016d19849546fc5f9e0076b4e35bc2c5af362d79a50998215d4d","impliedFormat":99},{"version":"fa2d827d435777dbfc4a41a70d836b6a401bea8f77903cc22f939425f9da0b8b","impliedFormat":99},{"version":"347745ced980813dfa41f93f897958dae58415a00b64a04d1b578b3ea5ec9d5a","impliedFormat":99},{"version":"04783d0830346173973d5283d10b91fd7d6c1c0aaacd93a95455ddedaac4fc0d","impliedFormat":99},{"version":"4f66c595621f6dd5c693d12c122def1c9eac9c48ace86deeb7c1a0fe54d63c61","impliedFormat":99},{"version":"1ef3cc7b03643e330cf9bcaeb42257a19f573bfafdaf51e2e45e52c19e20c3ff","impliedFormat":99},{"version":"6185cad87bf4da80c49a2f7a06af8e3e47eab0bfb31a9bf49520989b1b86056d","impliedFormat":99},{"version":"4fb67ab661063bf8f4a5207c0811c1c88f2a3b37ccd3bbe23879aefffc9f5d59","impliedFormat":99},{"version":"3b62e6cd4e85dd59752ef78ccae0919eac2cc92f6b6d5e3fd84ee68c9286db6c","impliedFormat":99},{"version":"c29920984abec26e3d47d9a7edc0b87c659e230f5b402aca0039a8eaeeb07ffe","impliedFormat":99},{"version":"322e42883a917e0d6d02edf22352627d26e7256209ede0e0a98ea25d3ff2303b","impliedFormat":99},{"version":"bcc4218ae8d2f99608412f5917a663c7c764da0dd63be12d01ec49bf0148fe70","impliedFormat":99},{"version":"4136928c1cc5825cd17ecce5ae4a1671cf0047679e452d4886cfb33e74fed5c7","impliedFormat":99},{"version":"21f4388f6d904f8b0d17565fb331eb25d0f2af0704ed7d6247af4cc9631f7c67","impliedFormat":99},{"version":"546b944e81166843668e7b7a1153ccd1e565834ffc29e1df38aa6d26de9e1c81","impliedFormat":99},{"version":"edc13b397bf71ec37ddaa3d69e5066dfc04400b4b7741cf422dadfd421084e63","impliedFormat":99},{"version":"db74c7051bb3ab4c39cb054b885585cbe6bd843af77ee82883e4cbbbd804acdb","impliedFormat":99},{"version":"63ed74c721b55f614bef2b233b03c7e56377b0e38ea16f1dc3fc57a06ce2ca8e","impliedFormat":99},{"version":"ca7ed7eecd42535c1480b5bde97fca45f3ec7f9fe7fe7879bbf1eee89ca3d4b7","impliedFormat":99},{"version":"8eaf663643a71508c15c541525c04fed61f0b0be417d4408ac4628738bbf6597","impliedFormat":99},{"version":"83a1e484d070f407360683f6a34e7320d159a33d86b7681881bb268a495fe113","impliedFormat":99},{"version":"3a39402a2efbc27d027411edc93c306b26ddbcfde48d1f2c88056b9e882da94d","impliedFormat":99},{"version":"f8d0e96fe8f2cbb5e617eec5f198ab78e13ba2c66176ad202b287aa3cc667e23","impliedFormat":99},{"version":"38212cab675d55653f3333a27f6493e13058b5e20cd5f85e860a56a69176b14c","impliedFormat":99},{"version":"f5dcef5516ecd8836256359ed4b9c6bb8c73fcce697d1c343b11ee8e7fd15a8a","impliedFormat":99},{"version":"35db3137e68a0b971401dbe65f565931a4b27b3a4f5eaededa352287559ae129","impliedFormat":99},{"version":"da14f80dc904a20fe5a98009f117d8f977ad6d50fdab685e75d6b38322ea56cb","impliedFormat":99},{"version":"ca90e5e191954b9b8c43ed5d5bc787107c071315c4acaae515e7d918e8814e15","impliedFormat":99},{"version":"8ef0c5c7cba59cbccd0ac5e17ec42dc4a8250cd267f9cdb08a4dcb1a099068ad","impliedFormat":99},{"version":"77c16d3226f1b9a731e0c022b9364c7e6b612457c65c589bcee20e3d43d9e7f0","impliedFormat":99},{"version":"1f142b1a6a8b7b29da43a88c8a5f6bbad28f7cf1b67457596ab6d71bed584e8a","impliedFormat":99},{"version":"e3d22580089dc35a84d44d4b936e9e8b4b9f923ab8f65d854e2e3439ebc59fdc","impliedFormat":99},{"version":"c67a3535fe218dac271adc4d9c91cabbcf99d09081dc3fe3567e3a354bf632e2","impliedFormat":99},{"version":"7670372101b08f0d0a2a8cf4d107d969df407a74cba20e9f3991b50d9d3c590c","impliedFormat":99},{"version":"00e5569a05e32c005b18db36cf4e0fd477d8e98d58b82489e4c0abad95d5500f","impliedFormat":99},{"version":"fe831d90ec6b5e04075ae831936f1e2049cce2473ad1aecf3d5ee37d66ea84cc","impliedFormat":99},{"version":"1b18a3c51f54d41ed66efe8f25a350c164616609f8934c88591c8b44a59396a0","impliedFormat":99},{"version":"622ebbd7d12ba6519bd5dd3d23892ec1f79991a9b15d09b77d8c7dd1ac32b8a4","impliedFormat":99},{"version":"b68d0a7ff467e31d150f3c86ecacf8a4342c001254b363ec6f871ac32a9c81bd","impliedFormat":99},{"version":"d0622e1a5d9ee2b4b8a1a6db2c0f02fc34f4f865d7ece6ec86800074210d2f4d","impliedFormat":99},{"version":"5300e082fe9398613c3b5a4975df67318951c46b4a033d159bbe082793ca2c3a","impliedFormat":99},{"version":"be05176f0f7347f4a9faed9a400c182f107b7499d79f4c6e67ec3d830ed6cde9","impliedFormat":99},{"version":"498b8e59b7659c0ce11ce3323bd0d23c923e21c7290e5bd96ce0f3ca639fb4fe","impliedFormat":99},{"version":"a10e98722e80f0a8fcf55effa525ba0dd00ed4c8c329cfb46d98764d6a6c0e7c","impliedFormat":99},{"version":"12816e95a6bc1b4a98195c0e6747b33cfd178f0424579a3eb21b49911283f79a","impliedFormat":99},{"version":"ccc9e8f887951895386cafcff62aff2617397584ce48ca891646b901272b9d12","impliedFormat":99},{"version":"bffc26bac30d45f1e5fea885f17cafb6a943bcc21fd1122c71b9fe466ece8fdf","impliedFormat":99},{"version":"82ccbd00eeb8a81a8ee882c6dc8de591d2c174fd0bdc2cd8e9617f39d88eb52b","impliedFormat":99},{"version":"5ed89243642701b634f5e9930303ad3bc12f4d2c15d80b70f2996f3e6e2d2f39","impliedFormat":99},{"version":"ec51f41663ac8c7361bf8dd291ca034c626c4ed3ad579cb76edf5d3daffabfaa","impliedFormat":99},{"version":"fd4ddb3d82b68edf2f7dd1b10ca66c5b108007c46067d0dfac4167a4492577cb","impliedFormat":99},{"version":"8c5414d8170f8fca7d8cdf74dba186370e35cc895c3e25f10ce42fff3ef9b49d","impliedFormat":99},{"version":"2caa4ad00b1f3ca5b07ff3d84beab2d9a4a8d841b677aa1546b78054a890a902","impliedFormat":99},{"version":"5ccdc9e7fc05b209cff185ce989c26cacdc47098f2489cc5d0b1ead20bbccbc4","impliedFormat":99},{"version":"40f467a354f69baf4790aa5e17726ef9adec4df38ad553ff982a95188fd822ea","impliedFormat":99},{"version":"c96415ec4a5ff2202c8f5db2b8163a605100b6b47435c5b31d8280e06233958e","impliedFormat":99},{"version":"981af6a24b8e1531dd933ff6df096a7a50dfd79f24c5e5be1134b684465a807d","impliedFormat":99},{"version":"d3b51ab522194f5ffd145f57fc2b2017e35d11593a8a5468fd3da7767dba0d57","impliedFormat":99},{"version":"85e1ca7719d73273b0b07356071e046f27c039441666504e6143600f0f5de5eb","impliedFormat":99},{"version":"14b5a5227655bff3a02231986be2a1ab4d2749584147c6f93ad6167d31d78fd8","impliedFormat":99},{"version":"acd38b40fa352bfb59a9548c941e68f4d0de0788ce9ef837639999b76b57dcc8","impliedFormat":99},{"version":"f68e3a3eba1a531a71c8cb53bedafae2c25c376c147e3bc6ec96613a5de9dc84","impliedFormat":99},{"version":"8c3f672ca4179a0313a67aa8525384d1f7a3d7c692f4f39a3482d9997389381e","impliedFormat":99},{"version":"367ef08f1d0de5ec4d4786cb8a1b8a17abf395bb0c5f8d151ec10fb66a2ce50e","impliedFormat":99},{"version":"ede4a9299b475e71baffcfd20b9b5056f77b8da69e7c824692fa7601be181ce7","impliedFormat":99},{"version":"c92c476c4463a4a96da5ed77010afd4bfa94944e298359bbff940cdde33c5f16","impliedFormat":99},{"version":"a484890e7212977036ce5965e7ca7b49e53436a66906a29093f91d4e02260fdf","impliedFormat":99},{"version":"4ea2003d86a9c68928ef069ce548c3e6ae35cbcb34184a71f1c566dde2160cf8","impliedFormat":99},{"version":"44160a562ec65036229f1cd9c7a52ae50eb0956a87e0738afc9885bdcef8b7d5","impliedFormat":99},{"version":"86cce3a976a179625f84a38c02ccbbeb53d3a6e45a5c156baa63eca6397a8ef5","impliedFormat":99},{"version":"fb6e7067ab8cb5a187c346696365ea4ce478bd9ca2627f9c2e540024fef14aff","impliedFormat":99},{"version":"045fe6d9e971df69d53ed8f1551e60c4849b0529e407e5960b31096418fa8346","impliedFormat":99},{"version":"0974c0312c1fe25e56e8030b1830ce8bc071a973714ac6f2409894addc346fcd","impliedFormat":99},{"version":"3d8f30f101b90c81573fdb4c90d925e7572d9d8663a0e215935e442139530363","impliedFormat":99},{"version":"3493d3ac411c6977f391ab438a9940c3a8e06dc04b7e2d84e0571a30aa224314","impliedFormat":99},{"version":"bdf518ed49e9ad6926ecaee24a183828a23a061a1dfac8788cfc09da02a0bf91","impliedFormat":99},{"version":"0a20f875729ca5de76aa486ba9cbb1913e349ae2d7d1c2e1ad3b45e142ca815d","impliedFormat":99},{"version":"1870eb1fe1a14d19041559a003bb79753347b6da6d87703548b6b20faef30e6e","impliedFormat":99},{"version":"e1569a90b610dfa379985baa3265504471efa3a12872a47ec6e70b625d86c3ce","impliedFormat":99},{"version":"12bed6ede156ae7ec7ea1839c2dabb5977515057cb108b3b371b6152a3703528","impliedFormat":99},{"version":"1a59ec28e300513a4ca2aa9bba6c074326a0fa54d6c5d5463cae1e3b4c9e3818","impliedFormat":99},{"version":"56610c98e3766b4946da71af1af283b80fbfcddfad19615ea2810db83d061adb","impliedFormat":99},{"version":"19ad29ec1b7b1b9127206aa207fa8e474703b92a812e1dbe6c8af96f8ceeaec3","impliedFormat":99},{"version":"4e1949bcfbde9ae075bff5b15ce1d3a401624840cefdbabdd6516004b93b821d","impliedFormat":99},{"version":"d570e59bb706b1f442c1c7f12f252a215fff1ed867c72275b525abcbba6b5b86","impliedFormat":99},{"version":"516c53364c6b242591c65afc8b0f0f0cee74ac8a04f52470a539fcb33da2e318","impliedFormat":99},{"version":"900bf14e9d1fd9abff5771b55fbe463bd1b62f41739cb796607d297a4bb4be18","impliedFormat":99},{"version":"3f83aed66929c61db714db9be7c95b41b83729ac693845d44374539874f5a754","impliedFormat":99},{"version":"e97434f04631c027264a37897935d5686cbb53547128043f8ce9df36a62f8456","impliedFormat":99},{"version":"49d38dec73850de29da6e77ac4636b7195d18ef7c7695851a2f2fe9fca859323","impliedFormat":99},{"version":"33e41623f36fd2a950c40acb481d938d186a85436eeca076e27a1bf799945148","impliedFormat":99},{"version":"d2b232bbd87ffa5c13ac5be6bec309378696f99bf8bfbb859f7ce7d9469093d7","impliedFormat":99},{"version":"05abb26480af12e4228a94861c7ef2c6dd2d1a3522f2e43c0a24619fce2cf771","impliedFormat":99},{"version":"ab5f2834d5f3beae5c29eabed086612ec6f47b4e153670a3830ccb0e9fb49170","impliedFormat":99},{"version":"38ce3311fee1438e32f767e068dd496dd923afaf32816f1d4e521a3eeed59603","impliedFormat":99},{"version":"aaeba6725991c5b9a7a3cfa3fd375b2fe7e3a6d14d37498970654a009dcb663e","impliedFormat":99},{"version":"0bc153f11f30e6fb856a2a6c50970d386aaf7daa93ac106cd70920a1cb81841e","impliedFormat":99},{"version":"0a451b08902ac385967b8a30b1f71fb1faa56f5f934718265f221b98fc2b807e","impliedFormat":99},{"version":"52db5fc6d8fa0809b2110d96434a06ad26776677e825a10f93fe133497f6c93b","impliedFormat":99},{"version":"8242c4cae0cc2d4cebdce1cb1c3531c9dba3fcac2d6432b80dea1a828230b5a6","impliedFormat":99},{"version":"10a6ad78f7d2bba1d215380f0e71ee2bfab010bc4a37747573b2f7c02f162329","impliedFormat":99},{"version":"fed5b5c20508c5f84a929161f452dbf769cc2d2ee1371b94ddc2feb418a0cf70","impliedFormat":99},{"version":"43e75374d881d5c1e281b4263e1ff3e6a6c14f7c61f33a3f69738349fc5be8cd","impliedFormat":99},{"version":"7b9141eeefdfb4684b5288cbace521a20074ec0b7e0219bb25086db7c1963671","impliedFormat":99},{"version":"4289204445b85c740954797654b504406befd2168731ec18efffb3ea22674a5c","impliedFormat":99},{"version":"1124eaedcfe9126dc648a6284bcbcd0138d8badb8678ee5c1f084ea606d9e66f","impliedFormat":99},{"version":"214a581fbe6902059a64de2bd75c56b6030c6388c29de93c4296380a99c04e4a","impliedFormat":99},{"version":"78b758d401e53f5319bc143ebdc7714ebe0f1e94fc3906d5e93816e5736bf299","impliedFormat":99},{"version":"c1ddf7e4c5e0ed157c107f9a2fad84436d897d4c759f1a5a1f58e2c2be49dea0","impliedFormat":99},{"version":"5ea8892dd82ebc8ad629bdbc40b32fffb2b817bc23cbf98cf7dc77677ccd4fd2","impliedFormat":99},{"version":"9826038dda058b2cf96784bf3ac8d2845b3cc70d3c84366a80dfcc3227df8979","impliedFormat":99},{"version":"6a6eb39dda31b83be3594446f31b6834e033364d48b114ad6bec92f4eff8eb50","impliedFormat":99},{"version":"bade739298ee5cd485966b3f2812cd94ed23be0bd8991624bde84db9e41e4240","impliedFormat":99},{"version":"b103dac21b2d7b63c415f40ca0f73b097837de50a117275261b3cbcf83dbdd50","impliedFormat":99},{"version":"1f93c95a5c44d033b3c1ed7394efe9755777c2f4b8446f4774ef2a16bca0b845","impliedFormat":99},{"version":"cdc05b269edf97d804a95329bdf2e76bfeca92e28872d970bc7734bfd2cde88d","impliedFormat":99},{"version":"1bd570877f9b215022dc4d4bb967e59cea8628cb4c02f6a4d91319b9ae64f9da","impliedFormat":99},{"version":"3f4546c49d4bb7ac63ff13fcca45c84c5e775e9cdb316620cbfb226436b0f54d","impliedFormat":99},{"version":"2928c4312d5e9a23c667625b75a03e39867acdaeb64f56c2a89a79b71a0112f3","impliedFormat":99},{"version":"be0e2944a9197e290e74069c9f33fbe2ab4eee959d567bf43e2bb5b937206ba7","impliedFormat":99},{"version":"4e6824d58b965ff329532b63fafb895784e517f50e579c1a55458bd0baf022c2","impliedFormat":99},{"version":"62452eaf0db2c4537a76f7ff76950e4ef43db0d9804566234fe584a4f0687208","impliedFormat":99},{"version":"e4f4f415f6423cd7da100ae39bb8f1c2893fd0de693f8b693fa423b6a22cb670","impliedFormat":99},{"version":"9c7a3147d394865cf02f98aa11cc91259290e82a7d899f174629e5efef874c57","impliedFormat":99},{"version":"e21859a9e2b82b9e405a8d6a10df48e4daff9355495d128b5909cb1b341e23d3","impliedFormat":99},{"version":"292f642f980869e510aca941781895f4f6c6f439250c38bcd60642d41927b85d","impliedFormat":99},{"version":"2d3f881ef50be9f836debf6514bb485f422fee1545b4770dd3798a9cec37196d","impliedFormat":99},{"version":"a0c7681a4cb802ed6a32e41a115c69539562a94e55c79891afc7ad5f68c1fef6","impliedFormat":99},{"version":"dcbc3cecf73f68c9d63280f3c9747bc6140b1eb9d8b5e5f04de58ea67c564a70","impliedFormat":99},{"version":"9da86ce9a1550ca7d649bf0a5d9afd5ea08af844309c9c4941dc7a72119056e2","impliedFormat":99},{"version":"7b86682a3abdade9ceed5cfb5503097496223b93fc257de6795c4736efa841c1","impliedFormat":99},{"version":"94fc87a2a7387d958dbaaa392225a533bfce92f6daff79d9e11e921884b5590d","impliedFormat":99},{"version":"f41d35d2248604bbb6ea7dc64a2e024926ccc00beed30e3d2f356589bcc89a7c","impliedFormat":99},{"version":"07afa56980800740ec44e0b2e08d37d31c3ba1bcff58417ab7c26478bc37e4ac","impliedFormat":99},{"version":"960fc68443fe84caffb6f06af4589cd11e05dc89835c3b56d809ba46c893b6f6","impliedFormat":99},{"version":"02b6175908b56ca273252e8f734cde6cbc88c298384f4b397e63e41240184dc9","impliedFormat":99},{"version":"59fdde76b9d1518ee3a6711b14dc0b7582b7f9cf702c0cb8acc0bda3aef9e1bd","impliedFormat":99},{"version":"3598d4008da5c92e0d5eba20db0d8fc081ad9b6584308b77c9c305b6c002ea6a","impliedFormat":99},{"version":"1489b59606b1221f81a70e9d124298282e2b30d35077a6a44dee5d0919400c67","impliedFormat":99},{"version":"7d3eb24698345bbeb4bbc791fcb6e64f8dc23dba9c73157297ac95c92c21ac39","impliedFormat":99},{"version":"bab0c52d8ab84e578191ac559b70f9bff9e763ff42b5a0f7ace8d134785a689d","impliedFormat":99},{"version":"50dc335fb38fa5b552b6377833c1a77d4f406c4c344589bea29d4661ae8e1810","impliedFormat":99},{"version":"477b09f880a9f9364b68fe02e237f3779fbffb0761bfbc3f77fa895ca49c44ce","impliedFormat":99},{"version":"d85a0edc67a11fa750331746b55fd5af4b41f1bd11e550ff7090abc9e9f83ebc","impliedFormat":99},{"version":"204ef1918267feb2040caad874caebd9bbf4f018367517750eeae16d880b0698","impliedFormat":99},{"version":"be789dbab62f36a20dcb50cf0e67d0ef6b3e3cac17bc0aa9bb30bbe51756ea63","impliedFormat":99},{"version":"20a6b98adf98f5f826f2d2c2738599837586e458b7ed5eb4a1494f7caf00d22d","impliedFormat":99},{"version":"d1658de6ff4ccce2e9cfd8b11722a6279bd3524644d0b65e3e8fc6b69b5ca49a","impliedFormat":99},{"version":"c9c3e4dbe8c9598e86b9279d4baacee50d9da44e62192673bd84a15289adb115","impliedFormat":99},{"version":"1c3702de0a84f7a5635ea1c36c08ea408fea02cf05be6a5527788d6f03792849","impliedFormat":99},{"version":"e88588861f78985ee212de6a72e45b445e5e04286b4ce1eb1d28d72bb781e269","impliedFormat":99},{"version":"22b9f52673fc11b687471594d6080d4319999e4d98903679a4ba94d24b056426","impliedFormat":99},{"version":"76c5f9421476e8762a83f970028b5b7e9ac13fade254d40c04c188f87be8fd7b","impliedFormat":99},{"version":"802353808bbaf39f8ce455fc7c459d39f13a2fefcf6f18a78c9ea0c61be089eb","impliedFormat":99},{"version":"6378e4cad97066c62bf7bdd7fb6e2310f6a43cdf7aba950a2d37b4b0772c0554","impliedFormat":99},{"version":"a057b62631a72f836a8faa37332f03324b9610bf1bd7781fd6f93be063cd10f5","impliedFormat":99},{"version":"67854325113331bf374a49bed5892005e1dbe9aacddd0ddcc3c99aab9326e818","impliedFormat":99},{"version":"4f1a03388ef7839da441ccd475de39739038e68726973f0855c85c6f1ff4ea93","impliedFormat":99},{"version":"5ae5fb504fa17de9b8cbfcb478d2cfcd5f7eb8f528d4f15994a9a7bd48e59a2c","impliedFormat":99},{"version":"1e2750873314afb4c8f0743362fcce1d7f36817c6aa13e9dbaef64dccfc2ee03","impliedFormat":99},{"version":"3e02766c76edcd0486eeecad81ca4982a532a80293d71a8d94973e89feb5be2b","impliedFormat":99},{"version":"949ab063079fbbcbf8a96c093b9cc465f83fd2ce49f4558492d6f95065cb201d","impliedFormat":99},{"version":"6bb43425843dfe86df05335b1ebadb1f82c6847f33a9c9c1bbeb3157b59b2e93","impliedFormat":99},{"version":"2d1c8bc1708e58c9aa73d71f89dc69d45fd00ed42841d022bbffa467c88464f4","impliedFormat":99},{"version":"098ef98a222eb876ef695e62456a93014dd1c935a218ea416e7d1b91f88e02cf","impliedFormat":99},{"version":"b22e7bf3181feab9fc0a4b5b9be4b9b187441853cc27745ad0cdfd42cbf2c230","impliedFormat":99},{"version":"269b37626ed3fc5d6aff2b3103bfecdb86ab69e5fe28933b63a17ac83a547ede","impliedFormat":99},{"version":"14c42b1b25cc31a008f49f4bcc14fa5f830ac50f6fcb6f6417a77b3df426ea86","impliedFormat":99},{"version":"55c3e286e757f731c3b80c1e6d4a567bcc6d5d512438016240e7da573a554dc3","impliedFormat":99},{"version":"a7d8759a92d738cdaee57229b2f663ea5dec33d3485faec67c196e86a76fb4df","impliedFormat":99},{"version":"20fbcecc44eec69c33798eb628fec0a5c7cdf0dcfddbadf7fffb69611bec90f6","impliedFormat":99},{"version":"f1edef4fde87d8c7d9e4a0ca08b90a55da9d62927585835c8664d62882b971c2","impliedFormat":99},{"version":"0a84f561eb0e6d447a9fdaf5272b74920ca21a21fefa75cac8d454cfce20498a","impliedFormat":99},{"version":"cae86d70eabc661dff2f46f34018ff4840228f01709c8399a9c012711dfe5292","impliedFormat":99},{"version":"c9b2516b705281bd715eeb8c72bdb0841c985a917cd0608dbfd4953f229a3761","impliedFormat":99},{"version":"e8ac4073fe7b469e55e1fc7b1540363d5a99b507839135fc97cfe5f2d0e36595","impliedFormat":99},{"version":"dc97caa5c3b179eecc138183a93629906ba0cc1aefc53d502072b21cc39e0ca7","impliedFormat":99},{"version":"b703113a1367ca66cc2c7e4157228c2e1e952836f27be87922e2a39b8ff97563","impliedFormat":99},{"version":"3d594041401ac69433c4a2ee492d356db4706adddd4f8201e7e5f542e58173b2","impliedFormat":99},{"version":"055a8104644623cec8d599b5949deb5de84534430e8fc09b460fa1ce850dcce5","impliedFormat":99},{"version":"3855fc130ceb79207abe52d398ca8a24a0bee8940a300ce3cba1f09e89b9e548","impliedFormat":99},{"version":"fdf92fc514774a632886c8666b4f23fa96ad992e597cd09057371739f6d9276d","impliedFormat":99},{"version":"2c829671e8a3e19191ea28faf91d0d7fcf30b4b2fd6a8bd458c382f9d370063a","impliedFormat":99},{"version":"8ed8fed4a67920a48a8198639658406c2822086231813b8ba50794f2be296e4c","impliedFormat":99},{"version":"72498c2e4ff630890ee5dd1f6512a4b3d11fbd5691b1639de30d6a8db4af6dcd","impliedFormat":99},{"version":"7e70002b18fdca84af060041db00ec5f148b924ffca842beff16852e7c3f2edd","impliedFormat":99},{"version":"8f8c6a79e620f8a63952de19f38927f7da119cd0a5408d7289532f68b8017d98","impliedFormat":99},{"version":"1076bf7bb08a89c267bcda49a252d5422b01376567a9a2ef31153a1ca082b840","impliedFormat":99},{"version":"0205d9fe9efd4177e0bb210da36fb6d28b1b621b41dfb973e7da0c0e2a15a5d7","impliedFormat":99},{"version":"128d9dbf77d1f05984b7739828b9c04ff27c06a6fee2a64af101c06b6ea3584f","impliedFormat":99},{"version":"39260a373e0d1336873fd918185b1d05502cab7027bb763c27e9e6f6ce5b574a","impliedFormat":99},{"version":"e45ef4794720986c7b791d2e7a94bcef47412766f2920b856d311c6a11937274","impliedFormat":99},{"version":"fe4c08b22b011d68b3625c665cc302f77bb8aed4b35853a53e3efaf082bc8e83","impliedFormat":99},{"version":"7caae0b58bdfbedfbdd1a2f5b41779a08cbf62d62f7be63cd70cc71fb97165a0","impliedFormat":99},{"version":"461766b1ce1c6c0cf0609b48b1507ef26e385e4590e3d2262f86972a7a19f99a","impliedFormat":99},{"version":"897f5e231ee098346653ef2dd691b2e5065dd224be0e97a3a618cb9f54e4b8aa","impliedFormat":99},{"version":"6559b1571dcf6616d4ea60bdf0ec5ada3c14318809d68a9cb0d0e6efaedeb0f9","impliedFormat":99},{"version":"175cdf7e9b2d7178e5b73a4f3dea1f02abe320f6585ee8a6c16991c92e4220e8","impliedFormat":99},{"version":"2be2158e6cc1b32a3b1833168c2534941c33aaa7a98dd996f7f1de73c946f20c","impliedFormat":99},{"version":"d5e3f1268d795416b81ad2cae0b15b77147878bc672cdeb19ff5dd77272da017","impliedFormat":99},{"version":"3baf2f114c2111175213039653e98de0a225aba598686fa4ae8a5d67aab4566d","impliedFormat":99},{"version":"0d6998d1c29fe00f8b5578448cc586447860e18ecb12bbb996692fdaaf05ab8f","impliedFormat":99},{"version":"987562ea1c31f04677cd3b46cbd4cdc6363f6178dbfd4db2a0788fe22947b8a5","impliedFormat":99},{"version":"0de5e8597a103c005b774f8892352a5f123a5e272924fe967b7d82305113bc4d","impliedFormat":99},{"version":"16185bd9e115626e25bca46fb8238f9ef3706c22b62ce940ae66c4e4cfde0df9","impliedFormat":99},{"version":"5711b07fe1b6426486276dd67efdee7ec4e70bcfdcaf39c6626594bbd7d51c34","impliedFormat":99},{"version":"7f81c91c6febbd59728630098f6f2b1e4afeba6af9128645634520d5681096a1","impliedFormat":99},{"version":"269296ab0ca6cc30fad3ccb911b1ff589d4a2c6ea7077c26c7ea5fe650103d6e","impliedFormat":99},{"version":"a49ef7664e1afe51062e193f0008ed621d8a3af547d994123ca44dbbb68c75a2","impliedFormat":99},{"version":"165ee417439a725fbd0a04278830c1056354556188d6000e5dc8ecd12cd3cb10","impliedFormat":99},{"version":"9539893a03d2cf718e8c38adf1a845ec0183ab455c8b257c64cd6727f57b0e1c","impliedFormat":99},{"version":"5e0f0b5968cb81b81847619fb6643f364d0eeb630e575fd0029d22c1171b3a37","impliedFormat":99},{"version":"45fb63c6d3a608b091c3baaaafe97de027a061e2f10813aa97d003b654417ed9","impliedFormat":99},{"version":"9a1bce80c36643bbc3e66c7db014c849b81a1d2d3ebfa69000f03e64545566a0","impliedFormat":99},{"version":"f438823b9ca13c413beaee87829111be171b305995bcf71d67ddd941de6dd999","impliedFormat":99},{"version":"623e7ec6876645a7e93a1a67506f3852b8e5e79ba3cb4c9a90ff8a24d3377a12","impliedFormat":99},{"version":"0ddba574bf51b1e47c502caa07ff96528b0c49878c2521ceb322a94557a824ee","impliedFormat":99},{"version":"3111b876a50a391cac841049c1683d20bf7d83eb05d5ff10b0a49689ca0dc49c","impliedFormat":99},{"version":"de84187571b3fb57d7d47f3199fe75845d024fa2c4aeb0a8bca8a281e37e9b62","impliedFormat":99},{"version":"4e302b950595396f49e539c733b44c52b77a9d3b85cc7c6fd24fcc7df1e30031","impliedFormat":99},{"version":"668eb6f044ef3e07635b3da9b29413de381299f80fdeb90e3ba5bea910d9d588","impliedFormat":99},{"version":"f75b6da37adf4f4fcb1b3e6e30099d345bfcfcc2024dc304bf6eaf40ed477c5a","impliedFormat":99},{"version":"39701d3533318e98924f5e5a4fb0ea5b49527853ae63e78e26190955c1ba4d62","impliedFormat":99},{"version":"30cb04bc8d380ecb7053659c2b42b48f87ffd05af3abe9f7b4783e07777a8d96","impliedFormat":99},{"version":"96847849b0b8472d06b023c7f6fd630cb5cb3e6129bf16c6ce58a931084c1d04","impliedFormat":99},{"version":"f15bb0a6bb20f0a494969d93f68c02a8e8076717fe7dcda6db06ab9e31041c22","impliedFormat":99},{"version":"db9d0b3c71348adf62b4c2eebd0bc872b0b3895ee6285980463f6acfe7aa36e6","impliedFormat":99},{"version":"58b8d98c9e39b0a1bab10c9a19a61d9fcac111aba5a6ff47e86525c079ddcbbb","impliedFormat":99},{"version":"a69abca4388cc76962773b4c869d5d34781cf0be92853d7bec53eac7a2f75c60","impliedFormat":99},{"version":"75cc2a2e33c7d3fe1574d9c93712950b5556dd4af48a1d1e5a657c66ff2eedf9","impliedFormat":99},{"version":"05c44f2a752cfbef15a81e90bc63eb96efcd3d07dd9b378df5a150a06775a2fb","impliedFormat":99},{"version":"9699ff431424e42dfeeb6417ea7b4d1ed66fc6bfc530748dfedebd2683fcc1b6","impliedFormat":99},{"version":"496197b06b51aeae8323da87d042ed2224e654994a3d9b5e3350df9c9576dc50","impliedFormat":99},{"version":"471b5d5986eff907c7f4b7047b54c15648495f94e219a27fd8cc91f35fa0e970","impliedFormat":99},{"version":"d8f1aa8014688d348be46e9e50b089f8694f73824c733a070862a24a3d04c0b9","impliedFormat":99},{"version":"ea13dcf835446721f0c28c0dc1c8697d470afa6be6efe2f27b4cb78276500e8e","impliedFormat":99},{"version":"93521d40a9636980e32574e7419b975fb1b400644eea349bd64f76ee808749bc","impliedFormat":99},{"version":"86b7e0f835e2d550541c27e03abf5270a42f5876e1e915568289142b317a0ffd","impliedFormat":99},{"version":"33ba2031a5be130d4e5079720755306528c86d1d7f796a48df3068a22cf90afa","impliedFormat":99},{"version":"c12196ca916d69af81c4b98076ddf863820a1d897c235bab521c8098ee46dd95","impliedFormat":99},{"version":"939c090e4abc9bcae4409d9c7fb464c8fb6b1be3e53b250682f47bb521bce1a0","impliedFormat":99},{"version":"e32c5cb1819686336a2101f31b91c2e8e06f8f8311abd1195c203b81b62247b0","impliedFormat":99},{"version":"b0a6c321551036b4f4d6f455f51cd35fcd86021393c7ae07a59289b661aeab49","impliedFormat":99},{"version":"f3f62eb4cf38d86cc7f56d0879b49656a21f2eef4fd0acef3936889327d7f256","impliedFormat":99},{"version":"683734687779547527b05fdcef60947f6fc51758185d788531e9ac7bde84fd6f","impliedFormat":99},{"version":"9334b283bedfcd488ccb33b3e942905c86fa163e919653a5379eb8f28a2d5f7d","impliedFormat":99},{"version":"a1408ce8693ff2a59d00674995cfd44517d26c254106b80111995c3e688f0ecc","impliedFormat":99},{"version":"6d828ffb6860ac627cc2504ab71fc56db50a02a458e91602ea7e5a2cc3218508","impliedFormat":99},{"version":"c418f31663f9aa18537f6443172821265c078de18427ff136a24c536e76b7fc4","impliedFormat":99},{"version":"8c56208b56e99e6c68a6ba42dbce96d199bf772cd55899cb154ea9a3422f1989","impliedFormat":99},{"version":"36e0e10016a1c13bfce8ad685a52c4a55fdc6985c5eb658e4e7aa6b6a6f0655c","impliedFormat":99},{"version":"8c357660e14e4ae047c44211f7d024d48eacf3d5ad6ac805095a436a4d3e268c","impliedFormat":99},{"version":"33cb723eea3ced280f163fa717045e233b801081a64509d4d59b47620fde9ef5","impliedFormat":99},{"version":"c26b1edf95ecc0868464ceaaa76495214b4bd09aff7701f252ca91755727bb46","impliedFormat":99},{"version":"e67731d353b0f48ec4c7b1cee2358e2b7b6ea56c86775f2f3c07029b73b8bf06","impliedFormat":99},{"version":"e2eccdc38e22cc3882939c7fca91570a8379112c03f6206986e0bd78afeed21c","impliedFormat":99},{"version":"77b463688f41048f449fa30b45393b81fd6dfe3eb71f7734c1a6d580373b6a12","impliedFormat":99},{"version":"b6ccce9156aa85ca2e836bc572d4697800739ab008b0a6ae9bfa0361b8baa04c","impliedFormat":99},{"version":"07dcca6e9f155b79d087216735842ab1f7c020ce41f095507afdffecbac06a03","impliedFormat":99},{"version":"e05f14953944c6b7f9c8a51c5739cad11e7ea4e441fd5659cbc3a5ebdc28bcfb","impliedFormat":99},{"version":"8d204669e89ac66eb2fa93e17daf42dc9fa33b3d865158327819df72f4fa3f1f","impliedFormat":99},{"version":"941c51312144ba38e2d86c081d212bc1f22f64eeb1dc342a1c7aeaaece7a7770","impliedFormat":99},{"version":"3b6fddf2afbdf36f7bb869ccdeaffac8d53759e527e3425a6b8df4dca616d1fd","impliedFormat":99},{"version":"8d02691be767f8b3c2120d2a1b7095f21aecb3cb90100dbef712a6470155df50","impliedFormat":99},"bb9e87e287ff42d92a08d56ffdb54849e0bd505b24dd34a4ec73128855cb4fc9",{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"fe93c474ab38ac02e30e3af073412b4f92b740152cf3a751fdaee8cbea982341","impliedFormat":1},{"version":"476e83e2c9e398265eed2c38773ae9081932b08ea5597b579a7d2e0c690ead56","impliedFormat":1},{"version":"1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7","impliedFormat":1},"ebc45b7e8b8b5d637fc0dc03967eab6332748edecf2940a13fd72ccc97ec7432","8d1cd028c0a849bdc60938a01868fce85cedf5b4e77023faefa838fae099e058"],"root":[449,971,1026,1027],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[449,1],[1026,2],[1027,3],[971,4],[250,5],[492,5],[510,5],[581,5],[582,5],[583,5],[584,5],[585,5],[586,5],[587,5],[588,5],[589,5],[590,5],[141,6],[142,6],[143,7],[95,8],[144,9],[145,10],[146,11],[90,5],[93,12],[91,5],[92,5],[147,13],[148,14],[149,15],[150,16],[151,17],[152,18],[153,18],[154,19],[155,20],[156,21],[157,22],[96,5],[94,5],[158,23],[159,24],[160,25],[194,26],[161,27],[162,5],[163,28],[164,29],[165,30],[166,31],[167,32],[168,33],[169,34],[170,35],[171,36],[172,36],[173,37],[174,5],[175,38],[176,39],[178,40],[177,41],[179,42],[180,43],[181,44],[182,45],[183,46],[184,47],[185,48],[186,49],[187,50],[188,51],[189,52],[190,53],[191,54],[97,5],[98,5],[99,5],[137,55],[138,5],[139,5],[140,42],[192,56],[193,57],[201,58],[350,59],[202,60],[200,61],[352,62],[351,63],[198,64],[348,5],[199,65],[195,5],[197,66],[347,59],[267,59],[457,67],[458,68],[478,69],[460,5],[473,70],[474,71],[475,72],[476,70],[477,70],[466,73],[465,74],[463,75],[464,76],[469,77],[470,78],[471,78],[472,78],[462,79],[468,80],[467,81],[459,5],[455,5],[456,5],[461,82],[196,5],[450,5],[454,83],[452,84],[451,85],[453,86],[594,5],[978,87],[980,88],[985,89],[987,90],[218,91],[254,92],[408,93],[249,94],[237,5],[233,5],[216,5],[398,95],[420,96],[217,5],[379,97],[258,98],[259,99],[346,100],[395,101],[364,102],[402,103],[403,104],[401,105],[400,5],[399,106],[256,107],[219,108],[294,5],[295,109],[236,5],[238,110],[220,111],[278,110],[368,110],[88,110],[252,112],[251,5],[407,113],[435,5],[228,5],[322,114],[323,115],[317,59],[1008,5],[325,5],[326,116],[318,117],[1014,118],[1012,119],[1007,5],[394,120],[393,5],[1006,121],[319,59],[360,122],[358,123],[1009,5],[1013,5],[1011,124],[1010,5],[359,125],[1001,126],[1004,127],[285,128],[284,129],[283,130],[1017,59],[282,131],[297,5],[440,5],[1024,132],[1023,5],[443,5],[442,59],[444,133],[84,5],[404,134],[405,135],[406,136],[240,5],[227,137],[203,5],[338,59],[86,138],[337,139],[336,140],[327,5],[328,5],[335,5],[330,5],[333,141],[329,5],[331,142],[334,143],[332,142],[215,5],[231,5],[232,110],[268,144],[269,145],[266,146],[264,147],[265,148],[261,5],[344,116],[366,116],[979,149],[988,150],[992,151],[411,152],[410,5],[83,5],[445,153],[205,154],[320,155],[321,156],[312,157],[302,5],[343,158],[303,159],[345,160],[340,161],[339,5],[341,5],[357,162],[412,163],[413,164],[305,165],[309,166],[300,167],[390,168],[204,169],[277,170],[380,171],[230,172],[436,173],[85,94],[262,5],[270,174],[430,175],[260,5],[429,176],[89,5],[427,177],[239,5],[296,178],[423,5],[221,5],[222,5],[273,179],[235,5],[417,180],[308,181],[409,182],[307,5],[272,5],[263,5],[381,183],[382,184],[234,5],[384,185],[386,186],[385,187],[242,5],[271,172],[388,188],[428,189],[431,190],[206,5],[209,5],[207,5],[211,5],[208,5],[210,5],[212,191],[214,5],[372,192],[371,5],[377,193],[373,194],[376,195],[375,195],[378,193],[374,194],[229,196],[367,197],[416,198],[447,5],[996,199],[998,200],[304,5],[997,201],[414,163],[446,202],[324,163],[213,5],[306,203],[224,204],[225,205],[226,206],[293,207],[389,207],[279,207],[369,208],[280,208],[257,209],[223,5],[276,210],[275,211],[274,212],[370,213],[415,214],[316,215],[354,216],[315,217],[349,218],[353,219],[397,220],[396,221],[392,222],[363,223],[365,224],[362,225],[387,226],[356,5],[984,5],[355,227],[391,5],[418,228],[301,134],[299,229],[298,230],[438,231],[441,5],[437,232],[419,232],[982,5],[981,5],[983,5],[439,5],[421,233],[314,59],[977,5],[361,234],[255,5],[244,235],[310,5],[990,59],[1000,236],[292,59],[994,116],[291,237],[433,238],[290,236],[87,5],[1002,239],[288,59],[289,59],[281,5],[243,5],[287,240],[286,241],[241,242],[311,35],[422,35],[383,5],[425,243],[424,5],[986,5],[342,244],[313,59],[434,245],[972,59],[975,246],[976,247],[973,59],[974,5],[253,248],[248,249],[247,5],[246,250],[245,5],[432,251],[989,252],[991,253],[993,254],[1025,255],[995,256],[999,257],[1003,258],[1022,259],[1005,260],[1015,261],[1016,262],[1018,263],[448,264],[1021,137],[1020,5],[1019,265],[530,266],[532,267],[534,268],[542,269],[544,270],[526,271],[528,272],[535,273],[545,274],[487,275],[546,276],[537,277],[547,276],[549,278],[490,276],[550,279],[551,280],[553,281],[539,282],[489,283],[554,284],[559,285],[555,286],[483,287],[561,288],[503,289],[562,276],[563,290],[505,291],[565,292],[567,293],[479,5],[568,294],[540,295],[484,276],[570,296],[482,297],[579,279],[580,298],[552,299],[571,273],[592,300],[498,301],[593,284],[596,302],[486,286],[536,303],[597,304],[617,305],[577,306],[600,307],[601,308],[491,286],[602,309],[603,5],[572,310],[538,311],[573,312],[574,313],[604,273],[605,314],[606,314],[607,315],[608,316],[609,317],[610,318],[611,319],[612,279],[508,320],[613,321],[488,322],[615,323],[531,324],[533,324],[541,325],[543,324],[529,326],[527,327],[548,276],[480,299],[502,299],[566,328],[569,329],[481,322],[560,5],[591,330],[598,279],[578,331],[595,332],[575,333],[576,334],[599,335],[485,5],[506,336],[616,337],[501,338],[504,339],[500,340],[507,341],[499,342],[497,343],[558,344],[495,345],[564,346],[556,347],[494,5],[614,5],[557,348],[493,5],[496,347],[426,349],[81,5],[82,5],[13,5],[14,5],[16,5],[15,5],[2,5],[17,5],[18,5],[19,5],[20,5],[21,5],[22,5],[23,5],[24,5],[3,5],[25,5],[26,5],[4,5],[27,5],[31,5],[28,5],[29,5],[30,5],[32,5],[33,5],[34,5],[5,5],[35,5],[36,5],[37,5],[38,5],[6,5],[42,5],[39,5],[40,5],[41,5],[43,5],[7,5],[44,5],[49,5],[50,5],[45,5],[46,5],[47,5],[48,5],[8,5],[54,5],[51,5],[52,5],[53,5],[55,5],[9,5],[56,5],[57,5],[58,5],[60,5],[59,5],[61,5],[62,5],[10,5],[63,5],[64,5],[65,5],[11,5],[66,5],[67,5],[68,5],[69,5],[70,5],[1,5],[71,5],[72,5],[12,5],[76,5],[74,5],[79,5],[78,5],[73,5],[77,5],[75,5],[80,5],[115,350],[125,351],[114,350],[135,352],[106,353],[105,354],[134,265],[128,355],[133,356],[108,357],[122,358],[107,359],[131,360],[103,361],[102,265],[132,362],[104,363],[109,364],[110,5],[113,364],[100,5],[136,365],[126,366],[117,367],[118,368],[120,369],[116,370],[119,371],[129,265],[111,372],[112,373],[121,374],[101,375],[124,366],[123,364],[127,5],[130,376],[906,377],[907,378],[621,379],[620,380],[778,381],[779,382],[788,383],[793,384],[789,385],[787,386],[780,387],[905,388],[522,389],[790,390],[781,391],[674,392],[791,393],[783,394],[675,395],[786,396],[792,330],[736,397],[742,398],[743,399],[744,400],[741,401],[908,402],[722,403],[745,404],[747,405],[751,406],[752,407],[753,405],[754,408],[697,409],[687,410],[696,411],[755,412],[756,413],[757,414],[691,415],[759,416],[761,417],[762,418],[682,419],[723,413],[766,420],[767,421],[769,422],[771,423],[772,424],[773,425],[695,414],[765,426],[775,427],[776,428],[777,413],[794,429],[795,430],[693,431],[796,432],[798,433],[725,434],[800,435],[801,436],[892,437],[893,405],[726,438],[894,439],[895,440],[807,441],[806,442],[896,443],[897,444],[898,444],[899,445],[901,446],[935,447],[909,447],[910,448],[911,449],[912,448],[913,450],[914,448],[915,450],[916,447],[917,448],[936,448],[918,448],[919,451],[920,452],[937,448],[921,450],[922,448],[923,448],[924,453],[925,450],[926,448],[938,448],[927,448],[928,448],[929,448],[930,450],[939,448],[931,453],[940,448],[932,450],[826,454],[827,455],[828,456],[829,457],[830,458],[831,456],[834,459],[825,460],[832,454],[833,461],[835,462],[836,463],[837,464],[838,465],[839,466],[840,467],[841,468],[694,469],[842,470],[843,471],[844,472],[846,473],[683,474],[889,475],[684,476],[890,477],[847,478],[848,479],[849,480],[850,481],[852,482],[853,462],[845,483],[854,467],[891,484],[824,485],[903,486],[941,487],[934,488],[942,489],[902,490],[933,491],[855,492],[634,493],[943,494],[803,495],[945,496],[946,497],[823,5],[947,5],[948,5],[949,5],[950,5],[951,5],[952,5],[698,498],[676,499],[666,499],[622,5],[663,500],[688,500],[953,501],[729,498],[667,502],[716,503],[648,499],[640,499],[768,504],[642,500],[738,499],[654,505],[635,499],[748,499],[668,499],[623,499],[624,506],[720,507],[655,508],[944,499],[954,504],[955,499],[521,509],[629,510],[970,511],[523,509],[511,512],[513,513],[525,514],[799,515],[632,516],[727,517],[517,518],[728,519],[633,520],[514,519],[737,5],[515,521],[746,522],[516,523],[518,524],[512,521],[797,525],[618,526],[631,527],[619,528],[636,513],[519,529],[804,530],[520,531],[509,5],[524,519],[714,532],[956,533],[715,534],[763,535],[808,536],[717,537],[700,538],[701,539],[809,540],[750,541],[709,542],[810,543],[811,544],[707,545],[812,546],[708,547],[813,548],[957,549],[710,550],[815,551],[670,552],[711,553],[652,554],[653,555],[657,556],[816,557],[658,558],[659,558],[661,559],[662,560],[958,561],[959,562],[665,563],[664,564],[692,565],[628,566],[730,567],[817,568],[677,569],[818,570],[819,571],[820,572],[718,573],[649,574],[638,575],[814,575],[639,575],[641,576],[643,577],[699,578],[644,575],[713,579],[645,580],[821,581],[647,582],[646,583],[650,561],[740,584],[739,585],[733,575],[731,577],[734,586],[732,587],[735,588],[960,589],[719,590],[724,591],[686,592],[685,593],[678,594],[690,595],[822,571],[770,596],[679,597],[764,598],[774,599],[689,600],[760,601],[680,602],[856,603],[702,604],[857,605],[651,392],[703,381],[858,392],[660,392],[859,606],[749,607],[860,608],[861,606],[706,609],[862,608],[704,610],[705,611],[888,612],[961,613],[962,614],[669,5],[904,615],[802,597],[805,381],[625,381],[758,381],[626,381],[864,381],[863,5],[866,616],[865,617],[627,618],[867,619],[963,620],[782,621],[785,622],[868,623],[869,575],[964,382],[870,624],[871,625],[965,382],[637,626],[872,627],[873,628],[966,629],[874,630],[967,631],[875,626],[876,632],[712,633],[968,620],[969,634],[877,635],[878,636],[879,637],[630,509],[900,638],[721,639],[851,381],[681,640],[671,641],[880,642],[656,643],[881,644],[672,645],[673,646],[784,647],[883,648],[884,648],[882,381],[886,649],[887,649],[885,381]],"affectedFilesPendingEmit":[449,1026,1027,971],"version":"5.9.3"}
\ No newline at end of file
diff --git a/keeper/README.md b/keeper/README.md
new file mode 100644
index 0000000..955a7d9
--- /dev/null
+++ b/keeper/README.md
@@ -0,0 +1,40 @@
+# Wraith keeper
+
+Pokes live orders so the TEE re-evaluates their private conditions, then relays TEE-signed results on-chain.
+
+## Trust
+
+The keeper is untrusted by design, and anyone can run one.
+
+It never sees an order's terms — it forwards ciphertext it cannot read, and the TEE reads FTSO itself rather than accepting a price from the keeper. The worst a hostile keeper can do is *withhold* ticks, which is precisely why ticking is permissionless: if one keeper stops, anyone else can tick the same order.
+
+What a keeper does learn is whether a given tick fired, since it has to relay the result to settle it. It never learns how far from the trigger an order was, or what the trigger is.
+
+## Run
+
+```bash
+npm install
+
+export WRAITH_ADDRESS=0x...
+export KEEPER_PRIVATE_KEY=0x...
+export EXT_PROXY_URL=http://127.0.0.1:6674
+export INSTRUCTION_FEE_WEI=... # fee forwarded to TeeExtensionRegistry.sendInstructions
+
+npm start
+```
+
+| Variable | Default | Meaning |
+| --- | --- | --- |
+| `RPC_URL` | Coston2 public RPC | Flare RPC endpoint |
+| `WRAITH_ADDRESS` | — (required) | Deployed `WraithOrders` |
+| `KEEPER_PRIVATE_KEY` | — (required) | Funded key; pays gas and instruction fees |
+| `EXT_PROXY_URL` | `http://127.0.0.1:6674` | Extension proxy |
+| `POLL_INTERVAL_MS` | `15000` | Loop interval |
+| `INSTRUCTION_FEE_WEI` | `0` | Native fee per instruction |
+| `SUBMISSION_TAG` | `submit` | Fallback if the proxy omits the tag |
+
+The keeper pays for ticks, so `MIN_TICK_INTERVAL` in the contract also protects it from being drained by a tight loop against a single order.
+
+## Scaling
+
+State is an in-memory map of instructions awaiting results, so a restart forgets in-flight instructions; they are re-ticked on the next pass once `MIN_TICK_INTERVAL` elapses. That is the right trade for a keeper — it is a poller, not a source of truth, and the chain holds everything that matters.
diff --git a/keeper/package-lock.json b/keeper/package-lock.json
new file mode 100644
index 0000000..5aa31dc
--- /dev/null
+++ b/keeper/package-lock.json
@@ -0,0 +1,220 @@
+{
+ "name": "wraith-keeper",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "wraith-keeper",
+ "version": "0.0.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "viem": "^2.21.0"
+ }
+ },
+ "node_modules/@adraffy/ens-normalize": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz",
+ "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==",
+ "license": "MIT"
+ },
+ "node_modules/@noble/ciphers": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
+ "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/curves": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz",
+ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/base": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
+ "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip32": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz",
+ "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "~1.9.0",
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@scure/bip39": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz",
+ "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "~1.8.0",
+ "@scure/base": "~1.2.5"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/abitype": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz",
+ "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/wevm"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.0.4",
+ "zod": "^3.22.0 || ^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ },
+ "zod": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "license": "MIT"
+ },
+ "node_modules/isows": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz",
+ "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
+ "peerDependencies": {
+ "ws": "*"
+ }
+ },
+ "node_modules/ox": {
+ "version": "0.14.33",
+ "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.33.tgz",
+ "integrity": "sha512-rooA/4o7bBof4Ge2VH/eovfNPb/AEEYyrNj03wggc55g5HZD8Pjs/OeWhttgjic3dDcqn0r29bDuvQEdTiUemQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@adraffy/ens-normalize": "^1.11.0",
+ "@noble/ciphers": "^1.3.0",
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "^1.8.0",
+ "@scure/bip32": "^1.7.0",
+ "@scure/bip39": "^1.6.0",
+ "abitype": "^1.2.3",
+ "eventemitter3": "5.0.1"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/viem": {
+ "version": "2.55.13",
+ "resolved": "https://registry.npmjs.org/viem/-/viem-2.55.13.tgz",
+ "integrity": "sha512-Rt1NAsdtTdvJgqaCxsv2TuO55xv2d2dKEuRuzrg34xMGxvTSFOX0iIFvEfymPvh+fwN2tbgEU2JwN0YHOVM+Bg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@noble/curves": "1.9.1",
+ "@noble/hashes": "1.8.0",
+ "@scure/bip32": "1.7.0",
+ "@scure/bip39": "1.6.0",
+ "abitype": "1.2.3",
+ "isows": "1.0.7",
+ "ox": "0.14.33",
+ "ws": "8.21.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.0.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz",
+ "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ }
+ }
+}
diff --git a/keeper/package.json b/keeper/package.json
new file mode 100644
index 0000000..d08564a
--- /dev/null
+++ b/keeper/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "wraith-keeper",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "description": "Pokes live Wraith orders and relays TEE-signed results on-chain.",
+ "license": "Apache-2.0",
+ "scripts": {
+ "start": "node src/index.js"
+ },
+ "dependencies": {
+ "viem": "^2.21.0"
+ }
+}
diff --git a/keeper/src/index.js b/keeper/src/index.js
new file mode 100644
index 0000000..4047d9c
--- /dev/null
+++ b/keeper/src/index.js
@@ -0,0 +1,166 @@
+// Wraith keeper.
+//
+// Two jobs, both permissionless: poke live orders so the TEE re-evaluates their
+// private conditions, and relay TEE-signed results back on-chain.
+//
+// The keeper is deliberately untrusted. It never sees an order's terms — it
+// forwards ciphertext it cannot read, and the TEE reads FTSO itself rather than
+// accepting a price from here. The worst a hostile keeper can do is withhold
+// ticks, which is why ticking is open to anyone.
+
+import { createPublicClient, createWalletClient, http, parseAbi, parseEventLogs, formatEther } from "viem";
+import { privateKeyToAccount } from "viem/accounts";
+
+const RPC_URL = process.env.RPC_URL ?? "https://coston2-api.flare.network/ext/C/rpc";
+const WRAITH_ADDRESS = required("WRAITH_ADDRESS");
+const EXT_PROXY_URL = (process.env.EXT_PROXY_URL ?? "http://127.0.0.1:6674").replace(/\/$/, "");
+const PRIVATE_KEY = required("KEEPER_PRIVATE_KEY");
+const POLL_INTERVAL_MS = Number(process.env.POLL_INTERVAL_MS ?? 15_000);
+const INSTRUCTION_FEE_WEI = BigInt(process.env.INSTRUCTION_FEE_WEI ?? "0");
+const SUBMISSION_TAG = process.env.SUBMISSION_TAG ?? "submit";
+
+const coston2 = {
+ id: 114,
+ name: "Coston2",
+ nativeCurrency: { name: "Coston2 Flare", symbol: "C2FLR", decimals: 18 },
+ rpcUrls: { default: { http: [RPC_URL] } },
+};
+
+const abi = parseAbi([
+ "function orderCount() view returns (uint256)",
+ "function canTick(uint256 orderId) view returns (bool)",
+ "function tick(uint256 orderId) payable",
+ "function execute(bytes resultData, bytes32 actionId, string submissionTag, uint8 status, bytes signature)",
+ "event OrderTicked(uint256 indexed orderId, bytes32 instructionId)",
+]);
+
+const account = privateKeyToAccount(PRIVATE_KEY);
+const publicClient = createPublicClient({ chain: coston2, transport: http(RPC_URL) });
+const walletClient = createWalletClient({ account, chain: coston2, transport: http(RPC_URL) });
+
+/** instructionId -> orderId, for instructions whose result has not arrived yet. */
+const pending = new Map();
+
+function required(name) {
+ const value = process.env[name];
+ if (!value) {
+ console.error(`missing required env var: ${name}`);
+ process.exit(1);
+ }
+ return value;
+}
+
+/**
+ * Ask the extension proxy for an instruction's result.
+ *
+ * Returns null while the TEE is still working, which is the common case — most
+ * ticks resolve to "condition not met".
+ */
+async function fetchResult(instructionId) {
+ const response = await fetch(`${EXT_PROXY_URL}/action/result?id=${instructionId}`);
+ if (response.status === 404) return null;
+ if (!response.ok) {
+ throw new Error(`proxy returned ${response.status} for ${instructionId}`);
+ }
+
+ const body = await response.json();
+ // Status >= 2 means the extension is still processing.
+ if (body?.status === undefined || body.status >= 2) return null;
+ return body;
+}
+
+async function tickOrders() {
+ const count = await publicClient.readContract({ address: WRAITH_ADDRESS, abi, functionName: "orderCount" });
+
+ for (let orderId = 0n; orderId < count; orderId++) {
+ const tickable = await publicClient.readContract({
+ address: WRAITH_ADDRESS,
+ abi,
+ functionName: "canTick",
+ args: [orderId],
+ });
+ if (!tickable) continue;
+
+ try {
+ const hash = await walletClient.writeContract({
+ address: WRAITH_ADDRESS,
+ abi,
+ functionName: "tick",
+ args: [orderId],
+ value: INSTRUCTION_FEE_WEI,
+ });
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
+
+ // OrderTicked carries the instruction id the proxy will key the result by.
+ const events = parseEventLogs({ abi, logs: receipt.logs, eventName: "OrderTicked" });
+ for (const event of events) {
+ pending.set(event.args.instructionId, orderId);
+ console.log(`ticked order ${orderId} -> instruction ${event.args.instructionId}`);
+ }
+ } catch (error) {
+ // One bad order must not stall every other order.
+ console.error(`tick failed for order ${orderId}: ${error.shortMessage ?? error.message}`);
+ }
+ }
+}
+
+async function relayResults() {
+ for (const [instructionId, orderId] of [...pending]) {
+ let result;
+ try {
+ result = await fetchResult(instructionId);
+ } catch (error) {
+ console.error(`polling ${instructionId}: ${error.message}`);
+ continue;
+ }
+ if (!result) continue;
+
+ pending.delete(instructionId);
+
+ if (result.status !== 1) {
+ console.error(`order ${orderId}: TEE reported failure (status ${result.status})`);
+ continue;
+ }
+
+ // A no-op reply — the condition did not fire. This is the expected outcome
+ // for almost every tick, and it is the whole point: an observer, this keeper
+ // included, learns only "not yet", never how far away the trigger is.
+ if (!result.data || result.data === "0x") {
+ continue;
+ }
+
+ try {
+ const hash = await walletClient.writeContract({
+ address: WRAITH_ADDRESS,
+ abi,
+ functionName: "execute",
+ args: [result.data, instructionId, result.submissionTag ?? SUBMISSION_TAG, result.status, result.signature],
+ });
+ await publicClient.waitForTransactionReceipt({ hash });
+ console.log(`order ${orderId} executed in ${hash}`);
+ } catch (error) {
+ console.error(`execute failed for order ${orderId}: ${error.shortMessage ?? error.message}`);
+ }
+ }
+}
+
+async function main() {
+ const balance = await publicClient.getBalance({ address: account.address });
+ console.log(`keeper ${account.address} (${formatEther(balance)} C2FLR)`);
+ console.log(`watching ${WRAITH_ADDRESS} via ${EXT_PROXY_URL}, every ${POLL_INTERVAL_MS}ms`);
+
+ for (;;) {
+ try {
+ await tickOrders();
+ await relayResults();
+ } catch (error) {
+ console.error(`loop error: ${error.message}`);
+ }
+ await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
+ }
+}
+
+main().catch((error) => {
+ console.error(error);
+ process.exit(1);
+});
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..f6b8933
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6393 @@
+{
+ "name": "wraith",
+ "version": "0.0.0-development",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "wraith",
+ "version": "0.0.0-development",
+ "license": "Apache-2.0",
+ "devDependencies": {
+ "@semantic-release/changelog": "^6.0.3",
+ "@semantic-release/git": "^10.0.1",
+ "@semantic-release/github": "^11.0.1",
+ "semantic-release": "^24.2.3"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@octokit/auth-token": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
+ "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "7.0.7",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.7.tgz",
+ "integrity": "sha512-DcB0M3KFgr9ECI328lhBMVsyFT2DnmNucSBTqEN3exyNKUzkkpUSCHmTRcunF41Eou2TIQKW4seewri8ON9bSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/auth-token": "^6.0.0",
+ "@octokit/graphql": "^9.0.4",
+ "@octokit/request": "^10.0.13",
+ "@octokit/request-error": "^7.1.1",
+ "@octokit/types": "^17.0.0",
+ "before-after-hook": "^4.0.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.4.tgz",
+ "integrity": "sha512-f1cOWoHPmxryJFknxbtDdjODWfV8A9tc8Aae6ermXPNgHFZ/x91AtHIz4gicEjL8hkJiip+u21QHJORfBv/qiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^17.0.0",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.4.tgz",
+ "integrity": "sha512-5s15CCiY8XXQ+FG+b1YQcl6Z2FA++nwAz/tg2VUrTmnMncP+2nnGUEYANImdnxsA2Fnq+Mbl7hDjUTw7cFAwcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request": "^10.0.13",
+ "@octokit/types": "^17.0.0",
+ "universal-user-agent": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "28.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-28.0.0.tgz",
+ "integrity": "sha512-0rFyLuyHvIj6uuZWuDslxkowFYdPXoNIkeAv4b27dzm2Tf4vGWXnPsMcxs7d65kLdMERgP3wc1AEPlqMz8e1cQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "13.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.2.1.tgz",
+ "integrity": "sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^15.0.1"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=6"
+ }
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-26.0.0.tgz",
+ "integrity": "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
+ "version": "15.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-15.0.2.tgz",
+ "integrity": "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^26.0.0"
+ }
+ },
+ "node_modules/@octokit/plugin-retry": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.1.1.tgz",
+ "integrity": "sha512-VCVvZ/R1+u3WuiBWpNavZ0mY4aaJNAsENrpBP9aLSR2QyOpQgd7DhM5j4AW7z4MQpnJYgwBPf0XqPQoNBRdQwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/request-error": "^7.1.1",
+ "@octokit/types": "^17.0.0",
+ "bottleneck": "^2.15.3"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=7"
+ }
+ },
+ "node_modules/@octokit/plugin-throttling": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.5.tgz",
+ "integrity": "sha512-LIdrkrUv+DWbKeg/49rGuFJ3SU0d3hUS+B4MhNZLepBoNUFXms8Ic9edJjrlx+zycqJHjrMRudVpVb/bAXM2Lw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^17.0.0",
+ "bottleneck": "^2.15.3"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@octokit/core": "^7.0.0"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "10.0.13",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.13.tgz",
+ "integrity": "sha512-v2269YxL9Yf+x3d+gRI63FP0vFQEiWgLyBzxe/Y+0yFDg2B/Tzf5dhh9VNfccVAQnfcfwQWyk/y6Bn7rUXXs7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/endpoint": "^11.0.3",
+ "@octokit/request-error": "^7.1.1",
+ "@octokit/types": "^17.0.0",
+ "content-type": "^2.0.0",
+ "json-with-bigint": "^3.5.3",
+ "universal-user-agent": "^7.0.2"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.1.tgz",
+ "integrity": "sha512-+eaY7G2VVpSf2pc5Gn1+mph837V/d/TYTJAgWL9Tb0ogGYcpN3IlAVFgjL+Vv93F/sevrxkvsYCedtpLdcFLzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/types": "^17.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-17.0.0.tgz",
+ "integrity": "sha512-ByP1v7YL5SMveFPP7+sj0/ZuWCOOg/Chs4NafOMpq6WNIM/hdGY0S7C0TCGDBWu1aGmOxmUIhMx3cO+IdwYZ1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^28.0.0"
+ }
+ },
+ "node_modules/@pnpm/config.env-replace": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
+ "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+ "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "4.2.10"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@pnpm/npm-conf": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.3.tgz",
+ "integrity": "sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pnpm/config.env-replace": "^1.1.0",
+ "@pnpm/network.ca-file": "^1.0.1",
+ "config-chain": "^1.1.11"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@semantic-release/changelog": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz",
+ "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@semantic-release/error": "^3.0.0",
+ "aggregate-error": "^3.0.0",
+ "fs-extra": "^11.0.0",
+ "lodash": "^4.17.4"
+ },
+ "engines": {
+ "node": ">=14.17"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=18.0.0"
+ }
+ },
+ "node_modules/@semantic-release/commit-analyzer": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.1.tgz",
+ "integrity": "sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "conventional-changelog-angular": "^8.0.0",
+ "conventional-changelog-writer": "^8.0.0",
+ "conventional-commits-filter": "^5.0.0",
+ "conventional-commits-parser": "^6.0.0",
+ "debug": "^4.0.0",
+ "import-from-esm": "^2.0.0",
+ "lodash-es": "^4.17.21",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=20.8.1"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=20.1.0"
+ }
+ },
+ "node_modules/@semantic-release/error": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz",
+ "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@semantic-release/git": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz",
+ "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@semantic-release/error": "^3.0.0",
+ "aggregate-error": "^3.0.0",
+ "debug": "^4.0.0",
+ "dir-glob": "^3.0.0",
+ "execa": "^5.0.0",
+ "lodash": "^4.17.4",
+ "micromatch": "^4.0.0",
+ "p-reduce": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.17"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=18.0.0"
+ }
+ },
+ "node_modules/@semantic-release/github": {
+ "version": "11.0.6",
+ "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.6.tgz",
+ "integrity": "sha512-ctDzdSMrT3H+pwKBPdyCPty6Y47X8dSrjd3aPZ5KKIKKWTwZBE9De8GtsH3TyAlw3Uyo2stegMx6rJMXKpJwJA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/core": "^7.0.0",
+ "@octokit/plugin-paginate-rest": "^13.0.0",
+ "@octokit/plugin-retry": "^8.0.0",
+ "@octokit/plugin-throttling": "^11.0.0",
+ "@semantic-release/error": "^4.0.0",
+ "aggregate-error": "^5.0.0",
+ "debug": "^4.3.4",
+ "dir-glob": "^3.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "issue-parser": "^7.0.0",
+ "lodash-es": "^4.17.21",
+ "mime": "^4.0.0",
+ "p-filter": "^4.0.0",
+ "tinyglobby": "^0.2.14",
+ "url-join": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=20.8.1"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=24.1.0"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/@semantic-release/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/aggregate-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
+ "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^5.2.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/clean-stack": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz",
+ "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.2.tgz",
+ "integrity": "sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@semantic-release/error": "^4.0.0",
+ "aggregate-error": "^5.0.0",
+ "execa": "^9.0.0",
+ "fs-extra": "^11.0.0",
+ "lodash-es": "^4.17.21",
+ "nerf-dart": "^1.0.0",
+ "normalize-url": "^8.0.0",
+ "npm": "^10.9.3",
+ "rc": "^1.2.8",
+ "read-pkg": "^9.0.0",
+ "registry-auth-token": "^5.0.0",
+ "semver": "^7.1.2",
+ "tempy": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=20.8.1"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=20.1.0"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/aggregate-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
+ "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^5.2.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/clean-stack": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz",
+ "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/execa": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz",
+ "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/release-notes-generator": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.1.1.tgz",
+ "integrity": "sha512-Pbd2e2XRMUD0OxehHpgd5/YghsE76cddkRHSoDvKLK+OCy4Ewxn49rWR631MEUU01lgwF/uyVXvbnVuu6+Z6VA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "conventional-changelog-angular": "^8.0.0",
+ "conventional-changelog-writer": "^8.0.0",
+ "conventional-commits-filter": "^5.0.0",
+ "conventional-commits-parser": "^6.0.0",
+ "debug": "^4.0.0",
+ "import-from-esm": "^2.0.0",
+ "lodash-es": "^4.17.21",
+ "read-package-up": "^11.0.0"
+ },
+ "engines": {
+ "node": ">=20.8.1"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=20.1.0"
+ }
+ },
+ "node_modules/@simple-libs/stream-utils": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz",
+ "integrity": "sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/dangreen"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz",
+ "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/argv-formatter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz",
+ "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/before-after-hook": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
+ "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/bottleneck": {
+ "version": "2.19.5",
+ "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz",
+ "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-highlight": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz",
+ "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "highlight.js": "^10.7.1",
+ "mz": "^2.4.0",
+ "parse5": "^5.1.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.0",
+ "yargs": "^16.0.0"
+ },
+ "bin": {
+ "highlight": "bin/highlight"
+ },
+ "engines": {
+ "node": ">=8.0.0",
+ "npm": ">=5.0.0"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/yargs": {
+ "version": "16.2.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz",
+ "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cli-table3": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/compare-func": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
+ "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^5.1.0"
+ }
+ },
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
+ "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/conventional-changelog-angular": {
+ "version": "8.3.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.3.1.tgz",
+ "integrity": "sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "compare-func": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/conventional-changelog-writer": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.4.0.tgz",
+ "integrity": "sha512-HHBFkk1EECxxmCi4CTu091iuDpQv5/OavuCUAuZmrkWpmYfyD816nom1CvtfXJ/uYfAAjavgHvXHX291tSLK8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@simple-libs/stream-utils": "^1.2.0",
+ "conventional-commits-filter": "^5.0.0",
+ "handlebars": "^4.7.7",
+ "meow": "^13.0.0",
+ "semver": "^7.5.2"
+ },
+ "bin": {
+ "conventional-changelog-writer": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/conventional-commits-filter": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
+ "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/conventional-commits-parser": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.4.0.tgz",
+ "integrity": "sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@simple-libs/stream-utils": "^1.2.0",
+ "meow": "^13.0.0"
+ },
+ "bin": {
+ "conventional-commits-parser": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/convert-hrtime": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz",
+ "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cosmiconfig": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz",
+ "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/crypto-random-string/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/emojilib": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz",
+ "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/env-ci": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.2.0.tgz",
+ "integrity": "sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "execa": "^8.0.0",
+ "java-properties": "^1.0.2"
+ },
+ "engines": {
+ "node": "^18.17 || >=20.6.1"
+ }
+ },
+ "node_modules/env-ci/node_modules/execa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+ "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/env-ci/node_modules/get-stream": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/human-signals": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=16.17.0"
+ }
+ },
+ "node_modules/env-ci/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/npm-run-path": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
+ "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/env-ci/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/find-up-simple": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
+ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-versions": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz",
+ "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver-regex": "^4.0.5",
+ "super-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.4.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
+ "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/function-timeout": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz",
+ "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/git-log-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz",
+ "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argv-formatter": "~1.0.0",
+ "spawn-error-forwarder": "~1.0.0",
+ "split2": "~1.0.0",
+ "stream-combiner2": "~1.1.1",
+ "through2": "~2.0.0",
+ "traverse": "0.6.8"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.9",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz",
+ "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/hook-std": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-4.0.0.tgz",
+ "integrity": "sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-from-esm": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-2.0.0.tgz",
+ "integrity": "sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "import-meta-resolve": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18.20"
+ }
+ },
+ "node_modules/import-meta-resolve": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/index-to-position": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz",
+ "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/issue-parser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.2.tgz",
+ "integrity": "sha512-7atWPjhGEIX3JEtMrOYd8TKzboYlq+5sNbdl9POiLYOI14G5HZiQbZP0Xj5EZdrufQVXfJlpTV0hys0CuxwxZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lodash.capitalize": "^4.2.1",
+ "lodash.escaperegexp": "^4.1.2",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.uniqby": "^4.7.0"
+ },
+ "engines": {
+ "node": "^18.17 || >=20.6.1"
+ }
+ },
+ "node_modules/java-properties": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz",
+ "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-with-bigint": {
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.10.tgz",
+ "integrity": "sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
+ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash-es": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
+ "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.capitalize": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
+ "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.escaperegexp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
+ "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.uniqby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
+ "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/make-asynchronous": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.1.0.tgz",
+ "integrity": "sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-event": "^6.0.0",
+ "type-fest": "^4.6.0",
+ "web-worker": "^1.5.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/marked": {
+ "version": "15.0.12",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz",
+ "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/marked-terminal": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz",
+ "integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^7.0.0",
+ "ansi-regex": "^6.1.0",
+ "chalk": "^5.4.1",
+ "cli-highlight": "^2.1.11",
+ "cli-table3": "^0.6.5",
+ "node-emoji": "^2.2.0",
+ "supports-hyperlinks": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "marked": ">=1 <16"
+ }
+ },
+ "node_modules/meow": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz",
+ "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa"
+ ],
+ "license": "MIT",
+ "bin": {
+ "mime": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nerf-dart": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz",
+ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-emoji": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz",
+ "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/is": "^4.6.0",
+ "char-regex": "^1.0.2",
+ "emojilib": "^2.4.0",
+ "skin-tone": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
+ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/hosted-git-info": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
+ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz",
+ "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm": {
+ "version": "10.9.9",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.9.tgz",
+ "integrity": "sha512-1g+6jLQvaIuB4zwvHL7yrXuXcWZwDsCtBX8bbWDqbvJSSr9nPiDDWTHNgwXR27iIcTTW7v3A57hDW9RYv2W4Yg==",
+ "bundleDependencies": [
+ "@isaacs/string-locale-compare",
+ "@npmcli/arborist",
+ "@npmcli/config",
+ "@npmcli/fs",
+ "@npmcli/map-workspaces",
+ "@npmcli/package-json",
+ "@npmcli/promise-spawn",
+ "@npmcli/redact",
+ "@npmcli/run-script",
+ "@sigstore/tuf",
+ "abbrev",
+ "archy",
+ "cacache",
+ "chalk",
+ "ci-info",
+ "cli-columns",
+ "fastest-levenshtein",
+ "fs-minipass",
+ "glob",
+ "graceful-fs",
+ "hosted-git-info",
+ "ini",
+ "init-package-json",
+ "is-cidr",
+ "json-parse-even-better-errors",
+ "libnpmaccess",
+ "libnpmdiff",
+ "libnpmexec",
+ "libnpmfund",
+ "libnpmhook",
+ "libnpmorg",
+ "libnpmpack",
+ "libnpmpublish",
+ "libnpmsearch",
+ "libnpmteam",
+ "libnpmversion",
+ "make-fetch-happen",
+ "minimatch",
+ "minipass",
+ "minipass-pipeline",
+ "ms",
+ "node-gyp",
+ "nopt",
+ "normalize-package-data",
+ "npm-audit-report",
+ "npm-install-checks",
+ "npm-package-arg",
+ "npm-pick-manifest",
+ "npm-profile",
+ "npm-registry-fetch",
+ "npm-user-validate",
+ "p-map",
+ "pacote",
+ "parse-conflict-json",
+ "proc-log",
+ "qrcode-terminal",
+ "read",
+ "semver",
+ "spdx-expression-parse",
+ "ssri",
+ "supports-color",
+ "tar",
+ "text-table",
+ "tiny-relative-date",
+ "treeverse",
+ "validate-npm-package-name",
+ "which",
+ "write-file-atomic"
+ ],
+ "dev": true,
+ "license": "Artistic-2.0",
+ "workspaces": [
+ "docs",
+ "smoke-tests",
+ "mock-globals",
+ "mock-registry",
+ "workspaces/*"
+ ],
+ "dependencies": {
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/arborist": "^8.0.5",
+ "@npmcli/config": "^9.0.0",
+ "@npmcli/fs": "^4.0.0",
+ "@npmcli/map-workspaces": "^4.0.2",
+ "@npmcli/package-json": "^6.2.0",
+ "@npmcli/promise-spawn": "^8.0.3",
+ "@npmcli/redact": "^3.2.2",
+ "@npmcli/run-script": "^9.1.0",
+ "@sigstore/tuf": "^3.1.1",
+ "abbrev": "^3.0.1",
+ "archy": "~1.0.0",
+ "cacache": "^19.0.1",
+ "chalk": "^5.6.2",
+ "ci-info": "^4.4.0",
+ "cli-columns": "^4.0.0",
+ "fastest-levenshtein": "^1.0.16",
+ "fs-minipass": "^3.0.3",
+ "glob": "^10.5.0",
+ "graceful-fs": "^4.2.11",
+ "hosted-git-info": "^8.1.0",
+ "ini": "^5.0.0",
+ "init-package-json": "^7.0.2",
+ "is-cidr": "^5.1.1",
+ "json-parse-even-better-errors": "^4.0.0",
+ "libnpmaccess": "^9.0.0",
+ "libnpmdiff": "^7.0.5",
+ "libnpmexec": "^9.0.5",
+ "libnpmfund": "^6.0.5",
+ "libnpmhook": "^11.0.0",
+ "libnpmorg": "^7.0.0",
+ "libnpmpack": "^8.0.5",
+ "libnpmpublish": "^10.0.2",
+ "libnpmsearch": "^8.0.0",
+ "libnpmteam": "^7.0.0",
+ "libnpmversion": "^7.0.0",
+ "make-fetch-happen": "^14.0.3",
+ "minimatch": "^9.0.9",
+ "minipass": "^7.1.3",
+ "minipass-pipeline": "^1.2.4",
+ "ms": "^2.1.2",
+ "node-gyp": "^11.5.0",
+ "nopt": "^8.1.0",
+ "normalize-package-data": "^7.0.1",
+ "npm-audit-report": "^6.0.0",
+ "npm-install-checks": "^7.1.2",
+ "npm-package-arg": "^12.0.2",
+ "npm-pick-manifest": "^10.0.0",
+ "npm-profile": "^11.0.1",
+ "npm-registry-fetch": "^18.0.2",
+ "npm-user-validate": "^3.0.0",
+ "p-map": "^7.0.4",
+ "pacote": "^19.0.1",
+ "parse-conflict-json": "^4.0.0",
+ "proc-log": "^5.0.0",
+ "qrcode-terminal": "^0.12.0",
+ "read": "^4.1.0",
+ "semver": "^7.7.4",
+ "spdx-expression-parse": "^4.0.0",
+ "ssri": "^12.0.0",
+ "supports-color": "^9.4.0",
+ "tar": "^7.5.22",
+ "text-table": "~0.2.0",
+ "tiny-relative-date": "^1.3.0",
+ "treeverse": "^3.0.0",
+ "validate-npm-package-name": "^6.0.2",
+ "which": "^5.0.0",
+ "write-file-atomic": "^6.0.0"
+ },
+ "bin": {
+ "npm": "bin/npm-cli.js",
+ "npx": "bin/npx-cli.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
+ "version": "1.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/@npmcli/agent": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.1",
+ "lru-cache": "^10.0.1",
+ "socks-proxy-agent": "^8.0.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/arborist": {
+ "version": "8.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/fs": "^4.0.0",
+ "@npmcli/installed-package-contents": "^3.0.0",
+ "@npmcli/map-workspaces": "^4.0.1",
+ "@npmcli/metavuln-calculator": "^8.0.0",
+ "@npmcli/name-from-folder": "^3.0.0",
+ "@npmcli/node-gyp": "^4.0.0",
+ "@npmcli/package-json": "^6.0.1",
+ "@npmcli/query": "^4.0.0",
+ "@npmcli/redact": "^3.0.0",
+ "@npmcli/run-script": "^9.0.1",
+ "bin-links": "^5.0.0",
+ "cacache": "^19.0.1",
+ "common-ancestor-path": "^1.0.1",
+ "hosted-git-info": "^8.0.0",
+ "json-parse-even-better-errors": "^4.0.0",
+ "json-stringify-nice": "^1.1.4",
+ "lru-cache": "^10.2.2",
+ "minimatch": "^9.0.4",
+ "nopt": "^8.0.0",
+ "npm-install-checks": "^7.1.0",
+ "npm-package-arg": "^12.0.0",
+ "npm-pick-manifest": "^10.0.0",
+ "npm-registry-fetch": "^18.0.1",
+ "pacote": "^19.0.0",
+ "parse-conflict-json": "^4.0.0",
+ "proc-log": "^5.0.0",
+ "proggy": "^3.0.0",
+ "promise-all-reject-late": "^1.0.0",
+ "promise-call-limit": "^3.0.1",
+ "promise-retry": "^2.0.1",
+ "read-package-json-fast": "^4.0.0",
+ "semver": "^7.3.7",
+ "ssri": "^12.0.0",
+ "treeverse": "^3.0.0",
+ "walk-up-path": "^3.0.1"
+ },
+ "bin": {
+ "arborist": "bin/index.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/config": {
+ "version": "9.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/map-workspaces": "^4.0.1",
+ "@npmcli/package-json": "^6.0.1",
+ "ci-info": "^4.0.0",
+ "ini": "^5.0.0",
+ "nopt": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "walk-up-path": "^3.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/fs": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/git": {
+ "version": "6.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/promise-spawn": "^8.0.0",
+ "ini": "^5.0.0",
+ "lru-cache": "^10.0.1",
+ "npm-pick-manifest": "^10.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "semver": "^7.3.5",
+ "which": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/installed-package-contents": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-bundled": "^4.0.0",
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "bin/index.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/map-workspaces": {
+ "version": "4.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/name-from-folder": "^3.0.0",
+ "@npmcli/package-json": "^6.0.0",
+ "glob": "^10.2.2",
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
+ "version": "8.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cacache": "^19.0.0",
+ "json-parse-even-better-errors": "^4.0.0",
+ "pacote": "^20.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": {
+ "version": "20.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^6.0.0",
+ "@npmcli/installed-package-contents": "^3.0.0",
+ "@npmcli/package-json": "^6.0.0",
+ "@npmcli/promise-spawn": "^8.0.0",
+ "@npmcli/run-script": "^9.0.0",
+ "cacache": "^19.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^7.0.2",
+ "npm-package-arg": "^12.0.0",
+ "npm-packlist": "^9.0.0",
+ "npm-pick-manifest": "^10.0.0",
+ "npm-registry-fetch": "^18.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "sigstore": "^3.0.0",
+ "ssri": "^12.0.0",
+ "tar": "^7.5.10"
+ },
+ "bin": {
+ "pacote": "bin/index.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/name-from-folder": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/node-gyp": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/package-json": {
+ "version": "6.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^6.0.0",
+ "glob": "^10.2.2",
+ "hosted-git-info": "^8.0.0",
+ "json-parse-even-better-errors": "^4.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.5.3",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/promise-spawn": {
+ "version": "8.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "which": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/query": {
+ "version": "4.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/redact": {
+ "version": "3.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/run-script": {
+ "version": "9.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/node-gyp": "^4.0.0",
+ "@npmcli/package-json": "^6.0.0",
+ "@npmcli/promise-spawn": "^8.0.0",
+ "node-gyp": "^11.0.0",
+ "proc-log": "^5.0.0",
+ "which": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/bundle": {
+ "version": "3.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.4.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/core": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
+ "version": "0.4.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/sign": {
+ "version": "3.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^3.1.0",
+ "@sigstore/core": "^2.0.0",
+ "@sigstore/protobuf-specs": "^0.4.0",
+ "make-fetch-happen": "^14.0.2",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/tuf": {
+ "version": "3.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.4.1",
+ "tuf-js": "^3.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/verify": {
+ "version": "2.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^3.1.0",
+ "@sigstore/core": "^2.0.0",
+ "@sigstore/protobuf-specs": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@tufjs/canonical-json": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/abbrev": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/agent-base": {
+ "version": "7.1.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/aproba": {
+ "version": "2.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/archy": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/bin-links": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cmd-shim": "^7.0.0",
+ "npm-normalize-package-bin": "^4.0.0",
+ "proc-log": "^5.0.0",
+ "read-cmd-shim": "^5.0.0",
+ "write-file-atomic": "^6.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/cacache": {
+ "version": "19.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^4.0.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^10.0.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^2.0.1",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^7.0.2",
+ "ssri": "^12.0.0",
+ "tar": "^7.4.3",
+ "unique-filename": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/chalk": {
+ "version": "5.6.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/chownr": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/npm/node_modules/ci-info": {
+ "version": "4.4.0",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/cidr-regex": {
+ "version": "4.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "ip-regex": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/cli-columns": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/npm/node_modules/cmd-shim": {
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/color-convert": {
+ "version": "2.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/color-name": {
+ "version": "1.1.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/common-ancestor-path": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/cssesc": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm/node_modules/debug": {
+ "version": "4.4.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/npm/node_modules/diff": {
+ "version": "5.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/npm/node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/encoding": {
+ "version": "0.1.13",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/npm/node_modules/env-paths": {
+ "version": "2.2.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/err-code": {
+ "version": "2.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/exponential-backoff": {
+ "version": "3.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/npm/node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/npm/node_modules/fdir": {
+ "version": "6.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/npm/node_modules/foreground-child": {
+ "version": "3.3.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/fs-minipass": {
+ "version": "3.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/glob": {
+ "version": "10.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/hosted-git-info": {
+ "version": "8.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/http-cache-semantics": {
+ "version": "4.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/npm/node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm/node_modules/ignore-walk": {
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/npm/node_modules/ini": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/init-package-json": {
+ "version": "7.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/package-json": "^6.0.0",
+ "npm-package-arg": "^12.0.0",
+ "promzard": "^2.0.0",
+ "read": "^4.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4",
+ "validate-npm-package-name": "^6.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/ip-address": {
+ "version": "10.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/npm/node_modules/ip-regex": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/is-cidr": {
+ "version": "5.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "cidr-regex": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/isexe": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/npm/node_modules/json-parse-even-better-errors": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/json-stringify-nice": {
+ "version": "1.1.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/jsonparse": {
+ "version": "1.3.1",
+ "dev": true,
+ "engines": [
+ "node >= 0.2.0"
+ ],
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff-apply": {
+ "version": "5.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/libnpmaccess": {
+ "version": "9.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-package-arg": "^12.0.0",
+ "npm-registry-fetch": "^18.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmdiff": {
+ "version": "7.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^8.0.5",
+ "@npmcli/installed-package-contents": "^3.0.0",
+ "binary-extensions": "^2.3.0",
+ "diff": "^5.1.0",
+ "minimatch": "^9.0.4",
+ "npm-package-arg": "^12.0.0",
+ "pacote": "^19.0.0",
+ "tar": "^7.5.11"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmexec": {
+ "version": "9.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^8.0.5",
+ "@npmcli/run-script": "^9.0.1",
+ "ci-info": "^4.0.0",
+ "npm-package-arg": "^12.0.0",
+ "pacote": "^19.0.0",
+ "proc-log": "^5.0.0",
+ "read": "^4.0.0",
+ "read-package-json-fast": "^4.0.0",
+ "semver": "^7.3.7",
+ "walk-up-path": "^3.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmfund": {
+ "version": "6.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^8.0.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmhook": {
+ "version": "11.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^18.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmorg": {
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^18.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmpack": {
+ "version": "8.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^8.0.5",
+ "@npmcli/run-script": "^9.0.1",
+ "npm-package-arg": "^12.0.0",
+ "pacote": "^19.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmpublish": {
+ "version": "10.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ci-info": "^4.0.0",
+ "normalize-package-data": "^7.0.0",
+ "npm-package-arg": "^12.0.0",
+ "npm-registry-fetch": "^18.0.1",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.7",
+ "sigstore": "^3.0.0",
+ "ssri": "^12.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmsearch": {
+ "version": "8.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-registry-fetch": "^18.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmteam": {
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^18.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmversion": {
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^6.0.1",
+ "@npmcli/run-script": "^9.0.1",
+ "json-parse-even-better-errors": "^4.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/make-fetch-happen": {
+ "version": "14.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/agent": "^3.0.0",
+ "cacache": "^19.0.1",
+ "http-cache-semantics": "^4.1.1",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^4.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^1.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "ssri": "^12.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/minimatch": {
+ "version": "9.0.9",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/minipass": {
+ "version": "7.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-collect": {
+ "version": "2.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-fetch": {
+ "version": "4.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^3.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-flush/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-pipeline/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-sized/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/minizlib": {
+ "version": "3.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/npm/node_modules/ms": {
+ "version": "2.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/mute-stream": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/negotiator": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp": {
+ "version": "11.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^14.0.3",
+ "nopt": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "tar": "^7.4.3",
+ "tinyglobby": "^0.2.12",
+ "which": "^5.0.0"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/nopt": {
+ "version": "8.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^3.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/normalize-package-data": {
+ "version": "7.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^8.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-audit-report": {
+ "version": "6.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-bundled": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-install-checks": {
+ "version": "7.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "semver": "^7.1.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-normalize-package-bin": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-package-arg": {
+ "version": "12.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^8.0.0",
+ "proc-log": "^5.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^6.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-packlist": {
+ "version": "9.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ignore-walk": "^7.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-pick-manifest": {
+ "version": "10.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-install-checks": "^7.1.0",
+ "npm-normalize-package-bin": "^4.0.0",
+ "npm-package-arg": "^12.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-profile": {
+ "version": "11.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-registry-fetch": "^18.0.0",
+ "proc-log": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-registry-fetch": {
+ "version": "18.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/redact": "^3.0.0",
+ "jsonparse": "^1.3.1",
+ "make-fetch-happen": "^14.0.0",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^4.0.0",
+ "minizlib": "^3.0.1",
+ "npm-package-arg": "^12.0.0",
+ "proc-log": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-user-validate": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/p-map": {
+ "version": "7.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/npm/node_modules/pacote": {
+ "version": "19.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^6.0.0",
+ "@npmcli/installed-package-contents": "^3.0.0",
+ "@npmcli/package-json": "^6.0.0",
+ "@npmcli/promise-spawn": "^8.0.0",
+ "@npmcli/run-script": "^9.0.0",
+ "cacache": "^19.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^7.0.2",
+ "npm-package-arg": "^12.0.0",
+ "npm-packlist": "^9.0.0",
+ "npm-pick-manifest": "^10.0.0",
+ "npm-registry-fetch": "^18.0.0",
+ "proc-log": "^5.0.0",
+ "promise-retry": "^2.0.1",
+ "sigstore": "^3.0.0",
+ "ssri": "^12.0.0",
+ "tar": "^7.5.10"
+ },
+ "bin": {
+ "pacote": "bin/index.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/parse-conflict-json": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^4.0.0",
+ "just-diff": "^6.0.0",
+ "just-diff-apply": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/path-key": {
+ "version": "3.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/picomatch": {
+ "version": "4.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/npm/node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm/node_modules/proc-log": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/proggy": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/promise-all-reject-late": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/promise-call-limit": {
+ "version": "3.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/promise-retry": {
+ "version": "2.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/promzard": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "read": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "dev": true,
+ "inBundle": true,
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/npm/node_modules/read": {
+ "version": "4.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "mute-stream": "^2.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-cmd-shim": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-package-json-fast": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^4.0.0",
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/retry": {
+ "version": "0.12.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/npm/node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/npm/node_modules/semver": {
+ "version": "7.7.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/sigstore": {
+ "version": "3.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^3.1.0",
+ "@sigstore/core": "^2.0.0",
+ "@sigstore/protobuf-specs": "^0.4.0",
+ "@sigstore/sign": "^3.1.0",
+ "@sigstore/tuf": "^3.1.0",
+ "@sigstore/verify": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/socks": {
+ "version": "2.8.7",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/npm/node_modules/spdx-expression-parse": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-license-ids": {
+ "version": "3.0.23",
+ "dev": true,
+ "inBundle": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/npm/node_modules/ssri": {
+ "version": "12.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/string-width": {
+ "version": "4.2.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/supports-color": {
+ "version": "9.4.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/tar": {
+ "version": "7.5.22",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/npm/node_modules/text-table": {
+ "version": "0.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/tiny-relative-date": {
+ "version": "1.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/npm/node_modules/treeverse": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/tuf-js": {
+ "version": "3.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/models": "3.0.1",
+ "debug": "^4.4.1",
+ "make-fetch-happen": "^14.0.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/canonical-json": "2.0.0",
+ "minimatch": "^9.0.5"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/unique-filename": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/unique-slug": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/validate-npm-package-name": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/walk-up-path": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/which": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/which/node_modules/isexe": {
+ "version": "3.1.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "5.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/write-file-atomic": {
+ "version": "6.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/yallist": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-each-series": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz",
+ "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-event": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz",
+ "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-timeout": "^6.1.2"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-filter": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz",
+ "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-map": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.6.tgz",
+ "integrity": "sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-reduce": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz",
+ "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-timeout": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz",
+ "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
+ "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
+ "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pretty-ms": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz",
+ "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/read-package-up": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz",
+ "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up-simple": "^1.0.0",
+ "read-pkg": "^9.0.0",
+ "type-fest": "^4.6.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
+ "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.3",
+ "normalize-package-data": "^6.0.0",
+ "parse-json": "^8.0.0",
+ "type-fest": "^4.6.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/parse-json": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
+ "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "index-to-position": "^1.1.0",
+ "type-fest": "^4.39.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/registry-auth-token": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz",
+ "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pnpm/npm-conf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/semantic-release": {
+ "version": "24.2.9",
+ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.9.tgz",
+ "integrity": "sha512-phCkJ6pjDi9ANdhuF5ElS10GGdAKY6R1Pvt9lT3SFhOwM4T7QZE7MLpBDbNruUx/Q3gFD92/UOFringGipRqZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@semantic-release/commit-analyzer": "^13.0.0-beta.1",
+ "@semantic-release/error": "^4.0.0",
+ "@semantic-release/github": "^11.0.0",
+ "@semantic-release/npm": "^12.0.2",
+ "@semantic-release/release-notes-generator": "^14.0.0-beta.1",
+ "aggregate-error": "^5.0.0",
+ "cosmiconfig": "^9.0.0",
+ "debug": "^4.0.0",
+ "env-ci": "^11.0.0",
+ "execa": "^9.0.0",
+ "figures": "^6.0.0",
+ "find-versions": "^6.0.0",
+ "get-stream": "^6.0.0",
+ "git-log-parser": "^1.2.0",
+ "hook-std": "^4.0.0",
+ "hosted-git-info": "^8.0.0",
+ "import-from-esm": "^2.0.0",
+ "lodash-es": "^4.17.21",
+ "marked": "^15.0.0",
+ "marked-terminal": "^7.3.0",
+ "micromatch": "^4.0.2",
+ "p-each-series": "^3.0.0",
+ "p-reduce": "^3.0.0",
+ "read-package-up": "^11.0.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.3.2",
+ "semver-diff": "^5.0.0",
+ "signale": "^1.2.1",
+ "yargs": "^17.5.1"
+ },
+ "bin": {
+ "semantic-release": "bin/semantic-release.js"
+ },
+ "engines": {
+ "node": ">=20.8.1"
+ }
+ },
+ "node_modules/semantic-release/node_modules/@semantic-release/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/semantic-release/node_modules/aggregate-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
+ "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^5.2.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/clean-stack": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz",
+ "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/execa": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz",
+ "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/semantic-release/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/p-reduce": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz",
+ "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/semantic-release/node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver-diff": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-5.0.0.tgz",
+ "integrity": "sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==",
+ "deprecated": "Deprecated as the semver package now supports this built-in.",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver-regex": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz",
+ "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/signale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz",
+ "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^2.3.2",
+ "figures": "^2.0.0",
+ "pkg-conf": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/signale/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/signale/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/signale/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/signale/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/signale/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/signale/node_modules/figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/signale/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/signale/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/skin-tone": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz",
+ "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "unicode-emoji-modifier-base": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spawn-error-forwarder": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz",
+ "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/split2": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz",
+ "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "through2": "~2.0.0"
+ }
+ },
+ "node_modules/stream-combiner2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+ "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "duplexer2": "~0.1.0",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/super-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.1.0.tgz",
+ "integrity": "sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-timeout": "^1.0.1",
+ "make-asynchronous": "^1.0.1",
+ "time-span": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz",
+ "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1"
+ }
+ },
+ "node_modules/temp-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
+ "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/tempy": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.2.0.tgz",
+ "integrity": "sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-stream": "^3.0.0",
+ "temp-dir": "^3.0.0",
+ "type-fest": "^2.12.2",
+ "unique-string": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/time-span": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz",
+ "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "convert-hrtime": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz",
+ "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/unicode-emoji-modifier-base": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz",
+ "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+ "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universal-user-agent": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
+ "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/url-join": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
+ "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/web-worker": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz",
+ "integrity": "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
+ "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz",
+ "integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..0bebf0e
--- /dev/null
+++ b/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "wraith",
+ "version": "0.0.0-development",
+ "private": true,
+ "description": "Private cross-chain trigger engine on Flare. Encrypted conditions in, attested execution out.",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/LSUDOKO/Wraith.git"
+ },
+ "license": "Apache-2.0",
+ "scripts": {
+ "test:contracts": "cd contracts && forge test -vv",
+ "build:contracts": "cd contracts && forge build",
+ "test:extension": "cd extension && go test ./...",
+ "test": "npm run test:contracts && npm run test:extension",
+ "release": "semantic-release"
+ },
+ "devDependencies": {
+ "@semantic-release/changelog": "^6.0.3",
+ "@semantic-release/git": "^10.0.1",
+ "@semantic-release/github": "^11.0.1",
+ "semantic-release": "^24.2.3"
+ }
+}