From b134161cdbbe05ee6d4b8762a3329d9a9c487f23 Mon Sep 17 00:00:00 2001 From: the-laziest <161997049+the-laziest@users.noreply.github.com> Date: Mon, 6 May 2024 17:30:29 +0200 Subject: [PATCH 001/100] fix(eventindexer): nft balance changes should be wrapped in db transaction (#16943) Co-authored-by: jeff <113397187+cyberhorsey@users.noreply.github.com> --- .../indexer/index_nft_transfers.go | 35 +++++---- packages/eventindexer/nft_balance.go | 7 +- .../pkg/mock/nft_balance_repository.go | 16 ++--- packages/eventindexer/pkg/repo/nft_balance.go | 45 +++++++++--- .../eventindexer/pkg/repo/nft_balance_test.go | 71 +++++++------------ 5 files changed, 87 insertions(+), 87 deletions(-) diff --git a/packages/eventindexer/indexer/index_nft_transfers.go b/packages/eventindexer/indexer/index_nft_transfers.go index 385d7441e55..6f755ea8655 100644 --- a/packages/eventindexer/indexer/index_nft_transfers.go +++ b/packages/eventindexer/indexer/index_nft_transfers.go @@ -116,35 +116,34 @@ func (i *Indexer) saveERC721Transfer(ctx context.Context, chainID *big.Int, vLog ) // increment To address's balance - - _, err := i.nftBalanceRepo.IncreaseBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + // decrement From address's balance + increaseOpts := eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: to, TokenID: tokenID, ContractAddress: vLog.Address.Hex(), ContractType: "ERC721", Amount: 1, // ERC721 is always 1 - }) - if err != nil { - return err } + decreaseOpts := eventindexer.UpdateNFTBalanceOpts{} - // decrement From address's balance // ignore zero address since that is usually the "mint" if from != ZeroAddress.Hex() { - _, err = i.nftBalanceRepo.SubtractBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + decreaseOpts = eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: from, TokenID: tokenID, ContractAddress: vLog.Address.Hex(), ContractType: "ERC721", Amount: 1, // ERC721 is always 1 - }) - if err != nil { - return err } } + _, _, err := i.nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(ctx, increaseOpts, decreaseOpts) + if err != nil { + return err + } + return nil } @@ -200,32 +199,32 @@ func (i *Indexer) saveERC1155Transfer(ctx context.Context, chainID *big.Int, vLo // increment To address's balance for _, transfer := range transfers { - _, err = i.nftBalanceRepo.IncreaseBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + increaseOpts := eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: to, TokenID: transfer.ID.Int64(), ContractAddress: vLog.Address.Hex(), ContractType: "ERC1155", Amount: transfer.Amount.Int64(), - }) - if err != nil { - return err } + decreaseOpts := eventindexer.UpdateNFTBalanceOpts{} if from != ZeroAddress.Hex() { // decrement From address's balance - _, err = i.nftBalanceRepo.SubtractBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + decreaseOpts = eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: from, TokenID: transfer.ID.Int64(), ContractAddress: vLog.Address.Hex(), ContractType: "ERC1155", Amount: transfer.Amount.Int64(), - }) - if err != nil { - return err } } + + _, _, err = i.nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(ctx, increaseOpts, decreaseOpts) + if err != nil { + return err + } } return nil diff --git a/packages/eventindexer/nft_balance.go b/packages/eventindexer/nft_balance.go index 9b1651a49b1..1497b32d6e3 100644 --- a/packages/eventindexer/nft_balance.go +++ b/packages/eventindexer/nft_balance.go @@ -30,8 +30,11 @@ type UpdateNFTBalanceOpts struct { // NFTBalanceRepository is used to interact with nft balances in the store type NFTBalanceRepository interface { - SubtractBalance(ctx context.Context, opts UpdateNFTBalanceOpts) (*NFTBalance, error) - IncreaseBalance(ctx context.Context, opts UpdateNFTBalanceOpts) (*NFTBalance, error) + IncreaseAndDecreaseBalancesInTx( + ctx context.Context, + increaseOpts UpdateNFTBalanceOpts, + decreaseOpts UpdateNFTBalanceOpts, + ) (increasedBalance *NFTBalance, decreasedBalance *NFTBalance, err error) FindByAddress(ctx context.Context, req *http.Request, address string, diff --git a/packages/eventindexer/pkg/mock/nft_balance_repository.go b/packages/eventindexer/pkg/mock/nft_balance_repository.go index 4b55cae4b70..a043371a5d3 100644 --- a/packages/eventindexer/pkg/mock/nft_balance_repository.go +++ b/packages/eventindexer/pkg/mock/nft_balance_repository.go @@ -16,18 +16,12 @@ func NewNFTBalanceRepository() *NFTBalanceRepository { return &NFTBalanceRepository{} } -func (r *NFTBalanceRepository) SubtractBalance( +func (r *NFTBalanceRepository) IncreaseAndDecreaseBalancesInTx( ctx context.Context, - opts eventindexer.UpdateNFTBalanceOpts, -) (*eventindexer.NFTBalance, error) { - return nil, nil -} - -func (r *NFTBalanceRepository) IncreaseBalance( - ctx context.Context, - opts eventindexer.UpdateNFTBalanceOpts, -) (*eventindexer.NFTBalance, error) { - return nil, nil + increaseOpts eventindexer.UpdateNFTBalanceOpts, + decreaseOpts eventindexer.UpdateNFTBalanceOpts, +) (increasedBalance *eventindexer.NFTBalance, decreasedBalance *eventindexer.NFTBalance, err error) { + return nil, nil, nil } func (r *NFTBalanceRepository) FindByAddress(ctx context.Context, diff --git a/packages/eventindexer/pkg/repo/nft_balance.go b/packages/eventindexer/pkg/repo/nft_balance.go index c3ec5e381d7..ccd6df691b8 100644 --- a/packages/eventindexer/pkg/repo/nft_balance.go +++ b/packages/eventindexer/pkg/repo/nft_balance.go @@ -24,8 +24,9 @@ func NewNFTBalanceRepository(db eventindexer.DB) (*NFTBalanceRepository, error) }, nil } -func (r *NFTBalanceRepository) IncreaseBalance( +func (r *NFTBalanceRepository) increaseBalanceInDB( ctx context.Context, + db *gorm.DB, opts eventindexer.UpdateNFTBalanceOpts, ) (*eventindexer.NFTBalance, error) { b := &eventindexer.NFTBalance{ @@ -34,11 +35,9 @@ func (r *NFTBalanceRepository) IncreaseBalance( Address: opts.Address, ContractType: opts.ContractType, ChainID: opts.ChainID, - Amount: 0, } - err := r.db. - GormDB(). + err := db. Where("contract_address = ?", opts.ContractAddress). Where("token_id = ?", opts.TokenID). Where("address = ?", opts.Address). @@ -55,15 +54,16 @@ func (r *NFTBalanceRepository) IncreaseBalance( b.Amount += opts.Amount // update the row to reflect new balance - if err := r.db.GormDB().Save(b).Error; err != nil { + if err := db.Save(b).Error; err != nil { return nil, errors.Wrap(err, "r.db.Save") } return b, nil } -func (r *NFTBalanceRepository) SubtractBalance( +func (r *NFTBalanceRepository) decreaseBalanceInDB( ctx context.Context, + db *gorm.DB, opts eventindexer.UpdateNFTBalanceOpts, ) (*eventindexer.NFTBalance, error) { b := &eventindexer.NFTBalance{ @@ -74,8 +74,7 @@ func (r *NFTBalanceRepository) SubtractBalance( ChainID: opts.ChainID, } - err := r.db. - GormDB(). + err := db. Where("contract_address = ?", opts.ContractAddress). Where("token_id = ?", opts.TokenID). Where("address = ?", opts.Address). @@ -86,7 +85,7 @@ func (r *NFTBalanceRepository) SubtractBalance( if err != gorm.ErrRecordNotFound { return nil, errors.Wrap(err, "r.db.gormDB.First") } else { - // cant subtract a balance if user never had this balance, indexing issue + // cant decrease a balance if user never had this balance, indexing issue return nil, nil } } @@ -95,12 +94,12 @@ func (r *NFTBalanceRepository) SubtractBalance( // we can just delete the row, this user has no more of this NFT if b.Amount == 0 { - if err := r.db.GormDB().Delete(b).Error; err != nil { + if err := db.Delete(b).Error; err != nil { return nil, errors.Wrap(err, "r.db.Delete") } } else { // update the row instead to reflect new balance - if err := r.db.GormDB().Save(b).Error; err != nil { + if err := db.Save(b).Error; err != nil { return nil, errors.Wrap(err, "r.db.Save") } } @@ -108,6 +107,30 @@ func (r *NFTBalanceRepository) SubtractBalance( return b, nil } +func (r *NFTBalanceRepository) IncreaseAndDecreaseBalancesInTx( + ctx context.Context, + increaseOpts eventindexer.UpdateNFTBalanceOpts, + decreaseOpts eventindexer.UpdateNFTBalanceOpts, +) (increasedBalance *eventindexer.NFTBalance, decreasedBalance *eventindexer.NFTBalance, err error) { + err = r.db.GormDB().Transaction(func(tx *gorm.DB) (err error) { + increasedBalance, err = r.increaseBalanceInDB(ctx, tx, increaseOpts) + if err != nil { + return err + } + + if decreaseOpts.Amount != 0 { + decreasedBalance, err = r.decreaseBalanceInDB(ctx, tx, decreaseOpts) + } + + return err + }) + if err != nil { + return nil, nil, errors.Wrap(err, "r.db.Transaction") + } + + return increasedBalance, decreasedBalance, nil +} + func (r *NFTBalanceRepository) FindByAddress(ctx context.Context, req *http.Request, address string, diff --git a/packages/eventindexer/pkg/repo/nft_balance_test.go b/packages/eventindexer/pkg/repo/nft_balance_test.go index 15416b29b05..86d04be8602 100644 --- a/packages/eventindexer/pkg/repo/nft_balance_test.go +++ b/packages/eventindexer/pkg/repo/nft_balance_test.go @@ -39,7 +39,7 @@ func Test_NewNFTBalanceRepo(t *testing.T) { } } -func TestIntegration_NFTBalance_Increase(t *testing.T) { +func TestIntegration_NFTBalance_Increase_And_Decrease(t *testing.T) { db, close, err := testMysql(t) assert.Equal(t, nil, err) @@ -48,43 +48,7 @@ func TestIntegration_NFTBalance_Increase(t *testing.T) { nftBalanceRepo, err := NewNFTBalanceRepository(db) assert.Equal(t, nil, err) - tests := []struct { - name string - opts eventindexer.UpdateNFTBalanceOpts - wantErr error - }{ - { - "success", - eventindexer.UpdateNFTBalanceOpts{ - ChainID: 1, - Address: "0x123", - TokenID: 1, - ContractAddress: "0x123", - ContractType: "ERC721", - Amount: 1, - }, - nil, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - _, err := nftBalanceRepo.IncreaseBalance(context.Background(), tt.opts) - assert.Equal(t, tt.wantErr, err) - }) - } -} - -func TestIntegration_NFTBalance_Decrease(t *testing.T) { - db, close, err := testMysql(t) - assert.Equal(t, nil, err) - - defer close() - - nftBalanceRepo, err := NewNFTBalanceRepository(db) - assert.Equal(t, nil, err) - - bal1, err := nftBalanceRepo.IncreaseBalance(context.Background(), + bal1, _, err := nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(context.Background(), eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -92,11 +56,11 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { ContractAddress: "0x123", ContractType: "ERC721", Amount: 1, - }) + }, eventindexer.UpdateNFTBalanceOpts{}) assert.Equal(t, nil, err) assert.NotNil(t, bal1) - bal2, err := nftBalanceRepo.IncreaseBalance(context.Background(), + bal2, _, err := nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(context.Background(), eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -104,17 +68,26 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { ContractAddress: "0x123456", ContractType: "ERC721", Amount: 2, - }) + }, eventindexer.UpdateNFTBalanceOpts{}) assert.Equal(t, nil, err) assert.NotNil(t, bal2) tests := []struct { - name string - opts eventindexer.UpdateNFTBalanceOpts - wantErr error + name string + increaseOpts eventindexer.UpdateNFTBalanceOpts + decreaseOpts eventindexer.UpdateNFTBalanceOpts + wantErr error }{ { "success", + eventindexer.UpdateNFTBalanceOpts{ + ChainID: 1, + Address: "0x123", + TokenID: 1, + ContractAddress: "0x123456789", + ContractType: "ERC721", + Amount: 1, + }, eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -127,6 +100,14 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { }, { "one left", + eventindexer.UpdateNFTBalanceOpts{ + ChainID: 1, + Address: "0x123", + TokenID: 1, + ContractAddress: "0x123456789", + ContractType: "ERC721", + Amount: 1, + }, eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -141,7 +122,7 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - _, err := nftBalanceRepo.SubtractBalance(context.Background(), tt.opts) + _, _, err := nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(context.Background(), tt.increaseOpts, tt.decreaseOpts) assert.Equal(t, tt.wantErr, err) }) } From 5658796c809d2b4372eecab5a15a7cf03b378ddf Mon Sep 17 00:00:00 2001 From: brachsterX Date: Mon, 6 May 2024 19:21:33 +0200 Subject: [PATCH 002/100] chore(protocol): fix links in docs (#16977) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> --- packages/protocol/docs/how_taiko_proves_blocks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/docs/how_taiko_proves_blocks.md b/packages/protocol/docs/how_taiko_proves_blocks.md index 0c5d1c3e3e9..1d1dd7dcf08 100644 --- a/packages/protocol/docs/how_taiko_proves_blocks.md +++ b/packages/protocol/docs/how_taiko_proves_blocks.md @@ -109,7 +109,7 @@ struct BlockMetadata { The following [**block level variables**](https://docs.soliditylang.org/en/latest/units-and-global-variables.html) are accessible to the EVM, but their values are not part of the MPT so we need a different way to verify their correctness. - `blockhash(uint blockNumber) returns (bytes32)`: hash of the given block when `blocknumber` is one of the 256 most recent blocks; otherwise returns zero -- `block.basefee` (`uint`): current block's base fee ([EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) and [modified EIP-1559](./L2EIP1559.md)) +- `block.basefee` (`uint`): current block's base fee ([EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) and [modified EIP-1559](eip1559_on_l2.md)) - `block.chainid` (`uint`): current chain id - `block.coinbase` (`address payable`): current block miner's address - `block.prevrandao` (`uint`): alias for `block.prevrandao` ([EIP-4399](https://eips.ethereum.org/EIPS/eip-4399)) From 2677708d395fb3043250a78854e0688284fb5b1c Mon Sep 17 00:00:00 2001 From: Edvin Ukko <168254967+edvenukko@users.noreply.github.com> Date: Tue, 7 May 2024 08:52:46 +0800 Subject: [PATCH 003/100] fix(eventindexer): fix Dockerfile problems (#16996) Co-authored-by: jeff <113397187+cyberhorsey@users.noreply.github.com> Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- Dockerfile | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 67e3abdafea..a1d52db69d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ +ARG PACKAGE=eventindexer + FROM golang:1.21.0 as builder -ARG PACKAGE=eventindexer +ARG PACKAGE RUN apt install git curl @@ -12,16 +14,17 @@ COPY . . RUN go mod download -WORKDIR /taiko-mono/packages/$PACKAGE +WORKDIR /taiko-mono/packages/${PACKAGE} -RUN CGO_ENABLED=0 GOOS=linux go build -o /taiko-mono/packages/$PACKAGE/bin/${PACKAGE} /taiko-mono/packages/$PACKAGE/cmd/main.go +RUN CGO_ENABLED=0 GOOS=linux go build -o /taiko-mono/packages/${PACKAGE}/bin/${PACKAGE} /taiko-mono/packages/${PACKAGE}/cmd/main.go FROM alpine:latest ARG PACKAGE +ENV PACKAGE=${PACKAGE} RUN apk add --no-cache ca-certificates -COPY --from=builder /taiko-mono/packages/$PACKAGE/bin/$PACKAGE /usr/local/bin/ +COPY --from=builder /taiko-mono/packages/${PACKAGE}/bin/${PACKAGE} /usr/local/bin/ -ENTRYPOINT ["$PACKAGE"] \ No newline at end of file +ENTRYPOINT /usr/local/bin/${PACKAGE} \ No newline at end of file From 84080d4f2318b9742805deb9d680fa73760a44af Mon Sep 17 00:00:00 2001 From: polebug Date: Tue, 7 May 2024 10:05:55 +0800 Subject: [PATCH 004/100] fix(eventindexer): fix match logic for transferBatchSignatureHash (#17015) --- packages/eventindexer/indexer/filter.go | 2 +- packages/eventindexer/indexer/index_nft_transfers.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eventindexer/indexer/filter.go b/packages/eventindexer/indexer/filter.go index 09a0e99ad62..d7849d3efee 100644 --- a/packages/eventindexer/indexer/filter.go +++ b/packages/eventindexer/indexer/filter.go @@ -36,7 +36,7 @@ func filterFunc( err = i.saveTransitionProvedEvents(ctx, chainID, transitionProvedEvents) if err != nil { - return errors.Wrap(err, "i.saveBlockProvenEvents") + return errors.Wrap(err, "i.saveTransitionProvedEvents") } return nil diff --git a/packages/eventindexer/indexer/index_nft_transfers.go b/packages/eventindexer/indexer/index_nft_transfers.go index 6f755ea8655..d27a35fdce1 100644 --- a/packages/eventindexer/indexer/index_nft_transfers.go +++ b/packages/eventindexer/indexer/index_nft_transfers.go @@ -177,7 +177,7 @@ func (i *Indexer) saveERC1155Transfer(ctx context.Context, chainID *big.Int, vLo } transfers = append(transfers, t) - } else if vLog.Topics[0].Hex() != transferBatchSignatureHash.Hex() { + } else if vLog.Topics[0].Hex() == transferBatchSignatureHash.Hex() { var t []transfer err = erc1155ABI.UnpackIntoInterface(&t, "TransferBatch", []byte(vLog.Data)) From 40e2b0cf547a2a053ca41ba0eea0cefa91c89454 Mon Sep 17 00:00:00 2001 From: bytenoob Date: Tue, 7 May 2024 10:36:51 +0800 Subject: [PATCH 005/100] chore(relayer): remove redundant code and add log for errTxReverted (#17012) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- packages/relayer/processor/process_message.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index bc609f8a019..0ce7b430b61 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -98,15 +98,11 @@ func (p *Processor) processMessage( return false, msgBody.TimesRetried, err } - receipt, err := p.sendProcessMessageCall(ctx, msgBody.Event, encodedSignalProof) + _, err = p.sendProcessMessageCall(ctx, msgBody.Event, encodedSignalProof) if err != nil { return false, msgBody.TimesRetried, err } - if receipt.Status != types.ReceiptStatusSuccessful { - return false, msgBody.TimesRetried, err - } - messageStatus, err := p.destBridge.MessageStatus(&bind.CallOpts{ Context: ctx, }, msgBody.Event.MsgHash) @@ -412,6 +408,9 @@ func (p *Processor) sendProcessMessageCall( if receipt.Status != types.ReceiptStatusSuccessful { relayer.MessageSentEventsProcessedReverted.Inc() + slog.Warn("Transaction reverted", "txHash", hex.EncodeToString(receipt.TxHash.Bytes()), + "srcTxHash", event.Raw.TxHash.Hex(), + "status", receipt.Status) return nil, errTxReverted } From fcbc3463e623b81eb5ed9f73c5098e5fbea874ca Mon Sep 17 00:00:00 2001 From: ukurenov <154307006+ukurenov@users.noreply.github.com> Date: Tue, 7 May 2024 05:37:52 +0300 Subject: [PATCH 006/100] fix(bridge-ui): dropdown css and color css fix (#17000) Co-authored-by: Korbinian --- .../ImportStep/TokenInput/TokenInput.svelte | 6 +++--- .../ChainSelectors/SelectorDialogs/ChainsDialog.svelte | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/TokenInput/TokenInput.svelte b/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/TokenInput/TokenInput.svelte index 8f81bbb7da8..f70cea6767a 100644 --- a/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/TokenInput/TokenInput.svelte +++ b/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/TokenInput/TokenInput.svelte @@ -231,7 +231,7 @@ - +
@@ -242,9 +242,9 @@ >{$t('recipient.label')}
{:else if showInsufficientBalanceAlert} - + {:else if showInvalidTokenAlert} - + {:else} {/if} diff --git a/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte b/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte index 2e1843a53d2..6317de54fa3 100644 --- a/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte +++ b/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte @@ -62,10 +62,10 @@
  • -
    - - - -
    + + +
    From 23bfeb66f1a0d4c11b5784a8467087fea315157a Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 7 May 2024 14:19:58 +0800 Subject: [PATCH 008/100] refactor(protocol): improve block liveness bond handling (#17010) --- .../protocol/contracts/L1/libs/LibProving.sol | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 8ec54573089..1dd60fc06d9 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -23,7 +23,6 @@ library LibProving { ITierProvider.Tier tier; bytes32 metaHash; address assignedProver; - uint96 livenessBond; uint64 slot; uint64 blockId; uint32 tid; @@ -201,26 +200,8 @@ library LibProving { } local.isTopTier = local.tier.contestBond == 0; - IERC20 tko = IERC20(_resolver.resolve(LibStrings.B_TAIKO_TOKEN, false)); - - local.livenessBond = blk.livenessBond; - if (local.isTopTier) { - if (local.livenessBond != 0) { - if ( - local.inProvingWindow - || ( - _proof.data.length == 32 - && bytes32(_proof.data) == LibStrings.H_RETURN_LIVENESS_BOND - ) - ) { - tko.safeTransfer(local.assignedProver, local.livenessBond); - } - blk.livenessBond = 0; - local.livenessBond = 0; - } - } - local.sameTransition = _tran.blockHash == ts.blockHash && _tran.stateRoot == ts.stateRoot; + IERC20 tko = IERC20(_resolver.resolve(LibStrings.B_TAIKO_TOKEN, false)); if (_proof.tier > ts.tier) { // Handles the case when an incoming tier is higher than the current transition's tier. @@ -403,6 +384,8 @@ library LibProving { uint256 reward; // reward to the new (current) prover if (_ts.contester != address(0)) { + // assert(_blk.livenessBond == 0); + if (_local.sameTransition) { // The contested transition is proven to be valid, contester loses the game reward = _rewardAfterFriction(_ts.contestBond); @@ -424,14 +407,19 @@ library LibProving { // - 2) the transition is contested. reward = _rewardAfterFriction(_ts.validityBond); - if (_local.livenessBond != 0) { - if (_local.assignedProver == msg.sender && _local.inProvingWindow) { - unchecked { - reward += _local.livenessBond; + uint256 livenessBond = _blk.livenessBond; + if (livenessBond != 0) { + // After the first proof, the block's liveness bond will always be reset to 0. + // This means liveness bond will be handled only once for any given block. + _blk.livenessBond = 0; + + if (_returnLivenessBond(_local, _proof.data)) { + if (_blk.assignedProver == msg.sender) { + reward += livenessBond; + } else { + _tko.safeTransfer(_blk.assignedProver, livenessBond); } } - _blk.livenessBond = 0; - _local.livenessBond = 0; } } @@ -459,4 +447,18 @@ library LibProving { function _rewardAfterFriction(uint256 _amount) private pure returns (uint256) { return _amount == 0 ? 0 : (_amount * 7) >> 3; } + + /// @dev Returns if the liveness bond shall be returned. + function _returnLivenessBond( + Local memory _local, + bytes memory _proofData + ) + private + pure + returns (bool) + { + return _local.inProvingWindow && _local.tid == 1 + || _local.isTopTier && _proofData.length == 32 + && bytes32(_proofData) == LibStrings.H_RETURN_LIVENESS_BOND; + } } From c2a4a330c814b5469488f6bf513f45ad276d3e6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 14:21:12 +0800 Subject: [PATCH 009/100] chore(deps): bump github.com/urfave/cli/v2 from 2.27.1 to 2.27.2 (#16990) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 7ba5c1d7a4f..fc7a8ac66be 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/swaggo/swag v1.16.3 github.com/testcontainers/testcontainers-go v0.30.0 - github.com/urfave/cli/v2 v2.27.1 + github.com/urfave/cli/v2 v2.27.2 golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 golang.org/x/sync v0.7.0 gopkg.in/go-playground/assert.v1 v1.2.1 @@ -76,7 +76,7 @@ require ( github.com/containerd/containerd v1.7.12 // indirect github.com/containerd/log v0.1.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect @@ -186,7 +186,7 @@ require ( github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect github.com/yosssi/ace v0.0.5 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect diff --git a/go.sum b/go.sum index 3059ac35050..5779c6068a3 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= @@ -643,8 +643,8 @@ github.com/tursodatabase/libsql-client-go v0.0.0-20240220085343-4ae0eb9d0898 h1: github.com/tursodatabase/libsql-client-go v0.0.0-20240220085343-4ae0eb9d0898/go.mod h1:9bKuHS7eZh/0mJndbUOrCx8Ej3PlsRDszj4L7oVYMPQ= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= -github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= +github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.22.0/go.mod h1:0mw2RjXGOzxf4NL2jni3gUQ7LfjjUSiG5sskOUUSEpU= @@ -671,8 +671,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/ydb-platform/ydb-go-genproto v0.0.0-20240126124512-dbb0e1720dbf h1:ckwNHVo4bv2tqNkgx3W3HANh3ta1j6TR5qw08J1A7Tw= From b978e11ae6f0c0e7c4c69077a4d953d53943d4ed Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Tue, 7 May 2024 09:22:40 +0200 Subject: [PATCH 010/100] chore(protocol): add script to deploy and change TKO in ERC20Vault (#16974) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Keszey Dániel --- .../DeployAndChangeTaikoTokenOnL2.s.sol | 59 +++++++++++++++++++ .../protocol/script/SetupUSDCBridging.s.sol | 55 ----------------- 2 files changed, 59 insertions(+), 55 deletions(-) create mode 100644 packages/protocol/script/DeployAndChangeTaikoTokenOnL2.s.sol delete mode 100644 packages/protocol/script/SetupUSDCBridging.s.sol diff --git a/packages/protocol/script/DeployAndChangeTaikoTokenOnL2.s.sol b/packages/protocol/script/DeployAndChangeTaikoTokenOnL2.s.sol new file mode 100644 index 00000000000..1f41b830a33 --- /dev/null +++ b/packages/protocol/script/DeployAndChangeTaikoTokenOnL2.s.sol @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../test/DeployCapability.sol"; +import "../contracts/tko/BridgedTaikoToken.sol"; +import "../contracts/tokenvault/ERC20Vault.sol"; + +contract DeployAndChangeTaikoTokenOnL2 is DeployCapability { + // If the private key to deploy proxy shall be different to the private key to changing the + // vault's bridge address(changeBridgedToken) then we need 2 private keys. + + address public vaultOwner = vm.envAddress("VAULT_OWNER"); + uint256 public vaultOwnerPrivateKey = vm.envUint("VAULT_OWNER_PRIVATE_KEY"); + address public l2Erc20Vault = vm.envAddress("ERC20_VAULT_ON_L2"); + + modifier broadcast() { + require(vaultOwnerPrivateKey != 0, "invalid private key"); + vm.startBroadcast(); + _; + vm.stopBroadcast(); + } + + function run() external broadcast { + // Change BridgedToken + ERC20Vault vault = ERC20Vault(l2Erc20Vault); + + // Deploy the TaikoToken contract on L2 + address deployedTkoProxy = deployProxy({ + name: "taiko_token", + impl: address(new BridgedTaikoToken()), + data: abi.encodeCall(BridgedTaikoToken.init, (vaultOwner, vault.addressManager())) + }); + + (address canonicalTkoAddress, uint256 chainId) = + BridgedTaikoToken(deployedTkoProxy).canonical(); + + address currBridgedtoken = vault.canonicalToBridged(chainId, canonicalTkoAddress); + assert(currBridgedtoken == address(0)); + + vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: uint64(chainId), + addr: canonicalTkoAddress, + decimals: 18, + symbol: "TKO", + name: "Taiko Token" + }), + deployedTkoProxy + ); + if (vault.paused()) { + vault.unpause(); + } + + address newBridgedToken = vault.canonicalToBridged(chainId, canonicalTkoAddress); + console2.log("new btoken for tko:", newBridgedToken); + + require(deployedTkoProxy == newBridgedToken, "unexpected result"); + } +} diff --git a/packages/protocol/script/SetupUSDCBridging.s.sol b/packages/protocol/script/SetupUSDCBridging.s.sol deleted file mode 100644 index d04b79d8669..00000000000 --- a/packages/protocol/script/SetupUSDCBridging.s.sol +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import "../test/DeployCapability.sol"; -import "../contracts/tokenvault/ERC20Vault.sol"; - -/// @dev This script shall be run on Taiko chain to hook up a native USDC deployment and the USDC -/// deployed on layer 1. -/// -/// To deploy a native USDC contract on L2, run: -/// https://github.com/taikoxyz/USDC/blob/main/script/DeployUSDC.s.sol -contract SetupUSDCBridging is DeployCapability { - address public constant USDC_ON_ETHEREUM = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; - - uint256 public privateKey = vm.envUint("PRIVATE_KEY"); - address public erc20VaultOnL2 = vm.envAddress("ERC20_VAULT_ON_L2"); - - // These are FiatTokenProxy addresses of the USDC coin. - address public usdcOnL1 = vm.envAddress("USDC_ADDRESS_ON_L1"); - address public usdcOnL2 = vm.envAddress("USDC_ADDRESS_ON_L2"); - - function run() external { - require(erc20VaultOnL2 != address(0) && usdcOnL2 != address(0), "invalid params"); - - if (usdcOnL1 == address(0)) { - usdcOnL1 = USDC_ON_ETHEREUM; - } - - ERC20Vault vault = ERC20Vault(erc20VaultOnL2); - - address currBridgedtoken = vault.canonicalToBridged(1, usdcOnL1); - console2.log("current btoken for usdc:", currBridgedtoken); - - vm.startBroadcast(privateKey); - vault.changeBridgedToken( - ERC20Vault.CanonicalERC20({ - chainId: 1, - addr: usdcOnL1, - decimals: 6, - symbol: "USDC", - name: "USD Coin" - }), - usdcOnL2 - ); - if (vault.paused()) { - vault.unpause(); - } - vm.stopBroadcast(); - - address newBridgedToken = vault.canonicalToBridged(1, usdcOnL1); - console2.log("new btoken for usdc:", newBridgedToken); - - require(usdcOnL2 == newBridgedToken, "unexpected result"); - } -} From 88a13b65478d96b7538d43561ebd0641514d9511 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 7 May 2024 17:37:28 +0800 Subject: [PATCH 011/100] feat(protocol): remove more timelock related code (#17018) --- .../script/SetRemoteBridgeSuites.s.sol | 40 +++---------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/packages/protocol/script/SetRemoteBridgeSuites.s.sol b/packages/protocol/script/SetRemoteBridgeSuites.s.sol index a851ff77152..2b757fb61f5 100644 --- a/packages/protocol/script/SetRemoteBridgeSuites.s.sol +++ b/packages/protocol/script/SetRemoteBridgeSuites.s.sol @@ -6,7 +6,6 @@ import "../test/DeployCapability.sol"; contract SetRemoteBridgeSuites is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); uint256 public securityCouncilPrivateKey = vm.envUint("SECURITY_COUNCIL_PRIVATE_KEY"); - address public timelockAddress = vm.envAddress("TIMELOCK_ADDRESS"); address public addressManagerAddress = vm.envAddress("ADDRESS_MANAGER_ADDRESS"); uint256[] public remoteChainIDs = vm.envUint("REMOTE_CHAIN_IDS", ","); address[] public remoteSignalServices = vm.envAddress("REMOTE_SIGNAL_SERVICES", ","); @@ -40,42 +39,13 @@ contract SetRemoteBridgeSuites is DeployCapability { for (uint256 i; i < remoteChainIDs.length; ++i) { uint64 chainid = uint64(remoteChainIDs[i]); - - if (securityCouncilPrivateKey == 0) { - register(addressManagerAddress, "signal_service", remoteSignalServices[i], chainid); - register(addressManagerAddress, "bridge", remoteBridges[i], chainid); - register(addressManagerAddress, "erc20_vault", remoteERC20Vaults[i], chainid); - register(addressManagerAddress, "erc721_vault", remoteERC721Vaults[i], chainid); - register(addressManagerAddress, "erc1155_vault", remoteERC1155Vaults[i], chainid); - continue; - } - - registerByTimelock( - addressManagerAddress, "signal_service", remoteSignalServices[i], chainid - ); - registerByTimelock(addressManagerAddress, "bridge", remoteBridges[i], chainid); - registerByTimelock(addressManagerAddress, "erc20_vault", remoteERC20Vaults[i], chainid); - registerByTimelock( - addressManagerAddress, "erc721_vault", remoteERC721Vaults[i], chainid - ); - registerByTimelock( - addressManagerAddress, "erc1155_vault", remoteERC1155Vaults[i], chainid - ); + register(addressManagerAddress, "signal_service", remoteSignalServices[i], chainid); + register(addressManagerAddress, "bridge", remoteBridges[i], chainid); + register(addressManagerAddress, "erc20_vault", remoteERC20Vaults[i], chainid); + register(addressManagerAddress, "erc721_vault", remoteERC721Vaults[i], chainid); + register(addressManagerAddress, "erc1155_vault", remoteERC1155Vaults[i], chainid); } vm.stopBroadcast(); } - - function registerByTimelock( - address registerTo, - string memory name, - address addr, - uint64 chainId - ) - internal - { - AddressManager(registerTo).setAddress(chainId, bytes32(bytes(name)), addr); - console2.log("> ", name, "@", registerTo); - console2.log("\t addr : ", addr); - } } From bbcfb2d53dc322ac9c3e7c8ba2de3f4ca7fbac33 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 7 May 2024 18:01:09 +0800 Subject: [PATCH 012/100] chore(protocol): upgrade foundry version in CI (#17019) Co-authored-by: Daniel Wang Co-authored-by: dantaik --- .github/workflows/protocol.yml | 14 +- packages/protocol/contracts/L1/TaikoData.sol | 2 +- .../protocol/genesis/GenerateGenesis.g.sol | 24 --- .../protocol/script/DeployERC20Airdrop.s.sol | 2 +- packages/protocol/script/DeployOnL1.s.sol | 6 +- packages/protocol/test/L2/TaikoL2.t.sol | 2 +- .../protocol/test/L2/TaikoL2NoFeeCheck.t.sol | 2 +- .../common/AttestationBase.t.sol | 2 +- packages/protocol/test/bridge/Bridge.t.sol | 2 +- .../test/team/airdrop/ERC20Airdrop.t.sol | 4 +- .../test/tokenvault/BridgedERC20.t.sol | 2 +- .../test/verifiers/RiscZeroVerifier.t.sol | 2 +- pnpm-lock.yaml | 200 +++++++++--------- 13 files changed, 117 insertions(+), 147 deletions(-) diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index be8be7510c6..5e1a49681a9 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -27,29 +27,23 @@ jobs: submodules: recursive - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly-2cb875799419c907cc3709e586ece2559e6b340e + uses: foundry-rs/foundry-toolchain@v1.2.0 - name: Install pnpm dependencies uses: ./.github/actions/install-pnpm-dependencies - - name: Check formatting - working-directory: ./packages/protocol - run: forge fmt --check - - name: Unit tests working-directory: ./packages/protocol run: pnpm clean && pnpm test - - name: Generate contract layout table + - name: Format solidity && update contract layout table working-directory: ./packages/protocol - run: pnpm layout + run: pnpm layout && forge fmt - name: Commit contract layout table uses: stefanzweifel/git-auto-commit-action@v5 with: - commit_message: "Add contract layout table" + commit_message: "forge fmt & update contract layout table" - name: Generate genesis working-directory: ./packages/protocol diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index a9b0adc6ed4..2c816af1773 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -163,7 +163,7 @@ library TaikoData { mapping( uint64 blockId_mod_blockRingBufferSize => mapping(uint32 transitionId => TransitionState ts) - ) transitions; + ) transitions; // Ring buffer for Ether deposits bytes32 __reserve1; SlotA slotA; // slot 5 diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index 9a9cda53bee..52f77f2227c 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -109,30 +109,6 @@ contract TestGenerateGenesis is Test, AddressResolver { assertEq(contractOwner, taikoL2Proxy.owner()); assertEq(l1ChainId, taikoL2Proxy.l1ChainId()); - vm.startPrank(taikoL2Proxy.GOLDEN_TOUCH_ADDRESS()); - for (uint32 i = 0; i < 300; ++i) { - vm.roll(block.number + 1); - vm.warp(block.number + 12); - (uint256 basefee,) = taikoL2Proxy.getBasefee(uint64(i + 1), i + 1); - vm.fee(basefee); - - uint256 gasLeftBefore = gasleft(); - - taikoL2Proxy.anchor( - keccak256(abi.encodePacked(block.timestamp, i)), - keccak256(abi.encodePacked(block.timestamp, i)), - i + 1, - i + 1 - ); - - if (i == 299) { - console2.log( - "TaikoL2.anchor gas cost after 256 L2 blocks:", gasLeftBefore - gasleft() - ); - } - } - vm.stopPrank(); - vm.startPrank(taikoL2Proxy.owner()); taikoL2Proxy.upgradeTo(address(new TaikoL2())); diff --git a/packages/protocol/script/DeployERC20Airdrop.s.sol b/packages/protocol/script/DeployERC20Airdrop.s.sol index cd640a02396..70d0f7f3d42 100644 --- a/packages/protocol/script/DeployERC20Airdrop.s.sol +++ b/packages/protocol/script/DeployERC20Airdrop.s.sol @@ -37,7 +37,7 @@ contract DeployERC20Airdrop is DeployCapability { impl: address(new ERC20Airdrop()), data: abi.encodeCall( ERC20Airdrop.init, (address(0), 0, 0, bytes32(0), bridgedTko, vaultAddress) - ) + ) }) ); diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index fe0577c4d5e..751379e4632 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -152,7 +152,7 @@ contract DeployOnL1 is DeployCapability { impl: address(new TaikoToken()), data: abi.encodeCall( TaikoToken.init, (owner, vm.envAddress("TAIKO_TOKEN_PREMINT_RECIPIENT")) - ), + ), registerTo: sharedAddressManager }); } @@ -263,7 +263,7 @@ contract DeployOnL1 is DeployCapability { vm.envBytes32("L2_GENESIS_HASH"), vm.envBool("PAUSE_TAIKO_L1") ) - ), + ), registerTo: rollupAddressManager }); @@ -330,7 +330,7 @@ contract DeployOnL1 is DeployCapability { impl: automateDcapV3AttestationImpl, data: abi.encodeCall( AutomataDcapV3Attestation.init, (owner, address(sigVerifyLib), address(pemCertChainLib)) - ), + ), registerTo: rollupAddressManager }); diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index eadb14a6f38..3665c3cf43a 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -49,7 +49,7 @@ contract TestTaikoL2 is TaikoTest { impl: address(new TaikoL2EIP1559Configurable()), data: abi.encodeCall( TaikoL2.init, (address(0), addressManager, l1ChainId, gasExcess) - ), + ), registerTo: addressManager }) ) diff --git a/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol b/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol index 8b21fbaf56f..6a10e25d6cf 100644 --- a/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol +++ b/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol @@ -49,7 +49,7 @@ contract TestTaikoL2NoFeeCheck is TaikoTest { impl: address(new SkipBasefeeCheckL2()), data: abi.encodeCall( TaikoL2.init, (address(0), addressManager, l1ChainId, gasExcess) - ), + ), registerTo: addressManager }) ) diff --git a/packages/protocol/test/automata-attestation/common/AttestationBase.t.sol b/packages/protocol/test/automata-attestation/common/AttestationBase.t.sol index 4133197796c..453d7d66470 100644 --- a/packages/protocol/test/automata-attestation/common/AttestationBase.t.sol +++ b/packages/protocol/test/automata-attestation/common/AttestationBase.t.sol @@ -61,7 +61,7 @@ contract AttestationBase is Test, DcapTestUtils, V3QuoteParseUtils { data: abi.encodeCall( AutomataDcapV3Attestation.init, (admin, address(sigVerifyLib), address(pemCertChainLib)) - ) + ) }) ); diff --git a/packages/protocol/test/bridge/Bridge.t.sol b/packages/protocol/test/bridge/Bridge.t.sol index 33caf89b67a..0cf597e4579 100644 --- a/packages/protocol/test/bridge/Bridge.t.sol +++ b/packages/protocol/test/bridge/Bridge.t.sol @@ -93,7 +93,7 @@ contract BridgeTest is TaikoTest { impl: address(new DelegateOwner()), data: abi.encodeCall( DelegateOwner.init, (mockDAO, address(addressManager), l1ChainId) - ) + ) }) ) ); diff --git a/packages/protocol/test/team/airdrop/ERC20Airdrop.t.sol b/packages/protocol/test/team/airdrop/ERC20Airdrop.t.sol index 1222a7cf9e9..ac33e319356 100644 --- a/packages/protocol/test/team/airdrop/ERC20Airdrop.t.sol +++ b/packages/protocol/test/team/airdrop/ERC20Airdrop.t.sol @@ -102,7 +102,7 @@ contract TestERC20Airdrop is TaikoTest { data: abi.encodeCall( BridgedERC20.init, (address(0), address(addressManager), randAddress(), 100, 18, "TKO", "Taiko Token") - ) + ) }) ); @@ -129,7 +129,7 @@ contract TestERC20Airdrop is TaikoTest { data: abi.encodeCall( ERC20Airdrop.init, (address(0), claimStart, claimEnd, merkleRoot, address(token), address(vault)) - ) + ) }) ); diff --git a/packages/protocol/test/tokenvault/BridgedERC20.t.sol b/packages/protocol/test/tokenvault/BridgedERC20.t.sol index 6c92727d8c3..80470c70644 100644 --- a/packages/protocol/test/tokenvault/BridgedERC20.t.sol +++ b/packages/protocol/test/tokenvault/BridgedERC20.t.sol @@ -131,7 +131,7 @@ contract TestBridgedERC20 is TaikoTest { data: abi.encodeCall( BridgedERC20.init, (owner, address(manager), srcToken, srcChainId, srcDecimals, name, name) - ), + ), registerTo: manager }) ); diff --git a/packages/protocol/test/verifiers/RiscZeroVerifier.t.sol b/packages/protocol/test/verifiers/RiscZeroVerifier.t.sol index 77c719d8a2e..75eb16dd2d0 100644 --- a/packages/protocol/test/verifiers/RiscZeroVerifier.t.sol +++ b/packages/protocol/test/verifiers/RiscZeroVerifier.t.sol @@ -48,7 +48,7 @@ contract TestRiscZeroVerifier is TaikoL1TestBase { data: abi.encodeCall( RiscZeroVerifier.init, (address(0), address(addressManager), address(riscZeroRemoteVerifier)) - ) + ) }) ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4702da61134..2af1f393f42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,10 +26,10 @@ importers: version: 2.26.1(debug@4.3.4) '@wagmi/connectors': specifier: ^4.3.1 - version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) '@wagmi/core': specifier: ^2.8.1 - version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) '@walletconnect/ethereum-provider': specifier: ^2.12.2 version: 2.12.2(react@18.3.1) @@ -38,7 +38,7 @@ importers: version: 2.6.2(react@18.3.1) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31) + version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.10.1) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.15) @@ -65,11 +65,11 @@ importers: version: 4.0.0(svelte@4.2.15) viem: specifier: ^2.9.29 - version: 2.9.31(typescript@5.4.5)(zod@3.23.6) + version: 2.10.1(typescript@5.4.5)(zod@3.23.6) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.43.1 + version: 1.44.0 '@sveltejs/adapter-auto': specifier: ^3.2.0 version: 3.2.0(@sveltejs/kit@2.5.7) @@ -162,7 +162,7 @@ importers: version: 5.4.5 vite: specifier: ^5.2.10 - version: 5.2.11(@types/node@20.12.8) + version: 5.2.11(@types/node@20.12.10) vite-tsconfig-paths: specifier: ^4.3.2 version: 4.3.2(typescript@5.4.5)(vite@5.2.11) @@ -186,7 +186,7 @@ importers: dependencies: '@wagmi/core': specifier: ^2.8.0 - version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) axios: specifier: ^1.6.7 version: 1.6.8(debug@4.3.4) @@ -195,11 +195,11 @@ importers: version: 4.0.0(svelte@4.2.15) viem: specifier: ^2.9.29 - version: 2.9.31(typescript@5.4.5)(zod@3.23.6) + version: 2.10.1(typescript@5.4.5)(zod@3.23.6) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.43.1 + version: 1.44.0 '@sveltejs/adapter-auto': specifier: ^3.2.0 version: 3.2.0(@sveltejs/kit@2.5.7) @@ -299,7 +299,7 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.8 + version: 20.12.10 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) @@ -338,7 +338,7 @@ importers: version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@types/node@20.12.10)(typescript@5.4.5) typescript: specifier: ^5.2.2 version: 5.4.5 @@ -371,7 +371,7 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.8 + version: 20.12.10 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) @@ -410,7 +410,7 @@ importers: version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@types/node@20.12.10)(typescript@5.4.5) typescript: specifier: ^5.2.2 version: 5.4.5 @@ -459,7 +459,7 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.8 + version: 20.12.10 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) @@ -498,7 +498,7 @@ importers: version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@types/node@20.12.10)(typescript@5.4.5) typescript: specifier: ^5.2.2 version: 5.4.5 @@ -513,10 +513,10 @@ importers: version: 2.1.4(typescript@5.4.5) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) '@wagmi/core': specifier: ^2.8.0 - version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) '@web3modal/common': specifier: ^4.1.1 version: 4.1.11 @@ -525,7 +525,7 @@ importers: version: 4.1.11 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31) + version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.10.1) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.15) @@ -555,14 +555,14 @@ importers: version: 3.4.3 viem: specifier: ^2.9.29 - version: 2.9.31(typescript@5.4.5)(zod@3.23.6) + version: 2.10.1(typescript@5.4.5)(zod@3.23.6) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.3.3(react@18.3.1) + version: 1.3.4(react@18.3.1) '@playwright/test': specifier: ^1.28.1 - version: 1.43.1 + version: 1.44.0 '@sveltejs/adapter-auto': specifier: ^3.0.0 version: 3.2.0(@sveltejs/kit@2.5.7) @@ -577,7 +577,7 @@ importers: version: 8.56.10 '@types/node': specifier: ^20.12.7 - version: 20.12.8 + version: 20.12.10 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) @@ -640,13 +640,13 @@ importers: version: 5.4.5 vite: specifier: ^5.0.3 - version: 5.2.11(@types/node@20.12.8) + version: 5.2.11(@types/node@20.12.10) vite-tsconfig-paths: specifier: ^4.3.2 version: 4.3.2(typescript@5.4.5)(vite@5.2.11) vitest: specifier: ^1.2.0 - version: 1.6.0(@types/node@20.12.8) + version: 1.6.0(@types/node@20.12.10) which: specifier: ^4.0.0 version: 4.0.0 @@ -2115,11 +2115,11 @@ packages: '@chainsafe/is-ip': 2.0.2 dev: false - /@chromatic-com/storybook@1.3.3(react@18.3.1): - resolution: {integrity: sha512-1y9r691T5vVGDZ0HY3YrCXUnvtrT2YrhDuvDZSvYSNUVpM/Imz6i1dnNMKb3eoI1qRsH55mI4zCt+Iq94NLedQ==} + /@chromatic-com/storybook@1.3.4(react@18.3.1): + resolution: {integrity: sha512-ZfQDc5Zg5YSC9cWdBc9QpMF0vgvknwKTB9xBE0NhCJWjGxG9mz9yLzQTzzliYulPtWgcQ+8cE+apDljYK+fWdQ==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} dependencies: - chromatic: 11.3.0 + chromatic: 11.3.1 filesize: 10.1.1 jsonfile: 6.1.0 react-confetti: 6.1.0(react@18.3.1) @@ -3442,7 +3442,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-mock: 29.7.0 dev: false @@ -3452,7 +3452,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3470,7 +3470,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: false @@ -3482,7 +3482,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: false @@ -4318,12 +4318,12 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@playwright/test@1.43.1: - resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} + /@playwright/test@1.44.0: + resolution: {integrity: sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.43.1 + playwright: 1.44.0 dev: true /@pnpm/config.env-replace@1.1.0: @@ -4758,7 +4758,7 @@ packages: resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} engines: {node: '>=14.15'} dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.32 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -5195,7 +5195,7 @@ packages: sirv: 2.0.4 svelte: 4.2.15 tiny-glob: 0.2.9 - vite: 5.2.11(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) dev: true /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3): @@ -5225,7 +5225,7 @@ packages: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) debug: 4.3.4 svelte: 4.2.15 - vite: 5.2.11(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) transitivePeerDependencies: - supports-color dev: true @@ -5264,7 +5264,7 @@ packages: magic-string: 0.30.10 svelte: 4.2.15 svelte-hmr: 0.16.0(svelte@4.2.15) - vite: 5.2.11(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) vitefu: 0.2.5(vite@5.2.11) transitivePeerDependencies: - supports-color @@ -5314,7 +5314,7 @@ packages: /@types/bn.js@5.1.5: resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 dev: false /@types/cookie@0.6.0: @@ -5329,7 +5329,7 @@ packages: /@types/dns-packet@5.6.5: resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 dev: false /@types/dom-screen-wake-lock@1.0.3: @@ -5384,17 +5384,17 @@ packages: /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 dev: false - /@types/node@18.19.31: - resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} + /@types/node@18.19.32: + resolution: {integrity: sha512-2bkg93YBSDKk8DLmmHnmj/Rwr18TLx7/n+I23BigFwgexUJoMHZOd8X1OFxuF/W3NN0S2W2E5sVabI5CPinNvA==} dependencies: undici-types: 5.26.5 dev: false - /@types/node@20.12.8: - resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} + /@types/node@20.12.10: + resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} dependencies: undici-types: 5.26.5 @@ -5405,7 +5405,7 @@ packages: /@types/pbkdf2@3.1.2: resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 dev: false /@types/pug@2.0.10: @@ -5415,7 +5415,7 @@ packages: /@types/secp256k1@4.0.6: resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 dev: false /@types/semver@7.5.8: @@ -5733,13 +5733,13 @@ packages: picocolors: 1.0.0 prettier: 3.2.5 typescript: 5.4.5 - viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) + viem: 2.10.1(typescript@5.4.5)(zod@3.23.6) zod: 3.23.6 transitivePeerDependencies: - bufferutil - utf-8-validate - /@wagmi/connectors@4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31): + /@wagmi/connectors@4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.10.1): resolution: {integrity: sha512-6u/HbWlIS2MI5lxBYbsqNZIQT4sBleFt8rhzH7mJBrHH6v95LmeZZ3qZFpWdopx4bQ6maNEZOIJnCLhv7k37DQ==} peerDependencies: '@wagmi/core': 2.9.1 @@ -5753,11 +5753,11 @@ packages: '@metamask/sdk': 0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1) '@safe-global/safe-apps-provider': 0.18.1(typescript@5.4.5) '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.5) - '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) '@walletconnect/ethereum-provider': 2.11.2(react@18.3.1) '@walletconnect/modal': 2.6.2(react@18.3.1) typescript: 5.4.5 - viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) + viem: 2.10.1(typescript@5.4.5)(zod@3.23.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -5786,7 +5786,7 @@ packages: - zod dev: false - /@wagmi/core@2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31): + /@wagmi/core@2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1): resolution: {integrity: sha512-VUILlj0qFmZEa9XpNsYhIaQe3jsJdFGSRSbn+xsvGBo+yZpNxQXuaLo3+ntuv1kTFdw8Qzk17fLGy2U9a0XFdA==} peerDependencies: '@tanstack/query-core': '>=5.0.0' @@ -5801,7 +5801,7 @@ packages: eventemitter3: 5.0.1 mipd: 0.0.5(typescript@5.4.5) typescript: 5.4.5 - viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) + viem: 2.10.1(typescript@5.4.5)(zod@3.23.6) zustand: 4.4.1(react@18.3.1) transitivePeerDependencies: - '@types/react' @@ -6483,7 +6483,7 @@ packages: qrcode: 1.5.3 dev: false - /@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31): + /@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.10.1): resolution: {integrity: sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ==} peerDependencies: '@wagmi/connectors': '>=4.0.0' @@ -6500,8 +6500,8 @@ packages: vue: optional: true dependencies: - '@wagmi/connectors': 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) - '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + '@wagmi/connectors': 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) + '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) '@web3modal/polyfills': 4.1.11 '@web3modal/scaffold': 4.1.11(react@18.3.1) '@web3modal/scaffold-react': 4.1.11(react@18.3.1) @@ -6509,7 +6509,7 @@ packages: '@web3modal/scaffold-vue': 4.1.11(react@18.3.1) '@web3modal/siwe': 4.1.11(react@18.3.1) react: 18.3.1 - viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) + viem: 2.10.1(typescript@5.4.5)(zod@3.23.6) transitivePeerDependencies: - '@types/react' dev: false @@ -6865,7 +6865,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001615 + caniuse-lite: 1.0.30001616 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -7056,8 +7056,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001615 - electron-to-chromium: 1.4.756 + caniuse-lite: 1.0.30001616 + electron-to-chromium: 1.4.757 node-releases: 2.0.14 update-browserslist-db: 1.0.15(browserslist@4.23.0) @@ -7230,8 +7230,8 @@ packages: engines: {node: '>=10'} dev: false - /caniuse-lite@1.0.30001615: - resolution: {integrity: sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==} + /caniuse-lite@1.0.30001616: + resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==} /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -7313,8 +7313,8 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chromatic@11.3.0: - resolution: {integrity: sha512-q1ZtJDJrjLGnz60ivpC16gmd7KFzcaA4eTb7gcytCqbaKqlHhCFr1xQmcUDsm14CK7JsqdkFU6S+JQdOd2ZNJg==} + /chromatic@11.3.1: + resolution: {integrity: sha512-ATAfVEn84NARTIxdiGQ8QywWg3BPM/+6stVD1stSKCO7lQLEKFyGcI+PhBBDt+ZgNcgsEsg5fo3E2dQNt01W6g==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -7331,7 +7331,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -8071,8 +8071,8 @@ packages: encoding: 0.1.13 dev: false - /electron-to-chromium@1.4.756: - resolution: {integrity: sha512-RJKZ9+vEBMeiPAvKNWyZjuYyUqMndcP1f335oHqn3BEQbs2NFtVrnK5+6Xg5wSM9TknNNpWghGDUCKGYF+xWXw==} + /electron-to-chromium@1.4.757: + resolution: {integrity: sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -8559,7 +8559,7 @@ packages: builtins: 5.1.0 eslint: 8.57.0 eslint-plugin-es-x: 7.6.0(eslint@8.57.0) - get-tsconfig: 4.7.3 + get-tsconfig: 4.7.4 globals: 13.24.0 ignore: 5.3.1 is-builtin-module: 3.2.1 @@ -9347,8 +9347,8 @@ packages: get-intrinsic: 1.2.4 dev: true - /get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + /get-tsconfig@4.7.4: + resolution: {integrity: sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -9782,8 +9782,8 @@ packages: side-channel: 1.0.6 dev: true - /intl-messageformat@10.5.11: - resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} + /intl-messageformat@10.5.12: + resolution: {integrity: sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg==} dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/fast-memoize': 2.2.0 @@ -9807,7 +9807,7 @@ packages: '@libp2p/interface-peer-info': 1.0.10 '@libp2p/interface-pubsub': 3.0.7 '@multiformats/multiaddr': 11.6.1 - '@types/node': 18.19.31 + '@types/node': 18.19.32 interface-datastore: 7.0.4 ipfs-unixfs: 9.0.1 multiformats: 11.0.2 @@ -10340,7 +10340,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-mock: 29.7.0 jest-util: 29.7.0 dev: false @@ -10370,7 +10370,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-util: 29.7.0 dev: false @@ -10379,7 +10379,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10402,7 +10402,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12144,18 +12144,18 @@ packages: mlly: 1.7.0 pathe: 1.1.2 - /playwright-core@1.43.1: - resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} + /playwright-core@1.44.0: + resolution: {integrity: sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.43.1: - resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} + /playwright@1.44.0: + resolution: {integrity: sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.43.1 + playwright-core: 1.44.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -12414,7 +12414,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.8 + '@types/node': 20.12.10 long: 5.2.3 dev: false @@ -13729,7 +13729,7 @@ packages: deepmerge: 4.3.1 esbuild: 0.19.12 estree-walker: 2.0.2 - intl-messageformat: 10.5.11 + intl-messageformat: 10.5.12 sade: 1.8.1 svelte: 4.2.15 tiny-glob: 0.2.9 @@ -14061,7 +14061,7 @@ packages: code-block-writer: 12.0.0 dev: true - /ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5): + /ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -14080,7 +14080,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.8 + '@types/node': 20.12.10 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 @@ -14525,8 +14525,8 @@ packages: - zod dev: false - /viem@2.9.31(typescript@5.4.5)(zod@3.23.6): - resolution: {integrity: sha512-8aJ8Dm/591Czwb/nRayo0z8Ls5KxqC4QYE33fmHwhx2tDUWC/hHcPZqjLRSTWFtAfi0aZKvP7BeB6UZ3ZkTRhQ==} + /viem@2.10.1(typescript@5.4.5)(zod@3.23.6): + resolution: {integrity: sha512-sfbcFdzlMHSZI+4RpqidxOqPu6xwWtmqDBWSVml2XV+n21dgQFmVRN0nHhZoyMDSo4mTSKtWwW9sHHu9vUF2mw==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -14547,7 +14547,7 @@ packages: - utf-8-validate - zod - /vite-node@1.6.0(@types/node@20.12.8): + /vite-node@1.6.0(@types/node@20.12.10): resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -14556,7 +14556,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) transitivePeerDependencies: - '@types/node' - less @@ -14596,7 +14596,7 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.4.5) - vite: 5.2.11(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) transitivePeerDependencies: - supports-color - typescript @@ -14637,7 +14637,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.2.11(@types/node@20.12.8): + /vite@5.2.11(@types/node@20.12.10): resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -14665,7 +14665,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.17.2 @@ -14692,7 +14692,7 @@ packages: vite: optional: true dependencies: - vite: 5.2.11(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) dev: true /vitest-fetch-mock@0.2.2(vitest@1.6.0): @@ -14718,7 +14718,7 @@ packages: vitest: 1.6.0(jsdom@24.0.0) dev: true - /vitest@1.6.0(@types/node@20.12.8): + /vitest@1.6.0(@types/node@20.12.10): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -14743,7 +14743,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 @@ -14761,8 +14761,8 @@ packages: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.8) - vite-node: 1.6.0(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) + vite-node: 1.6.0(@types/node@20.12.10) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -14817,8 +14817,8 @@ packages: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.8) - vite-node: 1.6.0(@types/node@20.12.8) + vite: 5.2.11(@types/node@20.12.10) + vite-node: 1.6.0(@types/node@20.12.10) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 8532b7750513b87732340030139513d2b2ee203b Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Tue, 7 May 2024 14:06:16 +0200 Subject: [PATCH 013/100] feat(protocol): fix vault name and symbol validation bug with more unit tests (#17013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Keszey Dániel --- packages/protocol/contracts/bridge/Bridge.sol | 2 +- .../contracts/tokenvault/BridgedERC20.sol | 2 +- .../contracts/tokenvault/LibBridgedToken.sol | 15 -- .../protocol/test/tokenvault/ERC20Vault.t.sol | 204 +++++++++++++++++- 4 files changed, 205 insertions(+), 18 deletions(-) diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index e5330d4db8b..f43acf9a2a8 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -142,7 +142,7 @@ contract Bridge is EssentialContract, IBridge { // Check if the destination chain is enabled. (bool destChainEnabled,) = isDestChainEnabled(_message.destChainId); - // Verify destination chain and to address. + // Verify destination chain. if (!destChainEnabled) revert B_INVALID_CHAINID(); // Ensure the sent value matches the expected amount. diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index 7f5db217ce1..d3b14ff51a1 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -71,7 +71,7 @@ contract BridgedERC20 is EssentialContract, IBridgedERC20, ERC20Upgradeable { initializer { // Check if provided parameters are valid - LibBridgedToken.validateInputs(_srcToken, _srcChainId, _symbol, _name); + LibBridgedToken.validateInputs(_srcToken, _srcChainId); __Essential_init(_owner, _addressManager); __ERC20_init(_name, _symbol); diff --git a/packages/protocol/contracts/tokenvault/LibBridgedToken.sol b/packages/protocol/contracts/tokenvault/LibBridgedToken.sol index eaf099c6c9e..c81313ccb04 100644 --- a/packages/protocol/contracts/tokenvault/LibBridgedToken.sol +++ b/packages/protocol/contracts/tokenvault/LibBridgedToken.sol @@ -15,21 +15,6 @@ library LibBridgedToken { } } - function validateInputs( - address _srcToken, - uint256 _srcChainId, - string memory _symbol, - string memory _name - ) - internal - view - { - validateInputs(_srcToken, _srcChainId); - if (bytes(_symbol).length == 0 || bytes(_name).length == 0) { - revert BTOKEN_INVALID_PARAMS(); - } - } - function checkToAddress(address _to) internal view { if (_to == address(this)) revert BTOKEN_INVALID_TO_ADDR(); } diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index af8ed079c9e..1f0fb5908fb 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -76,9 +76,14 @@ contract TestERC20Vault is TaikoTest { PrankDestBridge destChainIdBridge; SkipProofCheckSignal mockProofSignalService; FreeMintERC20 erc20; + FreeMintERC20 weirdNamedToken; uint64 destChainId = 7; uint64 srcChainId = uint64(block.chainid); + BridgedERC20 usdc; + BridgedERC20 usdt; + BridgedERC20 stETH; + function setUp() public { vm.startPrank(Carol); vm.deal(Alice, 1 ether); @@ -122,6 +127,9 @@ contract TestERC20Vault is TaikoTest { erc20 = new FreeMintERC20("ERC20", "ERC20"); erc20.mint(Alice); + weirdNamedToken = new FreeMintERC20("", "123456abcdefgh"); + weirdNamedToken.mint(Alice); + bridge = Bridge( payable( deployProxy({ @@ -162,12 +170,51 @@ contract TestERC20Vault is TaikoTest { addressManager.setAddress(uint64(block.chainid), "bridged_erc20", bridgedERC20); + usdc = BridgedERC20( + deployProxy({ + name: "usdc", + impl: address(new BridgedERC20()), + data: abi.encodeCall( + BridgedERC20.init, + (address(0), address(addressManager), randAddress(), 100, 18, "USDC", "USDC coin") + ) + }) + ); + + usdt = BridgedERC20( + deployProxy({ + name: "usdt", + impl: address(new BridgedERC20()), + data: abi.encodeCall( + BridgedERC20.init, + (address(0), address(addressManager), randAddress(), 100, 18, "USDT", "USDT coin") + ) + }) + ); + + stETH = BridgedERC20( + deployProxy({ + name: "stETH", + impl: address(new BridgedERC20()), + data: abi.encodeCall( + BridgedERC20.init, + ( + address(0), + address(addressManager), + randAddress(), + 100, + 18, + "stETH", + "Lido Staked ETH" + ) + ) + }) + ); vm.stopPrank(); } function test_20Vault_send_erc20_revert_if_allowance_not_set() public { vm.startPrank(Alice); - vm.expectRevert("ERC20: insufficient allowance"); erc20Vault.sendToken( ERC20Vault.BridgeTransferOp( @@ -383,6 +430,16 @@ contract TestERC20Vault is TaikoTest { }); } + function noNameErc20(uint64 chainId) internal view returns (ERC20Vault.CanonicalERC20 memory) { + return ERC20Vault.CanonicalERC20({ + chainId: chainId, + addr: address(weirdNamedToken), + decimals: weirdNamedToken.decimals(), + symbol: weirdNamedToken.symbol(), + name: weirdNamedToken.name() + }); + } + function test_20Vault_upgrade_bridged_tokens_20() public { vm.startPrank(Alice); @@ -463,4 +520,149 @@ contract TestERC20Vault is TaikoTest { assertEq(aliceBalanceAfterRecall, aliceBalanceBefore); assertEq(erc20VaultBalanceAfterRecall, erc20VaultBalanceBefore); } + + function test_20Vault_change_bridged_token() public { + // A mock canonical "token" + address canonicalRandomToken = vm.addr(102); + + vm.warp(block.timestamp + 91 days); + + vm.startPrank(Carol); + + erc20Vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: 1, + addr: address(erc20), + decimals: 18, + symbol: "ERC20TT", + name: "ERC20 Test token" + }), + address(usdc) + ); + + assertEq(erc20Vault.canonicalToBridged(1, address(erc20)), address(usdc)); + + vm.expectRevert(ERC20Vault.VAULT_LAST_MIGRATION_TOO_CLOSE.selector); + erc20Vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: 1, + addr: address(erc20), + decimals: 18, + symbol: "ERC20TT", + name: "ERC20 Test token" + }), + address(usdt) + ); + + vm.warp(block.timestamp + 91 days); + + vm.expectRevert(ERC20Vault.VAULT_CTOKEN_MISMATCH.selector); + erc20Vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: 1, + addr: address(erc20), + decimals: 18, + symbol: "ERC20TT_WRONG_NAME", + name: "ERC20 Test token" + }), + address(usdt) + ); + + erc20Vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: 1, + addr: address(erc20), + decimals: 18, + symbol: "ERC20TT", + name: "ERC20 Test token" + }), + address(usdt) + ); + + assertEq(erc20Vault.canonicalToBridged(1, address(erc20)), address(usdt)); + + erc20Vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: 1, + addr: canonicalRandomToken, + decimals: 18, + symbol: "ERC20TT2", + name: "ERC20 Test token2" + }), + address(stETH) + ); + + vm.warp(block.timestamp + 91 days); + + // usdc is already blacklisted! + vm.expectRevert(ERC20Vault.VAULT_BTOKEN_BLACKLISTED.selector); + erc20Vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: 1, + addr: address(erc20), + decimals: 18, + symbol: "ERC20TT", + name: "ERC20 Test token" + }), + address(usdc) + ); + + // We cannot use stETH for erc20 (as it is used in connection with another token) + vm.expectRevert(ERC20Vault.VAULT_INVALID_NEW_BTOKEN.selector); + erc20Vault.changeBridgedToken( + ERC20Vault.CanonicalERC20({ + chainId: 1, + addr: address(erc20), + decimals: 18, + symbol: "ERC20TT", + name: "ERC20 Test token" + }), + address(stETH) + ); + + vm.stopPrank(); + } + + function test_20Vault_to_string() public { + vm.startPrank(Alice); + + (, bytes memory symbolData) = + address(weirdNamedToken).staticcall(abi.encodeCall(INameSymbol.symbol, ())); + (, bytes memory nameData) = + address(weirdNamedToken).staticcall(abi.encodeCall(INameSymbol.name, ())); + + string memory decodedSymbol = LibBytes.toString(symbolData); + string memory decodedName = LibBytes.toString(nameData); + + assertEq(decodedSymbol, "123456abcdefgh"); + assertEq(decodedName, ""); + + vm.stopPrank(); + } + + function test_20Vault_deploy_erc20_with_no_name() public { + vm.startPrank(Alice); + + vm.chainId(destChainId); + + uint64 amount = 1; + + destChainIdBridge.setERC20Vault(address(destChainIdERC20Vault)); + + address bridgedAddressBefore = + destChainIdERC20Vault.canonicalToBridged(srcChainId, address(erc20)); + assertEq(bridgedAddressBefore == address(0), true); + + // Token with empty name succeeds + destChainIdBridge.sendReceiveERC20ToERC20Vault( + noNameErc20(srcChainId), + Alice, + Bob, + amount, + bytes32(0), + address(erc20Vault), + srcChainId, + 0 + ); + } } From fdb989db17f9332d224dfa414f960b2c93bb5ef9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 22:47:42 +0000 Subject: [PATCH 014/100] chore(deps): bump actions/stale from 5 to 9 (#16946) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .github/workflows/close-inactive-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-inactive-issues.yml b/.github/workflows/close-inactive-issues.yml index 7859200c10a..4d221029e4f 100644 --- a/.github/workflows/close-inactive-issues.yml +++ b/.github/workflows/close-inactive-issues.yml @@ -10,7 +10,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v5 + - uses: actions/stale@v9 with: days-before-issue-stale: 30 days-before-issue-close: 7 From 6ee06f106ab2b3e9912f81c22162d05880241c32 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 8 May 2024 08:59:06 +0800 Subject: [PATCH 015/100] chore(protocol): lower L2-to-L1 bridge quota (#17020) Co-authored-by: dantaik --- .../script/DeployL1QuotaManager.s.sol | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/protocol/script/DeployL1QuotaManager.s.sol b/packages/protocol/script/DeployL1QuotaManager.s.sol index 3fb752002a9..f566d2e12a3 100644 --- a/packages/protocol/script/DeployL1QuotaManager.s.sol +++ b/packages/protocol/script/DeployL1QuotaManager.s.sol @@ -18,7 +18,7 @@ contract DeployL1QuotaManager is DeployCapability { } function run() external broadcast { - // Deploy the QuotaManager contract with a 15 minute quota period + // Deploy the QuotaManager contract on Ethereum QuotaManager qm = QuotaManager( deployProxy({ name: "quota_manager", @@ -27,10 +27,20 @@ contract DeployL1QuotaManager is DeployCapability { }) ); - // L2-to-L1 Ether per 15 minutes: 500 Ether - qm.updateQuota(address(0), 250 ether); + // Config L2-to-L1 quota + uint104 value = 200_000; // USD + uint104 priceETH = 3100; // USD + uint104 priceTKO = 5; // USD - // L2-to-L1 TKO per 15 minutes: 100_000 (0.01% total supply) - qm.updateQuota(0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800, 100_000 ether); + // ETH + qm.updateQuota(address(0), value * 1 ether / priceETH); + // WETH + qm.updateQuota(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, value * 1 ether / priceETH); + // TKO + qm.updateQuota(0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800, value * 1e18 / priceTKO); + // USDT + qm.updateQuota(0xdAC17F958D2ee523a2206206994597C13D831ec7, value * 1e6); + // USDC + qm.updateQuota(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, value * 1e6); } } From d4b62d23b4819bd932ad52b040a01f2cbbbeb9f2 Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Tue, 7 May 2024 23:24:07 -0400 Subject: [PATCH 016/100] chore(repo): add taiko-client to taiko-mono (#16959) --- .github/workflows/taiko-client-docker.yml | 73 + .github/workflows/taiko-client-swagger.yml | 64 + .github/workflows/taiko-client-test.yml | 60 + .github/workflows/validate-pr-title.yml | 1 + .release-please-manifest.json | 3 +- _typos.toml | 6 + go.mod | 168 +- go.sum | 1153 ++++- packages/taiko-client/.gitignore | 29 + packages/taiko-client/.golangci.yml | 91 + packages/taiko-client/.swaggo | 2 + packages/taiko-client/CHANGELOG.md | 540 +++ packages/taiko-client/Dockerfile | 18 + packages/taiko-client/LICENSE.md | 21 + packages/taiko-client/Makefile | 39 + packages/taiko-client/README.md | 59 + packages/taiko-client/bindings/.githead | 1 + .../bindings/encoding/custom_error.go | 100 + .../bindings/encoding/custom_error_test.go | 42 + .../taiko-client/bindings/encoding/input.go | 416 ++ .../bindings/encoding/input_test.go | 101 + .../taiko-client/bindings/encoding/struct.go | 114 + .../bindings/encoding/struct_test.go | 72 + .../bindings/gen_address_manager.go | 1966 ++++++++ .../bindings/gen_assignment_hook.go | 2141 +++++++++ .../bindings/gen_guardian_prover.go | 2520 +++++++++++ .../bindings/gen_guardian_verifier.go | 1757 ++++++++ .../bindings/gen_lib_proposing.go | 337 ++ .../taiko-client/bindings/gen_lib_proving.go | 611 +++ .../taiko-client/bindings/gen_lib_utils.go | 181 + .../bindings/gen_lib_verifying.go | 471 ++ .../taiko-client/bindings/gen_sgx_verifier.go | 2385 ++++++++++ .../taiko-client/bindings/gen_taiko_l1.go | 3994 +++++++++++++++++ .../taiko-client/bindings/gen_taiko_l2.go | 2266 ++++++++++ .../taiko-client/bindings/gen_taiko_token.go | 3248 ++++++++++++++ .../bindings/gen_tier_provider.go | 1862 ++++++++ packages/taiko-client/cmd/flags/common.go | 181 + packages/taiko-client/cmd/flags/driver.go | 62 + packages/taiko-client/cmd/flags/proposer.go | 169 + packages/taiko-client/cmd/flags/prover.go | 255 ++ packages/taiko-client/cmd/flags/txmgr.go | 103 + packages/taiko-client/cmd/logger/logger.go | 27 + packages/taiko-client/cmd/main.go | 57 + .../taiko-client/cmd/utils/sub_command.go | 63 + packages/taiko-client/codecov.yml | 6 + packages/taiko-client/docs/docs.go | 170 + packages/taiko-client/docs/swagger.json | 135 + packages/taiko-client/docs/swagger.yaml | 93 + .../anchor_tx_constructor.go | 140 + .../anchor_tx_constructor_test.go | 109 + .../beaconsync/progress_tracker.go | 260 ++ .../beaconsync/progress_tracker_test.go | 90 + .../driver/chain_syncer/beaconsync/syncer.go | 124 + .../driver/chain_syncer/blob/syncer.go | 668 +++ .../driver/chain_syncer/blob/syncer_test.go | 242 + .../driver/chain_syncer/chain_syncer.go | 211 + .../driver/chain_syncer/chain_syncer_test.go | 161 + packages/taiko-client/driver/config.go | 76 + packages/taiko-client/driver/config_test.go | 98 + packages/taiko-client/driver/driver.go | 259 ++ packages/taiko-client/driver/driver_test.go | 339 ++ .../driver/signer/fixed_k_signer.go | 87 + .../driver/signer/fixed_k_signer_test.go | 46 + .../taiko-client/driver/state/l1_current.go | 61 + .../driver/state/l1_current_test.go | 37 + packages/taiko-client/driver/state/state.go | 207 + .../taiko-client/driver/state/state_test.go | 80 + .../txlist_decompressor.go | 77 + .../txlist_decompressor_test.go | 115 + .../driver/txlist_fetcher/blob.go | 67 + .../driver/txlist_fetcher/calldata.go | 27 + .../driver/txlist_fetcher/interface.go | 14 + packages/taiko-client/index.html | 29 + .../taiko-client/integration_test/README.md | 26 + .../integration_test/deploy_l1_contract.sh | 16 + .../integration_test/entrypoint.sh | 52 + .../taiko-client/integration_test/l1_env.sh | 42 + .../taiko-client/integration_test/test_env.sh | 47 + .../taiko-client/internal/docker/.gitignore | 1 + .../internal/docker/docker_env.sh | 33 + .../internal/docker/nodes/docker-compose.yml | 69 + .../internal/docker/nodes/jwt.hex | 1 + .../taiko-client/internal/docker/start.sh | 14 + packages/taiko-client/internal/docker/stop.sh | 9 + .../taiko-client/internal/metrics/metrics.go | 91 + .../taiko-client/internal/testutils/helper.go | 360 ++ .../internal/testutils/interfaces.go | 21 + .../taiko-client/internal/testutils/suite.go | 191 + .../taiko-client/internal/utils/test_utils.go | 16 + .../taiko-client/internal/utils/util_test.go | 49 + packages/taiko-client/internal/utils/utils.go | 162 + .../taiko-client/internal/version/version.go | 24 + .../chain_iterator/block_batch_iterator.go | 283 ++ .../block_batch_iterator_test.go | 268 ++ .../event_iterator/block_proposed_iterator.go | 144 + packages/taiko-client/pkg/error.go | 12 + packages/taiko-client/pkg/flags/config.go | 31 + packages/taiko-client/pkg/jwt/jwt.go | 39 + packages/taiko-client/pkg/jwt/jwt_test.go | 41 + packages/taiko-client/pkg/rpc/beaconclient.go | 109 + .../taiko-client/pkg/rpc/blob_datasource.go | 111 + packages/taiko-client/pkg/rpc/blob_tx.go | 137 + packages/taiko-client/pkg/rpc/blob_tx_test.go | 74 + packages/taiko-client/pkg/rpc/client.go | 163 + packages/taiko-client/pkg/rpc/client_test.go | 46 + packages/taiko-client/pkg/rpc/dial.go | 74 + packages/taiko-client/pkg/rpc/dial_test.go | 81 + packages/taiko-client/pkg/rpc/engine.go | 130 + packages/taiko-client/pkg/rpc/engine_test.go | 41 + packages/taiko-client/pkg/rpc/ethclient.go | 420 ++ .../taiko-client/pkg/rpc/ethclient_test.go | 170 + packages/taiko-client/pkg/rpc/fallback.go | 29 + .../taiko-client/pkg/rpc/fallback_test.go | 13 + packages/taiko-client/pkg/rpc/methods.go | 764 ++++ packages/taiko-client/pkg/rpc/methods_test.go | 126 + packages/taiko-client/pkg/rpc/subscription.go | 129 + .../taiko-client/pkg/rpc/subscription_test.go | 53 + packages/taiko-client/pkg/rpc/utils.go | 346 ++ packages/taiko-client/pkg/rpc/utils_test.go | 59 + packages/taiko-client/proposer/config.go | 136 + packages/taiko-client/proposer/config_test.go | 154 + packages/taiko-client/proposer/proposer.go | 426 ++ .../taiko-client/proposer/proposer_test.go | 284 ++ .../prover_selector/eth_fee_eoa_selector.go | 283 ++ .../eth_fee_eoa_selector_test.go | 69 + .../proposer/prover_selector/interface.go | 20 + .../proposer/transaction_builder/blob.go | 142 + .../proposer/transaction_builder/calldata.go | 122 + .../transaction_builder/calldata_test.go | 19 + .../proposer/transaction_builder/common.go | 26 + .../transaction_builder/common_test.go | 80 + .../proposer/transaction_builder/interface.go | 19 + .../anchor_tx_validator.go | 77 + .../anchor_tx_validator_test.go | 85 + packages/taiko-client/prover/config.go | 210 + packages/taiko-client/prover/config_test.go | 145 + .../event_handler/assignment_expired.go | 83 + .../prover/event_handler/block_proposed.go | 415 ++ .../event_handler/block_proposed_test.go | 66 + .../prover/event_handler/block_verified.go | 36 + .../event_handler/block_verified_test.go | 22 + .../prover/event_handler/interface.go | 36 + .../event_handler/transition_contested.go | 111 + .../prover/event_handler/transition_proved.go | 92 + .../event_handler/transition_proved_test.go | 133 + .../taiko-client/prover/event_handler/util.go | 148 + .../prover/event_handler/util_test.go | 52 + packages/taiko-client/prover/guardian.go | 58 + .../guardian_prover.go | 252 ++ .../guardian_prover_heartbeater/interface.go | 30 + packages/taiko-client/prover/init.go | 269 ++ packages/taiko-client/prover/init_test.go | 44 + .../prover/proof_producer/dummy_producer.go | 31 + .../proof_producer/dummy_producer_test.go | 50 + .../proof_producer/guardian_producer.go | 73 + .../proof_producer/guardian_producer_test.go | 165 + .../proof_producer/optimistic_producer.go | 39 + .../optimistic_producer_test.go | 93 + .../prover/proof_producer/proof_producer.go | 69 + .../prover/proof_producer/sgx_producer.go | 220 + .../proof_producer/sgx_producer_test.go | 51 + .../prover/proof_submitter/interface.go | 31 + .../prover/proof_submitter/proof_contester.go | 124 + .../proof_submitter/proof_contester_test.go | 24 + .../prover/proof_submitter/proof_submitter.go | 196 + .../proof_submitter/proof_submitter_test.go | 213 + .../proof_submitter/transaction/builder.go | 104 + .../transaction/builder_test.go | 19 + .../proof_submitter/transaction/sender.go | 163 + .../transaction/sender_test.go | 101 + packages/taiko-client/prover/prover.go | 491 ++ packages/taiko-client/prover/prover_test.go | 553 +++ packages/taiko-client/prover/server/api.go | 289 ++ .../taiko-client/prover/server/api_test.go | 50 + packages/taiko-client/prover/server/server.go | 146 + .../taiko-client/prover/server/server_test.go | 127 + .../taiko-client/prover/shared_state/state.go | 54 + .../prover/shared_state/state_test.go | 44 + packages/taiko-client/scripts/common.sh | 44 + packages/taiko-client/scripts/gen_bindings.sh | 79 + .../taiko-client/scripts/gen_swagger_json.sh | 3 + release-please-config.json | 1 + 182 files changed, 44623 insertions(+), 142 deletions(-) create mode 100644 .github/workflows/taiko-client-docker.yml create mode 100644 .github/workflows/taiko-client-swagger.yml create mode 100644 .github/workflows/taiko-client-test.yml create mode 100644 packages/taiko-client/.gitignore create mode 100644 packages/taiko-client/.golangci.yml create mode 100644 packages/taiko-client/.swaggo create mode 100644 packages/taiko-client/CHANGELOG.md create mode 100644 packages/taiko-client/Dockerfile create mode 100644 packages/taiko-client/LICENSE.md create mode 100644 packages/taiko-client/Makefile create mode 100644 packages/taiko-client/README.md create mode 100644 packages/taiko-client/bindings/.githead create mode 100644 packages/taiko-client/bindings/encoding/custom_error.go create mode 100644 packages/taiko-client/bindings/encoding/custom_error_test.go create mode 100644 packages/taiko-client/bindings/encoding/input.go create mode 100644 packages/taiko-client/bindings/encoding/input_test.go create mode 100644 packages/taiko-client/bindings/encoding/struct.go create mode 100644 packages/taiko-client/bindings/encoding/struct_test.go create mode 100644 packages/taiko-client/bindings/gen_address_manager.go create mode 100644 packages/taiko-client/bindings/gen_assignment_hook.go create mode 100644 packages/taiko-client/bindings/gen_guardian_prover.go create mode 100644 packages/taiko-client/bindings/gen_guardian_verifier.go create mode 100644 packages/taiko-client/bindings/gen_lib_proposing.go create mode 100644 packages/taiko-client/bindings/gen_lib_proving.go create mode 100644 packages/taiko-client/bindings/gen_lib_utils.go create mode 100644 packages/taiko-client/bindings/gen_lib_verifying.go create mode 100644 packages/taiko-client/bindings/gen_sgx_verifier.go create mode 100644 packages/taiko-client/bindings/gen_taiko_l1.go create mode 100644 packages/taiko-client/bindings/gen_taiko_l2.go create mode 100644 packages/taiko-client/bindings/gen_taiko_token.go create mode 100644 packages/taiko-client/bindings/gen_tier_provider.go create mode 100644 packages/taiko-client/cmd/flags/common.go create mode 100644 packages/taiko-client/cmd/flags/driver.go create mode 100644 packages/taiko-client/cmd/flags/proposer.go create mode 100644 packages/taiko-client/cmd/flags/prover.go create mode 100644 packages/taiko-client/cmd/flags/txmgr.go create mode 100644 packages/taiko-client/cmd/logger/logger.go create mode 100644 packages/taiko-client/cmd/main.go create mode 100644 packages/taiko-client/cmd/utils/sub_command.go create mode 100644 packages/taiko-client/codecov.yml create mode 100644 packages/taiko-client/docs/docs.go create mode 100644 packages/taiko-client/docs/swagger.json create mode 100644 packages/taiko-client/docs/swagger.yaml create mode 100644 packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go create mode 100644 packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor_test.go create mode 100644 packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker.go create mode 100644 packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker_test.go create mode 100644 packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go create mode 100644 packages/taiko-client/driver/chain_syncer/blob/syncer.go create mode 100644 packages/taiko-client/driver/chain_syncer/blob/syncer_test.go create mode 100644 packages/taiko-client/driver/chain_syncer/chain_syncer.go create mode 100644 packages/taiko-client/driver/chain_syncer/chain_syncer_test.go create mode 100644 packages/taiko-client/driver/config.go create mode 100644 packages/taiko-client/driver/config_test.go create mode 100644 packages/taiko-client/driver/driver.go create mode 100644 packages/taiko-client/driver/driver_test.go create mode 100644 packages/taiko-client/driver/signer/fixed_k_signer.go create mode 100644 packages/taiko-client/driver/signer/fixed_k_signer_test.go create mode 100644 packages/taiko-client/driver/state/l1_current.go create mode 100644 packages/taiko-client/driver/state/l1_current_test.go create mode 100644 packages/taiko-client/driver/state/state.go create mode 100644 packages/taiko-client/driver/state/state_test.go create mode 100644 packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go create mode 100644 packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go create mode 100644 packages/taiko-client/driver/txlist_fetcher/blob.go create mode 100644 packages/taiko-client/driver/txlist_fetcher/calldata.go create mode 100644 packages/taiko-client/driver/txlist_fetcher/interface.go create mode 100644 packages/taiko-client/index.html create mode 100644 packages/taiko-client/integration_test/README.md create mode 100755 packages/taiko-client/integration_test/deploy_l1_contract.sh create mode 100755 packages/taiko-client/integration_test/entrypoint.sh create mode 100755 packages/taiko-client/integration_test/l1_env.sh create mode 100755 packages/taiko-client/integration_test/test_env.sh create mode 100644 packages/taiko-client/internal/docker/.gitignore create mode 100755 packages/taiko-client/internal/docker/docker_env.sh create mode 100644 packages/taiko-client/internal/docker/nodes/docker-compose.yml create mode 100644 packages/taiko-client/internal/docker/nodes/jwt.hex create mode 100755 packages/taiko-client/internal/docker/start.sh create mode 100755 packages/taiko-client/internal/docker/stop.sh create mode 100644 packages/taiko-client/internal/metrics/metrics.go create mode 100644 packages/taiko-client/internal/testutils/helper.go create mode 100644 packages/taiko-client/internal/testutils/interfaces.go create mode 100644 packages/taiko-client/internal/testutils/suite.go create mode 100644 packages/taiko-client/internal/utils/test_utils.go create mode 100644 packages/taiko-client/internal/utils/util_test.go create mode 100644 packages/taiko-client/internal/utils/utils.go create mode 100644 packages/taiko-client/internal/version/version.go create mode 100644 packages/taiko-client/pkg/chain_iterator/block_batch_iterator.go create mode 100644 packages/taiko-client/pkg/chain_iterator/block_batch_iterator_test.go create mode 100644 packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go create mode 100644 packages/taiko-client/pkg/error.go create mode 100644 packages/taiko-client/pkg/flags/config.go create mode 100644 packages/taiko-client/pkg/jwt/jwt.go create mode 100644 packages/taiko-client/pkg/jwt/jwt_test.go create mode 100644 packages/taiko-client/pkg/rpc/beaconclient.go create mode 100644 packages/taiko-client/pkg/rpc/blob_datasource.go create mode 100644 packages/taiko-client/pkg/rpc/blob_tx.go create mode 100644 packages/taiko-client/pkg/rpc/blob_tx_test.go create mode 100644 packages/taiko-client/pkg/rpc/client.go create mode 100644 packages/taiko-client/pkg/rpc/client_test.go create mode 100644 packages/taiko-client/pkg/rpc/dial.go create mode 100644 packages/taiko-client/pkg/rpc/dial_test.go create mode 100644 packages/taiko-client/pkg/rpc/engine.go create mode 100644 packages/taiko-client/pkg/rpc/engine_test.go create mode 100644 packages/taiko-client/pkg/rpc/ethclient.go create mode 100644 packages/taiko-client/pkg/rpc/ethclient_test.go create mode 100644 packages/taiko-client/pkg/rpc/fallback.go create mode 100644 packages/taiko-client/pkg/rpc/fallback_test.go create mode 100644 packages/taiko-client/pkg/rpc/methods.go create mode 100644 packages/taiko-client/pkg/rpc/methods_test.go create mode 100644 packages/taiko-client/pkg/rpc/subscription.go create mode 100644 packages/taiko-client/pkg/rpc/subscription_test.go create mode 100644 packages/taiko-client/pkg/rpc/utils.go create mode 100644 packages/taiko-client/pkg/rpc/utils_test.go create mode 100644 packages/taiko-client/proposer/config.go create mode 100644 packages/taiko-client/proposer/config_test.go create mode 100644 packages/taiko-client/proposer/proposer.go create mode 100644 packages/taiko-client/proposer/proposer_test.go create mode 100644 packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go create mode 100644 packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go create mode 100644 packages/taiko-client/proposer/prover_selector/interface.go create mode 100644 packages/taiko-client/proposer/transaction_builder/blob.go create mode 100644 packages/taiko-client/proposer/transaction_builder/calldata.go create mode 100644 packages/taiko-client/proposer/transaction_builder/calldata_test.go create mode 100644 packages/taiko-client/proposer/transaction_builder/common.go create mode 100644 packages/taiko-client/proposer/transaction_builder/common_test.go create mode 100644 packages/taiko-client/proposer/transaction_builder/interface.go create mode 100644 packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator.go create mode 100644 packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator_test.go create mode 100644 packages/taiko-client/prover/config.go create mode 100644 packages/taiko-client/prover/config_test.go create mode 100644 packages/taiko-client/prover/event_handler/assignment_expired.go create mode 100644 packages/taiko-client/prover/event_handler/block_proposed.go create mode 100644 packages/taiko-client/prover/event_handler/block_proposed_test.go create mode 100644 packages/taiko-client/prover/event_handler/block_verified.go create mode 100644 packages/taiko-client/prover/event_handler/block_verified_test.go create mode 100644 packages/taiko-client/prover/event_handler/interface.go create mode 100644 packages/taiko-client/prover/event_handler/transition_contested.go create mode 100644 packages/taiko-client/prover/event_handler/transition_proved.go create mode 100644 packages/taiko-client/prover/event_handler/transition_proved_test.go create mode 100644 packages/taiko-client/prover/event_handler/util.go create mode 100644 packages/taiko-client/prover/event_handler/util_test.go create mode 100644 packages/taiko-client/prover/guardian.go create mode 100644 packages/taiko-client/prover/guardian_prover_heartbeater/guardian_prover.go create mode 100644 packages/taiko-client/prover/guardian_prover_heartbeater/interface.go create mode 100644 packages/taiko-client/prover/init.go create mode 100644 packages/taiko-client/prover/init_test.go create mode 100644 packages/taiko-client/prover/proof_producer/dummy_producer.go create mode 100644 packages/taiko-client/prover/proof_producer/dummy_producer_test.go create mode 100644 packages/taiko-client/prover/proof_producer/guardian_producer.go create mode 100644 packages/taiko-client/prover/proof_producer/guardian_producer_test.go create mode 100644 packages/taiko-client/prover/proof_producer/optimistic_producer.go create mode 100644 packages/taiko-client/prover/proof_producer/optimistic_producer_test.go create mode 100644 packages/taiko-client/prover/proof_producer/proof_producer.go create mode 100644 packages/taiko-client/prover/proof_producer/sgx_producer.go create mode 100644 packages/taiko-client/prover/proof_producer/sgx_producer_test.go create mode 100644 packages/taiko-client/prover/proof_submitter/interface.go create mode 100644 packages/taiko-client/prover/proof_submitter/proof_contester.go create mode 100644 packages/taiko-client/prover/proof_submitter/proof_contester_test.go create mode 100644 packages/taiko-client/prover/proof_submitter/proof_submitter.go create mode 100644 packages/taiko-client/prover/proof_submitter/proof_submitter_test.go create mode 100644 packages/taiko-client/prover/proof_submitter/transaction/builder.go create mode 100644 packages/taiko-client/prover/proof_submitter/transaction/builder_test.go create mode 100644 packages/taiko-client/prover/proof_submitter/transaction/sender.go create mode 100644 packages/taiko-client/prover/proof_submitter/transaction/sender_test.go create mode 100644 packages/taiko-client/prover/prover.go create mode 100644 packages/taiko-client/prover/prover_test.go create mode 100644 packages/taiko-client/prover/server/api.go create mode 100644 packages/taiko-client/prover/server/api_test.go create mode 100644 packages/taiko-client/prover/server/server.go create mode 100644 packages/taiko-client/prover/server/server_test.go create mode 100644 packages/taiko-client/prover/shared_state/state.go create mode 100644 packages/taiko-client/prover/shared_state/state_test.go create mode 100644 packages/taiko-client/scripts/common.sh create mode 100755 packages/taiko-client/scripts/gen_bindings.sh create mode 100755 packages/taiko-client/scripts/gen_swagger_json.sh diff --git a/.github/workflows/taiko-client-docker.yml b/.github/workflows/taiko-client-docker.yml new file mode 100644 index 00000000000..a4b7efa0c05 --- /dev/null +++ b/.github/workflows/taiko-client-docker.yml @@ -0,0 +1,73 @@ +name: "Push docker image to GAR" + +on: + push: + branches: [main] + tags: + - "taiko-client-v*" + paths: + - "packages/taiko-client/**" + +jobs: + push-docker-image: + name: Build and push docker image + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Login to GAR + uses: docker/login-action@v2 + with: + registry: us-docker.pkg.dev + username: _json_key + password: ${{ secrets.GAR_JSON_KEY }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: | + us-docker.pkg.dev/evmchain/images/taiko-client + tags: | + type=ref,event=branch + type=ref,event=pr + type=ref,event=tag + type=sha + + - name: Cache Go build + uses: actions/cache@v4 + with: + enableCrossOsArchive: true + path: | + go-build-platforms + key: ${{ runner.os }}-go_build-platforms + restore-keys: | + ${{ runner.os }}-go_build-platforms + + - name: Inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-map: | + { + "go-build-platforms": "/root/.cache/go-build" + } + skip-extraction: ${{ steps.cache.outputs.cache-hit }} + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/taiko-client-swagger.yml b/.github/workflows/taiko-client-swagger.yml new file mode 100644 index 00000000000..580c499877d --- /dev/null +++ b/.github/workflows/taiko-client-swagger.yml @@ -0,0 +1,64 @@ +name: Swagger + +on: + push: + branches: + - main + paths: + - "packages/taiko-client/**" + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + name: Swagger autogen docs + runs-on: ubuntu-latest + + steps: + - name: checkout + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.21 + cache: true + + - name: install swag cli + run: go install github.com/swaggo/swag/cmd/swag@latest + + - name: swag init + working-directory: packages/taiko-client + run: ./scripts/gen_swagger_json.sh + + deploy: + if: ${{ always() }} + needs: build + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + name: github pages deploy swagger docs + runs-on: ubuntu-latest + + steps: + - name: checkout + uses: actions/checkout@v2 + + - name: Setup Pages + uses: actions/configure-pages@v3 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: "packages/taiko-client" + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.github/workflows/taiko-client-test.yml b/.github/workflows/taiko-client-test.yml new file mode 100644 index 00000000000..8b1b508fdad --- /dev/null +++ b/.github/workflows/taiko-client-test.yml @@ -0,0 +1,60 @@ +name: "CI" + +on: + push: + branches: [main] + paths: + - "packages/taiko-client/**" + pull_request: + paths: + - "packages/taiko-client/**" + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: 1.21 + cache: true + + - name: Lint + working-directory: packages/taiko-client + run: make lint + + integration_tests: + name: Integration tests + runs-on: ubuntu-latest + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + - uses: actions/checkout@v4 + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.21 + cache: true + + - name: Install pnpm dependencies + uses: ./.github/actions/install-pnpm-dependencies + + - name: Test + working-directory: packages/taiko-client + run: make test + + - name: Codecov.io + uses: codecov/codecov-action@v3 + with: + files: packages/taiko-client/coverage.out diff --git a/.github/workflows/validate-pr-title.yml b/.github/workflows/validate-pr-title.yml index 70240c32d36..ffcb2aa9c7e 100644 --- a/.github/workflows/validate-pr-title.yml +++ b/.github/workflows/validate-pr-title.yml @@ -40,6 +40,7 @@ jobs: protocol relayer taikoon + taiko-client supplementary-contracts requireScope: true subjectPattern: ^(?![A-Z])(?!.*\btypo\b).+$ # Require lowercase PR title and prohibit word "typo" diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 35ae9eb9ecf..b88022a4ef0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -7,5 +7,6 @@ "packages/guardian-prover-health-check": "0.1.0", "packages/guardian-prover-health-check-ui": "0.1.0", "packages/protocol": "1.4.0", - "packages/relayer": "0.12.0" + "packages/relayer": "0.12.0", + "packages/taiko-client": "0.22.0" } diff --git a/_typos.toml b/_typos.toml index 8e54052293f..00649e4dd6b 100644 --- a/_typos.toml +++ b/_typos.toml @@ -2,14 +2,20 @@ # False positives extend-ignore-identifiers-re = [ "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", + "TGE", + "tge", ] [files] extend-exclude = [ "*.png", "*.svg", + "go.mod", "CHANGELOG.md", + "packages/protocol/audit/code4rena-2024-03-taiko-final-report.md", "packages/protocol/contracts/automata-attestation/**", "packages/protocol/contracts/thirdparty/**", "packages/protocol/contracts/compiled/**", + # TODO: fix typos and remove these + "packages/taiko-client/**", ] diff --git a/go.mod b/go.mod index fc7a8ac66be..dd7bd67a057 100644 --- a/go.mod +++ b/go.mod @@ -3,26 +3,33 @@ module github.com/taikoxyz/taiko-mono go 1.21 require ( + github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/buildkite/terminal-to-html/v3 v3.8.0 github.com/cenkalti/backoff v2.2.1+incompatible github.com/cenkalti/backoff/v4 v4.3.0 github.com/cyberhorsey/errors v0.0.0-20220929234051-087d6d8bb841 github.com/cyberhorsey/webutils v0.0.0-20230314183728-56890c6ddbe7 github.com/davecgh/go-spew v1.1.1 + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 github.com/ethereum-optimism/optimism v1.7.4 - github.com/ethereum/go-ethereum v1.13.14 + github.com/ethereum/go-ethereum v1.13.15 github.com/go-git/go-git/v5 v5.12.0 + github.com/go-resty/resty/v2 v2.7.0 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 github.com/google/uuid v1.6.0 + github.com/holiman/uint256 v1.2.4 github.com/joho/godotenv v1.5.1 github.com/labstack/echo-contrib v0.17.1 github.com/labstack/echo/v4 v4.12.0 github.com/labstack/gommon v0.4.2 + github.com/modern-go/reflect2 v1.0.2 github.com/morkid/paginate v1.1.7 github.com/patrickmn/go-cache v2.1.0+incompatible + github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 github.com/pressly/goose/v3 v3.19.2 github.com/prometheus/client_golang v1.19.0 + github.com/prysmaticlabs/prysm/v4 v4.2.0 github.com/rabbitmq/amqp091-go v1.9.0 github.com/shopspring/decimal v1.4.0 github.com/stretchr/testify v1.9.0 @@ -40,30 +47,27 @@ require ( ) require ( + contrib.go.opencensus.io/exporter/jaeger v0.2.1 // indirect dario.cat/mergo v1.0.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/BurntSushi/toml v1.3.2 // indirect - github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect - github.com/CloudyKit/jet/v6 v6.2.0 // indirect github.com/DataDog/zstd v1.5.2 // indirect - github.com/Joker/jade v1.1.3 // indirect github.com/KyleBanks/depth v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/Microsoft/hcsshim v0.11.4 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect - github.com/PuerkitoBio/purell v1.1.1 // indirect - github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect - github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect github.com/andybalholm/brotli v1.1.0 // indirect + github.com/aristanetworks/goarista v0.0.0-20200805130819-fd197cf57d96 // indirect github.com/aymerick/douceur v0.2.0 // indirect + github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd v0.24.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect + github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/cockroachdb/errors v1.11.1 // indirect @@ -73,25 +77,31 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/containerd/cgroups v1.1.0 // indirect github.com/containerd/containerd v1.7.12 // indirect github.com/containerd/log v0.1.0 // indirect + github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set/v2 v2.1.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 // indirect github.com/distribution/reference v0.5.0 // indirect github.com/docker/docker v25.0.5+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/elastic/gosigar v0.14.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 // indirect github.com/ethereum/c-kzg-4844 v0.4.0 // indirect - github.com/fatih/structs v1.1.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/flosch/pongo2/v4 v4.0.2 // indirect + github.com/fjl/memsize v0.0.2 // indirect + github.com/flynn/noise v1.0.0 // indirect + github.com/francoispqt/gojay v1.2.13 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect @@ -101,71 +111,133 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/spec v0.20.4 // indirect github.com/go-openapi/swag v0.19.15 // indirect - github.com/go-playground/locales v0.14.0 // indirect - github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/go-playground/validator/v10 v10.11.1 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.13.0 // indirect github.com/go-sql-driver/mysql v1.8.0 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/go-cmp v0.6.0 // indirect + github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 // indirect + github.com/google/gopacket v1.1.19 // indirect + github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect github.com/gorilla/css v1.0.0 // indirect + github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/hashicorp/go-bexpr v0.1.11 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect - github.com/holiman/uint256 v1.2.4 // indirect + github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/strcase v0.2.0 // indirect - github.com/iris-contrib/schema v0.0.6 // indirect + github.com/ipfs/go-cid v0.4.1 // indirect + github.com/ipfs/go-log/v2 v2.5.1 // indirect + github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/kataras/blocks v0.0.8 // indirect - github.com/kataras/golog v0.1.11 // indirect - github.com/kataras/iris/v12 v12.2.10 // indirect - github.com/kataras/pio v0.0.13 // indirect - github.com/kataras/sitemap v0.0.6 // indirect - github.com/kataras/tunnel v0.0.4 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.6 // indirect + github.com/koron/go-ssdp v0.0.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/leodido/go-urn v1.2.1 // indirect + github.com/leodido/go-urn v1.2.3 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-flow-metrics v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.32.1 // indirect + github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect + github.com/libp2p/go-libp2p-mplex v0.9.0 // indirect + github.com/libp2p/go-libp2p-pubsub v0.10.1 // indirect + github.com/libp2p/go-mplex v0.7.0 // indirect + github.com/libp2p/go-msgio v0.3.0 // indirect + github.com/libp2p/go-nat v0.2.0 // indirect + github.com/libp2p/go-netroute v0.2.1 // indirect + github.com/libp2p/go-reuseport v0.4.0 // indirect + github.com/libp2p/go-yamux/v4 v4.0.1 // indirect + github.com/logrusorgru/aurora v2.0.3+incompatible // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.7 // indirect - github.com/mailgun/raymond/v2 v2.0.48 // indirect github.com/mailru/easyjson v0.7.7 // indirect + github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mfridman/interpolate v0.0.2 // indirect github.com/microcosm-cc/bluemonday v1.0.26 // indirect + github.com/miekg/dns v1.1.56 // indirect + github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect + github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect + github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/sha256-simd v1.0.1 // indirect + github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mitchellh/pointerstructure v1.2.1 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/user v0.1.0 // indirect github.com/moby/term v0.5.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/morkid/gocache v1.0.0 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.12.3 // indirect + github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect + github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.9.0 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect + github.com/multiformats/go-multistream v0.5.0 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect github.com/neko-neko/echo-logrus/v2 v2.0.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/onsi/ginkgo/v2 v2.15.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/opencontainers/runtime-spec v1.1.0 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.53.0 // indirect github.com/prometheus/procfs v0.13.0 // indirect - github.com/rivo/uniseg v0.4.3 // indirect + github.com/prometheus/prom2json v1.3.0 // indirect + github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44 // indirect + github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 // indirect + github.com/prysmaticlabs/gohashtree v0.0.3-alpha // indirect + github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c // indirect + github.com/quic-go/qpack v0.4.0 // indirect + github.com/quic-go/qtls-go1-20 v0.3.4 // indirect + github.com/quic-go/quic-go v0.39.4 // indirect + github.com/quic-go/webtransport-go v0.6.0 // indirect + github.com/raulk/go-watchdog v1.3.0 // indirect + github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rs/cors v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/schollz/closestmatch v2.1.0+incompatible // indirect + github.com/schollz/progressbar/v3 v3.3.4 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/sethvargo/go-retry v0.2.4 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect @@ -173,41 +245,67 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.2.2 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/afero v1.10.0 // indirect github.com/supranational/blst v0.3.11 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect - github.com/tdewolff/minify/v2 v2.20.14 // indirect - github.com/tdewolff/parse/v2 v2.7.8 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect + github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect + github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.44.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect - github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect - github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/wealdtech/go-bytesutil v1.1.1 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect - github.com/yosssi/ace v0.0.5 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.etcd.io/bbolt v1.3.8 // indirect + go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.uber.org/dig v1.17.1 // indirect + go.uber.org/fx v1.20.1 // indirect + go.uber.org/mock v0.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/mod v0.16.0 // indirect golang.org/x/net v0.24.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.17.0 // indirect + google.golang.org/api v0.44.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + k8s.io/apimachinery v0.26.2 // indirect + k8s.io/client-go v0.26.2 // indirect + k8s.io/klog/v2 v2.90.1 // indirect + k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 // indirect + lukechampine.com/blake3 v1.2.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) -replace github.com/ethereum/go-ethereum v1.13.14 => github.com/taikoxyz/taiko-geth v0.0.0-20240320072400-5db50bce3e8e +replace github.com/ethereum/go-ethereum v1.13.15 => github.com/taikoxyz/taiko-geth v0.0.0-20240504072040-7e1b8b65a3f8 + +replace github.com/ethereum-optimism/optimism v1.7.4 => github.com/taikoxyz/optimism v0.0.0-20240504104604-6c9729321b29 + +replace github.com/uber/jaeger-client-go => github.com/uber/jaeger-client-go v2.25.0+incompatible diff --git a/go.sum b/go.sum index 5779c6068a3..20db6e3dbd5 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,57 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +contrib.go.opencensus.io/exporter/jaeger v0.2.1 h1:yGBYzYMewVL0yO9qqJv3Z5+IRhPdU7e9o/2oKpX4YvI= +contrib.go.opencensus.io/exporter/jaeger v0.2.1/go.mod h1:Y8IsLgdxqh1QxYxPC5IgXVmBaeLUeQFfBeBi9PbeZd0= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= @@ -10,20 +59,14 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg6 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/ch-go v0.58.2 h1:jSm2szHbT9MCAB1rJ3WuCJqmGLi5UTjlNu+f530UTS0= github.com/ClickHouse/ch-go v0.58.2/go.mod h1:Ap/0bEmiLa14gYjCiRkYGbXvbe8vwdrfTYWhsuQ99aw= github.com/ClickHouse/clickhouse-go/v2 v2.17.1 h1:ZCmAYWpu75IyEi7+Yrs/uaAjiCGY5wfW5kXo64exkX4= github.com/ClickHouse/clickhouse-go/v2 v2.17.1/go.mod h1:rkGTvFDTLqLIm0ma+13xmcCfr/08Gvs7KmFt1tgiWHQ= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v6 v6.2.0 h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME= -github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Joker/hpp v1.0.0 h1:65+iuJYdRXv/XyN62C1uEmmOx3432rNG/rKlX6V7Kkc= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.1.3 h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk= -github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -33,19 +76,26 @@ github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7 github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= +github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 h1:KkH3I3sJuOLP3TjA/dfr4NAY8bghDwnXiU7cTKxQqo0= -github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/sarama v1.26.1/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc= github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= @@ -53,18 +103,43 @@ github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/aristanetworks/fsnotify v1.4.2/go.mod h1:D/rtu7LpjYM8tRJphJ0hUBYpjai8SfX+aSNsWDTq/Ks= +github.com/aristanetworks/glog v0.0.0-20191112221043-67e8567f59f3/go.mod h1:KASm+qXFKs/xjSoWn30NrWBBvdTTQq+UjkhjEJHfSFA= +github.com/aristanetworks/goarista v0.0.0-20200805130819-fd197cf57d96 h1:XJH0YfVFKbq782tlNThzN/Ud5qm/cx6LXOA/P6RkTxc= +github.com/aristanetworks/goarista v0.0.0-20200805130819-fd197cf57d96/go.mod h1:QZe5Yh80Hp1b6JxQdpfSEEe8X7hTyTEZSosSrFf/oJE= +github.com/aristanetworks/splunk-hec-go v0.3.3/go.mod h1:1VHO9r17b0K7WmOlLb9nTk/2YanvOEnLMUgsFrxBROc= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/bazelbuild/rules_go v0.23.2 h1:Wxu7JjqnF78cKZbsBsARLSXx/jlGaSLCnUV3mTlyHvM= +github.com/bazelbuild/rules_go v0.23.2/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= @@ -91,16 +166,21 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buildkite/terminal-to-html/v3 v3.8.0 h1:S7ImMS8W+2yS/9D4ugrXzB95C4AuNaKcaw/eR/95bFU= github.com/buildkite/terminal-to-html/v3 v3.8.0/go.mod h1:j3XxsnYElte/Bo7Pft+U5eQWWbcx3j51uQ8fo43VrjM= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU= +github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -108,11 +188,16 @@ github.com/chris-ramon/douceur v0.2.0/go.mod h1:wDW5xjJdeoMm1mRt4sD4c/LbF/mWdEpR github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= @@ -125,24 +210,38 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -152,10 +251,14 @@ github.com/cyberhorsey/webutils v0.0.0-20230314183728-56890c6ddbe7 h1:KYOh2RfWAl github.com/cyberhorsey/webutils v0.0.0-20230314183728-56890c6ddbe7/go.mod h1:bNNUHadsCy1HleNUToQ/t11vmKI9/+9Taw8K6GyxERo= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= +github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= @@ -165,7 +268,11 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeC github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018 h1:cNcG4c2n5xanQzp2hMyxDxPYVQmZ91y4WN6fJFlndLo= +github.com/dgraph-io/ristretto v0.0.4-0.20210318174700-74754f61e018/go.mod h1:MIonLggsKgZLUSt414ExgwNtlOL5MuEoAJP514mwGe8= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg= @@ -174,50 +281,73 @@ github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaP github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elastic/go-sysinfo v1.11.2 h1:mcm4OSYVMyws6+n2HIVMGkln5HOpo5Ie1ZmbbNn0jg4= github.com/elastic/go-sysinfo v1.11.2/go.mod h1:GKqR8bbMK/1ITnez9NIsIfXQr25aLhRJa7AfT8HpBFQ= github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0= github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= +github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= +github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= +github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z8veEq5ZO3DfIhZ7xgRP9WTc= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3/go.mod h1:QziizLAiF0KqyLdNJYD7O5cpDlaFMNZzlxYNcWsJUxs= -github.com/ethereum-optimism/optimism v1.7.4 h1:qOZ996aJYfxx7qIBYr7MftYcnX83oHoUpq8Y3r9obYw= -github.com/ethereum-optimism/optimism v1.7.4/go.mod h1:+M2UOTyG20iuKiQOi+Pzz3abOtTYbTnwah/CIp8o6Y8= github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flosch/pongo2/v4 v4.0.2 h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw= -github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw= @@ -232,6 +362,16 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -243,32 +383,47 @@ github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs= github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.4.0/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-playground/validator/v10 v10.13.0 h1:cFRQdfaSMCOSfGCCLB20MHvuoHb/s5G8L5pu2ppK5AQ= +github.com/go-playground/validator/v10 v10.13.0/go.mod h1:dwu7+CG8/CtBiJFZDz4e+5Upb6OLw04gtBYw0mcG/z4= +github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.8.0 h1:UtktXaU2Nb64z/pLiGIxY4431SJ4/dR5cjMmlVHgnT4= github.com/go-sql-driver/mysql v1.8.0/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= @@ -281,57 +436,157 @@ github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2V github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 h1:Ep/joEub9YwcjRY6ND3+Y/w0ncE540RtGatVhtZL0/Q= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.11 h1:6DqdA/KBjurGby9yTY0bmkathya0lfwF2SeuubCI7dY= github.com/hashicorp/go-bexpr v0.1.11/go.mod h1:f03lAo0duBlDIUMGCuad8oLcgejw4m7U+N8T+6Kz1AE= -github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e h1:wCMygKUQhmcQAjlk2Gquzq6dLmyMv2kF+llRspoRgrk= +github.com/herumi/bls-eth-go-binary v0.0.0-20210917013441-d37c07cfda4e/go.mod h1:luAnRm3OsMQeokhGzpYmc0ZKwawY7o87PUEP11Z7r7U= github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= @@ -339,20 +594,22 @@ github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iU github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= -github.com/iris-contrib/httpexpect/v2 v2.15.2 h1:T9THsdP1woyAqKHwjkEsbCnMefsAFvk8iJJKokcJ3Go= -github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE= -github.com/iris-contrib/schema v0.0.6 h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw= -github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= @@ -365,6 +622,10 @@ github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7Bd github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -372,44 +633,64 @@ github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkr github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/kataras/blocks v0.0.8 h1:MrpVhoFTCR2v1iOOfGng5VJSILKeZZI+7NGfxEh3SUM= -github.com/kataras/blocks v0.0.8/go.mod h1:9Jm5zx6BB+06NwA+OhTbHW1xkMOYxahnqTN5DveZ2Yg= -github.com/kataras/golog v0.1.11 h1:dGkcCVsIpqiAMWTlebn/ZULHxFvfG4K43LF1cNWSh20= -github.com/kataras/golog v0.1.11/go.mod h1:mAkt1vbPowFUuUGvexyQ5NFW6djEgGyxQBIARJ0AH4A= -github.com/kataras/iris/v12 v12.2.10 h1:rEJVM7qMoyhv8wpgkA1yGxibFcONE0jkJ70LFLibTAA= -github.com/kataras/iris/v12 v12.2.10/go.mod h1:z4+E+kLMqZ7U4WtDsYfFnG7BjMTXLkdzMAXLVMLnMNs= -github.com/kataras/pio v0.0.13 h1:x0rXVX0fviDTXOOLOmr4MUxOabu1InVSTu5itF8CXCM= -github.com/kataras/pio v0.0.13/go.mod h1:k3HNuSw+eJ8Pm2lA4lRhg3DiCjVgHlP8hmXApSej3oM= -github.com/kataras/sitemap v0.0.6 h1:w71CRMMKYMJh6LR2wTgnk5hSgjVNB9KL60n5e2KHvLY= -github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4= -github.com/kataras/tunnel v0.0.4 h1:sCAqWuJV7nPzGrlb0os3j49lk2JhILT0rID38NHNLpA= -github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcMpsXCp3lJ03zYT1PkRd3kQGPn9GVg= +github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.8/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= +github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/reedsolomon v1.9.3/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= +github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -428,48 +709,112 @@ github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1 github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.2.3 h1:6BE2vPT0lqoz3fmOesHZiaiFh7889ssCo2GMvLCfiuA= +github.com/leodido/go-urn v1.2.3/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= +github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= +github.com/libp2p/go-libp2p v0.32.1 h1:wy1J4kZIZxOaej6NveTWCZmHiJ/kY7GoAqXgqNCnPps= +github.com/libp2p/go-libp2p v0.32.1/go.mod h1:hXXC3kXPlBZ1eu8Q2hptGrMB4mZ3048JUoS4EKaHW5c= +github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= +github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= +github.com/libp2p/go-libp2p-mplex v0.9.0 h1:R58pDRAmuBXkYugbSSXR9wrTX3+1pFM1xP2bLuodIq8= +github.com/libp2p/go-libp2p-mplex v0.9.0/go.mod h1:ro1i4kuwiFT+uMPbIDIFkcLs1KRbNp0QwnUXM+P64Og= +github.com/libp2p/go-libp2p-pubsub v0.10.1 h1:/RqOZpEtAolsr8/9CC8KqROJSOZeu7lK7fPftn4MwNg= +github.com/libp2p/go-libp2p-pubsub v0.10.1/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= +github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= +github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= +github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= +github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= +github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= +github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= +github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= +github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= +github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= +github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= +github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/libsql/sqlite-antlr4-parser v0.0.0-20230802215326-5cb5bb604475 h1:6PfEMwfInASh9hkN83aR0j4W/eKaAZt/AURtXAXlas0= github.com/libsql/sqlite-antlr4-parser v0.0.0-20230802215326-5cb5bb604475/go.mod h1:20nXSmcf0nAscrzqsXeC2/tA3KkV2eCiJqYuyAgl+ss= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= +github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw= -github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mfridman/interpolate v0.0.2 h1:pnuTK7MQIxxFz1Gr+rjSIx9u7qVjf5VOoM/u6BbAxPY= github.com/mfridman/interpolate v0.0.2/go.mod h1:p+7uk6oE07mpE/Ik1b8EckO0O4ZXiGAfshKBWLUM9Xg= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/microcosm-cc/bluemonday v1.0.4/go.mod h1:8iwZnFn2CDDNZ0r6UXhF4xawGvzaqzCRa1n3/lO3W2w= github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58= github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs= github.com/microsoft/go-mssqldb v1.7.0 h1:sgMPW0HA6Ihd37Yx0MzHyKD726C2kY/8KJsQtXHNaAs= github.com/microsoft/go-mssqldb v1.7.0/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= -github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= +github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.1 h1:ZhBBeX8tSlRpu/FFhXH4RC4OJzFlqsQhoHZAz4x7TIw= @@ -485,14 +830,63 @@ github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/morkid/gocache v1.0.0 h1:hTnU78Dqp2vs9al5vJC2TmmMF+Hm3nDH1AgRBjSXE+0= github.com/morkid/gocache v1.0.0/go.mod h1:xK+hmoEMjYffIBvjn7DE8WfSd/rF5Kz/G9f20OliMJY= github.com/morkid/paginate v1.1.7 h1:qgU1qLhYxlckJ11CoUn7tQpT4k5SmWTTa1NpdSNbShg= github.com/morkid/paginate v1.1.7/go.mod h1:1VCx2ARlAVEv2Yd+YHTGRMs0Gacvi75dCrPidrmPq5g= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= +github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= +github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= +github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= +github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= +github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= +github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= +github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/neko-neko/echo-logrus/v2 v2.0.1 h1:BX2U6uv2N3UiUY75y+SntQak5S1AJIel9j+5Y6h4Nb4= github.com/neko-neko/echo-logrus/v2 v2.0.1/go.mod h1:GDYWo9CY4VXk/vn5ac5reoutYEkZEexlFI01MzHXVG0= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -500,36 +894,70 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/openconfig/gnmi v0.0.0-20190823184014-89b2bf29312c/go.mod h1:t+O9It+LKzfOAhKTT5O0ehDix+MTqbtT0T9t+7zzOvc= +github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696/go.mod h1:ym2A+zigScwkSEb/cVQB0/ZMpU3rqiH6X7WRRsxgOGw= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= +github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4aNE4= github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/paulmach/orb v0.10.0 h1:guVYVqzxHE/CQ1KpfGO077TR0ATHSNjp4s6XGLn3W9s= github.com/paulmach/orb v0.10.0/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4 v2.4.1+incompatible h1:mFe7ttWaflA46Mhqh+jUfjp2qTbPYxLB2/OyBppH9dg= +github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -537,45 +965,109 @@ github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTw github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/pressly/goose/v3 v3.19.2 h1:z1yuD41jS4iaqLkyjkzGkKBz4rgyz/BYtCyMMGHlgzQ= github.com/pressly/goose/v3 v3.19.2/go.mod h1:BHkf3LzSBmO8E5FTMPupUYIpMTIh/ZuQVy+YTfhZLD4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.0.10/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/prometheus/prom2json v1.3.0 h1:BlqrtbT9lLH3ZsOVhXPsHzFrApCTKRifB7gjJuypu6Y= +github.com/prometheus/prom2json v1.3.0/go.mod h1:rMN7m0ApCowcoDlypBHlkNbp5eJQf/+1isKykIP5ZnM= +github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44 h1:c3p3UzV4vFA7xaCDphnDWOjpxcadrQ26l5b+ypsvyxo= +github.com/prysmaticlabs/fastssz v0.0.0-20221107182844-78142813af44/go.mod h1:MA5zShstUwCQaE9faGHgCGvEWUbG87p4SAXINhmCkvg= +github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 h1:0tVE4tdWQK9ZpYygoV7+vS6QkDvQVySboMVEIxBJmXw= +github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= +github.com/prysmaticlabs/gohashtree v0.0.3-alpha h1:1EVinCWdb3Lorq7xn8DYQHf48nCcdAM3Vb18KsFlRWY= +github.com/prysmaticlabs/gohashtree v0.0.3-alpha/go.mod h1:4pWaT30XoEx1j8KNJf3TV+E3mQkaufn7mf+jRNb/Fuk= +github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c h1:9PHRCuO/VN0s9k+RmLykho7AjDxblNYI5bYKed16NPU= +github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c/go.mod h1:ZRws458tYHS/Zs936OQ6oCrL+Ict5O4Xpwve1UQ6C9M= +github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294 h1:q9wE0ZZRdTUAAeyFP/w0SwBEnCqlVy2+on6X2/e+eAU= +github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294/go.mod h1:ZVEbRdnMkGhp/pu35zq4SXxtvUwWK0J1MATtekZpH2Y= +github.com/prysmaticlabs/prysm/v4 v4.2.0 h1:87QoRT3Azs7c1Y6SnIq0+CNtQRbAt0sVKGj2OxRT1Rw= +github.com/prysmaticlabs/prysm/v4 v4.2.0/go.mod h1:PQrQtHJeeqTz4K3udN/EX1Gs2xhWR4j93gSj0OQZ1f4= +github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-20 v0.3.4 h1:MfFAPULvst4yoMgY9QmtpYmfij/em7O8UUi+bNVm7Cg= +github.com/quic-go/qtls-go1-20 v0.3.4/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.39.4 h1:PelfiuG7wXEffUT2yceiqz5V6Pc0TA5ruOd1LcmFc1s= +github.com/quic-go/quic-go v0.39.4/go.mod h1:T09QsDQWjLiQ74ZmacDfqZmhY/NLnw5BC40MANNNZ1Q= +github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= +github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/rabbitmq/amqp091-go v1.9.0 h1:qrQtyzB4H8BQgEuJwhmVQqVHB9O4+MNDJCCAcpc3Aoo= github.com/rabbitmq/amqp091-go v1.9.0/go.mod h1:+jPrT9iY2eLjRaMSRHUhc3z14E/l85kv/f+6luSD3pc= +github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= +github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= -github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= -github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= -github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/schollz/progressbar/v3 v3.3.4 h1:nMinx+JaEm/zJz4cEyClQeAw5rsYSB5th3xv+5lV6Vg= +github.com/schollz/progressbar/v3 v3.3.4/go.mod h1:Rp5lZwpgtYmlvmGo1FyDwXMqagyRBQYSDwzlP9QDu84= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= @@ -590,15 +1082,59 @@ github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -614,6 +1150,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -622,27 +1160,36 @@ github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3 github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= -github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/taikoxyz/taiko-geth v0.0.0-20240320072400-5db50bce3e8e h1:JCV4FpfGbF1bswFAG/00cvcDqQ0AFknBd30FqEahj38= -github.com/taikoxyz/taiko-geth v0.0.0-20240320072400-5db50bce3e8e/go.mod h1:nqByouVW0a0qx5KKgvYgoXba+pYEHznAAQp6LhZilgM= -github.com/tdewolff/minify/v2 v2.20.14 h1:sktSuVixRwk0ryQjqvKBu/uYS+MWmkwEFMEWtFZ+TdE= -github.com/tdewolff/minify/v2 v2.20.14/go.mod h1:qnIJbnG2dSzk7LIa/UUwgN2OjS8ir6RRlqc0T/1q2xY= -github.com/tdewolff/parse/v2 v2.7.8 h1:1cnVqa8L63xFkc2vfRsZTM6Qy35nJpTvQ2Uvdv3vbvs= -github.com/tdewolff/parse/v2 v2.7.8/go.mod h1:3FbJWZp3XT9OWVN3Hmfp0p/a08v4h8J9W1aghka0soA= -github.com/tdewolff/test v1.0.11-0.20231101010635-f1265d231d52/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= -github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739 h1:IkjBCtQOOjIn03u/dMQK9g+Iw9ewps4mCl1nB8Sscbo= -github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/taikoxyz/optimism v0.0.0-20240504104604-6c9729321b29 h1:JcOxHwY5zQfqsjx2Uh9WwWkcwy5jJX3XR2YQEx3IByY= +github.com/taikoxyz/optimism v0.0.0-20240504104604-6c9729321b29/go.mod h1:bkiRWtDE4T9nXmaK5NBKC/buX5GnyJ6VKozGFwiwKxs= +github.com/taikoxyz/taiko-geth v0.0.0-20240504072040-7e1b8b65a3f8 h1:z4juQ4Nyp2T836JTCNC8t3vrbr0K9v2pPUV/ir2dy9s= +github.com/taikoxyz/taiko-geth v0.0.0-20240504072040-7e1b8b65a3f8/go.mod h1:nqByouVW0a0qx5KKgvYgoXba+pYEHznAAQp6LhZilgM= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= +github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4= github.com/testcontainers/testcontainers-go v0.30.0 h1:jmn/XS22q4YRrcMwWg0pAwlClzs/abopbsBzrepyc4E= github.com/testcontainers/testcontainers-go v0.30.0/go.mod h1:K+kHNGiM5zjklKjgTtcrEetF3uhWbMUyqAQoyoh8Pf0= +github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e h1:cR8/SYRgyQCt5cNCMniB/ZScMkhI9nk8U5C7SbISXjo= +github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e/go.mod h1:Tu4lItkATkonrYuvtVjG0/rhy15qrNGNTjPdaphtZ/8= +github.com/tjfoc/gmsm v1.3.0/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279 h1:+LynomhWB+14Plp/bOONEAZCtvCZk4leRbTvNzNVkL0= +github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279/go.mod h1:GA3+Mq3kt3tYAfM0WZCu7ofy+GW9PuGysHfhr+6JX7s= github.com/tursodatabase/libsql-client-go v0.0.0-20240220085343-4ae0eb9d0898 h1:1MvEhzI5pvP27e9Dzz861mxk9WzXZLSJwzOU67cKTbU= github.com/tursodatabase/libsql-client-go v0.0.0-20240220085343-4ae0eb9d0898/go.mod h1:9bKuHS7eZh/0mJndbUOrCx8Ej3PlsRDszj4L7oVYMPQ= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -659,38 +1206,54 @@ github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/vertica/vertica-sql-go v1.3.3 h1:fL+FKEAEy5ONmsvya2WH5T8bhkvY27y/Ik3ReR2T+Qw= github.com/vertica/vertica-sql-go v1.3.3/go.mod h1:jnn2GFuv+O2Jcjktb7zyc4Utlbu9YVqpHH/lx63+1M4= -github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= -github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= -github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/wealdtech/go-bytesutil v1.1.1 h1:ocEg3Ke2GkZ4vQw5lp46rmO+pfqCCTgq35gqOy8JKVc= +github.com/wealdtech/go-bytesutil v1.1.1/go.mod h1:jENeMqeTEU8FNZyDFRVc7KqBdRKSnJ9CCh26TcuNb9s= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= +github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= github.com/ydb-platform/ydb-go-genproto v0.0.0-20240126124512-dbb0e1720dbf h1:ckwNHVo4bv2tqNkgx3W3HANh3ta1j6TR5qw08J1A7Tw= github.com/ydb-platform/ydb-go-genproto v0.0.0-20240126124512-dbb0e1720dbf/go.mod h1:Er+FePu1dNUieD+XTMDduGpQuCPssK5Q4BjF+IIXJ3I= github.com/ydb-platform/ydb-go-sdk/v3 v3.55.1 h1:Ebo6J5AMXgJ3A438ECYotA0aK7ETqjQx9WoZvVxzKBE= github.com/ydb-platform/ydb-go-sdk/v3 v3.55.1/go.mod h1:udNPW8eupyH/EZocecFmaSNJacKKYjzQa7cVgX5U2nc= -github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA= -github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= -github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= +go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= @@ -707,35 +1270,98 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc= +go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= +go.uber.org/fx v1.20.1 h1:zVwVQGS8zYvhh9Xxcu4w1M6ESyeMzebzj2NbSayZ4Mk= +go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= +go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo= +go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190130090550-b01c7a725664/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 h1:hNQpMuAJe5CtcUqCXaWga3FHu+kQvCqcsoVaQgSV60o= golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= @@ -744,21 +1370,55 @@ golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226101413-39120d07d75e/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -770,47 +1430,118 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -836,29 +1567,87 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200221224223-e1da425f72fd/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= @@ -868,19 +1657,122 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0 h1:URs6qR1lAxDsqWITsQXI4ZkGiYJ5dHtRNiCpfs2OeKA= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200218151345-dad8c97a84f5/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -888,33 +1780,50 @@ google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= +gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= +gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= +gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= +gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/redis.v4 v4.2.4/go.mod h1:8KREHdypkCEojGKQcjMqAODMICIVwZAONWq8RowTITA= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= @@ -943,10 +1852,31 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= +k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= +k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= +k8s.io/apimachinery v0.26.2 h1:da1u3D5wfR5u2RpLhE/ZtZS2P7QvDgLZTi9wrNZl/tQ= +k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/client-go v0.26.2 h1:s1WkVujHX3kTp4Zn4yGNFK+dlDXy1bAAkIl+cFAiuYI= +k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= +k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 h1:kmDqav+P+/5e1i9tFfHq1qcF3sOrDp+YEkVDAHu7Jwk= +k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= +lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= modernc.org/libc v1.41.0 h1:g9YAc6BkKlgORsUWj+JwqoB1wU3o4DE3bM3yvA3k+Gk= @@ -961,9 +1891,20 @@ modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -moul.io/http2curl/v2 v2.3.0 h1:9r3JfDzWPcbIklMOs2TnIFzDYvfAZvjeavG6EzP7jYs= -moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/packages/taiko-client/.gitignore b/packages/taiko-client/.gitignore new file mode 100644 index 00000000000..1b8b8a58b57 --- /dev/null +++ b/packages/taiko-client/.gitignore @@ -0,0 +1,29 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib +.env +bin +coverage.out +prover/dbPath +dbdata + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +# Editors +.vscode + +# Testing +integration_test/nodes/deployments/mainnet.json +.env + +\.idea/ diff --git a/packages/taiko-client/.golangci.yml b/packages/taiko-client/.golangci.yml new file mode 100644 index 00000000000..680090bcc94 --- /dev/null +++ b/packages/taiko-client/.golangci.yml @@ -0,0 +1,91 @@ +# This file configures github.com/golangci/golangci-lint. + +run: + timeout: 20m + tests: true + skip-dirs-use-default: true + skip-files: + - bindings/gen_taiko_l1.go + - bindings/gen_taiko_l2.go + +issues: + # List of regexps of issue texts to exclude. + # + # But independently of this option we use default exclude patterns, + # it can be disabled by `exclude-use-default: false`. + # To list all excluded by default patterns execute `golangci-lint run --help` + # + # Default: https://golangci-lint.run/usage/false-positives/#default-exclusions + exclude: + - abcdef + +linters: + disable-all: true + enable: + - bidichk + - bodyclose + - durationcheck + - exportloopref + - errcheck + - errchkjson + - errname + - errorlint + - exhaustive + - goconst + - goimports + - gosimple + - govet + - gosec + - gofmt + - ineffassign + - importas + - lll + - makezero + - misspell + - misspell + - megacheck + - revive + - staticcheck + - sqlclosecheck + - staticcheck + - stylecheck + - typecheck + - unconvert + - unused + - whitespace + +linters-settings: + gofmt: + simplify: true + goconst: + min-len: 3 + min-occurrences: 6 + goimports: + local-prefixes: github.com/taikoxyz/taiko-mono/packages/taiko-client + +severity: + # Set the default severity for issues. + # + # If severity rules are defined and the issues do not match or no severity is provided to the rule + # this will be the default severity applied. + # Severities should match the supported severity names of the selected out format. + # - Code climate: https://docs.codeclimate.com/docs/issues#issue-severity + # - Checkstyle: https://checkstyle.sourceforge.io/property_types.html#SeverityLevel + # - GitHub: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-error-message + # - TeamCity: https://www.jetbrains.com/help/teamcity/service-messages.html#Inspection+Instance + # + # Default: "" + default-severity: error + # If set to true `severity-rules` regular expressions become case-sensitive. + # Default: false + case-sensitive: true + # When a list of severity rules are provided, severity information will be added to lint issues. + # Severity rules have the same filtering capability as exclude rules + # except you are allowed to specify one matcher per severity rule. + # Only affects out formats that support setting severity information. + # + # Default: [] + rules: + - linters: + - dupl + severity: info diff --git a/packages/taiko-client/.swaggo b/packages/taiko-client/.swaggo new file mode 100644 index 00000000000..8cc34d878a4 --- /dev/null +++ b/packages/taiko-client/.swaggo @@ -0,0 +1,2 @@ +replace common.Address string +replace encoding.TierFee uint64 \ No newline at end of file diff --git a/packages/taiko-client/CHANGELOG.md b/packages/taiko-client/CHANGELOG.md new file mode 100644 index 00000000000..f222801caf4 --- /dev/null +++ b/packages/taiko-client/CHANGELOG.md @@ -0,0 +1,540 @@ +# Changelog + +## [0.22.0](https://github.com/taikoxyz/taiko-client/compare/v0.21.0...v0.22.0) (2024-04-19) + + +### Features + +* **bindings:** update Go contract bindings && bump `taiko-geth` version ([#727](https://github.com/taikoxyz/taiko-client/issues/727)) ([1003687](https://github.com/taikoxyz/taiko-client/commit/1003687d909fe72936834ba345deeb294fa06d8e)) +* **cmd:** default unit for all related flags / logs ([#729](https://github.com/taikoxyz/taiko-client/issues/729)) ([ec7ba9d](https://github.com/taikoxyz/taiko-client/commit/ec7ba9d696fe1b051de5e12878553fe035c046fa)) +* **driver:** only allow one successful beacon sync ([#718](https://github.com/taikoxyz/taiko-client/issues/718)) ([e6d48ab](https://github.com/taikoxyz/taiko-client/commit/e6d48abb4308c93e7bc3e0d070e7934bb5cfe9b6)) +* **metrics:** collect `txmgr` metrics ([#725](https://github.com/taikoxyz/taiko-client/issues/725)) ([7fb762a](https://github.com/taikoxyz/taiko-client/commit/7fb762a6cf101b905f1d3bcb8c0adacd77467518)) +* **metrics:** remove an unused metric ([#712](https://github.com/taikoxyz/taiko-client/issues/712)) ([76f4003](https://github.com/taikoxyz/taiko-client/commit/76f40038cef70e4736f87c9568c8a70779b47d98)) +* **metrics:** remove some unused metrics ([#724](https://github.com/taikoxyz/taiko-client/issues/724)) ([bce8ebb](https://github.com/taikoxyz/taiko-client/commit/bce8ebbdffd7144be3d54b75efdae2c08e74d455)) +* **proposer:** introduce `TxSender` for proposer ([#723](https://github.com/taikoxyz/taiko-client/issues/723)) ([c71155e](https://github.com/taikoxyz/taiko-client/commit/c71155e1fa2d0ba0359d36ab98d450855e022dfa)) +* **prover:** check proof status before sending the transaction ([#731](https://github.com/taikoxyz/taiko-client/issues/731)) ([a9d637a](https://github.com/taikoxyz/taiko-client/commit/a9d637a2fd086d6dfc0236c6f13c918c7eb7816c)) +* **prover:** introduce three `raiko` related flags ([#711](https://github.com/taikoxyz/taiko-client/issues/711)) ([7540be2](https://github.com/taikoxyz/taiko-client/commit/7540be21d88a4689f03aa866d93475843f798770)) +* **prover:** use `--guardian.submissionDelay` flag ([#730](https://github.com/taikoxyz/taiko-client/issues/730)) ([c7db741](https://github.com/taikoxyz/taiko-client/commit/c7db7419a66ffa3cfd21b28a32ac3a1528e09b48)) +* **rpc:** improve `L2ParentByBlockID` ([#715](https://github.com/taikoxyz/taiko-client/issues/715)) ([036f8e6](https://github.com/taikoxyz/taiko-client/commit/036f8e643b09c0125a7cf4a0da265463289596df)) +* **rpc:** keep retrying when connecting to endpoints ([#708](https://github.com/taikoxyz/taiko-client/issues/708)) ([771f133](https://github.com/taikoxyz/taiko-client/commit/771f1334e7efacc17e6ff0f5768a5cf54eecafb3)) +* **rpc:** remove `WaitL1Origin()` method ([#716](https://github.com/taikoxyz/taiko-client/issues/716)) ([70913c6](https://github.com/taikoxyz/taiko-client/commit/70913c60edc87bb93cbc185277f4862c5420cade)) + + +### Bug Fixes + +* **proposer:** fix an issue in `ProposeOp` ([#728](https://github.com/taikoxyz/taiko-client/issues/728)) ([24a8e1d](https://github.com/taikoxyz/taiko-client/commit/24a8e1d52270c9f1681a2e1d6ca376d7c1faf4a7)) + +## [0.21.0](https://github.com/taikoxyz/taiko-client/compare/v0.20.0...v0.21.0) (2024-04-10) + + +### Features + +* **bindings:** bump bindings ([#671](https://github.com/taikoxyz/taiko-client/issues/671)) ([16fe52a](https://github.com/taikoxyz/taiko-client/commit/16fe52a94337ab27a53c8c6213a6c13702b79171)) +* **bindings:** update Go contract bindings ([#680](https://github.com/taikoxyz/taiko-client/issues/680)) ([b64bf1a](https://github.com/taikoxyz/taiko-client/commit/b64bf1a6a5a5ebce0c312d40ea13155db55d0b21)) +* **bindings:** update Go contract bindings ([#689](https://github.com/taikoxyz/taiko-client/issues/689)) ([fd98d4b](https://github.com/taikoxyz/taiko-client/commit/fd98d4bab4be82d0220e8805e17592feceabb519)) +* **bindings:** update Go contract bindings ([#697](https://github.com/taikoxyz/taiko-client/issues/697)) ([993d491](https://github.com/taikoxyz/taiko-client/commit/993d4919958181e38cc413a73ea278c8ab5ab439)) +* **bindings:** update Go contract bindings ([#705](https://github.com/taikoxyz/taiko-client/issues/705)) ([a97255d](https://github.com/taikoxyz/taiko-client/commit/a97255dd18df15a4a2ad47f900bc5458679546d6)) +* **cmd:** revert `SubcommandApplication` context changes ([#701](https://github.com/taikoxyz/taiko-client/issues/701)) ([985f030](https://github.com/taikoxyz/taiko-client/commit/985f030209029c3f8fca6dc814b524c7ef16b898)) +* **driver:** add blob datasource ([#688](https://github.com/taikoxyz/taiko-client/issues/688)) ([a598847](https://github.com/taikoxyz/taiko-client/commit/a5988478251179a72dd7b5ca71754b8c0fbeb666)) +* **driver:** fix the latest verified block hash check when using snap sync ([#700](https://github.com/taikoxyz/taiko-client/issues/700)) ([3cae4ea](https://github.com/taikoxyz/taiko-client/commit/3cae4eadc24f07b87808db0df419c894b0c93357)) +* **driver:** improve driver implementation ([#672](https://github.com/taikoxyz/taiko-client/issues/672)) ([55717c8](https://github.com/taikoxyz/taiko-client/commit/55717c8ff8c9541640c5368c2e937451ae6af7aa)) +* **driver:** update snap sync strategy ([#695](https://github.com/taikoxyz/taiko-client/issues/695)) ([7a68a25](https://github.com/taikoxyz/taiko-client/commit/7a68a25f6c16878e0cf44b3ef3816e9f6544d263)) +* **flags:** remove `--rpc.waitReceiptTimeout` flag ([#684](https://github.com/taikoxyz/taiko-client/issues/684)) ([a70519b](https://github.com/taikoxyz/taiko-client/commit/a70519b585ac19a1ad8df629edf8364a3afaf8cf)) +* **pkg:** update `WaitTillL2ExecutionEngineSynced` ([#677](https://github.com/taikoxyz/taiko-client/issues/677)) ([2c2b996](https://github.com/taikoxyz/taiko-client/commit/2c2b996be04d445b289a9c65aebb01f4afd1ed3b)) +* **proof_producer:** update `sgxProducer` request body ([#693](https://github.com/taikoxyz/taiko-client/issues/693)) ([ba40ced](https://github.com/taikoxyz/taiko-client/commit/ba40ceddea6857f68d9a0187e490306038ee1e48)) +* **proof_producer:** update SGX `proofParam.bootstrap` to `false` ([#694](https://github.com/taikoxyz/taiko-client/issues/694)) ([78d5303](https://github.com/taikoxyz/taiko-client/commit/78d5303033992c46f7edd22ae1384eff59fa735d)) +* **proposer:** add more tests for propsoer ([#686](https://github.com/taikoxyz/taiko-client/issues/686)) ([cd26204](https://github.com/taikoxyz/taiko-client/commit/cd2620486c8cd8e1c4f293036e4afc3dabec46cb)) +* **proposer:** improve proposing strategy ([#682](https://github.com/taikoxyz/taiko-client/issues/682)) ([62cc7ff](https://github.com/taikoxyz/taiko-client/commit/62cc7ffcc3e7b08fb1bd040081a34bf676ec0832)) +* **proposer:** remove `--tierFee.max` flag ([#702](https://github.com/taikoxyz/taiko-client/issues/702)) ([553c432](https://github.com/taikoxyz/taiko-client/commit/553c4322812f69e8ace719612e4c3f7696263cd2)) +* **prover_producer:** update `SGXRequestProofBodyParam` ([#691](https://github.com/taikoxyz/taiko-client/issues/691)) ([41c2019](https://github.com/taikoxyz/taiko-client/commit/41c201937aa5613e3d4d81a3478f2c67a942b387)) +* **prover:** stop retrying when error is `vm.ErrExecutionReverted` ([#706](https://github.com/taikoxyz/taiko-client/issues/706)) ([971f581](https://github.com/taikoxyz/taiko-client/commit/971f5815d767c0d152cac510c67928dc4e355279)) + + +### Bug Fixes + +* **pkg:** remove redundant alias ([#665](https://github.com/taikoxyz/taiko-client/issues/665)) ([bd1c324](https://github.com/taikoxyz/taiko-client/commit/bd1c3241554cbbf3a905a3cf1554368870dacf9e)) +* **proposer:** fix tier fee ([#687](https://github.com/taikoxyz/taiko-client/issues/687)) ([651f188](https://github.com/taikoxyz/taiko-client/commit/651f18891d77e87f9ee4906b7298e8ab89deb1ee)) +* **proposer:** rename `lastUnfilteredPoolContentProposedAt` ([#685](https://github.com/taikoxyz/taiko-client/issues/685)) ([8c85703](https://github.com/taikoxyz/taiko-client/commit/8c8570313a2e37f63284a1f78eee2d7eded09dde)) +* **prover:** do not retry when the status in receipt is not `types.ReceiptStatusSuccessful` ([#675](https://github.com/taikoxyz/taiko-client/issues/675)) ([5f91e0e](https://github.com/taikoxyz/taiko-client/commit/5f91e0e4f2788b71f3ea6c814171a0d4532c0918)) +* **prover:** fix `tx.gasLimit` flag for prover ([#692](https://github.com/taikoxyz/taiko-client/issues/692)) ([6683d54](https://github.com/taikoxyz/taiko-client/commit/6683d54e7526c53197e9bc6d414f2cfca586a1bd)) +* **prover:** fix a check in `isValidProof()` ([#679](https://github.com/taikoxyz/taiko-client/issues/679)) ([16857ba](https://github.com/taikoxyz/taiko-client/commit/16857ba2d07bc969223f90fcd20c5dbae084beaa)) + +## [0.20.0](https://github.com/taikoxyz/taiko-client/compare/v0.19.0...v0.20.0) (2024-03-28) + + +### Features + +* **all:** clean up unused signal service related code ([#581](https://github.com/taikoxyz/taiko-client/issues/581)) ([13f896a](https://github.com/taikoxyz/taiko-client/commit/13f896af4689df14853ceb838fd6eb1e0a64a9ba)) +* **all:** use an unified transaction sender implementation ([#560](https://github.com/taikoxyz/taiko-client/issues/560)) ([1bd56c0](https://github.com/taikoxyz/taiko-client/commit/1bd56c0d660842fb499336d011e87d7b30c527b9)) +* **bindings:** update Go contract bindings ([#561](https://github.com/taikoxyz/taiko-client/issues/561)) ([bacedb0](https://github.com/taikoxyz/taiko-client/commit/bacedb0c3dcffd973c61e901529cfba773812e64)) +* **bindings:** update Go contract bindings ([#570](https://github.com/taikoxyz/taiko-client/issues/570)) ([e70b7a0](https://github.com/taikoxyz/taiko-client/commit/e70b7a031bc069d527d5518d7928f969fd2c15c1)) +* **bindings:** update Go contract bindings ([#574](https://github.com/taikoxyz/taiko-client/issues/574)) ([ac9788f](https://github.com/taikoxyz/taiko-client/commit/ac9788f44b5fbb56a1f438a77114a8601e84689f)) +* **bindings:** update Go contract bindings ([#583](https://github.com/taikoxyz/taiko-client/issues/583)) ([1acfc5f](https://github.com/taikoxyz/taiko-client/commit/1acfc5f982c48843fecdceec0dd07dad1d1154e4)) +* **bindings:** update Go contract bindings ([#587](https://github.com/taikoxyz/taiko-client/issues/587)) ([2237295](https://github.com/taikoxyz/taiko-client/commit/2237295da0fb9cf259e8dc58de1426e4f1a67989)) +* **bindings:** update Go contract bindings ([#607](https://github.com/taikoxyz/taiko-client/issues/607)) ([1b03e6a](https://github.com/taikoxyz/taiko-client/commit/1b03e6a8aadfb960ba2d91a1796ff70a92bcb9fb)) +* **bindings:** update Go contract bindings ([#619](https://github.com/taikoxyz/taiko-client/issues/619)) ([4145dae](https://github.com/taikoxyz/taiko-client/commit/4145dae931b414eb719f1fab565f5d2156cec12a)) +* **bindings:** update Go contract bindings ([#646](https://github.com/taikoxyz/taiko-client/issues/646)) ([13c6ac2](https://github.com/taikoxyz/taiko-client/commit/13c6ac2ba96c5c4de7da8a20ebe6bbf66e872c8f)) +* **bindings:** update Go contract bindings ([#657](https://github.com/taikoxyz/taiko-client/issues/657)) ([eb3cd58](https://github.com/taikoxyz/taiko-client/commit/eb3cd5832b3e7713eb7bcf5716deb6f6fb5fbca5)) +* **bindings:** update Go contract bindings ([#660](https://github.com/taikoxyz/taiko-client/issues/660)) ([6fe4dda](https://github.com/taikoxyz/taiko-client/commit/6fe4dda3752164dd441e49cdc15ba6584b9be568)) +* **bindings:** update Go contract bindings && add more logs for prover ([#632](https://github.com/taikoxyz/taiko-client/issues/632)) ([1c90c6a](https://github.com/taikoxyz/taiko-client/commit/1c90c6a4ed3244e0bd176625f17cfbcbc1f36c0e)) +* **blob:** fix bug when blob decode with 0 ([#627](https://github.com/taikoxyz/taiko-client/issues/627)) ([df0e897](https://github.com/taikoxyz/taiko-client/commit/df0e8974ae79f116363f027116d13532349929e6)) +* **blob:** set min blob fee ([#636](https://github.com/taikoxyz/taiko-client/issues/636)) ([1727fc5](https://github.com/taikoxyz/taiko-client/commit/1727fc532d505526d99e85a11d4927b7bf32f73c)) +* **driver:** fix a block number issue ([#656](https://github.com/taikoxyz/taiko-client/issues/656)) ([eced566](https://github.com/taikoxyz/taiko-client/commit/eced566090f4c98456efa4a5e00544d1bccfd915)) +* **driver:** improve driver implementation ([#639](https://github.com/taikoxyz/taiko-client/issues/639)) ([fbd4d06](https://github.com/taikoxyz/taiko-client/commit/fbd4d06ac41cfd13aba729d037f664947f984092)) +* **driver:** improve driver state ([#591](https://github.com/taikoxyz/taiko-client/issues/591)) ([1fd9084](https://github.com/taikoxyz/taiko-client/commit/1fd908415d9ef2d7956d1c3565ad4f18f003dc76)) +* **driver:** introduce `StateVariablesUpdated` event ([#666](https://github.com/taikoxyz/taiko-client/issues/666)) ([8ecd440](https://github.com/taikoxyz/taiko-client/commit/8ecd44066eccf674561713ce21187f5cd23bd21a)) +* **driver:** update `defaultMaxTxPerBlock` ([#604](https://github.com/taikoxyz/taiko-client/issues/604)) ([3f99b4a](https://github.com/taikoxyz/taiko-client/commit/3f99b4a67896e1fa88a0cfcb8eff8eabc779d6b7)) +* **driver:** update `ForkchoiceStateV1` params ([#640](https://github.com/taikoxyz/taiko-client/issues/640)) ([9cbe4b8](https://github.com/taikoxyz/taiko-client/commit/9cbe4b8d3c499d97f6e0aadc298075f6764681f7)) +* **metrics:** add more transaction sender metrics ([#630](https://github.com/taikoxyz/taiko-client/issues/630)) ([26ed379](https://github.com/taikoxyz/taiko-client/commit/26ed3793b5bf93ef215960c99598fa7e1603a730)) +* **metrics:** update default metrics registry ([#617](https://github.com/taikoxyz/taiko-client/issues/617)) ([e1f5393](https://github.com/taikoxyz/taiko-client/commit/e1f5393849f79a3f4618f9fb1bf671513787ec70)) +* **pkg:** improve / simplify reorg check logic ([#647](https://github.com/taikoxyz/taiko-client/issues/647)) ([0b08772](https://github.com/taikoxyz/taiko-client/commit/0b0877278177613b9871258847c9fe8cbbd2c1ea)) +* **pkg:** improve sender ([#603](https://github.com/taikoxyz/taiko-client/issues/603)) ([af4f072](https://github.com/taikoxyz/taiko-client/commit/af4f072e6b942f85572a97a723ddfb3eff3b6ea0)) +* **pkg:** introduce `blob.go` ([#644](https://github.com/taikoxyz/taiko-client/issues/644)) ([995b449](https://github.com/taikoxyz/taiko-client/commit/995b449fbc5d398dc793d647ee58b55df2dffdd7)) +* **pkg:** make `chainID` part of `rpc.EthClient` ([#563](https://github.com/taikoxyz/taiko-client/issues/563)) ([f5d1146](https://github.com/taikoxyz/taiko-client/commit/f5d11460aa1bf740a037aa328dc8a2878b94832a)) +* **pkg:** move `sender` from `internal` to `pkg` ([#626](https://github.com/taikoxyz/taiko-client/issues/626)) ([05100b3](https://github.com/taikoxyz/taiko-client/commit/05100b3860ad37222946aaec3d8ae10794fd9108)) +* **pkg:** remove `defaultMaxTransactionsPerBlock` config ([#611](https://github.com/taikoxyz/taiko-client/issues/611)) ([1b21e4c](https://github.com/taikoxyz/taiko-client/commit/1b21e4c42d6e41e931e2bcc93dc4e19115acceaf)) +* **pkg:** remove `IsArchiveNode` check for L1 endpoint ([#652](https://github.com/taikoxyz/taiko-client/issues/652)) ([fed3a27](https://github.com/taikoxyz/taiko-client/commit/fed3a27c17260e81726f946170b3f02e5af5197e)) +* **proposer:** add more logs for debugging ([#643](https://github.com/taikoxyz/taiko-client/issues/643)) ([a554017](https://github.com/taikoxyz/taiko-client/commit/a55401758756eefb29929657cda10311bbc4ee17)) +* **proposer:** improve proposer flag configs ([#589](https://github.com/taikoxyz/taiko-client/issues/589)) ([8159155](https://github.com/taikoxyz/taiko-client/commit/815915523dcce292c1c22caba4fde82cddb2e740)) +* **proposer:** introduce `zlib` for transactions list bytes compression ([#649](https://github.com/taikoxyz/taiko-client/issues/649)) ([dd50068](https://github.com/taikoxyz/taiko-client/commit/dd500684e4af894a89f2ef5e6641f58f1a57e6b8)) +* **proposer:** introduce proposer transaction builder ([#612](https://github.com/taikoxyz/taiko-client/issues/612)) ([9bd2aea](https://github.com/taikoxyz/taiko-client/commit/9bd2aea11e25273349130cdc0f9503fe86af9fa6)) +* **prover:** add `--prover.minEthBalance` and `--prover.minTaikoTokenBalance` flags ([#641](https://github.com/taikoxyz/taiko-client/issues/641)) ([1a7128b](https://github.com/taikoxyz/taiko-client/commit/1a7128b472115b697dac2fa00db8d901994f5c19)) +* **prover:** clean up `PSE_ZKEVM` related code ([#582](https://github.com/taikoxyz/taiko-client/issues/582)) ([ffcc2b2](https://github.com/taikoxyz/taiko-client/commit/ffcc2b2451e2a29a144c33b202ad1b311a07bf42)) +* **prover:** cleanup more database related code ([#621](https://github.com/taikoxyz/taiko-client/issues/621)) ([58c2d10](https://github.com/taikoxyz/taiko-client/commit/58c2d10a3c2dcbd16ec343f59242d01f8a3e1ec9)) +* **prover:** fix a `RequestProof` issue ([#588](https://github.com/taikoxyz/taiko-client/issues/588)) ([0f15192](https://github.com/taikoxyz/taiko-client/commit/0f15192abe0c3169544bb1e705d583d045c31359)) +* **prover:** fix bug ([#655](https://github.com/taikoxyz/taiko-client/issues/655)) ([d110fb4](https://github.com/taikoxyz/taiko-client/commit/d110fb4b80dec2520d3d667f41bd5ea94615217b)) +* **prover:** improve prover ([#633](https://github.com/taikoxyz/taiko-client/issues/633)) ([b80ce2c](https://github.com/taikoxyz/taiko-client/commit/b80ce2c4c576b6f00da07500044d464735f3f7f4)) +* **prover:** improve prover implementation ([#616](https://github.com/taikoxyz/taiko-client/issues/616)) ([b7af09c](https://github.com/taikoxyz/taiko-client/commit/b7af09cb247214d1b5d1c6d177fa2fb013f803da)) +* **prover:** improve prover implementation ([#635](https://github.com/taikoxyz/taiko-client/issues/635)) ([5983828](https://github.com/taikoxyz/taiko-client/commit/59838286c5b0ef4e0f4680126ac6be155059a2b0)) +* **prover:** improve prover server tier fees check ([#642](https://github.com/taikoxyz/taiko-client/issues/642)) ([662d99f](https://github.com/taikoxyz/taiko-client/commit/662d99ff33c15568663610e91d41c8f44ff4a12f)) +* **prover:** parse contest submission custom errors ([#624](https://github.com/taikoxyz/taiko-client/issues/624)) ([2d00517](https://github.com/taikoxyz/taiko-client/commit/2d005175904dda7cad0836c275b2b6319ae5a114)) +* **prover:** remove more database related code ([#623](https://github.com/taikoxyz/taiko-client/issues/623)) ([3963208](https://github.com/taikoxyz/taiko-client/commit/39632084b033bccc3aba716c9a37f7155477097d)) +* **prover:** update `SGXProducer` ([#566](https://github.com/taikoxyz/taiko-client/issues/566)) ([93e0660](https://github.com/taikoxyz/taiko-client/commit/93e0660917c37451d95b6d0600041f473d6f391e)) +* **prover:** update server APIs ([#618](https://github.com/taikoxyz/taiko-client/issues/618)) ([64ec861](https://github.com/taikoxyz/taiko-client/commit/64ec861e88a0db6754364d113c91ddf24a95c15f)) +* **repo:** introduce `txmgr` package ([#658](https://github.com/taikoxyz/taiko-client/issues/658)) ([ba65882](https://github.com/taikoxyz/taiko-client/commit/ba65882b894ffcc02b248f12d62364838476b3da)) +* **sender:** add `sender.GetOpts` method ([#613](https://github.com/taikoxyz/taiko-client/issues/613)) ([2644e60](https://github.com/taikoxyz/taiko-client/commit/2644e607b54d7ba3b7d174ed170f5d49750a69a0)) +* **sender:** change to use tick and remove handle reorg function ([#571](https://github.com/taikoxyz/taiko-client/issues/571)) ([27f79c0](https://github.com/taikoxyz/taiko-client/commit/27f79c0500540b147bba180cbfd617474d60f165)) +* **sender:** fix a `gasLimt` default value bug ([#585](https://github.com/taikoxyz/taiko-client/issues/585)) ([d323c6f](https://github.com/taikoxyz/taiko-client/commit/d323c6ff602caefee837e112c7b86f5b349f95fe)) +* **sender:** improve `adjustGasFee` ([#637](https://github.com/taikoxyz/taiko-client/issues/637)) ([090a466](https://github.com/taikoxyz/taiko-client/commit/090a4665d26c7e819c6b81c99a7482d2a3341ac2)) +* **sender:** improve default values setting ([#628](https://github.com/taikoxyz/taiko-client/issues/628)) ([d734626](https://github.com/taikoxyz/taiko-client/commit/d734626f58ec4dcec027b2302bab0365bf85beba)) +* **sender:** no `MaxGasFee` default value ([#596](https://github.com/taikoxyz/taiko-client/issues/596)) ([540fd77](https://github.com/taikoxyz/taiko-client/commit/540fd7726635def149444c3eda2feae73fbcb321)) +* **sender:** upgrade sender txID ([#625](https://github.com/taikoxyz/taiko-client/issues/625)) ([0aaf06b](https://github.com/taikoxyz/taiko-client/commit/0aaf06bb0940e6d2dac45b702d6b042bda64898f)) +* **tx_list_validator:** remove unused code in `tx_list_validator` package ([#609](https://github.com/taikoxyz/taiko-client/issues/609)) ([cc4e302](https://github.com/taikoxyz/taiko-client/commit/cc4e3026051c8bfbeed590d5acde921bfb40a0f3)) +* **utils:** replace `mathutils` ([#595](https://github.com/taikoxyz/taiko-client/issues/595)) ([514869d](https://github.com/taikoxyz/taiko-client/commit/514869da1dec700db0b42be08156438b643132f0)) + + +### Bug Fixes + +* **cmd:** fix some context close issues ([#650](https://github.com/taikoxyz/taiko-client/issues/650)) ([f561847](https://github.com/taikoxyz/taiko-client/commit/f561847ad6aede44aea309084b28d363fdc3aa9e)) +* **driver:** fix a blob decoding issue ([#629](https://github.com/taikoxyz/taiko-client/issues/629)) ([0a29936](https://github.com/taikoxyz/taiko-client/commit/0a29936f34478d6e0be810eb2d9cd445948892f2)) +* **driver:** fix a reorg check issue in driver ([#634](https://github.com/taikoxyz/taiko-client/issues/634)) ([7abd6d0](https://github.com/taikoxyz/taiko-client/commit/7abd6d0d54267d7f7092f502cdfe3c4554329bec)) +* **flag:** add a missing flag configuration for prover ([#567](https://github.com/taikoxyz/taiko-client/issues/567)) ([6d6d9c6](https://github.com/taikoxyz/taiko-client/commit/6d6d9c60e3caf498e1f1f8a9c6d5e8c0020814b9)) +* **flags:** fix a small issue in `txmgr` flags ([#661](https://github.com/taikoxyz/taiko-client/issues/661)) ([c1765c8](https://github.com/taikoxyz/taiko-client/commit/c1765c83a945f6b817db528b4516bfc2fca1d700)) +* **flags:** fix logger level flags ([#575](https://github.com/taikoxyz/taiko-client/issues/575)) ([d315605](https://github.com/taikoxyz/taiko-client/commit/d315605d7d101f723a5c870571848fba50c8c6ae)) +* **pkg:** fix a bug in transaction sender ([#606](https://github.com/taikoxyz/taiko-client/issues/606)) ([40325bc](https://github.com/taikoxyz/taiko-client/commit/40325bc346aace3bb8c42ed8cb54bd00173f4734)) +* **pkg:** fix a sender error check issue ([#602](https://github.com/taikoxyz/taiko-client/issues/602)) ([f801f28](https://github.com/taikoxyz/taiko-client/commit/f801f28050159f9c41e706c8d90bf4cdef188816)) +* **pkg:** fix a typo ([#597](https://github.com/taikoxyz/taiko-client/issues/597)) ([428a89e](https://github.com/taikoxyz/taiko-client/commit/428a89e0641c4ed91b6800d06d7dfd1f8849feef)) +* **propsoer:** use `L1BlockBuilderTip` flag value ([#584](https://github.com/taikoxyz/taiko-client/issues/584)) ([2068697](https://github.com/taikoxyz/taiko-client/commit/20686979fe62f92967afe4fc245a800a6d04acec)) +* **transaction_builder:** fix an issue in `BlobTransactionBuilder.Build` ([#662](https://github.com/taikoxyz/taiko-client/issues/662)) ([45ef240](https://github.com/taikoxyz/taiko-client/commit/45ef240fe40026d7648b4c6cdbf9cc83ba4d5ee9)) + +## [0.19.0](https://github.com/taikoxyz/taiko-client/compare/v0.18.0...v0.19.0) (2024-02-19) + + +### Features + +* **all:** changes based on protocol `TaikoL1.getBlock()` update ([#558](https://github.com/taikoxyz/taiko-client/issues/558)) ([c853370](https://github.com/taikoxyz/taiko-client/commit/c853370c7ec85d1fea058b667097430f13b744fd)) +* **all:** sync state root rather than signal service's storage root ([#549](https://github.com/taikoxyz/taiko-client/issues/549)) ([b05c0d6](https://github.com/taikoxyz/taiko-client/commit/b05c0d6d2f1bf94051297df15330ccce669eb63e)) +* **bindings:** try parsing more custom errors ([#531](https://github.com/taikoxyz/taiko-client/issues/531)) ([025d985](https://github.com/taikoxyz/taiko-client/commit/025d9852ba5c06983b50836c21e7ad5a8f8c04b2)) +* **bindings:** update `AssigmentHook` signing based on protocol updates ([#519](https://github.com/taikoxyz/taiko-client/issues/519)) ([73a6047](https://github.com/taikoxyz/taiko-client/commit/73a604757995460fdc481548e56111766b63b307)) +* **bindings:** update Go contract bindings ([#471](https://github.com/taikoxyz/taiko-client/issues/471)) ([23ce311](https://github.com/taikoxyz/taiko-client/commit/23ce3119478eaa025d05890a5b1c8188216beb29)) +* **bindings:** update Go contract bindings ([#520](https://github.com/taikoxyz/taiko-client/issues/520)) ([386e848](https://github.com/taikoxyz/taiko-client/commit/386e848f33157ef63ff58919eb7ecf4c4fb4b1c5)) +* **bindings:** update Go contract bindings ([#551](https://github.com/taikoxyz/taiko-client/issues/551)) ([4ace57c](https://github.com/taikoxyz/taiko-client/commit/4ace57c1d1f4bcc3473a341eaa5f16918a84aea3)) +* **bindings:** update Go contract bindings ([#553](https://github.com/taikoxyz/taiko-client/issues/553)) ([77d270b](https://github.com/taikoxyz/taiko-client/commit/77d270ba8b13d3946fbe94a8a7ccac17a363207a)) +* **bindings:** update Go contracts bindings ([#543](https://github.com/taikoxyz/taiko-client/issues/543)) ([ec81ff3](https://github.com/taikoxyz/taiko-client/commit/ec81ff39686e94b4a0bbb99f48fadce18371ce0c)) +* **client:** upgrade shell scripts and replace docker image links ([#495](https://github.com/taikoxyz/taiko-client/issues/495)) ([8f0b4c8](https://github.com/taikoxyz/taiko-client/commit/8f0b4c811574259b24a49573eaef77bd6887f12d)) +* **config:** simplify config loading ([#507](https://github.com/taikoxyz/taiko-client/issues/507)) ([5f9d843](https://github.com/taikoxyz/taiko-client/commit/5f9d8435ba73267761fe5ee2d186aa34822823e7)) +* **docs:** add `README` for debugging tests ([#498](https://github.com/taikoxyz/taiko-client/issues/498)) ([b4a102d](https://github.com/taikoxyz/taiko-client/commit/b4a102d6779548a4ff5ac1a7d7dce6bc487c26ac)) +* **docs:** update swag and swagger docs ([#482](https://github.com/taikoxyz/taiko-client/issues/482)) ([1e26b9e](https://github.com/taikoxyz/taiko-client/commit/1e26b9e6a78c2356064e0d041621192f70cfcada)) +* **driver:** update `TaikoL2.anchor` transaction gas limit ([#559](https://github.com/taikoxyz/taiko-client/issues/559)) ([fb9cd12](https://github.com/taikoxyz/taiko-client/commit/fb9cd12c6fb595ab37a4913b0c384c7d49087fd0)) +* **driver:** updates based on the protocol `ICrossChainSync` changes ([#555](https://github.com/taikoxyz/taiko-client/issues/555)) ([09248b9](https://github.com/taikoxyz/taiko-client/commit/09248b973c05809299b8e0ca1146e0d5a0d2f3e5)) +* **internal:** add `internal` dir and format import order ([#506](https://github.com/taikoxyz/taiko-client/issues/506)) ([fdcb4bc](https://github.com/taikoxyz/taiko-client/commit/fdcb4bc8212ffe654a1784bb6f4e2dc6c2119367)) +* **metrics:** add some new metrics ([#479](https://github.com/taikoxyz/taiko-client/issues/479)) ([cfeffca](https://github.com/taikoxyz/taiko-client/commit/cfeffca2d447d1e2c0eff059570dd94696c4bbf9)) +* **pkg:** fix a log issue in `ensureGenesisMatched` && update a config ([#504](https://github.com/taikoxyz/taiko-client/issues/504)) ([4c01872](https://github.com/taikoxyz/taiko-client/commit/4c018728150857c484ef247ce03045ba462ce80e)) +* **pkg:** remove reverse iterator ([#509](https://github.com/taikoxyz/taiko-client/issues/509)) ([9929585](https://github.com/taikoxyz/taiko-client/commit/992958550c975bc2afa67a9164766e3a9f345265)) +* **proposer:** add flag for adding tip to assignmenthook ([#540](https://github.com/taikoxyz/taiko-client/issues/540)) ([4619778](https://github.com/taikoxyz/taiko-client/commit/46197780f94e61c54409a043221060aca606e908)) +* **proposer:** changes based on protocol `AssignmentHook` updates ([#502](https://github.com/taikoxyz/taiko-client/issues/502)) ([3908adb](https://github.com/taikoxyz/taiko-client/commit/3908adb79e1a5738b822b58cfa873f7d70357edb)) +* **proposer:** improve some wording in blob transactions implementation ([#556](https://github.com/taikoxyz/taiko-client/issues/556)) ([192aa38](https://github.com/taikoxyz/taiko-client/commit/192aa385f62013181b0e132779193aa9d8704f32)) +* **proposer:** improved shuffle function to preserve original prover endpoints slice ([#475](https://github.com/taikoxyz/taiko-client/issues/475)) ([6b25d9d](https://github.com/taikoxyz/taiko-client/commit/6b25d9d21ac787e7de0239e3eb4ebdc15376ac38)) +* **proposer:** optimize proposer logs ([#464](https://github.com/taikoxyz/taiko-client/issues/464)) ([c7e899d](https://github.com/taikoxyz/taiko-client/commit/c7e899d547009b32e3d0762c55707cb4b85dcb8f)) +* **proposer:** restore l2.suggestedFeeRecipient flag ([#550](https://github.com/taikoxyz/taiko-client/issues/550)) ([b93cfcf](https://github.com/taikoxyz/taiko-client/commit/b93cfcf8fc60e85d7223bf22540ce42ad13f416b)) +* **prover:** add `--prover.enableLivenessBondProof` flag for guardian prover ([#530](https://github.com/taikoxyz/taiko-client/issues/530)) ([9fa5ab6](https://github.com/taikoxyz/taiko-client/commit/9fa5ab6174efce6ee747281a9a37c5afe2856640)) +* **prover:** add more comments to prover package ([#491](https://github.com/taikoxyz/taiko-client/issues/491)) ([2156b49](https://github.com/taikoxyz/taiko-client/commit/2156b49202318447ecafdbf4b53a6209b711f1e0)) +* **prover:** additional startup info for guardian prover ([#552](https://github.com/taikoxyz/taiko-client/issues/552)) ([6fefa6e](https://github.com/taikoxyz/taiko-client/commit/6fefa6e81f217a88d90afd55fb457be3978ac74d)) +* **prover:** always send guardian proofs for guardian provers ([#470](https://github.com/taikoxyz/taiko-client/issues/470)) ([657f0e4](https://github.com/taikoxyz/taiko-client/commit/657f0e42d33447728c6028f7e7d4482343032962)) +* **prover:** change block signing to use timestamp as key ([#466](https://github.com/taikoxyz/taiko-client/issues/466)) ([eb5bc7a](https://github.com/taikoxyz/taiko-client/commit/eb5bc7a8b541e17e52f8b32b3f7d2104ad6ce0eb)) +* **prover:** check guardian prover contract address ([#497](https://github.com/taikoxyz/taiko-client/issues/497)) ([3794caf](https://github.com/taikoxyz/taiko-client/commit/3794caf8c0b3a6cc0d4b0692b0ca69e57fcabc05)) +* **prover:** fix / upgrade integration test ([#496](https://github.com/taikoxyz/taiko-client/issues/496)) ([c63e681](https://github.com/taikoxyz/taiko-client/commit/c63e681910e03cea2e15eeb551f8fd1938736fc8)) +* **prover:** fix a SGX proof producer issue ([#477](https://github.com/taikoxyz/taiko-client/issues/477)) ([cd742f7](https://github.com/taikoxyz/taiko-client/commit/cd742f754cd62d3b18033d1e1481a9e9f4ad896d)) +* **prover:** fix a tier selection issue ([#534](https://github.com/taikoxyz/taiko-client/issues/534)) ([c73661e](https://github.com/taikoxyz/taiko-client/commit/c73661ebbf880556699020acc0a74a98f10a427b)) +* **prover:** guardian prover startup ([#529](https://github.com/taikoxyz/taiko-client/issues/529)) ([5401a80](https://github.com/taikoxyz/taiko-client/commit/5401a802ca2cb47e3904326190bf9afec5b62fe2)) +* **prover:** increase wait time before sending to `proofWindowExpiredCh` ([#505](https://github.com/taikoxyz/taiko-client/issues/505)) ([6c52594](https://github.com/taikoxyz/taiko-client/commit/6c5259448b39513736645d544496562928908e2a)) +* **prover:** introduce `SGXAndZkevmRpcdProducer` ([#476](https://github.com/taikoxyz/taiko-client/issues/476)) ([1750a4b](https://github.com/taikoxyz/taiko-client/commit/1750a4bd4e52db80ab281f2b4ba1153fd28e0e51)) +* **prover:** move sub event logic into event function. ([#513](https://github.com/taikoxyz/taiko-client/issues/513)) ([d7aad5a](https://github.com/taikoxyz/taiko-client/commit/d7aad5a623e70bfea02eef9af78e2eea4f43b357)) +* **prover:** refactor of guardian prover heartbeat signing / sending ([#472](https://github.com/taikoxyz/taiko-client/issues/472)) ([630924e](https://github.com/taikoxyz/taiko-client/commit/630924e4a331007e135dcfe61e9c48cf190d9647)) +* **prover:** remove `result` channel in `proof_producer.go` ([#516](https://github.com/taikoxyz/taiko-client/issues/516)) ([46779ca](https://github.com/taikoxyz/taiko-client/commit/46779caabe1f1903dfe917896f69eaf49045cf9b)) +* **prover:** remove capacity manager ([#478](https://github.com/taikoxyz/taiko-client/issues/478)) ([8972ee1](https://github.com/taikoxyz/taiko-client/commit/8972ee1d70ae08736f74348e3467880e712e9a30)) +* **prover:** set `AssignmentHook` allowance ([#486](https://github.com/taikoxyz/taiko-client/issues/486)) ([a2af478](https://github.com/taikoxyz/taiko-client/commit/a2af4789b7b5975b1365b601eace18fdea4ee978)) +* **prover:** set default `--prover.proveUnassignedBlocks` and `--mode.contester` value for guardian provers ([#492](https://github.com/taikoxyz/taiko-client/issues/492)) ([d5b798d](https://github.com/taikoxyz/taiko-client/commit/d5b798dbd8568af2e71285b6a29c0c4a327198e1)) +* **prover:** support SGX prover with raiko-host ([#473](https://github.com/taikoxyz/taiko-client/issues/473)) ([a27d353](https://github.com/taikoxyz/taiko-client/commit/a27d35351c6a8f7232cdb098b7888ebc80c200f2)) +* **prover:** update unretryable error check ([#532](https://github.com/taikoxyz/taiko-client/issues/532)) ([a5b067f](https://github.com/taikoxyz/taiko-client/commit/a5b067fde9301aa7b735f41a1fae0efa3fa48b54)) +* **repo:** implement EIP-4844 in client ([#526](https://github.com/taikoxyz/taiko-client/issues/526)) ([103cad2](https://github.com/taikoxyz/taiko-client/commit/103cad295adf9d29a2e5603a377d223c303eedd4)) +* **rpc:** improve reorg checks ([#510](https://github.com/taikoxyz/taiko-client/issues/510)) ([d375ee0](https://github.com/taikoxyz/taiko-client/commit/d375ee04f8a9dbc698d0c0b37492d2f4b4949329)) +* **rpc:** simplify RPC clients ([#521](https://github.com/taikoxyz/taiko-client/issues/521)) ([bbe9ed7](https://github.com/taikoxyz/taiko-client/commit/bbe9ed764e00029f54baec9e7c51664ee36c489b)) +* **test:** Upgrade test scripts ([#557](https://github.com/taikoxyz/taiko-client/issues/557)) ([940440c](https://github.com/taikoxyz/taiko-client/commit/940440cf918c3c3aebad622522243f3eb8d354b2)) +* **test:** use dynamic docker port ([#517](https://github.com/taikoxyz/taiko-client/issues/517)) ([430abd6](https://github.com/taikoxyz/taiko-client/commit/430abd6deed8117b2287183a662276607adb50b9)) + + +### Bug Fixes + +* **bindings:** fix `AssignmentHookABI` variable typo ([#468](https://github.com/taikoxyz/taiko-client/issues/468)) ([3b057f3](https://github.com/taikoxyz/taiko-client/commit/3b057f321bf051c150319406a76a3bbf03127572)) +* **docs:** fix swagger script ([#484](https://github.com/taikoxyz/taiko-client/issues/484)) ([a624c18](https://github.com/taikoxyz/taiko-client/commit/a624c183465fc0cfaea24f5b3db71eb11607ba3e)) +* **protocol:** fix an issue for prover initialization ([#480](https://github.com/taikoxyz/taiko-client/issues/480)) ([c656ddb](https://github.com/taikoxyz/taiko-client/commit/c656ddb6699c5834b99c7a774566bbfb3253a7d6)) +* **prover:** change separator ([#469](https://github.com/taikoxyz/taiko-client/issues/469)) ([8e8897f](https://github.com/taikoxyz/taiko-client/commit/8e8897fbe905fc14279988028407f3773e1d0a00)) +* **prover:** fix `--prover.allowance` flag ([#490](https://github.com/taikoxyz/taiko-client/issues/490)) ([271fb6f](https://github.com/taikoxyz/taiko-client/commit/271fb6f5737a8b297c6a6aefee1ec7ff2a71b1c5)) +* **prover:** fix `guardianProverSender.SendStartup` ([#533](https://github.com/taikoxyz/taiko-client/issues/533)) ([416ad68](https://github.com/taikoxyz/taiko-client/commit/416ad684a1ee128221ae1be2c6ed756e9de2b78a)) +* **prover:** fix guardian prover `log` package import ([#485](https://github.com/taikoxyz/taiko-client/issues/485)) ([e294b0b](https://github.com/taikoxyz/taiko-client/commit/e294b0bfb8cd493af736df70d3478882bb016b39)) +* **prover:** fix guardian prover database key ([#522](https://github.com/taikoxyz/taiko-client/issues/522)) ([35eee7c](https://github.com/taikoxyz/taiko-client/commit/35eee7c9fd5dc77d7eb61585f36d10fbf7179aaa)) +* **prover:** only store signed block after successfully sending http request ([#489](https://github.com/taikoxyz/taiko-client/issues/489)) ([956e202](https://github.com/taikoxyz/taiko-client/commit/956e20290681337fa03638437b390c2423802d58)) +* **rpc:** fix a bug / update logic ([#501](https://github.com/taikoxyz/taiko-client/issues/501)) ([0bb53b4](https://github.com/taikoxyz/taiko-client/commit/0bb53b406ed0fcebb9eba81700c3408ac54fc737)) +* **rpc:** fix an issue in `checkSyncedL1SnippetFromAnchor` && add more logs ([#511](https://github.com/taikoxyz/taiko-client/issues/511)) ([b2f2f0b](https://github.com/taikoxyz/taiko-client/commit/b2f2f0b71c3b698934b4041adac8c932c9983e34)) +* **test:** fix workflow errors ([#525](https://github.com/taikoxyz/taiko-client/issues/525)) ([60f128b](https://github.com/taikoxyz/taiko-client/commit/60f128b61fa48950b4b0afd6797626d4f03e070f)) + +## [0.18.0](https://github.com/taikoxyz/taiko-client/compare/v0.17.0...v0.18.0) (2023-12-03) + + +### Features + +* **bindings:** update Go contract bindings ([#443](https://github.com/taikoxyz/taiko-client/issues/443)) ([b155b5a](https://github.com/taikoxyz/taiko-client/commit/b155b5a173eabb9ca5a13ae7f10c47d5f506b8ae)) +* **bindings:** update Go contract bindings based on latest A6 protocol changes ([#435](https://github.com/taikoxyz/taiko-client/issues/435)) ([7e39dc2](https://github.com/taikoxyz/taiko-client/commit/7e39dc23eac6558de4de114725b5cb4020312d68)) +* **bindings:** update Go contract bindings based on the latest contestable zkRollup protocol ([#429](https://github.com/taikoxyz/taiko-client/issues/429)) ([d33e19b](https://github.com/taikoxyz/taiko-client/commit/d33e19be64929f820a8841e49fad8d0d541bd368)) +* **bindings:** update Go contract bindings for the latest protocol ([#441](https://github.com/taikoxyz/taiko-client/issues/441)) ([02c981d](https://github.com/taikoxyz/taiko-client/commit/02c981d4d700c3e1ca8032307945dee5723be3a2)) +* **bindings:** updates related to TaikoToken && guardian prover changes ([#436](https://github.com/taikoxyz/taiko-client/issues/436)) ([9066722](https://github.com/taikoxyz/taiko-client/commit/9066722ae4dc7637c0db3acb2699ce11d63c5962)) +* **docs:** host swagger doc by github page ([#427](https://github.com/taikoxyz/taiko-client/issues/427)) ([ab4e613](https://github.com/taikoxyz/taiko-client/commit/ab4e613de050d7e77b7942f02f9d596bf718fc75)) +* **driver:** improve `ResetL1Current` method based on the latest protocol changes ([#445](https://github.com/taikoxyz/taiko-client/issues/445)) ([ddf6980](https://github.com/taikoxyz/taiko-client/commit/ddf6980a97d7c14239458cdde535066aea14912d)) +* **driver:** update `anchorGasLimit` based on the latest `TaikoL2` contract ([#437](https://github.com/taikoxyz/taiko-client/issues/437)) ([171600a](https://github.com/taikoxyz/taiko-client/commit/171600ad7c107056081a4bac9e4a6d9eebd9c393)) +* **pkg:** update `defaultMaxTransactionsPerBlock` to `150` ([#438](https://github.com/taikoxyz/taiko-client/issues/438)) ([93b9ecf](https://github.com/taikoxyz/taiko-client/commit/93b9ecf635869964eb12b3dae3e304184a83becb)) +* **proposer:** remove `--l2.suggestedFeeRecipient` flag ([#442](https://github.com/taikoxyz/taiko-client/issues/442)) ([405b9ed](https://github.com/taikoxyz/taiko-client/commit/405b9ed03c7a2749f56fdb16849281a284bcc562)) +* **prover:** add `--prover.blockSlippage` flag ([#449](https://github.com/taikoxyz/taiko-client/issues/449)) ([0ee8259](https://github.com/taikoxyz/taiko-client/commit/0ee82593c2fc2704a2c8f0130fd1887bc67f764b)) +* **prover:** guardian prover block signature && bindings updates for based contestable zkRollup ([#450](https://github.com/taikoxyz/taiko-client/issues/450)) ([904d3e7](https://github.com/taikoxyz/taiko-client/commit/904d3e76dd67c71ea225144d12526e0291e2b39f)) +* **prover:** improve `/status` API ([#444](https://github.com/taikoxyz/taiko-client/issues/444)) ([e688c25](https://github.com/taikoxyz/taiko-client/commit/e688c256109e20ed5ea29fc03e97433acf7002bf)) +* **prover:** increase the assignment expiration waiting time ([#431](https://github.com/taikoxyz/taiko-client/issues/431)) ([579dcc5](https://github.com/taikoxyz/taiko-client/commit/579dcc50686f73f42961f1624f067ede52701b4e)) +* **prover:** more accurate `provingWindowExpiresAt` calculation && update bindings ([#433](https://github.com/taikoxyz/taiko-client/issues/433)) ([72c528f](https://github.com/taikoxyz/taiko-client/commit/72c528f8df4994f13060c92cc1c1162a228dfd49)) +* **test:** fix `suite.go` ([#453](https://github.com/taikoxyz/taiko-client/issues/453)) ([38fbb66](https://github.com/taikoxyz/taiko-client/commit/38fbb662c9ec46e4ea55689970faa70b56eeed4f)) + + +### Bug Fixes + +* **docs:** fix swagger generation ([#455](https://github.com/taikoxyz/taiko-client/issues/455)) ([9533761](https://github.com/taikoxyz/taiko-client/commit/9533761cfea43a5bf0d9093694ede881e0c95996)) +* **prover:** fix guardian prover APIs ([#459](https://github.com/taikoxyz/taiko-client/issues/459)) ([08c77f2](https://github.com/taikoxyz/taiko-client/commit/08c77f244dfc4630c767b826b3156fad7b09dca4)) +* **prover:** fix Guardian prover waiting ([#462](https://github.com/taikoxyz/taiko-client/issues/462)) ([8266845](https://github.com/taikoxyz/taiko-client/commit/82668458bb9050bca4d676b73299d7595c772851)) +* **prover:** guardian prover sign wait ([#461](https://github.com/taikoxyz/taiko-client/issues/461)) ([51fd8f9](https://github.com/taikoxyz/taiko-client/commit/51fd8f9e31d9e44eb0e9b82a500ad83ab52b1e92)) +* **prover:** reorder guardian prover signature && add allowance flag ([#457](https://github.com/taikoxyz/taiko-client/issues/457)) ([4bc2a63](https://github.com/taikoxyz/taiko-client/commit/4bc2a63c57c3897b2634abc40af72e55522d4af6)) +* **server:** fix a typo in `license.url` ([#460](https://github.com/taikoxyz/taiko-client/issues/460)) ([d632109](https://github.com/taikoxyz/taiko-client/commit/d63210935f21173e8b03a4a09cb72eabf70c7ef0)) +* **tests:** fix workflow errors ([#440](https://github.com/taikoxyz/taiko-client/issues/440)) ([8b3cef2](https://github.com/taikoxyz/taiko-client/commit/8b3cef2f7a90dfb9b08fdebe7bd8edd63776db00)) + +## [0.17.0](https://github.com/taikoxyz/taiko-client/compare/v0.16.0...v0.17.0) (2023-10-16) + + +### Features + +* **all:** changes based on contestable zkRollup protocol design ([#414](https://github.com/taikoxyz/taiko-client/issues/414)) ([25a0c3b](https://github.com/taikoxyz/taiko-client/commit/25a0c3bc6507c22f28817c2a1e966ea7199699d8)) + + +### Bug Fixes + +* **prover:** fix L1 height used in `onBlockProven` handler ([#421](https://github.com/taikoxyz/taiko-client/issues/421)) ([4a1012a](https://github.com/taikoxyz/taiko-client/commit/4a1012ac702acc4d1d1bae5c295cdad02c99caef)) + +## [0.16.0](https://github.com/taikoxyz/taiko-client/compare/v0.15.0...v0.16.0) (2023-09-30) + + +### Features + +* **all:** some client optimizations ([#376](https://github.com/taikoxyz/taiko-client/issues/376)) ([91bba90](https://github.com/taikoxyz/taiko-client/commit/91bba902febbf6ce8d4fd37dfb2b0fe7c181191d)) +* **bindings:** update contract bindings ([#394](https://github.com/taikoxyz/taiko-client/issues/394)) ([5b9346b](https://github.com/taikoxyz/taiko-client/commit/5b9346b9587c155372cede757f048e2c9faea4a2)) +* **flag:** fix some typo ([#391](https://github.com/taikoxyz/taiko-client/issues/391)) ([5f7f1dd](https://github.com/taikoxyz/taiko-client/commit/5f7f1dd8248a204d8451e0c5fd37ede870fa7f07)) +* **proposer:** shuffle prover endpoints before assigning proof tasks ([#390](https://github.com/taikoxyz/taiko-client/issues/390)) ([96488d0](https://github.com/taikoxyz/taiko-client/commit/96488d0f7045174b227a20bc51b241d25f683098)) +* **proposer:** update oracle proof assignment ([#393](https://github.com/taikoxyz/taiko-client/issues/393)) ([29c2d4b](https://github.com/taikoxyz/taiko-client/commit/29c2d4ba23e2d2d9d1d8389b68679b851a3fd33e)) +* **proposer:** update prover endpoint scheme check ([#400](https://github.com/taikoxyz/taiko-client/issues/400)) ([ce8bd1d](https://github.com/taikoxyz/taiko-client/commit/ce8bd1d78002209227d283a89c08775fa06bc431)) +* **prover_selector:** check prover's token balance ([#406](https://github.com/taikoxyz/taiko-client/issues/406)) ([834c0ea](https://github.com/taikoxyz/taiko-client/commit/834c0ea62353a5a92245ac5412b7d8714d92c4da)) +* **prover:** add more capacity related logs ([#408](https://github.com/taikoxyz/taiko-client/issues/408)) ([22014b2](https://github.com/taikoxyz/taiko-client/commit/22014b2f2b9bf4f35590273c64b888920ce82ffc)) +* **prover:** always use the oracle prover private key when an oracle prover starting a server ([#395](https://github.com/taikoxyz/taiko-client/issues/395)) ([cc28d63](https://github.com/taikoxyz/taiko-client/commit/cc28d631cb3c6ba0365034f0a9cbe3d6ce44492a)) +* **prover:** check `transition.blockHash` before proof generation ([#415](https://github.com/taikoxyz/taiko-client/issues/415)) ([dd77f7a](https://github.com/taikoxyz/taiko-client/commit/dd77f7a07b56abb2724a7a46113b9f39e922a13b)) +* **prover:** increase `gasTipCap` when resending `TaikoL1.proveBlock` transactions ([#411](https://github.com/taikoxyz/taiko-client/issues/411)) ([f192e0a](https://github.com/taikoxyz/taiko-client/commit/f192e0a6b8237fa5cbcdc80d91f4333e76a1afc3)) +* **prover:** release capacity when the corresponding local proof generation is canceled ([#402](https://github.com/taikoxyz/taiko-client/issues/402)) ([1eab54d](https://github.com/taikoxyz/taiko-client/commit/1eab54deb024baa1e5c46a725153172ed289b9f8)) +* **prover:** tie capacity to a specific block id ([#413](https://github.com/taikoxyz/taiko-client/issues/413)) ([bdca930](https://github.com/taikoxyz/taiko-client/commit/bdca930f47f7efd2e3661d57a3507eae09db339d)) +* **prover:** update APIs && integrate swagger docs ([#386](https://github.com/taikoxyz/taiko-client/issues/386)) ([ebdb3da](https://github.com/taikoxyz/taiko-client/commit/ebdb3daba25921b572578fca2f5c981e4e014e54)) +* **prover:** use `httptest.Server` to simplify the prover server tests ([#389](https://github.com/taikoxyz/taiko-client/issues/389)) ([84eedae](https://github.com/taikoxyz/taiko-client/commit/84eedaedfe01e736d7c6a8523e68c4fad878e8c4)) + + +### Bug Fixes + +* **ci:** fix workflow errors ([#410](https://github.com/taikoxyz/taiko-client/issues/410)) ([5a3b655](https://github.com/taikoxyz/taiko-client/commit/5a3b6551458ebe6212c2ad7dee0a9291be42fd86)) +* **proposer:** fix proposing fee initialization ([#396](https://github.com/taikoxyz/taiko-client/issues/396)) ([2f2007d](https://github.com/taikoxyz/taiko-client/commit/2f2007d5810b8994172a59cb88052b9b8b8acb87)) +* **prover:** capacity needs to be taken before generating proof ([#412](https://github.com/taikoxyz/taiko-client/issues/412)) ([7d9c244](https://github.com/taikoxyz/taiko-client/commit/7d9c2446a45f3d338c222ea5bd269ea49fcb135b)) +* **prover:** check latest verified ID on proof submission ([#387](https://github.com/taikoxyz/taiko-client/issues/387)) ([8157550](https://github.com/taikoxyz/taiko-client/commit/81575502e88f06f34a2f36baa6bad66d0fa12884)) +* **prover:** fix a capacity release issue ([#405](https://github.com/taikoxyz/taiko-client/issues/405)) ([4ab061f](https://github.com/taikoxyz/taiko-client/commit/4ab061f9f2c6fecfdcc164ade398e0acbacbf8cd)) +* **prover:** prover rpc didnt have taiko token address ([#407](https://github.com/taikoxyz/taiko-client/issues/407)) ([4e0e390](https://github.com/taikoxyz/taiko-client/commit/4e0e390abebbd8ec3b56f0fe729a7573c26e1fdd)) +* **test:** fix flags related tests ([#409](https://github.com/taikoxyz/taiko-client/issues/409)) ([4f0a602](https://github.com/taikoxyz/taiko-client/commit/4f0a6020b22473c83743450197f68393410adf2d)) + +## [0.15.0](https://github.com/taikoxyz/taiko-client/compare/v0.14.0...v0.15.0) (2023-09-04) + + +### Features + +* **all:** update bindings based on latest tokenomics changes ([#367](https://github.com/taikoxyz/taiko-client/issues/367)) ([28ea4db](https://github.com/taikoxyz/taiko-client/commit/28ea4dbb658a7e708ffb7bc54a194a29d7013f18)) +* **bindings:** rename fork choice to state transition ([#372](https://github.com/taikoxyz/taiko-client/issues/372)) ([e09fd97](https://github.com/taikoxyz/taiko-client/commit/e09fd977b0fe2fa2efa8642b419d3dda21d8f3b0)) +* **bindings:** update bindings && remove unused files ([#360](https://github.com/taikoxyz/taiko-client/issues/360)) ([24b9309](https://github.com/taikoxyz/taiko-client/commit/24b9309532089f74ba0c3b04db721f6c6d6cd0a0)) +* **bindings:** update contract bindings ([#377](https://github.com/taikoxyz/taiko-client/issues/377)) ([becdd73](https://github.com/taikoxyz/taiko-client/commit/becdd735e83a5b444ed04671e4957ce44ab222a1)) +* **pkg:** add `isSyncing` method ([#379](https://github.com/taikoxyz/taiko-client/issues/379)) ([9c7a19a](https://github.com/taikoxyz/taiko-client/commit/9c7a19a1f32ea6a8ba7082bfff2deb04f8826a05)) +* **proposer:** update proposing retry policy ([#366](https://github.com/taikoxyz/taiko-client/issues/366)) ([e0adf17](https://github.com/taikoxyz/taiko-client/commit/e0adf175b87ec1ba4c5b4068794e6842b1ca129f)) + + +### Bug Fixes + +* **all:** fix missing logs should be print in stderr ([#370](https://github.com/taikoxyz/taiko-client/issues/370)) ([af6531b](https://github.com/taikoxyz/taiko-client/commit/af6531bb1fe2cc43a32772d264b56b8e5f243786)) +* **prover:** add to wait group in prover ([#373](https://github.com/taikoxyz/taiko-client/issues/373)) ([edf95a7](https://github.com/taikoxyz/taiko-client/commit/edf95a72a91005f6be5402b17b145928e55d9256)) +* **prover:** fix `maxRetry` configuration when submitting proofs ([#364](https://github.com/taikoxyz/taiko-client/issues/364)) ([b6cd4db](https://github.com/taikoxyz/taiko-client/commit/b6cd4db1cffd15f95f383b2c5058d1c95d30d473)) +* **prover:** fix some typo ([#374](https://github.com/taikoxyz/taiko-client/issues/374)) ([355e68b](https://github.com/taikoxyz/taiko-client/commit/355e68bc53bf01684198076fdd0c8a3ddb4bbed3)) + +## [0.14.0](https://github.com/taikoxyz/taiko-client/compare/v0.13.0...v0.14.0) (2023-08-09) + + +### Features + +* **bindings:** update `TaikoL1BlockMetadataInput` ([#359](https://github.com/taikoxyz/taiko-client/issues/359)) ([1beae59](https://github.com/taikoxyz/taiko-client/commit/1beae59cfbe1345a5bb69714b25ba4397173be45)) +* **bindings:** update go contract bindings ([#346](https://github.com/taikoxyz/taiko-client/issues/346)) ([c6454af](https://github.com/taikoxyz/taiko-client/commit/c6454afe28b3a86c8d33c8434cfd345318116076)) +* **bindings:** update go contract bindings ([#352](https://github.com/taikoxyz/taiko-client/issues/352)) ([b9da8f6](https://github.com/taikoxyz/taiko-client/commit/b9da8f68e733a51255c1307d016d1ff9e241f3c9)) +* **driver:** update `l1Current` check in `ProcessL1Blocks` ([#340](https://github.com/taikoxyz/taiko-client/issues/340)) ([d67f287](https://github.com/taikoxyz/taiko-client/commit/d67f287bd5cce08aa5b7ba9fd33fc00e91ad6190)) +* **pkg:** add default timeout for `GetStorageRoot` ([#347](https://github.com/taikoxyz/taiko-client/issues/347)) ([9a4dee0](https://github.com/taikoxyz/taiko-client/commit/9a4dee04f90e521832efef5febeebb1231e22a19)) +* **pkg:** improve archive node check ([#334](https://github.com/taikoxyz/taiko-client/issues/334)) ([c6cd1b0](https://github.com/taikoxyz/taiko-client/commit/c6cd1b0492499b3c686ac282d65743793bd162da)) +* **pkg:** introduce `EthClient` with a timeout attached ([#337](https://github.com/taikoxyz/taiko-client/issues/337)) ([1608aba](https://github.com/taikoxyz/taiko-client/commit/1608abae268bbbe6671ec9eb89fed2846065852c)) +* **pkg:** optimize `CheckL1ReorgFromL1Cursor` ([#329](https://github.com/taikoxyz/taiko-client/issues/329)) ([ed63c1f](https://github.com/taikoxyz/taiko-client/commit/ed63c1f8e4ba6a9fd40b1d1d5f3bba217d470f4b)) +* **pkg:** Wait receipt timeout ([#343](https://github.com/taikoxyz/taiko-client/issues/343)) ([cf261d3](https://github.com/taikoxyz/taiko-client/commit/cf261d377f61ea0b0ff049be7e8c8eb75264f386)) +* **proposer:** add `--proposeBlockTxGasTipCap` flag ([#349](https://github.com/taikoxyz/taiko-client/issues/349)) ([e40115b](https://github.com/taikoxyz/taiko-client/commit/e40115b97002661def8eed8dfb768ad28c19f0ea)) +* **proposer:** update pool content query ([#341](https://github.com/taikoxyz/taiko-client/issues/341)) ([221a3b9](https://github.com/taikoxyz/taiko-client/commit/221a3b92b77f4b3d3e5499eb27fa289ae44b0151)) +* **proposer:** use `TaikoConfig.blockMaxGasLimit` as proposed block gasLimit && remove some unused flags ([#344](https://github.com/taikoxyz/taiko-client/issues/344)) ([f0a3da7](https://github.com/taikoxyz/taiko-client/commit/f0a3da7d6bf8af222ae6e780218ccca2c7861137)) +* **prover:** add `--proofSubmissionMaxRetry` flag ([#333](https://github.com/taikoxyz/taiko-client/issues/333)) ([8d92b7a](https://github.com/taikoxyz/taiko-client/commit/8d92b7aa96d22ca20de57fd02e52d7f3f6ff9a5f)) +* **prover:** changes based on `proofVerifier` protocol updates ([#338](https://github.com/taikoxyz/taiko-client/issues/338)) ([6dcb34a](https://github.com/taikoxyz/taiko-client/commit/6dcb34aab3619731852a19a09b54aadce34de999)) +* **prover:** prove block tx gas limit ([#357](https://github.com/taikoxyz/taiko-client/issues/357)) ([8ed4da2](https://github.com/taikoxyz/taiko-client/commit/8ed4da2f0bd0bf5f215767b1bd44106dd878431f)) +* **rpc:** check if L1 rpc is an archive node ([#332](https://github.com/taikoxyz/taiko-client/issues/332)) ([b1aa1d3](https://github.com/taikoxyz/taiko-client/commit/b1aa1d388d407f2f5cb14275c006b1a22213b8ff)) + + +### Bug Fixes + +* **pkg:** fix returned context error from `WaitL1Origin` ([#331](https://github.com/taikoxyz/taiko-client/issues/331)) ([0ebf121](https://github.com/taikoxyz/taiko-client/commit/0ebf121dcae5e75d359bc7818aa98fa6f7b1bc20)) +* **pkg:** set more RPC context timeout ([#356](https://github.com/taikoxyz/taiko-client/issues/356)) ([ffe2f90](https://github.com/taikoxyz/taiko-client/commit/ffe2f906808f99a48f6a848351c9a34ea63f02b7)) +* **prover:** default prove unassigned blocks to false ([#354](https://github.com/taikoxyz/taiko-client/issues/354)) ([ed34ef6](https://github.com/taikoxyz/taiko-client/commit/ed34ef670a3deef5f4db88429cd13c5bdb108289)) +* **prover:** fix `onBlockProposed` reorg detection ([#348](https://github.com/taikoxyz/taiko-client/issues/348)) ([4877e01](https://github.com/taikoxyz/taiko-client/commit/4877e01f7c35f0cbce329e14948dd78b5de0c911)) + +## [0.13.0](https://github.com/taikoxyz/taiko-client/compare/v0.12.0...v0.13.0) (2023-07-23) + + +### Features + +* **cmd:** update `proveUnassignedBlocks` flag name ([#315](https://github.com/taikoxyz/taiko-client/issues/315)) ([df640d9](https://github.com/taikoxyz/taiko-client/commit/df640d9d49ceb84268801021ba70fea8e278f39e)) +* **driver:** improve `ProcessL1Blocks` for reorg handling ([#325](https://github.com/taikoxyz/taiko-client/issues/325)) ([7272e15](https://github.com/taikoxyz/taiko-client/commit/7272e15650e9ab6aded598e9edcae2659b9d045d)) +* **proposer:** add `--txpool.localsOnly` flag ([#326](https://github.com/taikoxyz/taiko-client/issues/326)) ([b292754](https://github.com/taikoxyz/taiko-client/commit/b2927541706e7827dad652140361f4ccf91d1afb)) +* **proposer:** handle transaction replacement underpriced error ([#322](https://github.com/taikoxyz/taiko-client/issues/322)) ([2273d10](https://github.com/taikoxyz/taiko-client/commit/2273d105b5dfa6479dc2aa74c16fd0365d06e31a)) +* **prover:** add `--oracleProofSubmissionDelay` flag ([#320](https://github.com/taikoxyz/taiko-client/issues/320)) ([85adc04](https://github.com/taikoxyz/taiko-client/commit/85adc04dceabd6218afee72f748e17d69182d81d)) +* **prover:** add some prover metrics for Alpha-4 protocol ([#319](https://github.com/taikoxyz/taiko-client/issues/319)) ([d8ff623](https://github.com/taikoxyz/taiko-client/commit/d8ff623a441226c736bd4c52d95df69dd2ce4c86)) +* **prover:** flag for proving unassigned proofs or not ([#314](https://github.com/taikoxyz/taiko-client/issues/314)) ([13e6d1d](https://github.com/taikoxyz/taiko-client/commit/13e6d1d87d661c1bdcd9e1537b10b42b33888298)) +* **prover:** generate an oracle proof if the incoming proof is incorrect ([#311](https://github.com/taikoxyz/taiko-client/issues/311)) ([003a86b](https://github.com/taikoxyz/taiko-client/commit/003a86bfd3e8f00a4b3c35d048ede6177739a45e)) +* **prover:** optimize `skipProofWindowExpiredCheck` check && update `NeedNewProof` check ([#313](https://github.com/taikoxyz/taiko-client/issues/313)) ([b0b4c25](https://github.com/taikoxyz/taiko-client/commit/b0b4c252291ff8d163d2eb71114aa7d63c821c7e)) +* **prover:** update `l1Current` cursor to record L1 hash ([#327](https://github.com/taikoxyz/taiko-client/issues/327)) ([4a5adb5](https://github.com/taikoxyz/taiko-client/commit/4a5adb523374008a37831da5febff9a3501a4e81)) +* **prover:** update open proving blocks check ([#316](https://github.com/taikoxyz/taiko-client/issues/316)) ([b34930c](https://github.com/taikoxyz/taiko-client/commit/b34930cd4982672bbea962f3706cb83d7e964963)) + + +### Bug Fixes + +* **ci:** fix workflow `pnpm install` error ([#321](https://github.com/taikoxyz/taiko-client/issues/321)) ([9eefc8d](https://github.com/taikoxyz/taiko-client/commit/9eefc8d401a35eee1c9b31f5e3c93e18e2754013)) +* **prover:** add end height for block filtering if `startHeight` is not nil, and don't block when notifying ([#317](https://github.com/taikoxyz/taiko-client/issues/317)) ([aaec1bb](https://github.com/taikoxyz/taiko-client/commit/aaec1bbdd54df6d60ce39428febbb2747838c31a)) +* **prover:** move concurrency guard ([#318](https://github.com/taikoxyz/taiko-client/issues/318)) ([af29c95](https://github.com/taikoxyz/taiko-client/commit/af29c9503def11c373c16555c020307348c5cff6)) + +## [0.12.0](https://github.com/taikoxyz/taiko-client/compare/v0.11.0...v0.12.0) (2023-07-10) + + +### Features + +* **all:** update bindings && integrate new circuits for L3 ([#290](https://github.com/taikoxyz/taiko-client/issues/290)) ([59469fa](https://github.com/taikoxyz/taiko-client/commit/59469fac2fefe1046d805dc1f19911150e453d87)) +* **bindings:** update contract bindings ([#310](https://github.com/taikoxyz/taiko-client/issues/310)) ([021f113](https://github.com/taikoxyz/taiko-client/commit/021f113c2add574843f889b525d55789752b1bd6)) +* **prover:** add some prover logs ([#305](https://github.com/taikoxyz/taiko-client/issues/305)) ([e36c76c](https://github.com/taikoxyz/taiko-client/commit/e36c76c7ea6d912477dc8ce61e4639faef00eb5c)) +* **prover:** implement staking based tokenomics in client ([#292](https://github.com/taikoxyz/taiko-client/issues/292)) ([7324547](https://github.com/taikoxyz/taiko-client/commit/7324547a80182e93193479089bd334fcce5df7ce)) + + +### Bug Fixes + +* **driver:** fix a P2P sync issue ([#298](https://github.com/taikoxyz/taiko-client/issues/298)) ([2ffa052](https://github.com/taikoxyz/taiko-client/commit/2ffa0528110db70f34dd3ef6f48008487caa78a2)) +* **prover:** fix a fork choice checking issue ([#309](https://github.com/taikoxyz/taiko-client/issues/309)) ([a393ed8](https://github.com/taikoxyz/taiko-client/commit/a393ed85fed4046039b66bda51bb645ed84d8461)) +* **prover:** fix an unlock issue ([#306](https://github.com/taikoxyz/taiko-client/issues/306)) ([392eb78](https://github.com/taikoxyz/taiko-client/commit/392eb78f3721fedea66bd2f361010e2495e385c6)) + +## [0.11.0](https://github.com/taikoxyz/taiko-client/compare/v0.10.0...v0.11.0) (2023-06-26) + + +### Features + +* **all:** disable no beacon client seen warning ([#279](https://github.com/taikoxyz/taiko-client/issues/279)) ([cdabcac](https://github.com/taikoxyz/taiko-client/commit/cdabcacb36303667560300775573a4db55fbd5d4)) +* **driver:** check the mismatch of last verified block ([#296](https://github.com/taikoxyz/taiko-client/issues/296)) ([79fda87](https://github.com/taikoxyz/taiko-client/commit/79fda8792b29d506b5fa653ed78304d34e892003)) +* **driver:** improve error messages ([#289](https://github.com/taikoxyz/taiko-client/issues/289)) ([90e365a](https://github.com/taikoxyz/taiko-client/commit/90e365a79759e0ea701619594b0bf71db4dd3b44)) +* **driver:** improve sync progress information ([#288](https://github.com/taikoxyz/taiko-client/issues/288)) ([45d73b9](https://github.com/taikoxyz/taiko-client/commit/45d73b9da34232cf6a3c8636e97aef5854bb86bb)) +* **flags:** add retry related flags ([#281](https://github.com/taikoxyz/taiko-client/issues/281)) ([2df4105](https://github.com/taikoxyz/taiko-client/commit/2df4105ab344fb118435b7ef53bcf13ac10f5dc7)) +* **metrics:** add `ProverNormalProofRewardGauge` metrics ([#275](https://github.com/taikoxyz/taiko-client/issues/275)) ([cd4e40d](https://github.com/taikoxyz/taiko-client/commit/cd4e40dd477895746843021732a1beba14fa248a)) +* **proposer:** add `waitReceiptTimeout` when proposing ([#282](https://github.com/taikoxyz/taiko-client/issues/282)) ([ebf3162](https://github.com/taikoxyz/taiko-client/commit/ebf31623dc491887a25a76da0078559d0b86865c)) +* **prover:** improve retry policy for prover ([#280](https://github.com/taikoxyz/taiko-client/issues/280)) ([344bac1](https://github.com/taikoxyz/taiko-client/commit/344bac1435812770c5a1e39efad1545b98d4b106)) + + +### Bug Fixes + +* **driver:** fix an issue in `checkLastVerifiedBlockMismatch` ([#297](https://github.com/taikoxyz/taiko-client/issues/297)) ([a68730c](https://github.com/taikoxyz/taiko-client/commit/a68730c0d9cc1b15cdd314ad7939f8971104b362)) +* **driver:** fix geth lag to verified block when syncing ([#294](https://github.com/taikoxyz/taiko-client/issues/294)) ([c57f6e8](https://github.com/taikoxyz/taiko-client/commit/c57f6e8ac84ad55c0d51bfae278c88f7694c2265)) +* **pkg:** minor fixes for `WaitReceipt` ([#284](https://github.com/taikoxyz/taiko-client/issues/284)) ([feaa2b6](https://github.com/taikoxyz/taiko-client/commit/feaa2b6487e1578c4082ba0b4be087a627512c4b)) +* **prover:** ensure L2 reorg finished before generating proofs && add `verificationCheckTicker` ([#277](https://github.com/taikoxyz/taiko-client/issues/277)) ([6fa24ea](https://github.com/taikoxyz/taiko-client/commit/6fa24ea2b4674865dc381098e57a2171c9fce95b)) + +## [0.10.0](https://github.com/taikoxyz/taiko-client/compare/v0.9.0...v0.10.0) (2023-06-08) + + +### Features + +* **all:** improve proposer && prover logs ([#264](https://github.com/taikoxyz/taiko-client/issues/264)) ([6d0a724](https://github.com/taikoxyz/taiko-client/commit/6d0a7248d78fcd0a73e53a89a21adbeff7f3b61b)) +* **driver:** add proof reward metric ([#273](https://github.com/taikoxyz/taiko-client/issues/273)) ([1e00560](https://github.com/taikoxyz/taiko-client/commit/1e00560a1564d61448687ad933fe39a301020bf9)) +* **driver:** optimize error handling for `CalldataSyncer` ([#262](https://github.com/taikoxyz/taiko-client/issues/262)) ([580e354](https://github.com/taikoxyz/taiko-client/commit/580e35487b32566761721422bf8d0ca9e5071ed5)) +* **pkg:** optimize `WaitL1Origin` ([#267](https://github.com/taikoxyz/taiko-client/issues/267)) ([2d1fda9](https://github.com/taikoxyz/taiko-client/commit/2d1fda90ec54fb25eee789968b9d2177017ace6f)) +* **pkg:** update logs when dialing ethclients ([#263](https://github.com/taikoxyz/taiko-client/issues/263)) ([99c980b](https://github.com/taikoxyz/taiko-client/commit/99c980becd0ea2872e6f91b8f422fe66ca8ebfb2)) +* **proposer:** add `--maxProposedTxListsPerEpoch` flag ([#258](https://github.com/taikoxyz/taiko-client/issues/258)) ([2cfcf81](https://github.com/taikoxyz/taiko-client/commit/2cfcf814200c2d41d539a427c94fe2a7fefcaf21)) +* **prover:** check if a system proof has already been submitted by another system prover ([#274](https://github.com/taikoxyz/taiko-client/issues/274)) ([1fcb244](https://github.com/taikoxyz/taiko-client/commit/1fcb244b29467fcdb7972a724a1ace8b94a67eb8)) +* **prover:** improve `onBlockProposed` listener ([#266](https://github.com/taikoxyz/taiko-client/issues/266)) ([5cbdcac](https://github.com/taikoxyz/taiko-client/commit/5cbdcacaa7f902875bb870ea909c7b5ad92220dd)) +* **prover:** improve `ZkevmRpcdProducer` logs ([#265](https://github.com/taikoxyz/taiko-client/issues/265)) ([d3fdd94](https://github.com/taikoxyz/taiko-client/commit/d3fdd94f95593567350a86bead5750b12cfd31be)) +* **prover:** update proof submission logs ([#261](https://github.com/taikoxyz/taiko-client/issues/261)) ([ea87f7f](https://github.com/taikoxyz/taiko-client/commit/ea87f7f8252073814007d9d54d71cc00171237d7)) + + +### Bug Fixes + +* **driver:** fix an issue for P2P sync timeout ([#268](https://github.com/taikoxyz/taiko-client/issues/268)) ([3aee10c](https://github.com/taikoxyz/taiko-client/commit/3aee10c0ba9170eb652e059c51ce029b2af8a3a4)) +* **prover:** fix a `targetDelay` calculation issue ([#272](https://github.com/taikoxyz/taiko-client/issues/272)) ([ffcfb53](https://github.com/taikoxyz/taiko-client/commit/ffcfb53e1be7ffe04fdb67ef9a176cc37b7369da)) + +## [0.9.0](https://github.com/taikoxyz/taiko-client/compare/v0.8.0...v0.9.0) (2023-06-04) + + +### Features + +* **all:** check L1 reorg before each operation ([#252](https://github.com/taikoxyz/taiko-client/issues/252)) ([e76b03f](https://github.com/taikoxyz/taiko-client/commit/e76b03f4af7ab1d300d206c246f736b0c5cb2241)) +* **all:** rename `treasure` to `treasury` ([#233](https://github.com/taikoxyz/taiko-client/issues/233)) ([252959f](https://github.com/taikoxyz/taiko-client/commit/252959f6e80f731da7526c655aeac0eec3b428b2)) +* **all:** update protocol bindings and some related changes ([#237](https://github.com/taikoxyz/taiko-client/issues/237)) ([3e12042](https://github.com/taikoxyz/taiko-client/commit/3e12042a9a5b5b9baca7de1b342788b22b2ca17e)) +* **bindings:** update bindings with EthDeposit changes ([#255](https://github.com/taikoxyz/taiko-client/issues/255)) ([f91f2dd](https://github.com/taikoxyz/taiko-client/commit/f91f2dd64e1fe25bc55790a8a93ea0ffab54ca3b)) +* **bindings:** update go contract bindings ([#243](https://github.com/taikoxyz/taiko-client/issues/243)) ([132500e](https://github.com/taikoxyz/taiko-client/commit/132500e27d135e6e5f89c96716a0bb2d17b6801b)) +* **driver:** optimize reorg handling && add more tests ([#256](https://github.com/taikoxyz/taiko-client/issues/256)) ([20c38a1](https://github.com/taikoxyz/taiko-client/commit/20c38a171ef617ddeecbe325d29d64c963792c07)) +* **pkg:** do not return error when genesis block not found ([#244](https://github.com/taikoxyz/taiko-client/issues/244)) ([8033e31](https://github.com/taikoxyz/taiko-client/commit/8033e31728c946a80fdd3d07f737241c7e19edf8)) +* **proof_producer:** update request parameters based on new circuits changes ([#240](https://github.com/taikoxyz/taiko-client/issues/240)) ([31521ef](https://github.com/taikoxyz/taiko-client/commit/31521ef8b7362dacbf183dc8c7d9a6020d1b0fc4)) +* **proposer:** add a `--minimalBlockGasLimit` flag to mitigate the potential gas estimation issue ([#225](https://github.com/taikoxyz/taiko-client/issues/225)) ([ab8305d](https://github.com/taikoxyz/taiko-client/commit/ab8305d39d1ca3375c6477b84d4afe5c729e815f)) +* **proposer:** add a new metric to track block fee ([#224](https://github.com/taikoxyz/taiko-client/issues/224)) ([98c17f0](https://github.com/taikoxyz/taiko-client/commit/98c17f00ade4fa20251a59b3aba4cad9e1eb1bd8)) +* **proposer:** propose multiple L2 blocks in one L1 block ([#254](https://github.com/taikoxyz/taiko-client/issues/254)) ([36ba5db](https://github.com/taikoxyz/taiko-client/commit/36ba5dbcc2863dc34fda2e59bf8a9d30d3665d04)) +* **prover:** add `--expectedReward` flag ([#248](https://github.com/taikoxyz/taiko-client/issues/248)) ([f64a762](https://github.com/taikoxyz/taiko-client/commit/f64a7620726019a2e7f5eada7b92087663b273fd)) +* **prover:** improve proof submission delay calculation ([#249](https://github.com/taikoxyz/taiko-client/issues/249)) ([7cc5d54](https://github.com/taikoxyz/taiko-client/commit/7cc5d541bef0eac9078bc93eb5f1d9954b164e9b)) +* **prover:** normal prover should wait targetProofTime before submitting proofs ([#232](https://github.com/taikoxyz/taiko-client/issues/232)) ([2128ddc](https://github.com/taikoxyz/taiko-client/commit/2128ddc325aaf8acf538fdd50e299187da8543dd)) +* **prover:** remove submission delay when running as a system prover ([#221](https://github.com/taikoxyz/taiko-client/issues/221)) ([49a25dd](https://github.com/taikoxyz/taiko-client/commit/49a25dd72888ee54209ddce51c6a701803728d86)) +* **prover:** remove the unnecessary special proof delay ([#226](https://github.com/taikoxyz/taiko-client/issues/226)) ([dcead44](https://github.com/taikoxyz/taiko-client/commit/dcead44a32ec9d064af423af0f2effea8b819fca)) +* **prover:** updates based on protocol `proofTimeTarget` changes ([#227](https://github.com/taikoxyz/taiko-client/issues/227)) ([c6ea860](https://github.com/taikoxyz/taiko-client/commit/c6ea860d736828fdb50e16447dee44733371c06f)) +* **repo:** enable OpenAI-based review ([#235](https://github.com/taikoxyz/taiko-client/issues/235)) ([88e4dae](https://github.com/taikoxyz/taiko-client/commit/88e4dae2e37c58273438335daade21587f25ec27)) + + +### Bug Fixes + +* **driver:** handle reorg ([#216](https://github.com/taikoxyz/taiko-client/issues/216)) ([fc2ec63](https://github.com/taikoxyz/taiko-client/commit/fc2ec637f5509b67572bb4d978f7bc41860e9b43)) +* **flag:** add a missing driver flag to configuration ([#246](https://github.com/taikoxyz/taiko-client/issues/246)) ([0b60243](https://github.com/taikoxyz/taiko-client/commit/0b60243fbc03bbfc2aceb8933ae9901d4b385117)) +* **prover:** fix an issue in prover event loop ([#257](https://github.com/taikoxyz/taiko-client/issues/257)) ([c550f09](https://github.com/taikoxyz/taiko-client/commit/c550f09d33f638f38461e576684432d90d850ac3)) +* **prover:** update bindings && fix a delay calculation issue ([#242](https://github.com/taikoxyz/taiko-client/issues/242)) ([49c3d69](https://github.com/taikoxyz/taiko-client/commit/49c3d6957b296b1312a53fcb5122fcd944b77c2d)) +* **repo:** fix openAI review workflow ([#253](https://github.com/taikoxyz/taiko-client/issues/253)) ([f44530b](https://github.com/taikoxyz/taiko-client/commit/f44530b428396b8514f974cf8ec476078d20c9d6)) + +## [0.8.0](https://github.com/taikoxyz/taiko-client/compare/v0.7.0...v0.8.0) (2023-05-12) + + +### Features + +* **proposer:** check tko balance and fee before proposing ([#205](https://github.com/taikoxyz/taiko-client/issues/205)) ([cc0da63](https://github.com/taikoxyz/taiko-client/commit/cc0da632c825c1379f039f489d7426548527cc80)) +* **prover:** add oracle proof submission delay ([#199](https://github.com/taikoxyz/taiko-client/issues/199)) ([7b5ed94](https://github.com/taikoxyz/taiko-client/commit/7b5ed94d12b0982de46e5ed66b38cffcf9c0c0d4)) +* **prover:** add special prover (system / oracle) ([#214](https://github.com/taikoxyz/taiko-client/issues/214)) ([1020377](https://github.com/taikoxyz/taiko-client/commit/1020377bec7115efd757a6c2ea78cfe9a97b6430)) +* **prover:** cancel proof if it becomes verified ([#207](https://github.com/taikoxyz/taiko-client/issues/207)) ([74d1729](https://github.com/taikoxyz/taiko-client/commit/74d17296c48a323e3ed78424b98aea9a93e081ca)) +* **prover:** implementing `--graffiti` flag for prover as input to block evidence ([#209](https://github.com/taikoxyz/taiko-client/issues/209)) ([2340210](https://github.com/taikoxyz/taiko-client/commit/2340210437a14618774265d2ad2f80989296aeae)) +* **prover:** improve oracle proof submission delay ([#212](https://github.com/taikoxyz/taiko-client/issues/212)) ([20c1423](https://github.com/taikoxyz/taiko-client/commit/20c14235b087e4624427879aa587a1599690dbbb)) +* **prover:** update `ZkevmRpcdProducer` to integrate new circuits ([#217](https://github.com/taikoxyz/taiko-client/issues/217)) ([81cf612](https://github.com/taikoxyz/taiko-client/commit/81cf6120c1610f7a8edaa183eb9a0fbbeb45b5f1)) +* **prover:** update canceling proof logic ([#218](https://github.com/taikoxyz/taiko-client/issues/218)) ([21d7e78](https://github.com/taikoxyz/taiko-client/commit/21d7e78d2e83fdd060fbc0303b244dee9777fcc4)) +* **prover:** update skip checking for system prover ([#215](https://github.com/taikoxyz/taiko-client/issues/215)) ([79ba210](https://github.com/taikoxyz/taiko-client/commit/79ba2104216dfee0a1b1556c4abc5abc76c5a266)) + + +### Bug Fixes + +* **driver:** fix `GetBasefee` parameters ([#210](https://github.com/taikoxyz/taiko-client/issues/210)) ([b5dc5c5](https://github.com/taikoxyz/taiko-client/commit/b5dc5c589d26b8e9e2420ecb38ea5c83b2ae7c2e)) +* **prover:** fix some oracle proof submission issues ([#211](https://github.com/taikoxyz/taiko-client/issues/211)) ([e061540](https://github.com/taikoxyz/taiko-client/commit/e06154058127962b90d5ab4a95cfec7c71942de3)) +* **prover:** submit L2 signal root with submitting proof ([#220](https://github.com/taikoxyz/taiko-client/issues/220)) ([8b030ed](https://github.com/taikoxyz/taiko-client/commit/8b030ed1a8fcf1a948a2272ff8ae3927c8957d84)) +* **prover:** submit L2 signal service root instead of L1 when submitting proof ([#219](https://github.com/taikoxyz/taiko-client/issues/219)) ([74fe156](https://github.com/taikoxyz/taiko-client/commit/74fe1567d0cc43e2d26d3f4af777794bc6c3a9f5)) + +## [0.7.0](https://github.com/taikoxyz/taiko-client/compare/v0.6.0...v0.7.0) (2023-04-28) + + +### Features + +* **all:** update client software based on the new protocol upgrade ([#185](https://github.com/taikoxyz/taiko-client/issues/185)) ([54f7a4c](https://github.com/taikoxyz/taiko-client/commit/54f7a4cb2db72a4ffa9a199e2af1f0d709a1ac27)) +* **driver:** changes based on protocol L2 EIP-1559 design ([#188](https://github.com/taikoxyz/taiko-client/issues/188)) ([82e8b97](https://github.com/taikoxyz/taiko-client/commit/82e8b9741782258840696701993b6d009d0260e0)) +* **prover:** add oracle prover flag ([#194](https://github.com/taikoxyz/taiko-client/issues/194)) ([ebbc725](https://github.com/taikoxyz/taiko-client/commit/ebbc72559a70c9aefc34286b05b1f4261bae8cd6)) +* **prover:** proof skip ([#198](https://github.com/taikoxyz/taiko-client/issues/198)) ([8607af8](https://github.com/taikoxyz/taiko-client/commit/8607af826ed9561a6bdae74074a517f1424e7a69)) + +## [0.6.0](https://github.com/taikoxyz/taiko-client/compare/v0.5.0...v0.6.0) (2023-03-20) + + +### Features + +* **docs:** remove concept docs and refer to website ([#180](https://github.com/taikoxyz/taiko-client/pull/180)) ([a8dcdac](https://github.com/taikoxyz/taiko-client/commit/a8dcdac77c1a5e3f85e4d7a4b912cfb3d903a3d9)) +* **flags:** update txpool.locals flag usage ([#181](https://github.com/taikoxyz/taiko-client/pull/181)) ([dac6102](https://github.com/taikoxyz/taiko-client/commit/dac6102d7508b9bdcb248eab4dcf469022353aa8)) +* **proposer:** add `proposeEmptyBlockGasLimit` ([#178](https://github.com/taikoxyz/taiko-client/issues/178)) ([e64d769](https://github.com/taikoxyz/taiko-client/commit/e64d769f45d072b151f429f61c1fe2ab07dec0dc)) + + +## [0.5.0](https://github.com/taikoxyz/taiko-client/compare/v0.4.0...v0.5.0) (2023-03-08) + + +### Features + +* **pkg:** improve `BlockBatchIterator` ([#173](https://github.com/taikoxyz/taiko-client/issues/173)) ([4fab06a](https://github.com/taikoxyz/taiko-client/commit/4fab06a9cba17c5e4da09acbe9b95949d6c4d47f)) +* **proposer,prover:** make `context.Context` part of `proposer.waitTillSynced` && `ProofProducer.RequestProof`'s parameters ([#169](https://github.com/taikoxyz/taiko-client/issues/169)) ([4b11e29](https://github.com/taikoxyz/taiko-client/commit/4b11e29689b8fac85023669443c351f428a54fea)) +* **proposer:** new flag to propose empty blocks ([#175](https://github.com/taikoxyz/taiko-client/issues/175)) ([6621a5c](https://github.com/taikoxyz/taiko-client/commit/6621a5c89a92e7593f702e4c82e69d1215b2ca59)) +* **proposer:** remove `poolContentSplitter` in proposer ([#159](https://github.com/taikoxyz/taiko-client/issues/159)) ([e26c831](https://github.com/taikoxyz/taiko-client/commit/e26c831a42fdf448b32bcf75c1f1f87bd71df481)) +* **proposer:** remove an unused flag ([#176](https://github.com/taikoxyz/taiko-client/issues/176)) ([7d2126e](https://github.com/taikoxyz/taiko-client/commit/7d2126efe256bcb698b3d4df7352efdbff957ace)) +* **prover:** ensure L2 EE is fully synced when calling `initL1Current` ([#170](https://github.com/taikoxyz/taiko-client/issues/170)) ([6c85058](https://github.com/taikoxyz/taiko-client/commit/6c8505827c035cc7456967bc8aab8bec1861e19b)) +* **prover:** new flags for `zkevm-chain` ([#166](https://github.com/taikoxyz/taiko-client/issues/166)) ([1c90a3d](https://github.com/taikoxyz/taiko-client/commit/1c90a3d6b7cada0b116875d88f0952993b54bb5f)) +* **prover:** tracking for most recent block ID to ensure (relatively) consecutive proving by notification system ([#174](https://github.com/taikoxyz/taiko-client/issues/174)) ([e500039](https://github.com/taikoxyz/taiko-client/commit/e5000395a3a28bd282df64f54867fd771143a56a)) + + +### Bug Fixes + +* **proposer:** remove an unused metric from proposer ([#171](https://github.com/taikoxyz/taiko-client/issues/171)) ([8df5eea](https://github.com/taikoxyz/taiko-client/commit/8df5eea1d9f1482a10b7d395ae19953f5d6ea6ce)) + +## [0.4.0](https://github.com/taikoxyz/taiko-client/compare/v0.3.0...v0.4.0) (2023-02-22) + + +### Features + +* **all:** update contract bindings && some improvements based on Alex's feedback ([#153](https://github.com/taikoxyz/taiko-client/issues/153)) ([bdaa292](https://github.com/taikoxyz/taiko-client/commit/bdaa2920bcb113d3887409edb17462b5e0d3a2c5)) +* **bindings:** parse solidity custom errors ([#163](https://github.com/taikoxyz/taiko-client/issues/163)) ([9a79127](https://github.com/taikoxyz/taiko-client/commit/9a79127a5a3cddf4e95ac899943e6551b02cf432)) + + +### Bug Fixes + +* **driver:** fix an issue in sync status checking ([#162](https://github.com/taikoxyz/taiko-client/issues/162)) ([4b21027](https://github.com/taikoxyz/taiko-client/commit/4b2102720e2c1c2fcaef1853ad74b91c6d08aaaa)) +* **proposer:** fix a proposer nonce order issue ([#157](https://github.com/taikoxyz/taiko-client/issues/157)) ([80fc0e9](https://github.com/taikoxyz/taiko-client/commit/80fc0e94d819f93ecdeac492eb1f35d5f2bb09ce)) + +## [0.3.0](https://github.com/taikoxyz/taiko-client/compare/v0.2.4...v0.3.0) (2023-02-15) + + +### Features + +* **prover:** improve the check for whether the current block still needs a new proof ([#145](https://github.com/taikoxyz/taiko-client/issues/145)) ([6c00fc5](https://github.com/taikoxyz/taiko-client/commit/6c00fc544b1ed92a4e38860059ef463282648a42)) +* **prover:** update `ZkevmRpcdProducer` to make it connecting to a real proverd service ([#121](https://github.com/taikoxyz/taiko-client/issues/121)) ([8c8ee9c](https://github.com/taikoxyz/taiko-client/commit/8c8ee9c2c3266e25e4233821034b89f50bb08c33)) +* **repo:** implement release please ([#148](https://github.com/taikoxyz/taiko-client/issues/148)) ([d8f3ad8](https://github.com/taikoxyz/taiko-client/commit/d8f3ad80d358fe547d356b7f7d7fd6e6ca9279ce)) diff --git a/packages/taiko-client/Dockerfile b/packages/taiko-client/Dockerfile new file mode 100644 index 00000000000..6ec91299f89 --- /dev/null +++ b/packages/taiko-client/Dockerfile @@ -0,0 +1,18 @@ +FROM golang:1.21-alpine as builder + +RUN apk update && apk add --no-cache --update gcc musl-dev linux-headers git make build-base + +WORKDIR /taiko-client +COPY . . +RUN --mount=type=cache,target=/root/.cache/go-build,sharing=locked \ + make build + +FROM alpine:latest + +RUN apk add --no-cache ca-certificates libstdc++ + +COPY --from=builder /taiko-client/bin/taiko-client /usr/local/bin/ + +EXPOSE 6060 + +ENTRYPOINT ["taiko-client"] diff --git a/packages/taiko-client/LICENSE.md b/packages/taiko-client/LICENSE.md new file mode 100644 index 00000000000..e1eaaa7b0e3 --- /dev/null +++ b/packages/taiko-client/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Taiko Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/taiko-client/Makefile b/packages/taiko-client/Makefile new file mode 100644 index 00000000000..96ef03298c0 --- /dev/null +++ b/packages/taiko-client/Makefile @@ -0,0 +1,39 @@ +GIT_COMMIT := $(shell git rev-parse HEAD) +GIT_DATE := $(shell git show -s --format='%ct') + +LD_FLAGS_ARGS +=-X github.com/taikoxyz/taiko-mono/packages/taiko-client/version.GitCommit=$(GIT_COMMIT) +LD_FLAGS_ARGS +=-X github.com/taikoxyz/taiko-mono/packages/taiko-client/version.GitDate=$(GIT_DATE) + +LD_FLAGS := -ldflags "$(LD_FLAGS_ARGS)" + +build: + @GO111MODULE=on CGO_CFLAGS="-O -D__BLST_PORTABLE__" CGO_CFLAGS_ALLOW="-O -D__BLST_PORTABLE__" go build -v $(LD_FLAGS) -o bin/taiko-client cmd/main.go + +clean: + @rm -rf bin/* + +lint: + @go install golang.org/x/tools/cmd/goimports@latest \ + && go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.56.2 \ + && goimports -local "github.com/taikoxyz/taiko-mono/packages/taiko-client" -w ./ \ + && golangci-lint run + +test: + PACKAGE=${PACKAGE} \ + RUN_TESTS=true \ + ./integration_test/entrypoint.sh + +dev_net: + COMPILE_PROTOCOL=${COMPILE_PROTOCOL} \ + ./integration_test/entrypoint.sh + +gen_bindings: + TAIKO_GETH_DIR=${TAIKO_GETH_DIR} \ + ./scripts/gen_bindings.sh + +.PHONY: build \ + clean \ + lint \ + test \ + dev_net \ + gen_bindings diff --git a/packages/taiko-client/README.md b/packages/taiko-client/README.md new file mode 100644 index 00000000000..34b1afdc9a0 --- /dev/null +++ b/packages/taiko-client/README.md @@ -0,0 +1,59 @@ +# taiko-client + +[![CI](https://github.com/taikoxyz/taiko-mono/packages/taiko-client/actions/workflows/taiko-client-test.yml/badge.svg)](https://github.com/taikoxyz/taiko-mono/packages/taiko-client/actions/workflows/taiko-client-test.yml) +[![Codecov](https://img.shields.io/codecov/c/github/taikoxyz/taiko-mono/packages/taiko-client?logo=codecov&token=OH6BJMVP6O)](https://codecov.io/gh/taikoxyz/taiko-mono/packages/taiko-client) + +Taiko protocol's client software implementation in Go. Learn more about Taiko nodes with [the docs](https://docs.taiko.xyz/core-concepts/taiko-nodes/). + +## Project structure + +| Path | Description | +| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `bindings/` | [Go contract bindings](https://geth.ethereum.org/docs/dapp/native-bindings) for Taiko smart contracts, and few related utility functions | +| `cmd/` | Main executable for this project | +| `docs/` | Documentation | +| `driver/` | Driver sub-command | +| `integration_test/` | Scripts to do the integration testing of all client software | +| `metrics/` | Metrics related | +| `pkg/` | Library code which used by all sub-commands | +| `proposer/` | Proposer sub-command | +| `prover/` | Prover sub-command | +| `scripts/` | Helpful scripts | +| `testutils/` | Test utils | +| `version/` | Version information | + +## Build the source + +Building the `taiko-client` binary requires a Go compiler. Once installed, run: + +```sh +make build +``` + +## Usage + +Review all available sub-commands: + +```sh +bin/taiko-client --help +``` + +Review each sub-command's command line flags: + +```sh +bin/taiko-client --help +``` + +## Testing + +Ensure you have Docker running, and pnpm installed. + +Then, run the integration tests: + +1. Start Docker locally +2. Perform a `pnpm install` in `taiko-mono/packages/protocol` +3. Replace `` and execute: + +```sh +make test +``` diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead new file mode 100644 index 00000000000..92b7203daae --- /dev/null +++ b/packages/taiko-client/bindings/.githead @@ -0,0 +1 @@ +8532b7750513b87732340030139513d2b2ee203b diff --git a/packages/taiko-client/bindings/encoding/custom_error.go b/packages/taiko-client/bindings/encoding/custom_error.go new file mode 100644 index 00000000000..df598b49494 --- /dev/null +++ b/packages/taiko-client/bindings/encoding/custom_error.go @@ -0,0 +1,100 @@ +package encoding + +import ( + "context" + "errors" + "strings" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" +) + +// BlockHashContractCallerAndChainReader represents a contract caller and chain reader. +type BlockHashContractCallerAndChainReader interface { + bind.BlockHashContractCaller + ethereum.TransactionReader + ethereum.ChainReader +} + +// TryParsingCustomErrorFromReceipt tries to parse the custom error from the given receipt. +func TryParsingCustomErrorFromReceipt( + ctx context.Context, + rpc BlockHashContractCallerAndChainReader, + from common.Address, + receipt *types.Receipt, +) error { + // Get the block header of the receipt. + header, err := rpc.HeaderByHash(ctx, receipt.BlockHash) + if err != nil { + return err + } + + // Fetch the raw transaction. + tx, _, err := rpc.TransactionByHash(ctx, receipt.TxHash) + if err != nil { + return err + } + + // Call the contract at the block hash. + _, err = rpc.CallContractAtHash(ctx, ethereum.CallMsg{ + From: from, + To: tx.To(), + Gas: tx.Gas(), + GasFeeCap: tx.GasFeeCap(), + GasTipCap: tx.GasTipCap(), + Value: tx.Value(), + Data: tx.Data(), + AccessList: tx.AccessList(), + BlobGasFeeCap: tx.BlobGasFeeCap(), + BlobHashes: tx.BlobHashes(), + }, header.ParentHash) + + return TryParsingCustomError(err) +} + +// TryParsingCustomError tries to checks whether the given error is one of the +// custom errors defined the protocol ABIs, if so, it will return +// the matched custom error, otherwise, it simply returns the original error. +func TryParsingCustomError(originalError error) error { + if originalError == nil { + return nil + } + + errData := getErrorData(originalError) + + // if errData is unparsable and returns 0x, we should not match any errors. + if errData == "0x" { + return originalError + } + + for _, customErrors := range customErrorMaps { + for _, customError := range customErrors { + if strings.HasPrefix(customError.ID.Hex(), errData) { + return errors.New(customError.Name) + } + } + } + + return originalError +} + +// getErrorData tries to parse the actual custom error data from the given error. +func getErrorData(err error) string { + // Geth node custom errors, the actual struct of this error is go-ethereum's . + gethJSONError, ok := err.(interface{ ErrorData() interface{} }) // nolint: errorlint + if ok { + if errData, ok := gethJSONError.ErrorData().(string); ok { + return errData + } + } + + // Hardhat node custom errors, example: + // "VM Exception while processing transaction: reverted with an unrecognized custom error (return data: 0xb6d363fd)" + if strings.Contains(err.Error(), "reverted with an unrecognized custom error") { + return err.Error()[len(err.Error())-11 : len(err.Error())-1] + } + + return err.Error() +} diff --git a/packages/taiko-client/bindings/encoding/custom_error_test.go b/packages/taiko-client/bindings/encoding/custom_error_test.go new file mode 100644 index 00000000000..a7cf6d691cc --- /dev/null +++ b/packages/taiko-client/bindings/encoding/custom_error_test.go @@ -0,0 +1,42 @@ +package encoding + +import ( + "errors" + "strings" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/require" +) + +type testJSONError struct{} + +func (e *testJSONError) Error() string { return common.Bytes2Hex(randomBytes(10)) } + +func (e *testJSONError) ErrorData() interface{} { return "0x8a1c400f" } + +type emptyTestJSONError struct{} + +func (e *emptyTestJSONError) Error() string { return "execution reverted" } + +func (e *emptyTestJSONError) ErrorData() interface{} { return "0x" } + +func TestTryParsingCustomError(t *testing.T) { + randomErr := common.Bytes2Hex(randomBytes(10)) + require.Equal(t, randomErr, TryParsingCustomError(errors.New(randomErr)).Error()) + + err := TryParsingCustomError(errors.New( + // L1_INVALID_BLOCK_ID + "VM Exception while processing transaction: reverted with an unrecognized custom error (return data: 0x8a1c400f)", + )) + + require.True(t, strings.HasPrefix(err.Error(), "L1_INVALID_BLOCK_ID")) + + err = TryParsingCustomError(&testJSONError{}) + + require.True(t, strings.HasPrefix(err.Error(), "L1_INVALID_BLOCK_ID")) + + err = TryParsingCustomError(&emptyTestJSONError{}) + + require.Equal(t, err.Error(), "execution reverted") +} diff --git a/packages/taiko-client/bindings/encoding/input.go b/packages/taiko-client/bindings/encoding/input.go new file mode 100644 index 00000000000..c6a3e671746 --- /dev/null +++ b/packages/taiko-client/bindings/encoding/input.go @@ -0,0 +1,416 @@ +package encoding + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +// ABI arguments marshaling components. +var ( + blockMetadataComponents = []abi.ArgumentMarshaling{ + { + Name: "l1Hash", + Type: "bytes32", + }, + { + Name: "difficulty", + Type: "bytes32", + }, + { + Name: "blobHash", + Type: "bytes32", + }, + { + Name: "extraData", + Type: "bytes32", + }, + { + Name: "depositsHash", + Type: "bytes32", + }, + { + Name: "coinbase", + Type: "address", + }, + { + Name: "id", + Type: "uint64", + }, + { + Name: "gasLimit", + Type: "uint32", + }, + { + Name: "timestamp", + Type: "uint64", + }, + { + Name: "l1Height", + Type: "uint64", + }, + { + Name: "minTier", + Type: "uint16", + }, + { + Name: "blobUsed", + Type: "bool", + }, + { + Name: "parentMetaHash", + Type: "bytes32", + }, + { + Name: "sender", + Type: "address", + }, + } + transitionComponents = []abi.ArgumentMarshaling{ + { + Name: "parentHash", + Type: "bytes32", + }, + { + Name: "blockHash", + Type: "bytes32", + }, + { + Name: "stateRoot", + Type: "bytes32", + }, + { + Name: "graffiti", + Type: "bytes32", + }, + } + tierProofComponents = []abi.ArgumentMarshaling{ + { + Name: "tier", + Type: "uint16", + }, + { + Name: "data", + Type: "bytes", + }, + } + blockParamsComponents = []abi.ArgumentMarshaling{ + { + Name: "assignedProver", + Type: "address", + }, + { + Name: "coinbase", + Type: "address", + }, + { + Name: "extraData", + Type: "bytes32", + }, + { + Name: "parentMetaHash", + Type: "bytes32", + }, + { + Name: "hookCalls", + Type: "tuple[]", + Components: []abi.ArgumentMarshaling{ + { + Name: "hook", + Type: "address", + }, + { + Name: "data", + Type: "bytes", + }, + }, + }, + { + Name: "signature", + Type: "bytes", + }, + } + proverAssignmentComponents = []abi.ArgumentMarshaling{ + { + Name: "feeToken", + Type: "address", + }, + { + Name: "expiry", + Type: "uint64", + }, + { + Name: "maxBlockId", + Type: "uint64", + }, + { + Name: "maxProposedIn", + Type: "uint64", + }, + { + Name: "metaHash", + Type: "bytes32", + }, + { + Name: "parentMetaHash", + Type: "bytes32", + }, + { + Name: "tierFees", + Type: "tuple[]", + Components: []abi.ArgumentMarshaling{ + { + Name: "tier", + Type: "uint16", + }, + { + Name: "fee", + Type: "uint128", + }, + }, + }, + { + Name: "signature", + Type: "bytes", + }, + } + assignmentHookInputComponents = []abi.ArgumentMarshaling{ + { + Name: "assignment", + Type: "tuple", + Components: proverAssignmentComponents, + }, + { + Name: "tip", + Type: "uint256", + }, + } +) + +var ( + assignmentHookInputType, _ = abi.NewType("tuple", "AssignmentHook.Input", assignmentHookInputComponents) + assignmentHookInputArgs = abi.Arguments{{Name: "AssignmentHook.Input", Type: assignmentHookInputType}} + blockParamsComponentsType, _ = abi.NewType("tuple", "TaikoData.BlockParams", blockParamsComponents) + blockParamsComponentsArgs = abi.Arguments{{Name: "TaikoData.BlockParams", Type: blockParamsComponentsType}} + // ProverAssignmentPayload + bytes32Type, _ = abi.NewType("bytes32", "", nil) + addressType, _ = abi.NewType("address", "", nil) + uint64Type, _ = abi.NewType("uint64", "", nil) + tierFeesType, _ = abi.NewType( + "tuple[]", + "", + []abi.ArgumentMarshaling{ + { + Name: "tier", + Type: "uint16", + }, + { + Name: "fee", + Type: "uint128", + }, + }, + ) + proverAssignmentHashPayloadArgs = abi.Arguments{ + {Name: "_assignment.metaHash", Type: bytes32Type}, + {Name: "_assignment.parentMetaHash", Type: bytes32Type}, + {Name: "_assignment.feeToken", Type: addressType}, + {Name: "_assignment.expiry", Type: uint64Type}, + {Name: "_assignment.maxBlockId", Type: uint64Type}, + {Name: "_assignment.maxProposedIn", Type: uint64Type}, + {Name: "_assignment.tierFees", Type: tierFeesType}, + } + blockMetadataComponentsType, _ = abi.NewType("tuple", "TaikoData.BlockMetadata", blockMetadataComponents) + transitionComponentsType, _ = abi.NewType("tuple", "TaikoData.Transition", transitionComponents) + tierProofComponentsType, _ = abi.NewType("tuple", "TaikoData.TierProof", tierProofComponents) + proveBlockInputArgs = abi.Arguments{ + {Name: "TaikoData.BlockMetadata", Type: blockMetadataComponentsType}, + {Name: "TaikoData.Transition", Type: transitionComponentsType}, + {Name: "TaikoData.TierProof", Type: tierProofComponentsType}, + } +) + +// Contract ABIs. +var ( + TaikoL1ABI *abi.ABI + TaikoL2ABI *abi.ABI + TaikoTokenABI *abi.ABI + GuardianProverABI *abi.ABI + LibProposingABI *abi.ABI + LibProvingABI *abi.ABI + LibUtilsABI *abi.ABI + LibVerifyingABI *abi.ABI + AssignmentHookABI *abi.ABI + SGXVerifierABI *abi.ABI + GuardianVerifierABI *abi.ABI + + customErrorMaps []map[string]abi.Error +) + +func init() { + var err error + + if TaikoL1ABI, err = bindings.TaikoL1ClientMetaData.GetAbi(); err != nil { + log.Crit("Get TaikoL1 ABI error", "error", err) + } + + if TaikoL2ABI, err = bindings.TaikoL2ClientMetaData.GetAbi(); err != nil { + log.Crit("Get TaikoL2 ABI error", "error", err) + } + + if TaikoTokenABI, err = bindings.TaikoTokenMetaData.GetAbi(); err != nil { + log.Crit("Get TaikoToken ABI error", "error", err) + } + + if GuardianProverABI, err = bindings.GuardianProverMetaData.GetAbi(); err != nil { + log.Crit("Get GuardianProver ABI error", "error", err) + } + + if LibProposingABI, err = bindings.LibProposingMetaData.GetAbi(); err != nil { + log.Crit("Get LibProposing ABI error", "error", err) + } + + if LibProvingABI, err = bindings.LibProvingMetaData.GetAbi(); err != nil { + log.Crit("Get LibProving ABI error", "error", err) + } + + if LibUtilsABI, err = bindings.LibUtilsMetaData.GetAbi(); err != nil { + log.Crit("Get LibUtils ABI error", "error", err) + } + + if LibVerifyingABI, err = bindings.LibVerifyingMetaData.GetAbi(); err != nil { + log.Crit("Get LibVerifying ABI error", "error", err) + } + + if AssignmentHookABI, err = bindings.AssignmentHookMetaData.GetAbi(); err != nil { + log.Crit("Get AssignmentHook ABI error", "error", err) + } + + if SGXVerifierABI, err = bindings.SgxVerifierMetaData.GetAbi(); err != nil { + log.Crit("Get SGXVerifier ABI error", err) + } + + if GuardianVerifierABI, err = bindings.GuardianVerifierMetaData.GetAbi(); err != nil { + log.Crit("Get GuardianVerifier ABI error", "error", err) + } + + customErrorMaps = []map[string]abi.Error{ + TaikoL1ABI.Errors, + TaikoL2ABI.Errors, + GuardianProverABI.Errors, + LibProposingABI.Errors, + LibProvingABI.Errors, + LibUtilsABI.Errors, + LibVerifyingABI.Errors, + AssignmentHookABI.Errors, + SGXVerifierABI.Errors, + GuardianVerifierABI.Errors, + } +} + +// EncodeBlockParams performs the solidity `abi.encode` for the given blockParams. +func EncodeBlockParams(params *BlockParams) ([]byte, error) { + b, err := blockParamsComponentsArgs.Pack(params) + if err != nil { + return nil, fmt.Errorf("failed to abi.encode block params, %w", err) + } + return b, nil +} + +// EncodeAssignmentHookInput performs the solidity `abi.encode` for the given input +func EncodeAssignmentHookInput(input *AssignmentHookInput) ([]byte, error) { + b, err := assignmentHookInputArgs.Pack(input) + if err != nil { + return nil, fmt.Errorf("failed to abi.encode assignment hook input params, %w", err) + } + return b, nil +} + +// EncodeProverAssignmentPayload performs the solidity `abi.encode` for the given proverAssignment payload. +func EncodeProverAssignmentPayload( + chainID uint64, + taikoAddress common.Address, + assignmentHookAddress common.Address, + blockProposer common.Address, + assignedProver common.Address, + blobHash common.Hash, + feeToken common.Address, + expiry uint64, + maxBlockID uint64, + maxProposedIn uint64, + tierFees []TierFee, +) ([]byte, error) { + hashBytesPayload, err := proverAssignmentHashPayloadArgs.Pack( + common.Hash{}, + common.Hash{}, + feeToken, + expiry, + maxBlockID, + maxProposedIn, + tierFees, + ) + if err != nil { + return nil, fmt.Errorf("failed to abi.encode prover assignment hash payload, %w", err) + } + + chainIDBytes := make([]byte, 8) + binary.BigEndian.PutUint64(chainIDBytes, chainID) + + return bytes.Join([][]byte{ + common.RightPadBytes([]byte("PROVER_ASSIGNMENT"), 32), + chainIDBytes, + taikoAddress.Bytes(), + blockProposer.Bytes(), + assignedProver.Bytes(), + blobHash.Bytes(), + crypto.Keccak256Hash(hashBytesPayload).Bytes(), + assignmentHookAddress.Bytes(), + }, nil), nil +} + +// EncodeProveBlockInput performs the solidity `abi.encode` for the given TaikoL1.proveBlock input. +func EncodeProveBlockInput( + meta *bindings.TaikoDataBlockMetadata, + transition *bindings.TaikoDataTransition, + tierProof *bindings.TaikoDataTierProof, +) ([]byte, error) { + b, err := proveBlockInputArgs.Pack(meta, transition, tierProof) + if err != nil { + return nil, fmt.Errorf("failed to abi.encode TakoL1.proveBlock input, %w", err) + } + return b, nil +} + +// UnpackTxListBytes unpacks the input data of a TaikoL1.proposeBlock transaction, and returns the txList bytes. +func UnpackTxListBytes(txData []byte) ([]byte, error) { + method, err := TaikoL1ABI.MethodById(txData) + if err != nil { + return nil, err + } + + // Only check for safety. + if method.Name != "proposeBlock" { + return nil, fmt.Errorf("invalid method name: %s", method.Name) + } + + args := map[string]interface{}{} + + if err := method.Inputs.UnpackIntoMap(args, txData[4:]); err != nil { + return nil, err + } + + inputs, ok := args["_txList"].([]byte) + + if !ok { + return nil, errors.New("failed to get txList bytes") + } + + return inputs, nil +} diff --git a/packages/taiko-client/bindings/encoding/input_test.go b/packages/taiko-client/bindings/encoding/input_test.go new file mode 100644 index 00000000000..ea99ad7a9f2 --- /dev/null +++ b/packages/taiko-client/bindings/encoding/input_test.go @@ -0,0 +1,101 @@ +package encoding + +import ( + "context" + "math/big" + "os" + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +func TestEncodeProverAssignmentPayload(t *testing.T) { + encoded, err := EncodeProverAssignmentPayload( + randomHash().Big().Uint64(), + common.BytesToAddress(randomBytes(20)), + common.BytesToAddress(randomBytes(20)), + common.BytesToAddress(randomBytes(20)), + common.BytesToAddress(randomBytes(20)), + common.BytesToHash(randomBytes(32)), + common.BytesToAddress(randomBytes(20)), + 120, + 1024, + 0, + []TierFee{{Tier: 0, Fee: common.Big1}}, + ) + + require.Nil(t, err) + require.NotNil(t, encoded) +} + +func TestEncodeAssignmentHookInput(t *testing.T) { + encoded, err := EncodeAssignmentHookInput(&AssignmentHookInput{ + Assignment: &ProverAssignment{ + FeeToken: common.Address{}, + Expiry: 1, + MaxBlockId: 1, + MaxProposedIn: 1, + MetaHash: [32]byte{0xff}, + TierFees: []TierFee{{Tier: 0, Fee: common.Big1}}, + Signature: []byte{0xff}, + }, + Tip: big.NewInt(1), + }) + + require.Nil(t, err) + require.NotNil(t, encoded) +} + +func TestUnpackTxListBytes(t *testing.T) { + _, err := UnpackTxListBytes(randomBytes(1024)) + require.NotNil(t, err) + + _, err = UnpackTxListBytes( + hexutil.MustDecode( + "0xa0ca2d080000000000000000000000000000000000000000000000000000000000000" + + "aa8e2b9725cce28787e99447c383d95a9ba83125fe31a9ffa9cbb2c504da86926ab", + ), + ) + require.ErrorContains(t, err, "no method with id") + + cli, err := ethclient.Dial(os.Getenv("L1_NODE_WS_ENDPOINT")) + require.Nil(t, err) + + chainID, err := cli.ChainID(context.Background()) + require.Nil(t, err) + + taikoL1, err := bindings.NewTaikoL1Client( + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + cli, + ) + require.Nil(t, err) + + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + require.Nil(t, err) + + opts, err := bind.NewKeyedTransactorWithChainID(l1ProposerPrivKey, chainID) + require.Nil(t, err) + + opts.NoSend = true + opts.GasLimit = randomHash().Big().Uint64() + + txListBytes := randomBytes(1024) + + tx, err := taikoL1.ProposeBlock( + opts, + randomBytes(1024), + txListBytes, + ) + require.Nil(t, err) + + b, err := UnpackTxListBytes(tx.Data()) + require.Nil(t, err) + require.Equal(t, txListBytes, b) +} diff --git a/packages/taiko-client/bindings/encoding/struct.go b/packages/taiko-client/bindings/encoding/struct.go new file mode 100644 index 00000000000..e230bb94e18 --- /dev/null +++ b/packages/taiko-client/bindings/encoding/struct.go @@ -0,0 +1,114 @@ +package encoding + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/beacon/engine" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" +) + +// Tier IDs defined in protocol. +var ( + TierOptimisticID uint16 = 100 + TierSgxID uint16 = 200 + TierSgxAndZkVMID uint16 = 300 + TierGuardianMinorityID uint16 = 900 + TierGuardianMajorityID uint16 = 1000 + ProtocolTiers = []uint16{ + TierOptimisticID, + TierSgxID, + TierSgxAndZkVMID, + TierGuardianMinorityID, + TierGuardianMajorityID, + } + GoldenTouchPrivKey = "92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce38" +) + +// HookCall should be same with TaikoData.HookCall +type HookCall struct { + Hook common.Address + Data []byte +} + +// BlockParams should be same with TaikoData.BlockParams. +type BlockParams struct { + AssignedProver common.Address + Coinbase common.Address + ExtraData [32]byte + ParentMetaHash [32]byte + HookCalls []HookCall + Signature []byte +} + +// TierFee should be same with TaikoData.TierFee. +type TierFee struct { + Tier uint16 + Fee *big.Int +} + +// ProverAssignment should be same with TaikoData.ProverAssignment. +type ProverAssignment struct { + FeeToken common.Address + Expiry uint64 + MaxBlockId uint64 // nolint: revive,stylecheck + MaxProposedIn uint64 + MetaHash [32]byte + ParentMetaHash [32]byte + TierFees []TierFee + Signature []byte +} + +// AssignmentHookInput should be same as AssignmentHook.Input +type AssignmentHookInput struct { + Assignment *ProverAssignment + Tip *big.Int +} + +// ToExecutableData converts a GETH *types.Header to *engine.ExecutableData. +func ToExecutableData(header *types.Header) *engine.ExecutableData { + executableData := &engine.ExecutableData{ + ParentHash: header.ParentHash, + FeeRecipient: header.Coinbase, + StateRoot: header.Root, + ReceiptsRoot: header.ReceiptHash, + LogsBloom: header.Bloom.Bytes(), + Random: header.MixDigest, + Number: header.Number.Uint64(), + GasLimit: header.GasLimit, + GasUsed: header.GasUsed, + Timestamp: header.Time, + ExtraData: header.Extra, + BaseFeePerGas: header.BaseFee, + BlockHash: header.Hash(), + TxHash: header.TxHash, + } + + if header.WithdrawalsHash != nil { + executableData.WithdrawalsHash = *header.WithdrawalsHash + } + + return executableData +} + +// BloomToBytes converts a types.Bloom to [8][32]byte slice. +func BloomToBytes(bloom types.Bloom) [8][32]byte { + b := [8][32]byte{} + + for i := 0; i < 8; i++ { + copy(b[i][:], bloom[i*32:(i+1)*32]) + } + + return b +} + +// BytesToBloom converts a [8][32]byte slice to types.Bloom. +func BytesToBloom(b [8][32]byte) types.Bloom { + bytes := []byte{} + + for i := 0; i < 8; i++ { + bytes = append(bytes, b[i][:]...) + } + + return types.BytesToBloom(bytes) +} diff --git a/packages/taiko-client/bindings/encoding/struct_test.go b/packages/taiko-client/bindings/encoding/struct_test.go new file mode 100644 index 00000000000..8caf76b66ad --- /dev/null +++ b/packages/taiko-client/bindings/encoding/struct_test.go @@ -0,0 +1,72 @@ +package encoding + +import ( + "crypto/rand" + "math/big" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +var ( + testHeader = &types.Header{ + ParentHash: randomHash(), + UncleHash: types.EmptyUncleHash, + Coinbase: common.BytesToAddress(randomHash().Bytes()), + Root: randomHash(), + TxHash: randomHash(), + ReceiptHash: randomHash(), + Bloom: types.BytesToBloom(randomHash().Bytes()), + Difficulty: new(big.Int).SetUint64(utils.RandUint64(nil)), + Number: new(big.Int).SetUint64(utils.RandUint64(nil)), + GasLimit: utils.RandUint64(nil), + GasUsed: utils.RandUint64(nil), + Time: uint64(time.Now().Unix()), + Extra: randomHash().Bytes(), + MixDigest: randomHash(), + Nonce: types.EncodeNonce(utils.RandUint64(nil)), + BaseFee: new(big.Int).SetUint64(utils.RandUint64(nil)), + } +) + +func TestToExecutableData(t *testing.T) { + data := ToExecutableData(testHeader) + require.Equal(t, testHeader.ParentHash, data.ParentHash) + require.Equal(t, testHeader.Coinbase, data.FeeRecipient) + require.Equal(t, testHeader.Root, data.StateRoot) + require.Equal(t, testHeader.ReceiptHash, data.ReceiptsRoot) + require.Equal(t, testHeader.Bloom.Bytes(), data.LogsBloom) + require.Equal(t, testHeader.MixDigest, data.Random) + require.Equal(t, testHeader.Number.Uint64(), data.Number) + require.Equal(t, testHeader.GasLimit, data.GasLimit) + require.Equal(t, testHeader.GasUsed, data.GasUsed) + require.Equal(t, testHeader.Time, data.Timestamp) + require.Equal(t, testHeader.Extra, data.ExtraData) + require.Equal(t, testHeader.BaseFee, data.BaseFeePerGas) + require.Equal(t, testHeader.Hash(), data.BlockHash) + require.Equal(t, testHeader.TxHash, data.TxHash) +} + +// randomHash generates a random blob of data and returns it as a hash. +func randomHash() common.Hash { + var hash common.Hash + if n, err := rand.Read(hash[:]); n != common.HashLength || err != nil { + panic(err) + } + return hash +} + +// randomBytes generates a random bytes. +func randomBytes(size int) (b []byte) { + b = make([]byte, size) + if _, err := rand.Read(b); err != nil { + log.Crit("Generate random bytes error", "error", err) + } + return +} diff --git a/packages/taiko-client/bindings/gen_address_manager.go b/packages/taiko-client/bindings/gen_address_manager.go new file mode 100644 index 00000000000..8dd28b1a361 --- /dev/null +++ b/packages/taiko-client/bindings/gen_address_manager.go @@ -0,0 +1,1966 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AddressManagerMetaData contains all meta data concerning the AddressManager contract. +var AddressManagerMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAddress\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setAddress\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_newAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AddressSet\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"oldAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AM_ADDRESS_ALREADY_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// AddressManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use AddressManagerMetaData.ABI instead. +var AddressManagerABI = AddressManagerMetaData.ABI + +// AddressManager is an auto generated Go binding around an Ethereum contract. +type AddressManager struct { + AddressManagerCaller // Read-only binding to the contract + AddressManagerTransactor // Write-only binding to the contract + AddressManagerFilterer // Log filterer for contract events +} + +// AddressManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type AddressManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AddressManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AddressManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AddressManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AddressManagerSession struct { + Contract *AddressManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AddressManagerCallerSession struct { + Contract *AddressManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AddressManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AddressManagerTransactorSession struct { + Contract *AddressManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AddressManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type AddressManagerRaw struct { + Contract *AddressManager // Generic contract binding to access the raw methods on +} + +// AddressManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AddressManagerCallerRaw struct { + Contract *AddressManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// AddressManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AddressManagerTransactorRaw struct { + Contract *AddressManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAddressManager creates a new instance of AddressManager, bound to a specific deployed contract. +func NewAddressManager(address common.Address, backend bind.ContractBackend) (*AddressManager, error) { + contract, err := bindAddressManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AddressManager{AddressManagerCaller: AddressManagerCaller{contract: contract}, AddressManagerTransactor: AddressManagerTransactor{contract: contract}, AddressManagerFilterer: AddressManagerFilterer{contract: contract}}, nil +} + +// NewAddressManagerCaller creates a new read-only instance of AddressManager, bound to a specific deployed contract. +func NewAddressManagerCaller(address common.Address, caller bind.ContractCaller) (*AddressManagerCaller, error) { + contract, err := bindAddressManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AddressManagerCaller{contract: contract}, nil +} + +// NewAddressManagerTransactor creates a new write-only instance of AddressManager, bound to a specific deployed contract. +func NewAddressManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressManagerTransactor, error) { + contract, err := bindAddressManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AddressManagerTransactor{contract: contract}, nil +} + +// NewAddressManagerFilterer creates a new log filterer instance of AddressManager, bound to a specific deployed contract. +func NewAddressManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressManagerFilterer, error) { + contract, err := bindAddressManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AddressManagerFilterer{contract: contract}, nil +} + +// bindAddressManager binds a generic wrapper to an already deployed contract. +func bindAddressManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AddressManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AddressManager *AddressManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AddressManager.Contract.AddressManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AddressManager *AddressManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AddressManager.Contract.AddressManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AddressManager *AddressManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AddressManager.Contract.AddressManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AddressManager *AddressManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AddressManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AddressManager *AddressManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AddressManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AddressManager *AddressManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AddressManager.Contract.contract.Transact(opts, method, params...) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_AddressManager *AddressManagerCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_AddressManager *AddressManagerSession) AddressManager() (common.Address, error) { + return _AddressManager.Contract.AddressManager(&_AddressManager.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_AddressManager *AddressManagerCallerSession) AddressManager() (common.Address, error) { + return _AddressManager.Contract.AddressManager(&_AddressManager.CallOpts) +} + +// GetAddress is a free data retrieval call binding the contract method 0x28f713cc. +// +// Solidity: function getAddress(uint64 _chainId, bytes32 _name) view returns(address) +func (_AddressManager *AddressManagerCaller) GetAddress(opts *bind.CallOpts, _chainId uint64, _name [32]byte) (common.Address, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "getAddress", _chainId, _name) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetAddress is a free data retrieval call binding the contract method 0x28f713cc. +// +// Solidity: function getAddress(uint64 _chainId, bytes32 _name) view returns(address) +func (_AddressManager *AddressManagerSession) GetAddress(_chainId uint64, _name [32]byte) (common.Address, error) { + return _AddressManager.Contract.GetAddress(&_AddressManager.CallOpts, _chainId, _name) +} + +// GetAddress is a free data retrieval call binding the contract method 0x28f713cc. +// +// Solidity: function getAddress(uint64 _chainId, bytes32 _name) view returns(address) +func (_AddressManager *AddressManagerCallerSession) GetAddress(_chainId uint64, _name [32]byte) (common.Address, error) { + return _AddressManager.Contract.GetAddress(&_AddressManager.CallOpts, _chainId, _name) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_AddressManager *AddressManagerCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_AddressManager *AddressManagerSession) InNonReentrant() (bool, error) { + return _AddressManager.Contract.InNonReentrant(&_AddressManager.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_AddressManager *AddressManagerCallerSession) InNonReentrant() (bool, error) { + return _AddressManager.Contract.InNonReentrant(&_AddressManager.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_AddressManager *AddressManagerCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_AddressManager *AddressManagerSession) LastUnpausedAt() (uint64, error) { + return _AddressManager.Contract.LastUnpausedAt(&_AddressManager.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_AddressManager *AddressManagerCallerSession) LastUnpausedAt() (uint64, error) { + return _AddressManager.Contract.LastUnpausedAt(&_AddressManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AddressManager *AddressManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AddressManager *AddressManagerSession) Owner() (common.Address, error) { + return _AddressManager.Contract.Owner(&_AddressManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AddressManager *AddressManagerCallerSession) Owner() (common.Address, error) { + return _AddressManager.Contract.Owner(&_AddressManager.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_AddressManager *AddressManagerCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_AddressManager *AddressManagerSession) Paused() (bool, error) { + return _AddressManager.Contract.Paused(&_AddressManager.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_AddressManager *AddressManagerCallerSession) Paused() (bool, error) { + return _AddressManager.Contract.Paused(&_AddressManager.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_AddressManager *AddressManagerCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_AddressManager *AddressManagerSession) PendingOwner() (common.Address, error) { + return _AddressManager.Contract.PendingOwner(&_AddressManager.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_AddressManager *AddressManagerCallerSession) PendingOwner() (common.Address, error) { + return _AddressManager.Contract.PendingOwner(&_AddressManager.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_AddressManager *AddressManagerCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_AddressManager *AddressManagerSession) ProxiableUUID() ([32]byte, error) { + return _AddressManager.Contract.ProxiableUUID(&_AddressManager.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_AddressManager *AddressManagerCallerSession) ProxiableUUID() ([32]byte, error) { + return _AddressManager.Contract.ProxiableUUID(&_AddressManager.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AddressManager *AddressManagerCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AddressManager *AddressManagerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AddressManager.Contract.Resolve(&_AddressManager.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AddressManager *AddressManagerCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AddressManager.Contract.Resolve(&_AddressManager.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AddressManager *AddressManagerCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _AddressManager.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AddressManager *AddressManagerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AddressManager.Contract.Resolve0(&_AddressManager.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AddressManager *AddressManagerCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AddressManager.Contract.Resolve0(&_AddressManager.CallOpts, _name, _allowZeroAddress) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_AddressManager *AddressManagerTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_AddressManager *AddressManagerSession) AcceptOwnership() (*types.Transaction, error) { + return _AddressManager.Contract.AcceptOwnership(&_AddressManager.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_AddressManager *AddressManagerTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _AddressManager.Contract.AcceptOwnership(&_AddressManager.TransactOpts) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _owner) returns() +func (_AddressManager *AddressManagerTransactor) Init(opts *bind.TransactOpts, _owner common.Address) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "init", _owner) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _owner) returns() +func (_AddressManager *AddressManagerSession) Init(_owner common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.Init(&_AddressManager.TransactOpts, _owner) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _owner) returns() +func (_AddressManager *AddressManagerTransactorSession) Init(_owner common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.Init(&_AddressManager.TransactOpts, _owner) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_AddressManager *AddressManagerTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_AddressManager *AddressManagerSession) Pause() (*types.Transaction, error) { + return _AddressManager.Contract.Pause(&_AddressManager.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_AddressManager *AddressManagerTransactorSession) Pause() (*types.Transaction, error) { + return _AddressManager.Contract.Pause(&_AddressManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AddressManager *AddressManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AddressManager *AddressManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _AddressManager.Contract.RenounceOwnership(&_AddressManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AddressManager *AddressManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _AddressManager.Contract.RenounceOwnership(&_AddressManager.TransactOpts) +} + +// SetAddress is a paid mutator transaction binding the contract method 0xd8f4648f. +// +// Solidity: function setAddress(uint64 _chainId, bytes32 _name, address _newAddress) returns() +func (_AddressManager *AddressManagerTransactor) SetAddress(opts *bind.TransactOpts, _chainId uint64, _name [32]byte, _newAddress common.Address) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "setAddress", _chainId, _name, _newAddress) +} + +// SetAddress is a paid mutator transaction binding the contract method 0xd8f4648f. +// +// Solidity: function setAddress(uint64 _chainId, bytes32 _name, address _newAddress) returns() +func (_AddressManager *AddressManagerSession) SetAddress(_chainId uint64, _name [32]byte, _newAddress common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.SetAddress(&_AddressManager.TransactOpts, _chainId, _name, _newAddress) +} + +// SetAddress is a paid mutator transaction binding the contract method 0xd8f4648f. +// +// Solidity: function setAddress(uint64 _chainId, bytes32 _name, address _newAddress) returns() +func (_AddressManager *AddressManagerTransactorSession) SetAddress(_chainId uint64, _name [32]byte, _newAddress common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.SetAddress(&_AddressManager.TransactOpts, _chainId, _name, _newAddress) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AddressManager *AddressManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AddressManager *AddressManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.TransferOwnership(&_AddressManager.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AddressManager *AddressManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.TransferOwnership(&_AddressManager.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_AddressManager *AddressManagerTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_AddressManager *AddressManagerSession) Unpause() (*types.Transaction, error) { + return _AddressManager.Contract.Unpause(&_AddressManager.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_AddressManager *AddressManagerTransactorSession) Unpause() (*types.Transaction, error) { + return _AddressManager.Contract.Unpause(&_AddressManager.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_AddressManager *AddressManagerTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_AddressManager *AddressManagerSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.UpgradeTo(&_AddressManager.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_AddressManager *AddressManagerTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _AddressManager.Contract.UpgradeTo(&_AddressManager.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_AddressManager *AddressManagerTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _AddressManager.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_AddressManager *AddressManagerSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _AddressManager.Contract.UpgradeToAndCall(&_AddressManager.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_AddressManager *AddressManagerTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _AddressManager.Contract.UpgradeToAndCall(&_AddressManager.TransactOpts, newImplementation, data) +} + +// AddressManagerAddressSetIterator is returned from FilterAddressSet and is used to iterate over the raw logs and unpacked data for AddressSet events raised by the AddressManager contract. +type AddressManagerAddressSetIterator struct { + Event *AddressManagerAddressSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerAddressSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerAddressSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerAddressSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerAddressSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerAddressSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerAddressSet represents a AddressSet event raised by the AddressManager contract. +type AddressManagerAddressSet struct { + ChainId uint64 + Name [32]byte + NewAddress common.Address + OldAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddressSet is a free log retrieval operation binding the contract event 0x500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453. +// +// Solidity: event AddressSet(uint64 indexed chainId, bytes32 indexed name, address newAddress, address oldAddress) +func (_AddressManager *AddressManagerFilterer) FilterAddressSet(opts *bind.FilterOpts, chainId []uint64, name [][32]byte) (*AddressManagerAddressSetIterator, error) { + + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } + var nameRule []interface{} + for _, nameItem := range name { + nameRule = append(nameRule, nameItem) + } + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "AddressSet", chainIdRule, nameRule) + if err != nil { + return nil, err + } + return &AddressManagerAddressSetIterator{contract: _AddressManager.contract, event: "AddressSet", logs: logs, sub: sub}, nil +} + +// WatchAddressSet is a free log subscription operation binding the contract event 0x500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453. +// +// Solidity: event AddressSet(uint64 indexed chainId, bytes32 indexed name, address newAddress, address oldAddress) +func (_AddressManager *AddressManagerFilterer) WatchAddressSet(opts *bind.WatchOpts, sink chan<- *AddressManagerAddressSet, chainId []uint64, name [][32]byte) (event.Subscription, error) { + + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) + } + var nameRule []interface{} + for _, nameItem := range name { + nameRule = append(nameRule, nameItem) + } + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "AddressSet", chainIdRule, nameRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerAddressSet) + if err := _AddressManager.contract.UnpackLog(event, "AddressSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddressSet is a log parse operation binding the contract event 0x500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453. +// +// Solidity: event AddressSet(uint64 indexed chainId, bytes32 indexed name, address newAddress, address oldAddress) +func (_AddressManager *AddressManagerFilterer) ParseAddressSet(log types.Log) (*AddressManagerAddressSet, error) { + event := new(AddressManagerAddressSet) + if err := _AddressManager.contract.UnpackLog(event, "AddressSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the AddressManager contract. +type AddressManagerAdminChangedIterator struct { + Event *AddressManagerAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerAdminChanged represents a AdminChanged event raised by the AddressManager contract. +type AddressManagerAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_AddressManager *AddressManagerFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*AddressManagerAdminChangedIterator, error) { + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &AddressManagerAdminChangedIterator{contract: _AddressManager.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_AddressManager *AddressManagerFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *AddressManagerAdminChanged) (event.Subscription, error) { + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerAdminChanged) + if err := _AddressManager.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_AddressManager *AddressManagerFilterer) ParseAdminChanged(log types.Log) (*AddressManagerAdminChanged, error) { + event := new(AddressManagerAdminChanged) + if err := _AddressManager.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the AddressManager contract. +type AddressManagerBeaconUpgradedIterator struct { + Event *AddressManagerBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerBeaconUpgraded represents a BeaconUpgraded event raised by the AddressManager contract. +type AddressManagerBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_AddressManager *AddressManagerFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*AddressManagerBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &AddressManagerBeaconUpgradedIterator{contract: _AddressManager.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_AddressManager *AddressManagerFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *AddressManagerBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerBeaconUpgraded) + if err := _AddressManager.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_AddressManager *AddressManagerFilterer) ParseBeaconUpgraded(log types.Log) (*AddressManagerBeaconUpgraded, error) { + event := new(AddressManagerBeaconUpgraded) + if err := _AddressManager.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the AddressManager contract. +type AddressManagerInitializedIterator struct { + Event *AddressManagerInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerInitialized represents a Initialized event raised by the AddressManager contract. +type AddressManagerInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_AddressManager *AddressManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*AddressManagerInitializedIterator, error) { + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &AddressManagerInitializedIterator{contract: _AddressManager.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_AddressManager *AddressManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *AddressManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerInitialized) + if err := _AddressManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_AddressManager *AddressManagerFilterer) ParseInitialized(log types.Log) (*AddressManagerInitialized, error) { + event := new(AddressManagerInitialized) + if err := _AddressManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the AddressManager contract. +type AddressManagerOwnershipTransferStartedIterator struct { + Event *AddressManagerOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the AddressManager contract. +type AddressManagerOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_AddressManager *AddressManagerFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AddressManagerOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &AddressManagerOwnershipTransferStartedIterator{contract: _AddressManager.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_AddressManager *AddressManagerFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *AddressManagerOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerOwnershipTransferStarted) + if err := _AddressManager.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_AddressManager *AddressManagerFilterer) ParseOwnershipTransferStarted(log types.Log) (*AddressManagerOwnershipTransferStarted, error) { + event := new(AddressManagerOwnershipTransferStarted) + if err := _AddressManager.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the AddressManager contract. +type AddressManagerOwnershipTransferredIterator struct { + Event *AddressManagerOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerOwnershipTransferred represents a OwnershipTransferred event raised by the AddressManager contract. +type AddressManagerOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_AddressManager *AddressManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AddressManagerOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &AddressManagerOwnershipTransferredIterator{contract: _AddressManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_AddressManager *AddressManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *AddressManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerOwnershipTransferred) + if err := _AddressManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_AddressManager *AddressManagerFilterer) ParseOwnershipTransferred(log types.Log) (*AddressManagerOwnershipTransferred, error) { + event := new(AddressManagerOwnershipTransferred) + if err := _AddressManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the AddressManager contract. +type AddressManagerPausedIterator struct { + Event *AddressManagerPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerPaused represents a Paused event raised by the AddressManager contract. +type AddressManagerPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_AddressManager *AddressManagerFilterer) FilterPaused(opts *bind.FilterOpts) (*AddressManagerPausedIterator, error) { + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &AddressManagerPausedIterator{contract: _AddressManager.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_AddressManager *AddressManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *AddressManagerPaused) (event.Subscription, error) { + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerPaused) + if err := _AddressManager.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_AddressManager *AddressManagerFilterer) ParsePaused(log types.Log) (*AddressManagerPaused, error) { + event := new(AddressManagerPaused) + if err := _AddressManager.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the AddressManager contract. +type AddressManagerUnpausedIterator struct { + Event *AddressManagerUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerUnpaused represents a Unpaused event raised by the AddressManager contract. +type AddressManagerUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_AddressManager *AddressManagerFilterer) FilterUnpaused(opts *bind.FilterOpts) (*AddressManagerUnpausedIterator, error) { + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &AddressManagerUnpausedIterator{contract: _AddressManager.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_AddressManager *AddressManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *AddressManagerUnpaused) (event.Subscription, error) { + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerUnpaused) + if err := _AddressManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_AddressManager *AddressManagerFilterer) ParseUnpaused(log types.Log) (*AddressManagerUnpaused, error) { + event := new(AddressManagerUnpaused) + if err := _AddressManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AddressManagerUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the AddressManager contract. +type AddressManagerUpgradedIterator struct { + Event *AddressManagerUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AddressManagerUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AddressManagerUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AddressManagerUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AddressManagerUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AddressManagerUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AddressManagerUpgraded represents a Upgraded event raised by the AddressManager contract. +type AddressManagerUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_AddressManager *AddressManagerFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*AddressManagerUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _AddressManager.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &AddressManagerUpgradedIterator{contract: _AddressManager.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_AddressManager *AddressManagerFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *AddressManagerUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _AddressManager.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AddressManagerUpgraded) + if err := _AddressManager.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_AddressManager *AddressManagerFilterer) ParseUpgraded(log types.Log) (*AddressManagerUpgraded, error) { + event := new(AddressManagerUpgraded) + if err := _AddressManager.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_assignment_hook.go b/packages/taiko-client/bindings/gen_assignment_hook.go new file mode 100644 index 00000000000..06f7880645b --- /dev/null +++ b/packages/taiko-client/bindings/gen_assignment_hook.go @@ -0,0 +1,2141 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AssignmentHookProverAssignment is an auto generated low-level Go binding around an user-defined struct. +type AssignmentHookProverAssignment struct { + FeeToken common.Address + Expiry uint64 + MaxBlockId uint64 + MaxProposedIn uint64 + MetaHash [32]byte + ParentMetaHash [32]byte + TierFees []TaikoDataTierFee + Signature []byte +} + +// TaikoDataTierFee is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTierFee struct { + Tier uint16 + Fee *big.Int +} + +// AssignmentHookMetaData contains all meta data concerning the AssignmentHook contract. +var AssignmentHookMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"MAX_GAS_PAYING_PROVER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hashAssignment\",\"inputs\":[{\"name\":\"_assignment\",\"type\":\"tuple\",\"internalType\":\"structAssignmentHook.ProverAssignment\",\"components\":[{\"name\":\"feeToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxProposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"tierFees\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TierFee[]\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"fee\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_taikoL1Address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_blockProposer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onBlockProposed\",\"inputs\":[{\"name\":\"_blk\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_meta\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockAssigned\",\"inputs\":[{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"assignment\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structAssignmentHook.ProverAssignment\",\"components\":[{\"name\":\"feeToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxProposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"tierFees\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.TierFee[]\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"fee\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EtherPaymentFailed\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"maxGas\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_EXPIRED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_ASSIGNMENT_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"HOOK_TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// AssignmentHookABI is the input ABI used to generate the binding from. +// Deprecated: Use AssignmentHookMetaData.ABI instead. +var AssignmentHookABI = AssignmentHookMetaData.ABI + +// AssignmentHook is an auto generated Go binding around an Ethereum contract. +type AssignmentHook struct { + AssignmentHookCaller // Read-only binding to the contract + AssignmentHookTransactor // Write-only binding to the contract + AssignmentHookFilterer // Log filterer for contract events +} + +// AssignmentHookCaller is an auto generated read-only Go binding around an Ethereum contract. +type AssignmentHookCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AssignmentHookTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AssignmentHookTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AssignmentHookFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AssignmentHookFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AssignmentHookSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AssignmentHookSession struct { + Contract *AssignmentHook // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AssignmentHookCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AssignmentHookCallerSession struct { + Contract *AssignmentHookCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AssignmentHookTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AssignmentHookTransactorSession struct { + Contract *AssignmentHookTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AssignmentHookRaw is an auto generated low-level Go binding around an Ethereum contract. +type AssignmentHookRaw struct { + Contract *AssignmentHook // Generic contract binding to access the raw methods on +} + +// AssignmentHookCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AssignmentHookCallerRaw struct { + Contract *AssignmentHookCaller // Generic read-only contract binding to access the raw methods on +} + +// AssignmentHookTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AssignmentHookTransactorRaw struct { + Contract *AssignmentHookTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAssignmentHook creates a new instance of AssignmentHook, bound to a specific deployed contract. +func NewAssignmentHook(address common.Address, backend bind.ContractBackend) (*AssignmentHook, error) { + contract, err := bindAssignmentHook(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AssignmentHook{AssignmentHookCaller: AssignmentHookCaller{contract: contract}, AssignmentHookTransactor: AssignmentHookTransactor{contract: contract}, AssignmentHookFilterer: AssignmentHookFilterer{contract: contract}}, nil +} + +// NewAssignmentHookCaller creates a new read-only instance of AssignmentHook, bound to a specific deployed contract. +func NewAssignmentHookCaller(address common.Address, caller bind.ContractCaller) (*AssignmentHookCaller, error) { + contract, err := bindAssignmentHook(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AssignmentHookCaller{contract: contract}, nil +} + +// NewAssignmentHookTransactor creates a new write-only instance of AssignmentHook, bound to a specific deployed contract. +func NewAssignmentHookTransactor(address common.Address, transactor bind.ContractTransactor) (*AssignmentHookTransactor, error) { + contract, err := bindAssignmentHook(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AssignmentHookTransactor{contract: contract}, nil +} + +// NewAssignmentHookFilterer creates a new log filterer instance of AssignmentHook, bound to a specific deployed contract. +func NewAssignmentHookFilterer(address common.Address, filterer bind.ContractFilterer) (*AssignmentHookFilterer, error) { + contract, err := bindAssignmentHook(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AssignmentHookFilterer{contract: contract}, nil +} + +// bindAssignmentHook binds a generic wrapper to an already deployed contract. +func bindAssignmentHook(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AssignmentHookMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AssignmentHook *AssignmentHookRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AssignmentHook.Contract.AssignmentHookCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AssignmentHook *AssignmentHookRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AssignmentHook.Contract.AssignmentHookTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AssignmentHook *AssignmentHookRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AssignmentHook.Contract.AssignmentHookTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AssignmentHook *AssignmentHookCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AssignmentHook.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AssignmentHook *AssignmentHookTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AssignmentHook.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AssignmentHook *AssignmentHookTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AssignmentHook.Contract.contract.Transact(opts, method, params...) +} + +// MAXGASPAYINGPROVER is a free data retrieval call binding the contract method 0x12925031. +// +// Solidity: function MAX_GAS_PAYING_PROVER() view returns(uint256) +func (_AssignmentHook *AssignmentHookCaller) MAXGASPAYINGPROVER(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "MAX_GAS_PAYING_PROVER") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXGASPAYINGPROVER is a free data retrieval call binding the contract method 0x12925031. +// +// Solidity: function MAX_GAS_PAYING_PROVER() view returns(uint256) +func (_AssignmentHook *AssignmentHookSession) MAXGASPAYINGPROVER() (*big.Int, error) { + return _AssignmentHook.Contract.MAXGASPAYINGPROVER(&_AssignmentHook.CallOpts) +} + +// MAXGASPAYINGPROVER is a free data retrieval call binding the contract method 0x12925031. +// +// Solidity: function MAX_GAS_PAYING_PROVER() view returns(uint256) +func (_AssignmentHook *AssignmentHookCallerSession) MAXGASPAYINGPROVER() (*big.Int, error) { + return _AssignmentHook.Contract.MAXGASPAYINGPROVER(&_AssignmentHook.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_AssignmentHook *AssignmentHookCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_AssignmentHook *AssignmentHookSession) AddressManager() (common.Address, error) { + return _AssignmentHook.Contract.AddressManager(&_AssignmentHook.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_AssignmentHook *AssignmentHookCallerSession) AddressManager() (common.Address, error) { + return _AssignmentHook.Contract.AddressManager(&_AssignmentHook.CallOpts) +} + +// HashAssignment is a free data retrieval call binding the contract method 0xaf3a0228. +// +// Solidity: function hashAssignment((address,uint64,uint64,uint64,bytes32,bytes32,(uint16,uint128)[],bytes) _assignment, address _taikoL1Address, address _blockProposer, address _assignedProver, bytes32 _blobHash) view returns(bytes32) +func (_AssignmentHook *AssignmentHookCaller) HashAssignment(opts *bind.CallOpts, _assignment AssignmentHookProverAssignment, _taikoL1Address common.Address, _blockProposer common.Address, _assignedProver common.Address, _blobHash [32]byte) ([32]byte, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "hashAssignment", _assignment, _taikoL1Address, _blockProposer, _assignedProver, _blobHash) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// HashAssignment is a free data retrieval call binding the contract method 0xaf3a0228. +// +// Solidity: function hashAssignment((address,uint64,uint64,uint64,bytes32,bytes32,(uint16,uint128)[],bytes) _assignment, address _taikoL1Address, address _blockProposer, address _assignedProver, bytes32 _blobHash) view returns(bytes32) +func (_AssignmentHook *AssignmentHookSession) HashAssignment(_assignment AssignmentHookProverAssignment, _taikoL1Address common.Address, _blockProposer common.Address, _assignedProver common.Address, _blobHash [32]byte) ([32]byte, error) { + return _AssignmentHook.Contract.HashAssignment(&_AssignmentHook.CallOpts, _assignment, _taikoL1Address, _blockProposer, _assignedProver, _blobHash) +} + +// HashAssignment is a free data retrieval call binding the contract method 0xaf3a0228. +// +// Solidity: function hashAssignment((address,uint64,uint64,uint64,bytes32,bytes32,(uint16,uint128)[],bytes) _assignment, address _taikoL1Address, address _blockProposer, address _assignedProver, bytes32 _blobHash) view returns(bytes32) +func (_AssignmentHook *AssignmentHookCallerSession) HashAssignment(_assignment AssignmentHookProverAssignment, _taikoL1Address common.Address, _blockProposer common.Address, _assignedProver common.Address, _blobHash [32]byte) ([32]byte, error) { + return _AssignmentHook.Contract.HashAssignment(&_AssignmentHook.CallOpts, _assignment, _taikoL1Address, _blockProposer, _assignedProver, _blobHash) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_AssignmentHook *AssignmentHookCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_AssignmentHook *AssignmentHookSession) InNonReentrant() (bool, error) { + return _AssignmentHook.Contract.InNonReentrant(&_AssignmentHook.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_AssignmentHook *AssignmentHookCallerSession) InNonReentrant() (bool, error) { + return _AssignmentHook.Contract.InNonReentrant(&_AssignmentHook.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_AssignmentHook *AssignmentHookCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_AssignmentHook *AssignmentHookSession) LastUnpausedAt() (uint64, error) { + return _AssignmentHook.Contract.LastUnpausedAt(&_AssignmentHook.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_AssignmentHook *AssignmentHookCallerSession) LastUnpausedAt() (uint64, error) { + return _AssignmentHook.Contract.LastUnpausedAt(&_AssignmentHook.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AssignmentHook *AssignmentHookCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AssignmentHook *AssignmentHookSession) Owner() (common.Address, error) { + return _AssignmentHook.Contract.Owner(&_AssignmentHook.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AssignmentHook *AssignmentHookCallerSession) Owner() (common.Address, error) { + return _AssignmentHook.Contract.Owner(&_AssignmentHook.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_AssignmentHook *AssignmentHookCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_AssignmentHook *AssignmentHookSession) Paused() (bool, error) { + return _AssignmentHook.Contract.Paused(&_AssignmentHook.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_AssignmentHook *AssignmentHookCallerSession) Paused() (bool, error) { + return _AssignmentHook.Contract.Paused(&_AssignmentHook.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_AssignmentHook *AssignmentHookCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_AssignmentHook *AssignmentHookSession) PendingOwner() (common.Address, error) { + return _AssignmentHook.Contract.PendingOwner(&_AssignmentHook.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_AssignmentHook *AssignmentHookCallerSession) PendingOwner() (common.Address, error) { + return _AssignmentHook.Contract.PendingOwner(&_AssignmentHook.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_AssignmentHook *AssignmentHookCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_AssignmentHook *AssignmentHookSession) ProxiableUUID() ([32]byte, error) { + return _AssignmentHook.Contract.ProxiableUUID(&_AssignmentHook.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_AssignmentHook *AssignmentHookCallerSession) ProxiableUUID() ([32]byte, error) { + return _AssignmentHook.Contract.ProxiableUUID(&_AssignmentHook.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AssignmentHook *AssignmentHookCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AssignmentHook *AssignmentHookSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AssignmentHook.Contract.Resolve(&_AssignmentHook.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AssignmentHook *AssignmentHookCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AssignmentHook.Contract.Resolve(&_AssignmentHook.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AssignmentHook *AssignmentHookCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _AssignmentHook.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AssignmentHook *AssignmentHookSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AssignmentHook.Contract.Resolve0(&_AssignmentHook.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_AssignmentHook *AssignmentHookCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _AssignmentHook.Contract.Resolve0(&_AssignmentHook.CallOpts, _name, _allowZeroAddress) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_AssignmentHook *AssignmentHookTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_AssignmentHook *AssignmentHookSession) AcceptOwnership() (*types.Transaction, error) { + return _AssignmentHook.Contract.AcceptOwnership(&_AssignmentHook.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_AssignmentHook *AssignmentHookTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _AssignmentHook.Contract.AcceptOwnership(&_AssignmentHook.TransactOpts) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_AssignmentHook *AssignmentHookTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "init", _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_AssignmentHook *AssignmentHookSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _AssignmentHook.Contract.Init(&_AssignmentHook.TransactOpts, _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_AssignmentHook *AssignmentHookTransactorSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _AssignmentHook.Contract.Init(&_AssignmentHook.TransactOpts, _owner, _addressManager) +} + +// OnBlockProposed is a paid mutator transaction binding the contract method 0x36b6ea4e. +// +// Solidity: function onBlockProposed((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) _blk, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, bytes _data) payable returns() +func (_AssignmentHook *AssignmentHookTransactor) OnBlockProposed(opts *bind.TransactOpts, _blk TaikoDataBlock, _meta TaikoDataBlockMetadata, _data []byte) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "onBlockProposed", _blk, _meta, _data) +} + +// OnBlockProposed is a paid mutator transaction binding the contract method 0x36b6ea4e. +// +// Solidity: function onBlockProposed((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) _blk, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, bytes _data) payable returns() +func (_AssignmentHook *AssignmentHookSession) OnBlockProposed(_blk TaikoDataBlock, _meta TaikoDataBlockMetadata, _data []byte) (*types.Transaction, error) { + return _AssignmentHook.Contract.OnBlockProposed(&_AssignmentHook.TransactOpts, _blk, _meta, _data) +} + +// OnBlockProposed is a paid mutator transaction binding the contract method 0x36b6ea4e. +// +// Solidity: function onBlockProposed((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) _blk, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, bytes _data) payable returns() +func (_AssignmentHook *AssignmentHookTransactorSession) OnBlockProposed(_blk TaikoDataBlock, _meta TaikoDataBlockMetadata, _data []byte) (*types.Transaction, error) { + return _AssignmentHook.Contract.OnBlockProposed(&_AssignmentHook.TransactOpts, _blk, _meta, _data) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_AssignmentHook *AssignmentHookTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_AssignmentHook *AssignmentHookSession) Pause() (*types.Transaction, error) { + return _AssignmentHook.Contract.Pause(&_AssignmentHook.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_AssignmentHook *AssignmentHookTransactorSession) Pause() (*types.Transaction, error) { + return _AssignmentHook.Contract.Pause(&_AssignmentHook.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AssignmentHook *AssignmentHookTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AssignmentHook *AssignmentHookSession) RenounceOwnership() (*types.Transaction, error) { + return _AssignmentHook.Contract.RenounceOwnership(&_AssignmentHook.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AssignmentHook *AssignmentHookTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _AssignmentHook.Contract.RenounceOwnership(&_AssignmentHook.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AssignmentHook *AssignmentHookTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AssignmentHook *AssignmentHookSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _AssignmentHook.Contract.TransferOwnership(&_AssignmentHook.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AssignmentHook *AssignmentHookTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _AssignmentHook.Contract.TransferOwnership(&_AssignmentHook.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_AssignmentHook *AssignmentHookTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_AssignmentHook *AssignmentHookSession) Unpause() (*types.Transaction, error) { + return _AssignmentHook.Contract.Unpause(&_AssignmentHook.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_AssignmentHook *AssignmentHookTransactorSession) Unpause() (*types.Transaction, error) { + return _AssignmentHook.Contract.Unpause(&_AssignmentHook.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_AssignmentHook *AssignmentHookTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_AssignmentHook *AssignmentHookSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _AssignmentHook.Contract.UpgradeTo(&_AssignmentHook.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_AssignmentHook *AssignmentHookTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _AssignmentHook.Contract.UpgradeTo(&_AssignmentHook.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_AssignmentHook *AssignmentHookTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _AssignmentHook.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_AssignmentHook *AssignmentHookSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _AssignmentHook.Contract.UpgradeToAndCall(&_AssignmentHook.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_AssignmentHook *AssignmentHookTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _AssignmentHook.Contract.UpgradeToAndCall(&_AssignmentHook.TransactOpts, newImplementation, data) +} + +// AssignmentHookAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the AssignmentHook contract. +type AssignmentHookAdminChangedIterator struct { + Event *AssignmentHookAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookAdminChanged represents a AdminChanged event raised by the AssignmentHook contract. +type AssignmentHookAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_AssignmentHook *AssignmentHookFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*AssignmentHookAdminChangedIterator, error) { + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &AssignmentHookAdminChangedIterator{contract: _AssignmentHook.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_AssignmentHook *AssignmentHookFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *AssignmentHookAdminChanged) (event.Subscription, error) { + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookAdminChanged) + if err := _AssignmentHook.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_AssignmentHook *AssignmentHookFilterer) ParseAdminChanged(log types.Log) (*AssignmentHookAdminChanged, error) { + event := new(AssignmentHookAdminChanged) + if err := _AssignmentHook.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the AssignmentHook contract. +type AssignmentHookBeaconUpgradedIterator struct { + Event *AssignmentHookBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookBeaconUpgraded represents a BeaconUpgraded event raised by the AssignmentHook contract. +type AssignmentHookBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_AssignmentHook *AssignmentHookFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*AssignmentHookBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &AssignmentHookBeaconUpgradedIterator{contract: _AssignmentHook.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_AssignmentHook *AssignmentHookFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *AssignmentHookBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookBeaconUpgraded) + if err := _AssignmentHook.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_AssignmentHook *AssignmentHookFilterer) ParseBeaconUpgraded(log types.Log) (*AssignmentHookBeaconUpgraded, error) { + event := new(AssignmentHookBeaconUpgraded) + if err := _AssignmentHook.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookBlockAssignedIterator is returned from FilterBlockAssigned and is used to iterate over the raw logs and unpacked data for BlockAssigned events raised by the AssignmentHook contract. +type AssignmentHookBlockAssignedIterator struct { + Event *AssignmentHookBlockAssigned // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookBlockAssignedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookBlockAssigned) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookBlockAssigned) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookBlockAssignedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookBlockAssignedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookBlockAssigned represents a BlockAssigned event raised by the AssignmentHook contract. +type AssignmentHookBlockAssigned struct { + AssignedProver common.Address + Meta TaikoDataBlockMetadata + Assignment AssignmentHookProverAssignment + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockAssigned is a free log retrieval operation binding the contract event 0x983b2c64d5e49fdb74b580110b1c64f6f6572b114331e9fee6b7531627eaf0b1. +// +// Solidity: event BlockAssigned(address indexed assignedProver, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint64,uint64,uint64,bytes32,bytes32,(uint16,uint128)[],bytes) assignment) +func (_AssignmentHook *AssignmentHookFilterer) FilterBlockAssigned(opts *bind.FilterOpts, assignedProver []common.Address) (*AssignmentHookBlockAssignedIterator, error) { + + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "BlockAssigned", assignedProverRule) + if err != nil { + return nil, err + } + return &AssignmentHookBlockAssignedIterator{contract: _AssignmentHook.contract, event: "BlockAssigned", logs: logs, sub: sub}, nil +} + +// WatchBlockAssigned is a free log subscription operation binding the contract event 0x983b2c64d5e49fdb74b580110b1c64f6f6572b114331e9fee6b7531627eaf0b1. +// +// Solidity: event BlockAssigned(address indexed assignedProver, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint64,uint64,uint64,bytes32,bytes32,(uint16,uint128)[],bytes) assignment) +func (_AssignmentHook *AssignmentHookFilterer) WatchBlockAssigned(opts *bind.WatchOpts, sink chan<- *AssignmentHookBlockAssigned, assignedProver []common.Address) (event.Subscription, error) { + + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "BlockAssigned", assignedProverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookBlockAssigned) + if err := _AssignmentHook.contract.UnpackLog(event, "BlockAssigned", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockAssigned is a log parse operation binding the contract event 0x983b2c64d5e49fdb74b580110b1c64f6f6572b114331e9fee6b7531627eaf0b1. +// +// Solidity: event BlockAssigned(address indexed assignedProver, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint64,uint64,uint64,bytes32,bytes32,(uint16,uint128)[],bytes) assignment) +func (_AssignmentHook *AssignmentHookFilterer) ParseBlockAssigned(log types.Log) (*AssignmentHookBlockAssigned, error) { + event := new(AssignmentHookBlockAssigned) + if err := _AssignmentHook.contract.UnpackLog(event, "BlockAssigned", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookEtherPaymentFailedIterator is returned from FilterEtherPaymentFailed and is used to iterate over the raw logs and unpacked data for EtherPaymentFailed events raised by the AssignmentHook contract. +type AssignmentHookEtherPaymentFailedIterator struct { + Event *AssignmentHookEtherPaymentFailed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookEtherPaymentFailedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookEtherPaymentFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookEtherPaymentFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookEtherPaymentFailedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookEtherPaymentFailedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookEtherPaymentFailed represents a EtherPaymentFailed event raised by the AssignmentHook contract. +type AssignmentHookEtherPaymentFailed struct { + To common.Address + MaxGas *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEtherPaymentFailed is a free log retrieval operation binding the contract event 0x193fbe934858a5b7669033de55612da355d11604360d59535b5bfaa25c42209e. +// +// Solidity: event EtherPaymentFailed(address to, uint256 maxGas) +func (_AssignmentHook *AssignmentHookFilterer) FilterEtherPaymentFailed(opts *bind.FilterOpts) (*AssignmentHookEtherPaymentFailedIterator, error) { + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "EtherPaymentFailed") + if err != nil { + return nil, err + } + return &AssignmentHookEtherPaymentFailedIterator{contract: _AssignmentHook.contract, event: "EtherPaymentFailed", logs: logs, sub: sub}, nil +} + +// WatchEtherPaymentFailed is a free log subscription operation binding the contract event 0x193fbe934858a5b7669033de55612da355d11604360d59535b5bfaa25c42209e. +// +// Solidity: event EtherPaymentFailed(address to, uint256 maxGas) +func (_AssignmentHook *AssignmentHookFilterer) WatchEtherPaymentFailed(opts *bind.WatchOpts, sink chan<- *AssignmentHookEtherPaymentFailed) (event.Subscription, error) { + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "EtherPaymentFailed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookEtherPaymentFailed) + if err := _AssignmentHook.contract.UnpackLog(event, "EtherPaymentFailed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEtherPaymentFailed is a log parse operation binding the contract event 0x193fbe934858a5b7669033de55612da355d11604360d59535b5bfaa25c42209e. +// +// Solidity: event EtherPaymentFailed(address to, uint256 maxGas) +func (_AssignmentHook *AssignmentHookFilterer) ParseEtherPaymentFailed(log types.Log) (*AssignmentHookEtherPaymentFailed, error) { + event := new(AssignmentHookEtherPaymentFailed) + if err := _AssignmentHook.contract.UnpackLog(event, "EtherPaymentFailed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the AssignmentHook contract. +type AssignmentHookInitializedIterator struct { + Event *AssignmentHookInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookInitialized represents a Initialized event raised by the AssignmentHook contract. +type AssignmentHookInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_AssignmentHook *AssignmentHookFilterer) FilterInitialized(opts *bind.FilterOpts) (*AssignmentHookInitializedIterator, error) { + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &AssignmentHookInitializedIterator{contract: _AssignmentHook.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_AssignmentHook *AssignmentHookFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *AssignmentHookInitialized) (event.Subscription, error) { + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookInitialized) + if err := _AssignmentHook.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_AssignmentHook *AssignmentHookFilterer) ParseInitialized(log types.Log) (*AssignmentHookInitialized, error) { + event := new(AssignmentHookInitialized) + if err := _AssignmentHook.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the AssignmentHook contract. +type AssignmentHookOwnershipTransferStartedIterator struct { + Event *AssignmentHookOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the AssignmentHook contract. +type AssignmentHookOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_AssignmentHook *AssignmentHookFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AssignmentHookOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &AssignmentHookOwnershipTransferStartedIterator{contract: _AssignmentHook.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_AssignmentHook *AssignmentHookFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *AssignmentHookOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookOwnershipTransferStarted) + if err := _AssignmentHook.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_AssignmentHook *AssignmentHookFilterer) ParseOwnershipTransferStarted(log types.Log) (*AssignmentHookOwnershipTransferStarted, error) { + event := new(AssignmentHookOwnershipTransferStarted) + if err := _AssignmentHook.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the AssignmentHook contract. +type AssignmentHookOwnershipTransferredIterator struct { + Event *AssignmentHookOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookOwnershipTransferred represents a OwnershipTransferred event raised by the AssignmentHook contract. +type AssignmentHookOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_AssignmentHook *AssignmentHookFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AssignmentHookOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &AssignmentHookOwnershipTransferredIterator{contract: _AssignmentHook.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_AssignmentHook *AssignmentHookFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *AssignmentHookOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookOwnershipTransferred) + if err := _AssignmentHook.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_AssignmentHook *AssignmentHookFilterer) ParseOwnershipTransferred(log types.Log) (*AssignmentHookOwnershipTransferred, error) { + event := new(AssignmentHookOwnershipTransferred) + if err := _AssignmentHook.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the AssignmentHook contract. +type AssignmentHookPausedIterator struct { + Event *AssignmentHookPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookPaused represents a Paused event raised by the AssignmentHook contract. +type AssignmentHookPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_AssignmentHook *AssignmentHookFilterer) FilterPaused(opts *bind.FilterOpts) (*AssignmentHookPausedIterator, error) { + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &AssignmentHookPausedIterator{contract: _AssignmentHook.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_AssignmentHook *AssignmentHookFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *AssignmentHookPaused) (event.Subscription, error) { + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookPaused) + if err := _AssignmentHook.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_AssignmentHook *AssignmentHookFilterer) ParsePaused(log types.Log) (*AssignmentHookPaused, error) { + event := new(AssignmentHookPaused) + if err := _AssignmentHook.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the AssignmentHook contract. +type AssignmentHookUnpausedIterator struct { + Event *AssignmentHookUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookUnpaused represents a Unpaused event raised by the AssignmentHook contract. +type AssignmentHookUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_AssignmentHook *AssignmentHookFilterer) FilterUnpaused(opts *bind.FilterOpts) (*AssignmentHookUnpausedIterator, error) { + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &AssignmentHookUnpausedIterator{contract: _AssignmentHook.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_AssignmentHook *AssignmentHookFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *AssignmentHookUnpaused) (event.Subscription, error) { + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookUnpaused) + if err := _AssignmentHook.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_AssignmentHook *AssignmentHookFilterer) ParseUnpaused(log types.Log) (*AssignmentHookUnpaused, error) { + event := new(AssignmentHookUnpaused) + if err := _AssignmentHook.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AssignmentHookUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the AssignmentHook contract. +type AssignmentHookUpgradedIterator struct { + Event *AssignmentHookUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *AssignmentHookUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(AssignmentHookUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(AssignmentHookUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *AssignmentHookUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AssignmentHookUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AssignmentHookUpgraded represents a Upgraded event raised by the AssignmentHook contract. +type AssignmentHookUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_AssignmentHook *AssignmentHookFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*AssignmentHookUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _AssignmentHook.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &AssignmentHookUpgradedIterator{contract: _AssignmentHook.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_AssignmentHook *AssignmentHookFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *AssignmentHookUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _AssignmentHook.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AssignmentHookUpgraded) + if err := _AssignmentHook.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_AssignmentHook *AssignmentHookFilterer) ParseUpgraded(log types.Log) (*AssignmentHookUpgraded, error) { + event := new(AssignmentHookUpgraded) + if err := _AssignmentHook.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_guardian_prover.go b/packages/taiko-client/bindings/gen_guardian_prover.go new file mode 100644 index 00000000000..b195e4a4e0b --- /dev/null +++ b/packages/taiko-client/bindings/gen_guardian_prover.go @@ -0,0 +1,2520 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IVerifierContext is an auto generated low-level Go binding around an user-defined struct. +type IVerifierContext struct { + MetaHash [32]byte + BlobHash [32]byte + Prover common.Address + BlockId uint64 + IsContesting bool + BlobUsed bool + MsgSender common.Address +} + +// TaikoDataTierProof is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTierProof struct { + Tier uint16 + Data []byte +} + +// GuardianProverMetaData contains all meta data concerning the GuardianProver contract. +var GuardianProverMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_meta\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"approved_\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableTaikoTokenAllowance\",\"inputs\":[{\"name\":\"_enable\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"guardianIds\",\"inputs\":[{\"name\":\"guardian\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardians\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isApproved\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numGuardians\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGuardians\",\"inputs\":[{\"name\":\"_newGuardians\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_minGuardians\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawTaikoToken\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approved\",\"inputs\":[{\"name\":\"operationId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"approvalBits\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"minGuardiansReached\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardianApproval\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"proofData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GuardiansUpdated\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"guardians\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_GUARDIAN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_GUARDIAN_SET\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_MIN_GUARDIANS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// GuardianProverABI is the input ABI used to generate the binding from. +// Deprecated: Use GuardianProverMetaData.ABI instead. +var GuardianProverABI = GuardianProverMetaData.ABI + +// GuardianProver is an auto generated Go binding around an Ethereum contract. +type GuardianProver struct { + GuardianProverCaller // Read-only binding to the contract + GuardianProverTransactor // Write-only binding to the contract + GuardianProverFilterer // Log filterer for contract events +} + +// GuardianProverCaller is an auto generated read-only Go binding around an Ethereum contract. +type GuardianProverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianProverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GuardianProverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianProverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GuardianProverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianProverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GuardianProverSession struct { + Contract *GuardianProver // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GuardianProverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GuardianProverCallerSession struct { + Contract *GuardianProverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GuardianProverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GuardianProverTransactorSession struct { + Contract *GuardianProverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GuardianProverRaw is an auto generated low-level Go binding around an Ethereum contract. +type GuardianProverRaw struct { + Contract *GuardianProver // Generic contract binding to access the raw methods on +} + +// GuardianProverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GuardianProverCallerRaw struct { + Contract *GuardianProverCaller // Generic read-only contract binding to access the raw methods on +} + +// GuardianProverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GuardianProverTransactorRaw struct { + Contract *GuardianProverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGuardianProver creates a new instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProver(address common.Address, backend bind.ContractBackend) (*GuardianProver, error) { + contract, err := bindGuardianProver(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GuardianProver{GuardianProverCaller: GuardianProverCaller{contract: contract}, GuardianProverTransactor: GuardianProverTransactor{contract: contract}, GuardianProverFilterer: GuardianProverFilterer{contract: contract}}, nil +} + +// NewGuardianProverCaller creates a new read-only instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProverCaller(address common.Address, caller bind.ContractCaller) (*GuardianProverCaller, error) { + contract, err := bindGuardianProver(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GuardianProverCaller{contract: contract}, nil +} + +// NewGuardianProverTransactor creates a new write-only instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProverTransactor(address common.Address, transactor bind.ContractTransactor) (*GuardianProverTransactor, error) { + contract, err := bindGuardianProver(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GuardianProverTransactor{contract: contract}, nil +} + +// NewGuardianProverFilterer creates a new log filterer instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProverFilterer(address common.Address, filterer bind.ContractFilterer) (*GuardianProverFilterer, error) { + contract, err := bindGuardianProver(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GuardianProverFilterer{contract: contract}, nil +} + +// bindGuardianProver binds a generic wrapper to an already deployed contract. +func bindGuardianProver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GuardianProverMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GuardianProver *GuardianProverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GuardianProver.Contract.GuardianProverCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GuardianProver *GuardianProverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.Contract.GuardianProverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GuardianProver *GuardianProverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GuardianProver.Contract.GuardianProverTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GuardianProver *GuardianProverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GuardianProver.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GuardianProver *GuardianProverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GuardianProver *GuardianProverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GuardianProver.Contract.contract.Transact(opts, method, params...) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianProver *GuardianProverCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianProver *GuardianProverSession) AddressManager() (common.Address, error) { + return _GuardianProver.Contract.AddressManager(&_GuardianProver.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianProver *GuardianProverCallerSession) AddressManager() (common.Address, error) { + return _GuardianProver.Contract.AddressManager(&_GuardianProver.CallOpts) +} + +// GuardianIds is a free data retrieval call binding the contract method 0xb6158373. +// +// Solidity: function guardianIds(address guardian) view returns(uint256 id) +func (_GuardianProver *GuardianProverCaller) GuardianIds(opts *bind.CallOpts, guardian common.Address) (*big.Int, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "guardianIds", guardian) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GuardianIds is a free data retrieval call binding the contract method 0xb6158373. +// +// Solidity: function guardianIds(address guardian) view returns(uint256 id) +func (_GuardianProver *GuardianProverSession) GuardianIds(guardian common.Address) (*big.Int, error) { + return _GuardianProver.Contract.GuardianIds(&_GuardianProver.CallOpts, guardian) +} + +// GuardianIds is a free data retrieval call binding the contract method 0xb6158373. +// +// Solidity: function guardianIds(address guardian) view returns(uint256 id) +func (_GuardianProver *GuardianProverCallerSession) GuardianIds(guardian common.Address) (*big.Int, error) { + return _GuardianProver.Contract.GuardianIds(&_GuardianProver.CallOpts, guardian) +} + +// Guardians is a free data retrieval call binding the contract method 0xf560c734. +// +// Solidity: function guardians(uint256 ) view returns(address) +func (_GuardianProver *GuardianProverCaller) Guardians(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "guardians", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Guardians is a free data retrieval call binding the contract method 0xf560c734. +// +// Solidity: function guardians(uint256 ) view returns(address) +func (_GuardianProver *GuardianProverSession) Guardians(arg0 *big.Int) (common.Address, error) { + return _GuardianProver.Contract.Guardians(&_GuardianProver.CallOpts, arg0) +} + +// Guardians is a free data retrieval call binding the contract method 0xf560c734. +// +// Solidity: function guardians(uint256 ) view returns(address) +func (_GuardianProver *GuardianProverCallerSession) Guardians(arg0 *big.Int) (common.Address, error) { + return _GuardianProver.Contract.Guardians(&_GuardianProver.CallOpts, arg0) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_GuardianProver *GuardianProverCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_GuardianProver *GuardianProverSession) InNonReentrant() (bool, error) { + return _GuardianProver.Contract.InNonReentrant(&_GuardianProver.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_GuardianProver *GuardianProverCallerSession) InNonReentrant() (bool, error) { + return _GuardianProver.Contract.InNonReentrant(&_GuardianProver.CallOpts) +} + +// IsApproved is a free data retrieval call binding the contract method 0x48aefc32. +// +// Solidity: function isApproved(bytes32 _hash) view returns(bool) +func (_GuardianProver *GuardianProverCaller) IsApproved(opts *bind.CallOpts, _hash [32]byte) (bool, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "isApproved", _hash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApproved is a free data retrieval call binding the contract method 0x48aefc32. +// +// Solidity: function isApproved(bytes32 _hash) view returns(bool) +func (_GuardianProver *GuardianProverSession) IsApproved(_hash [32]byte) (bool, error) { + return _GuardianProver.Contract.IsApproved(&_GuardianProver.CallOpts, _hash) +} + +// IsApproved is a free data retrieval call binding the contract method 0x48aefc32. +// +// Solidity: function isApproved(bytes32 _hash) view returns(bool) +func (_GuardianProver *GuardianProverCallerSession) IsApproved(_hash [32]byte) (bool, error) { + return _GuardianProver.Contract.IsApproved(&_GuardianProver.CallOpts, _hash) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_GuardianProver *GuardianProverCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_GuardianProver *GuardianProverSession) LastUnpausedAt() (uint64, error) { + return _GuardianProver.Contract.LastUnpausedAt(&_GuardianProver.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_GuardianProver *GuardianProverCallerSession) LastUnpausedAt() (uint64, error) { + return _GuardianProver.Contract.LastUnpausedAt(&_GuardianProver.CallOpts) +} + +// MinGuardians is a free data retrieval call binding the contract method 0x2d6f5ca7. +// +// Solidity: function minGuardians() view returns(uint32) +func (_GuardianProver *GuardianProverCaller) MinGuardians(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "minGuardians") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// MinGuardians is a free data retrieval call binding the contract method 0x2d6f5ca7. +// +// Solidity: function minGuardians() view returns(uint32) +func (_GuardianProver *GuardianProverSession) MinGuardians() (uint32, error) { + return _GuardianProver.Contract.MinGuardians(&_GuardianProver.CallOpts) +} + +// MinGuardians is a free data retrieval call binding the contract method 0x2d6f5ca7. +// +// Solidity: function minGuardians() view returns(uint32) +func (_GuardianProver *GuardianProverCallerSession) MinGuardians() (uint32, error) { + return _GuardianProver.Contract.MinGuardians(&_GuardianProver.CallOpts) +} + +// NumGuardians is a free data retrieval call binding the contract method 0xd13cbca3. +// +// Solidity: function numGuardians() view returns(uint256) +func (_GuardianProver *GuardianProverCaller) NumGuardians(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "numGuardians") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NumGuardians is a free data retrieval call binding the contract method 0xd13cbca3. +// +// Solidity: function numGuardians() view returns(uint256) +func (_GuardianProver *GuardianProverSession) NumGuardians() (*big.Int, error) { + return _GuardianProver.Contract.NumGuardians(&_GuardianProver.CallOpts) +} + +// NumGuardians is a free data retrieval call binding the contract method 0xd13cbca3. +// +// Solidity: function numGuardians() view returns(uint256) +func (_GuardianProver *GuardianProverCallerSession) NumGuardians() (*big.Int, error) { + return _GuardianProver.Contract.NumGuardians(&_GuardianProver.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianProver *GuardianProverCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianProver *GuardianProverSession) Owner() (common.Address, error) { + return _GuardianProver.Contract.Owner(&_GuardianProver.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianProver *GuardianProverCallerSession) Owner() (common.Address, error) { + return _GuardianProver.Contract.Owner(&_GuardianProver.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianProver *GuardianProverCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianProver *GuardianProverSession) Paused() (bool, error) { + return _GuardianProver.Contract.Paused(&_GuardianProver.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianProver *GuardianProverCallerSession) Paused() (bool, error) { + return _GuardianProver.Contract.Paused(&_GuardianProver.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianProver *GuardianProverCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianProver *GuardianProverSession) PendingOwner() (common.Address, error) { + return _GuardianProver.Contract.PendingOwner(&_GuardianProver.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianProver *GuardianProverCallerSession) PendingOwner() (common.Address, error) { + return _GuardianProver.Contract.PendingOwner(&_GuardianProver.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GuardianProver *GuardianProverCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GuardianProver *GuardianProverSession) ProxiableUUID() ([32]byte, error) { + return _GuardianProver.Contract.ProxiableUUID(&_GuardianProver.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GuardianProver *GuardianProverCallerSession) ProxiableUUID() ([32]byte, error) { + return _GuardianProver.Contract.ProxiableUUID(&_GuardianProver.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianProver *GuardianProverCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianProver *GuardianProverSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve(&_GuardianProver.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianProver *GuardianProverCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve(&_GuardianProver.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianProver *GuardianProverCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianProver *GuardianProverSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve0(&_GuardianProver.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianProver *GuardianProverCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve0(&_GuardianProver.CallOpts, _name, _allowZeroAddress) +} + +// VerifyProof is a free data retrieval call binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) , (uint16,bytes) ) view returns() +func (_GuardianProver *GuardianProverCaller) VerifyProof(opts *bind.CallOpts, _ctx IVerifierContext, arg1 TaikoDataTransition, arg2 TaikoDataTierProof) error { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "verifyProof", _ctx, arg1, arg2) + + if err != nil { + return err + } + + return err + +} + +// VerifyProof is a free data retrieval call binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) , (uint16,bytes) ) view returns() +func (_GuardianProver *GuardianProverSession) VerifyProof(_ctx IVerifierContext, arg1 TaikoDataTransition, arg2 TaikoDataTierProof) error { + return _GuardianProver.Contract.VerifyProof(&_GuardianProver.CallOpts, _ctx, arg1, arg2) +} + +// VerifyProof is a free data retrieval call binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) , (uint16,bytes) ) view returns() +func (_GuardianProver *GuardianProverCallerSession) VerifyProof(_ctx IVerifierContext, arg1 TaikoDataTransition, arg2 TaikoDataTierProof) error { + return _GuardianProver.Contract.VerifyProof(&_GuardianProver.CallOpts, _ctx, arg1, arg2) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(uint32) +func (_GuardianProver *GuardianProverCaller) Version(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "version") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(uint32) +func (_GuardianProver *GuardianProverSession) Version() (uint32, error) { + return _GuardianProver.Contract.Version(&_GuardianProver.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(uint32) +func (_GuardianProver *GuardianProverCallerSession) Version() (uint32, error) { + return _GuardianProver.Contract.Version(&_GuardianProver.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianProver *GuardianProverTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianProver *GuardianProverSession) AcceptOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.AcceptOwnership(&_GuardianProver.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianProver *GuardianProverTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.AcceptOwnership(&_GuardianProver.TransactOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x98984761. +// +// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns(bool approved_) +func (_GuardianProver *GuardianProverTransactor) Approve(opts *bind.TransactOpts, _meta TaikoDataBlockMetadata, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "approve", _meta, _tran, _proof) +} + +// Approve is a paid mutator transaction binding the contract method 0x98984761. +// +// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns(bool approved_) +func (_GuardianProver *GuardianProverSession) Approve(_meta TaikoDataBlockMetadata, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _GuardianProver.Contract.Approve(&_GuardianProver.TransactOpts, _meta, _tran, _proof) +} + +// Approve is a paid mutator transaction binding the contract method 0x98984761. +// +// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) _meta, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns(bool approved_) +func (_GuardianProver *GuardianProverTransactorSession) Approve(_meta TaikoDataBlockMetadata, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _GuardianProver.Contract.Approve(&_GuardianProver.TransactOpts, _meta, _tran, _proof) +} + +// EnableTaikoTokenAllowance is a paid mutator transaction binding the contract method 0x8e1bacd7. +// +// Solidity: function enableTaikoTokenAllowance(bool _enable) returns() +func (_GuardianProver *GuardianProverTransactor) EnableTaikoTokenAllowance(opts *bind.TransactOpts, _enable bool) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "enableTaikoTokenAllowance", _enable) +} + +// EnableTaikoTokenAllowance is a paid mutator transaction binding the contract method 0x8e1bacd7. +// +// Solidity: function enableTaikoTokenAllowance(bool _enable) returns() +func (_GuardianProver *GuardianProverSession) EnableTaikoTokenAllowance(_enable bool) (*types.Transaction, error) { + return _GuardianProver.Contract.EnableTaikoTokenAllowance(&_GuardianProver.TransactOpts, _enable) +} + +// EnableTaikoTokenAllowance is a paid mutator transaction binding the contract method 0x8e1bacd7. +// +// Solidity: function enableTaikoTokenAllowance(bool _enable) returns() +func (_GuardianProver *GuardianProverTransactorSession) EnableTaikoTokenAllowance(_enable bool) (*types.Transaction, error) { + return _GuardianProver.Contract.EnableTaikoTokenAllowance(&_GuardianProver.TransactOpts, _enable) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_GuardianProver *GuardianProverTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "init", _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_GuardianProver *GuardianProverSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.Init(&_GuardianProver.TransactOpts, _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_GuardianProver *GuardianProverTransactorSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.Init(&_GuardianProver.TransactOpts, _owner, _addressManager) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianProver *GuardianProverTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianProver *GuardianProverSession) Pause() (*types.Transaction, error) { + return _GuardianProver.Contract.Pause(&_GuardianProver.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianProver *GuardianProverTransactorSession) Pause() (*types.Transaction, error) { + return _GuardianProver.Contract.Pause(&_GuardianProver.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianProver *GuardianProverTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianProver *GuardianProverSession) RenounceOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.RenounceOwnership(&_GuardianProver.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianProver *GuardianProverTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.RenounceOwnership(&_GuardianProver.TransactOpts) +} + +// SetGuardians is a paid mutator transaction binding the contract method 0xe94e9e99. +// +// Solidity: function setGuardians(address[] _newGuardians, uint8 _minGuardians) returns() +func (_GuardianProver *GuardianProverTransactor) SetGuardians(opts *bind.TransactOpts, _newGuardians []common.Address, _minGuardians uint8) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "setGuardians", _newGuardians, _minGuardians) +} + +// SetGuardians is a paid mutator transaction binding the contract method 0xe94e9e99. +// +// Solidity: function setGuardians(address[] _newGuardians, uint8 _minGuardians) returns() +func (_GuardianProver *GuardianProverSession) SetGuardians(_newGuardians []common.Address, _minGuardians uint8) (*types.Transaction, error) { + return _GuardianProver.Contract.SetGuardians(&_GuardianProver.TransactOpts, _newGuardians, _minGuardians) +} + +// SetGuardians is a paid mutator transaction binding the contract method 0xe94e9e99. +// +// Solidity: function setGuardians(address[] _newGuardians, uint8 _minGuardians) returns() +func (_GuardianProver *GuardianProverTransactorSession) SetGuardians(_newGuardians []common.Address, _minGuardians uint8) (*types.Transaction, error) { + return _GuardianProver.Contract.SetGuardians(&_GuardianProver.TransactOpts, _newGuardians, _minGuardians) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianProver *GuardianProverTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianProver *GuardianProverSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.TransferOwnership(&_GuardianProver.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianProver *GuardianProverTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.TransferOwnership(&_GuardianProver.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianProver *GuardianProverTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianProver *GuardianProverSession) Unpause() (*types.Transaction, error) { + return _GuardianProver.Contract.Unpause(&_GuardianProver.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianProver *GuardianProverTransactorSession) Unpause() (*types.Transaction, error) { + return _GuardianProver.Contract.Unpause(&_GuardianProver.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_GuardianProver *GuardianProverTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_GuardianProver *GuardianProverSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.UpgradeTo(&_GuardianProver.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_GuardianProver *GuardianProverTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.UpgradeTo(&_GuardianProver.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GuardianProver *GuardianProverTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GuardianProver *GuardianProverSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GuardianProver.Contract.UpgradeToAndCall(&_GuardianProver.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GuardianProver *GuardianProverTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GuardianProver.Contract.UpgradeToAndCall(&_GuardianProver.TransactOpts, newImplementation, data) +} + +// WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x694074c0. +// +// Solidity: function withdrawTaikoToken(address _to, uint256 _amount) returns() +func (_GuardianProver *GuardianProverTransactor) WithdrawTaikoToken(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "withdrawTaikoToken", _to, _amount) +} + +// WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x694074c0. +// +// Solidity: function withdrawTaikoToken(address _to, uint256 _amount) returns() +func (_GuardianProver *GuardianProverSession) WithdrawTaikoToken(_to common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GuardianProver.Contract.WithdrawTaikoToken(&_GuardianProver.TransactOpts, _to, _amount) +} + +// WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x694074c0. +// +// Solidity: function withdrawTaikoToken(address _to, uint256 _amount) returns() +func (_GuardianProver *GuardianProverTransactorSession) WithdrawTaikoToken(_to common.Address, _amount *big.Int) (*types.Transaction, error) { + return _GuardianProver.Contract.WithdrawTaikoToken(&_GuardianProver.TransactOpts, _to, _amount) +} + +// GuardianProverAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the GuardianProver contract. +type GuardianProverAdminChangedIterator struct { + Event *GuardianProverAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverAdminChanged represents a AdminChanged event raised by the GuardianProver contract. +type GuardianProverAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_GuardianProver *GuardianProverFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*GuardianProverAdminChangedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &GuardianProverAdminChangedIterator{contract: _GuardianProver.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_GuardianProver *GuardianProverFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *GuardianProverAdminChanged) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverAdminChanged) + if err := _GuardianProver.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_GuardianProver *GuardianProverFilterer) ParseAdminChanged(log types.Log) (*GuardianProverAdminChanged, error) { + event := new(GuardianProverAdminChanged) + if err := _GuardianProver.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverApprovedIterator is returned from FilterApproved and is used to iterate over the raw logs and unpacked data for Approved events raised by the GuardianProver contract. +type GuardianProverApprovedIterator struct { + Event *GuardianProverApproved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverApprovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverApproved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverApproved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverApprovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverApprovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverApproved represents a Approved event raised by the GuardianProver contract. +type GuardianProverApproved struct { + OperationId *big.Int + ApprovalBits *big.Int + MinGuardiansReached bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproved is a free log retrieval operation binding the contract event 0x344afde5e92a836ece804d851bb090d420129616171e9911ade0a3f4d785e311. +// +// Solidity: event Approved(uint256 indexed operationId, uint256 approvalBits, bool minGuardiansReached) +func (_GuardianProver *GuardianProverFilterer) FilterApproved(opts *bind.FilterOpts, operationId []*big.Int) (*GuardianProverApprovedIterator, error) { + + var operationIdRule []interface{} + for _, operationIdItem := range operationId { + operationIdRule = append(operationIdRule, operationIdItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Approved", operationIdRule) + if err != nil { + return nil, err + } + return &GuardianProverApprovedIterator{contract: _GuardianProver.contract, event: "Approved", logs: logs, sub: sub}, nil +} + +// WatchApproved is a free log subscription operation binding the contract event 0x344afde5e92a836ece804d851bb090d420129616171e9911ade0a3f4d785e311. +// +// Solidity: event Approved(uint256 indexed operationId, uint256 approvalBits, bool minGuardiansReached) +func (_GuardianProver *GuardianProverFilterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *GuardianProverApproved, operationId []*big.Int) (event.Subscription, error) { + + var operationIdRule []interface{} + for _, operationIdItem := range operationId { + operationIdRule = append(operationIdRule, operationIdItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Approved", operationIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverApproved) + if err := _GuardianProver.contract.UnpackLog(event, "Approved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproved is a log parse operation binding the contract event 0x344afde5e92a836ece804d851bb090d420129616171e9911ade0a3f4d785e311. +// +// Solidity: event Approved(uint256 indexed operationId, uint256 approvalBits, bool minGuardiansReached) +func (_GuardianProver *GuardianProverFilterer) ParseApproved(log types.Log) (*GuardianProverApproved, error) { + event := new(GuardianProverApproved) + if err := _GuardianProver.contract.UnpackLog(event, "Approved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the GuardianProver contract. +type GuardianProverBeaconUpgradedIterator struct { + Event *GuardianProverBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverBeaconUpgraded represents a BeaconUpgraded event raised by the GuardianProver contract. +type GuardianProverBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_GuardianProver *GuardianProverFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*GuardianProverBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &GuardianProverBeaconUpgradedIterator{contract: _GuardianProver.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_GuardianProver *GuardianProverFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *GuardianProverBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverBeaconUpgraded) + if err := _GuardianProver.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_GuardianProver *GuardianProverFilterer) ParseBeaconUpgraded(log types.Log) (*GuardianProverBeaconUpgraded, error) { + event := new(GuardianProverBeaconUpgraded) + if err := _GuardianProver.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverGuardianApprovalIterator is returned from FilterGuardianApproval and is used to iterate over the raw logs and unpacked data for GuardianApproval events raised by the GuardianProver contract. +type GuardianProverGuardianApprovalIterator struct { + Event *GuardianProverGuardianApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverGuardianApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverGuardianApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverGuardianApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverGuardianApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverGuardianApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverGuardianApproval represents a GuardianApproval event raised by the GuardianProver contract. +type GuardianProverGuardianApproval struct { + Addr common.Address + BlockId *big.Int + BlockHash [32]byte + Approved bool + ProofData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGuardianApproval is a free log retrieval operation binding the contract event 0xbff049f26ec63ed683b70f6c889078b391f9621229a4243aaa40a50628545ef2. +// +// Solidity: event GuardianApproval(address indexed addr, uint256 indexed blockId, bytes32 indexed blockHash, bool approved, bytes proofData) +func (_GuardianProver *GuardianProverFilterer) FilterGuardianApproval(opts *bind.FilterOpts, addr []common.Address, blockId []*big.Int, blockHash [][32]byte) (*GuardianProverGuardianApprovalIterator, error) { + + var addrRule []interface{} + for _, addrItem := range addr { + addrRule = append(addrRule, addrItem) + } + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var blockHashRule []interface{} + for _, blockHashItem := range blockHash { + blockHashRule = append(blockHashRule, blockHashItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "GuardianApproval", addrRule, blockIdRule, blockHashRule) + if err != nil { + return nil, err + } + return &GuardianProverGuardianApprovalIterator{contract: _GuardianProver.contract, event: "GuardianApproval", logs: logs, sub: sub}, nil +} + +// WatchGuardianApproval is a free log subscription operation binding the contract event 0xbff049f26ec63ed683b70f6c889078b391f9621229a4243aaa40a50628545ef2. +// +// Solidity: event GuardianApproval(address indexed addr, uint256 indexed blockId, bytes32 indexed blockHash, bool approved, bytes proofData) +func (_GuardianProver *GuardianProverFilterer) WatchGuardianApproval(opts *bind.WatchOpts, sink chan<- *GuardianProverGuardianApproval, addr []common.Address, blockId []*big.Int, blockHash [][32]byte) (event.Subscription, error) { + + var addrRule []interface{} + for _, addrItem := range addr { + addrRule = append(addrRule, addrItem) + } + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var blockHashRule []interface{} + for _, blockHashItem := range blockHash { + blockHashRule = append(blockHashRule, blockHashItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "GuardianApproval", addrRule, blockIdRule, blockHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverGuardianApproval) + if err := _GuardianProver.contract.UnpackLog(event, "GuardianApproval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGuardianApproval is a log parse operation binding the contract event 0xbff049f26ec63ed683b70f6c889078b391f9621229a4243aaa40a50628545ef2. +// +// Solidity: event GuardianApproval(address indexed addr, uint256 indexed blockId, bytes32 indexed blockHash, bool approved, bytes proofData) +func (_GuardianProver *GuardianProverFilterer) ParseGuardianApproval(log types.Log) (*GuardianProverGuardianApproval, error) { + event := new(GuardianProverGuardianApproval) + if err := _GuardianProver.contract.UnpackLog(event, "GuardianApproval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverGuardiansUpdatedIterator is returned from FilterGuardiansUpdated and is used to iterate over the raw logs and unpacked data for GuardiansUpdated events raised by the GuardianProver contract. +type GuardianProverGuardiansUpdatedIterator struct { + Event *GuardianProverGuardiansUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverGuardiansUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverGuardiansUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverGuardiansUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverGuardiansUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverGuardiansUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverGuardiansUpdated represents a GuardiansUpdated event raised by the GuardianProver contract. +type GuardianProverGuardiansUpdated struct { + Version uint32 + Guardians []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGuardiansUpdated is a free log retrieval operation binding the contract event 0x5132e5b598a417dfc5c7488e5360aef3e865fe4b238cd5ea2a8282e0ca8d10ef. +// +// Solidity: event GuardiansUpdated(uint32 version, address[] guardians) +func (_GuardianProver *GuardianProverFilterer) FilterGuardiansUpdated(opts *bind.FilterOpts) (*GuardianProverGuardiansUpdatedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "GuardiansUpdated") + if err != nil { + return nil, err + } + return &GuardianProverGuardiansUpdatedIterator{contract: _GuardianProver.contract, event: "GuardiansUpdated", logs: logs, sub: sub}, nil +} + +// WatchGuardiansUpdated is a free log subscription operation binding the contract event 0x5132e5b598a417dfc5c7488e5360aef3e865fe4b238cd5ea2a8282e0ca8d10ef. +// +// Solidity: event GuardiansUpdated(uint32 version, address[] guardians) +func (_GuardianProver *GuardianProverFilterer) WatchGuardiansUpdated(opts *bind.WatchOpts, sink chan<- *GuardianProverGuardiansUpdated) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "GuardiansUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverGuardiansUpdated) + if err := _GuardianProver.contract.UnpackLog(event, "GuardiansUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGuardiansUpdated is a log parse operation binding the contract event 0x5132e5b598a417dfc5c7488e5360aef3e865fe4b238cd5ea2a8282e0ca8d10ef. +// +// Solidity: event GuardiansUpdated(uint32 version, address[] guardians) +func (_GuardianProver *GuardianProverFilterer) ParseGuardiansUpdated(log types.Log) (*GuardianProverGuardiansUpdated, error) { + event := new(GuardianProverGuardiansUpdated) + if err := _GuardianProver.contract.UnpackLog(event, "GuardiansUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GuardianProver contract. +type GuardianProverInitializedIterator struct { + Event *GuardianProverInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverInitialized represents a Initialized event raised by the GuardianProver contract. +type GuardianProverInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianProver *GuardianProverFilterer) FilterInitialized(opts *bind.FilterOpts) (*GuardianProverInitializedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &GuardianProverInitializedIterator{contract: _GuardianProver.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianProver *GuardianProverFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GuardianProverInitialized) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverInitialized) + if err := _GuardianProver.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianProver *GuardianProverFilterer) ParseInitialized(log types.Log) (*GuardianProverInitialized, error) { + event := new(GuardianProverInitialized) + if err := _GuardianProver.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the GuardianProver contract. +type GuardianProverOwnershipTransferStartedIterator struct { + Event *GuardianProverOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the GuardianProver contract. +type GuardianProverOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GuardianProverOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GuardianProverOwnershipTransferStartedIterator{contract: _GuardianProver.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *GuardianProverOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverOwnershipTransferStarted) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) ParseOwnershipTransferStarted(log types.Log) (*GuardianProverOwnershipTransferStarted, error) { + event := new(GuardianProverOwnershipTransferStarted) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GuardianProver contract. +type GuardianProverOwnershipTransferredIterator struct { + Event *GuardianProverOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverOwnershipTransferred represents a OwnershipTransferred event raised by the GuardianProver contract. +type GuardianProverOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GuardianProverOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GuardianProverOwnershipTransferredIterator{contract: _GuardianProver.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GuardianProverOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverOwnershipTransferred) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) ParseOwnershipTransferred(log types.Log) (*GuardianProverOwnershipTransferred, error) { + event := new(GuardianProverOwnershipTransferred) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the GuardianProver contract. +type GuardianProverPausedIterator struct { + Event *GuardianProverPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverPaused represents a Paused event raised by the GuardianProver contract. +type GuardianProverPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianProver *GuardianProverFilterer) FilterPaused(opts *bind.FilterOpts) (*GuardianProverPausedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &GuardianProverPausedIterator{contract: _GuardianProver.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianProver *GuardianProverFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *GuardianProverPaused) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverPaused) + if err := _GuardianProver.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianProver *GuardianProverFilterer) ParsePaused(log types.Log) (*GuardianProverPaused, error) { + event := new(GuardianProverPaused) + if err := _GuardianProver.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the GuardianProver contract. +type GuardianProverUnpausedIterator struct { + Event *GuardianProverUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverUnpaused represents a Unpaused event raised by the GuardianProver contract. +type GuardianProverUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianProver *GuardianProverFilterer) FilterUnpaused(opts *bind.FilterOpts) (*GuardianProverUnpausedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &GuardianProverUnpausedIterator{contract: _GuardianProver.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianProver *GuardianProverFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *GuardianProverUnpaused) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverUnpaused) + if err := _GuardianProver.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianProver *GuardianProverFilterer) ParseUnpaused(log types.Log) (*GuardianProverUnpaused, error) { + event := new(GuardianProverUnpaused) + if err := _GuardianProver.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GuardianProver contract. +type GuardianProverUpgradedIterator struct { + Event *GuardianProverUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverUpgraded represents a Upgraded event raised by the GuardianProver contract. +type GuardianProverUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GuardianProver *GuardianProverFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GuardianProverUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &GuardianProverUpgradedIterator{contract: _GuardianProver.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GuardianProver *GuardianProverFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GuardianProverUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverUpgraded) + if err := _GuardianProver.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GuardianProver *GuardianProverFilterer) ParseUpgraded(log types.Log) (*GuardianProverUpgraded, error) { + event := new(GuardianProverUpgraded) + if err := _GuardianProver.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_guardian_verifier.go b/packages/taiko-client/bindings/gen_guardian_verifier.go new file mode 100644 index 00000000000..77946e304ea --- /dev/null +++ b/packages/taiko-client/bindings/gen_guardian_verifier.go @@ -0,0 +1,1757 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// GuardianVerifierMetaData contains all meta data concerning the GuardianVerifier contract. +var GuardianVerifierMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"GV_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GV_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// GuardianVerifierABI is the input ABI used to generate the binding from. +// Deprecated: Use GuardianVerifierMetaData.ABI instead. +var GuardianVerifierABI = GuardianVerifierMetaData.ABI + +// GuardianVerifier is an auto generated Go binding around an Ethereum contract. +type GuardianVerifier struct { + GuardianVerifierCaller // Read-only binding to the contract + GuardianVerifierTransactor // Write-only binding to the contract + GuardianVerifierFilterer // Log filterer for contract events +} + +// GuardianVerifierCaller is an auto generated read-only Go binding around an Ethereum contract. +type GuardianVerifierCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianVerifierTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GuardianVerifierTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianVerifierFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GuardianVerifierFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianVerifierSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GuardianVerifierSession struct { + Contract *GuardianVerifier // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GuardianVerifierCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GuardianVerifierCallerSession struct { + Contract *GuardianVerifierCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GuardianVerifierTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GuardianVerifierTransactorSession struct { + Contract *GuardianVerifierTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GuardianVerifierRaw is an auto generated low-level Go binding around an Ethereum contract. +type GuardianVerifierRaw struct { + Contract *GuardianVerifier // Generic contract binding to access the raw methods on +} + +// GuardianVerifierCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GuardianVerifierCallerRaw struct { + Contract *GuardianVerifierCaller // Generic read-only contract binding to access the raw methods on +} + +// GuardianVerifierTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GuardianVerifierTransactorRaw struct { + Contract *GuardianVerifierTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGuardianVerifier creates a new instance of GuardianVerifier, bound to a specific deployed contract. +func NewGuardianVerifier(address common.Address, backend bind.ContractBackend) (*GuardianVerifier, error) { + contract, err := bindGuardianVerifier(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GuardianVerifier{GuardianVerifierCaller: GuardianVerifierCaller{contract: contract}, GuardianVerifierTransactor: GuardianVerifierTransactor{contract: contract}, GuardianVerifierFilterer: GuardianVerifierFilterer{contract: contract}}, nil +} + +// NewGuardianVerifierCaller creates a new read-only instance of GuardianVerifier, bound to a specific deployed contract. +func NewGuardianVerifierCaller(address common.Address, caller bind.ContractCaller) (*GuardianVerifierCaller, error) { + contract, err := bindGuardianVerifier(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GuardianVerifierCaller{contract: contract}, nil +} + +// NewGuardianVerifierTransactor creates a new write-only instance of GuardianVerifier, bound to a specific deployed contract. +func NewGuardianVerifierTransactor(address common.Address, transactor bind.ContractTransactor) (*GuardianVerifierTransactor, error) { + contract, err := bindGuardianVerifier(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GuardianVerifierTransactor{contract: contract}, nil +} + +// NewGuardianVerifierFilterer creates a new log filterer instance of GuardianVerifier, bound to a specific deployed contract. +func NewGuardianVerifierFilterer(address common.Address, filterer bind.ContractFilterer) (*GuardianVerifierFilterer, error) { + contract, err := bindGuardianVerifier(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GuardianVerifierFilterer{contract: contract}, nil +} + +// bindGuardianVerifier binds a generic wrapper to an already deployed contract. +func bindGuardianVerifier(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GuardianVerifierMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GuardianVerifier *GuardianVerifierRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GuardianVerifier.Contract.GuardianVerifierCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GuardianVerifier *GuardianVerifierRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianVerifier.Contract.GuardianVerifierTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GuardianVerifier *GuardianVerifierRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GuardianVerifier.Contract.GuardianVerifierTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GuardianVerifier *GuardianVerifierCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GuardianVerifier.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GuardianVerifier *GuardianVerifierTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianVerifier.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GuardianVerifier *GuardianVerifierTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GuardianVerifier.Contract.contract.Transact(opts, method, params...) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianVerifier *GuardianVerifierCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianVerifier *GuardianVerifierSession) AddressManager() (common.Address, error) { + return _GuardianVerifier.Contract.AddressManager(&_GuardianVerifier.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianVerifier *GuardianVerifierCallerSession) AddressManager() (common.Address, error) { + return _GuardianVerifier.Contract.AddressManager(&_GuardianVerifier.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_GuardianVerifier *GuardianVerifierCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_GuardianVerifier *GuardianVerifierSession) LastUnpausedAt() (uint64, error) { + return _GuardianVerifier.Contract.LastUnpausedAt(&_GuardianVerifier.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_GuardianVerifier *GuardianVerifierCallerSession) LastUnpausedAt() (uint64, error) { + return _GuardianVerifier.Contract.LastUnpausedAt(&_GuardianVerifier.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianVerifier *GuardianVerifierCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianVerifier *GuardianVerifierSession) Owner() (common.Address, error) { + return _GuardianVerifier.Contract.Owner(&_GuardianVerifier.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianVerifier *GuardianVerifierCallerSession) Owner() (common.Address, error) { + return _GuardianVerifier.Contract.Owner(&_GuardianVerifier.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianVerifier *GuardianVerifierCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianVerifier *GuardianVerifierSession) Paused() (bool, error) { + return _GuardianVerifier.Contract.Paused(&_GuardianVerifier.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianVerifier *GuardianVerifierCallerSession) Paused() (bool, error) { + return _GuardianVerifier.Contract.Paused(&_GuardianVerifier.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianVerifier *GuardianVerifierCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianVerifier *GuardianVerifierSession) PendingOwner() (common.Address, error) { + return _GuardianVerifier.Contract.PendingOwner(&_GuardianVerifier.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianVerifier *GuardianVerifierCallerSession) PendingOwner() (common.Address, error) { + return _GuardianVerifier.Contract.PendingOwner(&_GuardianVerifier.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GuardianVerifier *GuardianVerifierCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GuardianVerifier *GuardianVerifierSession) ProxiableUUID() ([32]byte, error) { + return _GuardianVerifier.Contract.ProxiableUUID(&_GuardianVerifier.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_GuardianVerifier *GuardianVerifierCallerSession) ProxiableUUID() ([32]byte, error) { + return _GuardianVerifier.Contract.ProxiableUUID(&_GuardianVerifier.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianVerifier *GuardianVerifierCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianVerifier *GuardianVerifierSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianVerifier.Contract.Resolve(&_GuardianVerifier.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianVerifier *GuardianVerifierCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianVerifier.Contract.Resolve(&_GuardianVerifier.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianVerifier *GuardianVerifierCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianVerifier *GuardianVerifierSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianVerifier.Contract.Resolve0(&_GuardianVerifier.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_GuardianVerifier *GuardianVerifierCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _GuardianVerifier.Contract.Resolve0(&_GuardianVerifier.CallOpts, _name, _allowZeroAddress) +} + +// VerifyProof is a free data retrieval call binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) , (uint16,bytes) _proof) view returns() +func (_GuardianVerifier *GuardianVerifierCaller) VerifyProof(opts *bind.CallOpts, _ctx IVerifierContext, arg1 TaikoDataTransition, _proof TaikoDataTierProof) error { + var out []interface{} + err := _GuardianVerifier.contract.Call(opts, &out, "verifyProof", _ctx, arg1, _proof) + + if err != nil { + return err + } + + return err + +} + +// VerifyProof is a free data retrieval call binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) , (uint16,bytes) _proof) view returns() +func (_GuardianVerifier *GuardianVerifierSession) VerifyProof(_ctx IVerifierContext, arg1 TaikoDataTransition, _proof TaikoDataTierProof) error { + return _GuardianVerifier.Contract.VerifyProof(&_GuardianVerifier.CallOpts, _ctx, arg1, _proof) +} + +// VerifyProof is a free data retrieval call binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) , (uint16,bytes) _proof) view returns() +func (_GuardianVerifier *GuardianVerifierCallerSession) VerifyProof(_ctx IVerifierContext, arg1 TaikoDataTransition, _proof TaikoDataTierProof) error { + return _GuardianVerifier.Contract.VerifyProof(&_GuardianVerifier.CallOpts, _ctx, arg1, _proof) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianVerifier *GuardianVerifierTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianVerifier *GuardianVerifierSession) AcceptOwnership() (*types.Transaction, error) { + return _GuardianVerifier.Contract.AcceptOwnership(&_GuardianVerifier.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _GuardianVerifier.Contract.AcceptOwnership(&_GuardianVerifier.TransactOpts) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_GuardianVerifier *GuardianVerifierTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "init", _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_GuardianVerifier *GuardianVerifierSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _GuardianVerifier.Contract.Init(&_GuardianVerifier.TransactOpts, _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _GuardianVerifier.Contract.Init(&_GuardianVerifier.TransactOpts, _owner, _addressManager) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianVerifier *GuardianVerifierTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianVerifier *GuardianVerifierSession) Pause() (*types.Transaction, error) { + return _GuardianVerifier.Contract.Pause(&_GuardianVerifier.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) Pause() (*types.Transaction, error) { + return _GuardianVerifier.Contract.Pause(&_GuardianVerifier.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianVerifier *GuardianVerifierTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianVerifier *GuardianVerifierSession) RenounceOwnership() (*types.Transaction, error) { + return _GuardianVerifier.Contract.RenounceOwnership(&_GuardianVerifier.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _GuardianVerifier.Contract.RenounceOwnership(&_GuardianVerifier.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianVerifier *GuardianVerifierTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianVerifier *GuardianVerifierSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GuardianVerifier.Contract.TransferOwnership(&_GuardianVerifier.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GuardianVerifier.Contract.TransferOwnership(&_GuardianVerifier.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianVerifier *GuardianVerifierTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianVerifier *GuardianVerifierSession) Unpause() (*types.Transaction, error) { + return _GuardianVerifier.Contract.Unpause(&_GuardianVerifier.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) Unpause() (*types.Transaction, error) { + return _GuardianVerifier.Contract.Unpause(&_GuardianVerifier.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_GuardianVerifier *GuardianVerifierTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_GuardianVerifier *GuardianVerifierSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _GuardianVerifier.Contract.UpgradeTo(&_GuardianVerifier.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _GuardianVerifier.Contract.UpgradeTo(&_GuardianVerifier.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GuardianVerifier *GuardianVerifierTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GuardianVerifier.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GuardianVerifier *GuardianVerifierSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GuardianVerifier.Contract.UpgradeToAndCall(&_GuardianVerifier.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_GuardianVerifier *GuardianVerifierTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _GuardianVerifier.Contract.UpgradeToAndCall(&_GuardianVerifier.TransactOpts, newImplementation, data) +} + +// GuardianVerifierAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the GuardianVerifier contract. +type GuardianVerifierAdminChangedIterator struct { + Event *GuardianVerifierAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierAdminChanged represents a AdminChanged event raised by the GuardianVerifier contract. +type GuardianVerifierAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*GuardianVerifierAdminChangedIterator, error) { + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &GuardianVerifierAdminChangedIterator{contract: _GuardianVerifier.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *GuardianVerifierAdminChanged) (event.Subscription, error) { + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierAdminChanged) + if err := _GuardianVerifier.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_GuardianVerifier *GuardianVerifierFilterer) ParseAdminChanged(log types.Log) (*GuardianVerifierAdminChanged, error) { + event := new(GuardianVerifierAdminChanged) + if err := _GuardianVerifier.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianVerifierBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the GuardianVerifier contract. +type GuardianVerifierBeaconUpgradedIterator struct { + Event *GuardianVerifierBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierBeaconUpgraded represents a BeaconUpgraded event raised by the GuardianVerifier contract. +type GuardianVerifierBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*GuardianVerifierBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &GuardianVerifierBeaconUpgradedIterator{contract: _GuardianVerifier.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *GuardianVerifierBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierBeaconUpgraded) + if err := _GuardianVerifier.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_GuardianVerifier *GuardianVerifierFilterer) ParseBeaconUpgraded(log types.Log) (*GuardianVerifierBeaconUpgraded, error) { + event := new(GuardianVerifierBeaconUpgraded) + if err := _GuardianVerifier.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianVerifierInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GuardianVerifier contract. +type GuardianVerifierInitializedIterator struct { + Event *GuardianVerifierInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierInitialized represents a Initialized event raised by the GuardianVerifier contract. +type GuardianVerifierInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterInitialized(opts *bind.FilterOpts) (*GuardianVerifierInitializedIterator, error) { + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &GuardianVerifierInitializedIterator{contract: _GuardianVerifier.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GuardianVerifierInitialized) (event.Subscription, error) { + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierInitialized) + if err := _GuardianVerifier.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianVerifier *GuardianVerifierFilterer) ParseInitialized(log types.Log) (*GuardianVerifierInitialized, error) { + event := new(GuardianVerifierInitialized) + if err := _GuardianVerifier.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianVerifierOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the GuardianVerifier contract. +type GuardianVerifierOwnershipTransferStartedIterator struct { + Event *GuardianVerifierOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the GuardianVerifier contract. +type GuardianVerifierOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GuardianVerifierOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GuardianVerifierOwnershipTransferStartedIterator{contract: _GuardianVerifier.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *GuardianVerifierOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierOwnershipTransferStarted) + if err := _GuardianVerifier.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianVerifier *GuardianVerifierFilterer) ParseOwnershipTransferStarted(log types.Log) (*GuardianVerifierOwnershipTransferStarted, error) { + event := new(GuardianVerifierOwnershipTransferStarted) + if err := _GuardianVerifier.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianVerifierOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GuardianVerifier contract. +type GuardianVerifierOwnershipTransferredIterator struct { + Event *GuardianVerifierOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierOwnershipTransferred represents a OwnershipTransferred event raised by the GuardianVerifier contract. +type GuardianVerifierOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GuardianVerifierOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GuardianVerifierOwnershipTransferredIterator{contract: _GuardianVerifier.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GuardianVerifierOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierOwnershipTransferred) + if err := _GuardianVerifier.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianVerifier *GuardianVerifierFilterer) ParseOwnershipTransferred(log types.Log) (*GuardianVerifierOwnershipTransferred, error) { + event := new(GuardianVerifierOwnershipTransferred) + if err := _GuardianVerifier.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianVerifierPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the GuardianVerifier contract. +type GuardianVerifierPausedIterator struct { + Event *GuardianVerifierPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierPaused represents a Paused event raised by the GuardianVerifier contract. +type GuardianVerifierPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterPaused(opts *bind.FilterOpts) (*GuardianVerifierPausedIterator, error) { + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &GuardianVerifierPausedIterator{contract: _GuardianVerifier.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *GuardianVerifierPaused) (event.Subscription, error) { + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierPaused) + if err := _GuardianVerifier.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianVerifier *GuardianVerifierFilterer) ParsePaused(log types.Log) (*GuardianVerifierPaused, error) { + event := new(GuardianVerifierPaused) + if err := _GuardianVerifier.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianVerifierUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the GuardianVerifier contract. +type GuardianVerifierUnpausedIterator struct { + Event *GuardianVerifierUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierUnpaused represents a Unpaused event raised by the GuardianVerifier contract. +type GuardianVerifierUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterUnpaused(opts *bind.FilterOpts) (*GuardianVerifierUnpausedIterator, error) { + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &GuardianVerifierUnpausedIterator{contract: _GuardianVerifier.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *GuardianVerifierUnpaused) (event.Subscription, error) { + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierUnpaused) + if err := _GuardianVerifier.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianVerifier *GuardianVerifierFilterer) ParseUnpaused(log types.Log) (*GuardianVerifierUnpaused, error) { + event := new(GuardianVerifierUnpaused) + if err := _GuardianVerifier.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianVerifierUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the GuardianVerifier contract. +type GuardianVerifierUpgradedIterator struct { + Event *GuardianVerifierUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianVerifierUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianVerifierUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianVerifierUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianVerifierUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianVerifierUpgraded represents a Upgraded event raised by the GuardianVerifier contract. +type GuardianVerifierUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GuardianVerifier *GuardianVerifierFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*GuardianVerifierUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GuardianVerifier.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &GuardianVerifierUpgradedIterator{contract: _GuardianVerifier.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GuardianVerifier *GuardianVerifierFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *GuardianVerifierUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _GuardianVerifier.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianVerifierUpgraded) + if err := _GuardianVerifier.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_GuardianVerifier *GuardianVerifierFilterer) ParseUpgraded(log types.Log) (*GuardianVerifierUpgraded, error) { + event := new(GuardianVerifierUpgraded) + if err := _GuardianVerifier.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_lib_proposing.go b/packages/taiko-client/bindings/gen_lib_proposing.go new file mode 100644 index 00000000000..3e35789ee88 --- /dev/null +++ b/packages/taiko-client/bindings/gen_lib_proposing.go @@ -0,0 +1,337 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// LibProposingMetaData contains all meta data concerning the LibProposing contract. +var LibProposingMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]}]", +} + +// LibProposingABI is the input ABI used to generate the binding from. +// Deprecated: Use LibProposingMetaData.ABI instead. +var LibProposingABI = LibProposingMetaData.ABI + +// LibProposing is an auto generated Go binding around an Ethereum contract. +type LibProposing struct { + LibProposingCaller // Read-only binding to the contract + LibProposingTransactor // Write-only binding to the contract + LibProposingFilterer // Log filterer for contract events +} + +// LibProposingCaller is an auto generated read-only Go binding around an Ethereum contract. +type LibProposingCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibProposingTransactor is an auto generated write-only Go binding around an Ethereum contract. +type LibProposingTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibProposingFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type LibProposingFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibProposingSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type LibProposingSession struct { + Contract *LibProposing // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibProposingCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type LibProposingCallerSession struct { + Contract *LibProposingCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// LibProposingTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type LibProposingTransactorSession struct { + Contract *LibProposingTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibProposingRaw is an auto generated low-level Go binding around an Ethereum contract. +type LibProposingRaw struct { + Contract *LibProposing // Generic contract binding to access the raw methods on +} + +// LibProposingCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type LibProposingCallerRaw struct { + Contract *LibProposingCaller // Generic read-only contract binding to access the raw methods on +} + +// LibProposingTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type LibProposingTransactorRaw struct { + Contract *LibProposingTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewLibProposing creates a new instance of LibProposing, bound to a specific deployed contract. +func NewLibProposing(address common.Address, backend bind.ContractBackend) (*LibProposing, error) { + contract, err := bindLibProposing(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &LibProposing{LibProposingCaller: LibProposingCaller{contract: contract}, LibProposingTransactor: LibProposingTransactor{contract: contract}, LibProposingFilterer: LibProposingFilterer{contract: contract}}, nil +} + +// NewLibProposingCaller creates a new read-only instance of LibProposing, bound to a specific deployed contract. +func NewLibProposingCaller(address common.Address, caller bind.ContractCaller) (*LibProposingCaller, error) { + contract, err := bindLibProposing(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &LibProposingCaller{contract: contract}, nil +} + +// NewLibProposingTransactor creates a new write-only instance of LibProposing, bound to a specific deployed contract. +func NewLibProposingTransactor(address common.Address, transactor bind.ContractTransactor) (*LibProposingTransactor, error) { + contract, err := bindLibProposing(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &LibProposingTransactor{contract: contract}, nil +} + +// NewLibProposingFilterer creates a new log filterer instance of LibProposing, bound to a specific deployed contract. +func NewLibProposingFilterer(address common.Address, filterer bind.ContractFilterer) (*LibProposingFilterer, error) { + contract, err := bindLibProposing(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &LibProposingFilterer{contract: contract}, nil +} + +// bindLibProposing binds a generic wrapper to an already deployed contract. +func bindLibProposing(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := LibProposingMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibProposing *LibProposingRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibProposing.Contract.LibProposingCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibProposing *LibProposingRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibProposing.Contract.LibProposingTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibProposing *LibProposingRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibProposing.Contract.LibProposingTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibProposing *LibProposingCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibProposing.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibProposing *LibProposingTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibProposing.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibProposing *LibProposingTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibProposing.Contract.contract.Transact(opts, method, params...) +} + +// LibProposingBlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the LibProposing contract. +type LibProposingBlockProposedIterator struct { + Event *LibProposingBlockProposed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LibProposingBlockProposedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LibProposingBlockProposed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LibProposingBlockProposed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LibProposingBlockProposedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibProposingBlockProposedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibProposingBlockProposed represents a BlockProposed event raised by the LibProposing contract. +type LibProposingBlockProposed struct { + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + Meta TaikoDataBlockMetadata + DepositsProcessed []TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockProposed is a free log retrieval operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_LibProposing *LibProposingFilterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*LibProposingBlockProposedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _LibProposing.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return &LibProposingBlockProposedIterator{contract: _LibProposing.contract, event: "BlockProposed", logs: logs, sub: sub}, nil +} + +// WatchBlockProposed is a free log subscription operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_LibProposing *LibProposingFilterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *LibProposingBlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _LibProposing.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LibProposingBlockProposed) + if err := _LibProposing.contract.UnpackLog(event, "BlockProposed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockProposed is a log parse operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_LibProposing *LibProposingFilterer) ParseBlockProposed(log types.Log) (*LibProposingBlockProposed, error) { + event := new(LibProposingBlockProposed) + if err := _LibProposing.contract.UnpackLog(event, "BlockProposed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_lib_proving.go b/packages/taiko-client/bindings/gen_lib_proving.go new file mode 100644 index 00000000000..a95a8249d99 --- /dev/null +++ b/packages/taiko-client/bindings/gen_lib_proving.go @@ -0,0 +1,611 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// LibProvingMetaData contains all meta data concerning the LibProving contract. +var LibProvingMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]}]", +} + +// LibProvingABI is the input ABI used to generate the binding from. +// Deprecated: Use LibProvingMetaData.ABI instead. +var LibProvingABI = LibProvingMetaData.ABI + +// LibProving is an auto generated Go binding around an Ethereum contract. +type LibProving struct { + LibProvingCaller // Read-only binding to the contract + LibProvingTransactor // Write-only binding to the contract + LibProvingFilterer // Log filterer for contract events +} + +// LibProvingCaller is an auto generated read-only Go binding around an Ethereum contract. +type LibProvingCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibProvingTransactor is an auto generated write-only Go binding around an Ethereum contract. +type LibProvingTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibProvingFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type LibProvingFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibProvingSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type LibProvingSession struct { + Contract *LibProving // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibProvingCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type LibProvingCallerSession struct { + Contract *LibProvingCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// LibProvingTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type LibProvingTransactorSession struct { + Contract *LibProvingTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibProvingRaw is an auto generated low-level Go binding around an Ethereum contract. +type LibProvingRaw struct { + Contract *LibProving // Generic contract binding to access the raw methods on +} + +// LibProvingCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type LibProvingCallerRaw struct { + Contract *LibProvingCaller // Generic read-only contract binding to access the raw methods on +} + +// LibProvingTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type LibProvingTransactorRaw struct { + Contract *LibProvingTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewLibProving creates a new instance of LibProving, bound to a specific deployed contract. +func NewLibProving(address common.Address, backend bind.ContractBackend) (*LibProving, error) { + contract, err := bindLibProving(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &LibProving{LibProvingCaller: LibProvingCaller{contract: contract}, LibProvingTransactor: LibProvingTransactor{contract: contract}, LibProvingFilterer: LibProvingFilterer{contract: contract}}, nil +} + +// NewLibProvingCaller creates a new read-only instance of LibProving, bound to a specific deployed contract. +func NewLibProvingCaller(address common.Address, caller bind.ContractCaller) (*LibProvingCaller, error) { + contract, err := bindLibProving(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &LibProvingCaller{contract: contract}, nil +} + +// NewLibProvingTransactor creates a new write-only instance of LibProving, bound to a specific deployed contract. +func NewLibProvingTransactor(address common.Address, transactor bind.ContractTransactor) (*LibProvingTransactor, error) { + contract, err := bindLibProving(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &LibProvingTransactor{contract: contract}, nil +} + +// NewLibProvingFilterer creates a new log filterer instance of LibProving, bound to a specific deployed contract. +func NewLibProvingFilterer(address common.Address, filterer bind.ContractFilterer) (*LibProvingFilterer, error) { + contract, err := bindLibProving(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &LibProvingFilterer{contract: contract}, nil +} + +// bindLibProving binds a generic wrapper to an already deployed contract. +func bindLibProving(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := LibProvingMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibProving *LibProvingRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibProving.Contract.LibProvingCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibProving *LibProvingRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibProving.Contract.LibProvingTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibProving *LibProvingRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibProving.Contract.LibProvingTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibProving *LibProvingCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibProving.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibProving *LibProvingTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibProving.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibProving *LibProvingTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibProving.Contract.contract.Transact(opts, method, params...) +} + +// LibProvingProvingPausedIterator is returned from FilterProvingPaused and is used to iterate over the raw logs and unpacked data for ProvingPaused events raised by the LibProving contract. +type LibProvingProvingPausedIterator struct { + Event *LibProvingProvingPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LibProvingProvingPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LibProvingProvingPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LibProvingProvingPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LibProvingProvingPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibProvingProvingPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibProvingProvingPaused represents a ProvingPaused event raised by the LibProving contract. +type LibProvingProvingPaused struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProvingPaused is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_LibProving *LibProvingFilterer) FilterProvingPaused(opts *bind.FilterOpts) (*LibProvingProvingPausedIterator, error) { + + logs, sub, err := _LibProving.contract.FilterLogs(opts, "ProvingPaused") + if err != nil { + return nil, err + } + return &LibProvingProvingPausedIterator{contract: _LibProving.contract, event: "ProvingPaused", logs: logs, sub: sub}, nil +} + +// WatchProvingPaused is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_LibProving *LibProvingFilterer) WatchProvingPaused(opts *bind.WatchOpts, sink chan<- *LibProvingProvingPaused) (event.Subscription, error) { + + logs, sub, err := _LibProving.contract.WatchLogs(opts, "ProvingPaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LibProvingProvingPaused) + if err := _LibProving.contract.UnpackLog(event, "ProvingPaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProvingPaused is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_LibProving *LibProvingFilterer) ParseProvingPaused(log types.Log) (*LibProvingProvingPaused, error) { + event := new(LibProvingProvingPaused) + if err := _LibProving.contract.UnpackLog(event, "ProvingPaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LibProvingTransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the LibProving contract. +type LibProvingTransitionContestedIterator struct { + Event *LibProvingTransitionContested // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LibProvingTransitionContestedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LibProvingTransitionContested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LibProvingTransitionContested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LibProvingTransitionContestedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibProvingTransitionContestedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibProvingTransitionContested represents a TransitionContested event raised by the LibProving contract. +type LibProvingTransitionContested struct { + BlockId *big.Int + Tran TaikoDataTransition + Contester common.Address + ContestBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionContested is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_LibProving *LibProvingFilterer) FilterTransitionContested(opts *bind.FilterOpts, blockId []*big.Int) (*LibProvingTransitionContestedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _LibProving.contract.FilterLogs(opts, "TransitionContested", blockIdRule) + if err != nil { + return nil, err + } + return &LibProvingTransitionContestedIterator{contract: _LibProving.contract, event: "TransitionContested", logs: logs, sub: sub}, nil +} + +// WatchTransitionContested is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_LibProving *LibProvingFilterer) WatchTransitionContested(opts *bind.WatchOpts, sink chan<- *LibProvingTransitionContested, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _LibProving.contract.WatchLogs(opts, "TransitionContested", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LibProvingTransitionContested) + if err := _LibProving.contract.UnpackLog(event, "TransitionContested", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionContested is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_LibProving *LibProvingFilterer) ParseTransitionContested(log types.Log) (*LibProvingTransitionContested, error) { + event := new(LibProvingTransitionContested) + if err := _LibProving.contract.UnpackLog(event, "TransitionContested", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LibProvingTransitionProvedIterator is returned from FilterTransitionProved and is used to iterate over the raw logs and unpacked data for TransitionProved events raised by the LibProving contract. +type LibProvingTransitionProvedIterator struct { + Event *LibProvingTransitionProved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LibProvingTransitionProvedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LibProvingTransitionProved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LibProvingTransitionProved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LibProvingTransitionProvedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibProvingTransitionProvedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibProvingTransitionProved represents a TransitionProved event raised by the LibProving contract. +type LibProvingTransitionProved struct { + BlockId *big.Int + Tran TaikoDataTransition + Prover common.Address + ValidityBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionProved is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_LibProving *LibProvingFilterer) FilterTransitionProved(opts *bind.FilterOpts, blockId []*big.Int) (*LibProvingTransitionProvedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _LibProving.contract.FilterLogs(opts, "TransitionProved", blockIdRule) + if err != nil { + return nil, err + } + return &LibProvingTransitionProvedIterator{contract: _LibProving.contract, event: "TransitionProved", logs: logs, sub: sub}, nil +} + +// WatchTransitionProved is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_LibProving *LibProvingFilterer) WatchTransitionProved(opts *bind.WatchOpts, sink chan<- *LibProvingTransitionProved, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _LibProving.contract.WatchLogs(opts, "TransitionProved", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LibProvingTransitionProved) + if err := _LibProving.contract.UnpackLog(event, "TransitionProved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionProved is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_LibProving *LibProvingFilterer) ParseTransitionProved(log types.Log) (*LibProvingTransitionProved, error) { + event := new(LibProvingTransitionProved) + if err := _LibProving.contract.UnpackLog(event, "TransitionProved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_lib_utils.go b/packages/taiko-client/bindings/gen_lib_utils.go new file mode 100644 index 00000000000..09043e7ebba --- /dev/null +++ b/packages/taiko-client/bindings/gen_lib_utils.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// LibUtilsMetaData contains all meta data concerning the LibUtils contract. +var LibUtilsMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]}]", +} + +// LibUtilsABI is the input ABI used to generate the binding from. +// Deprecated: Use LibUtilsMetaData.ABI instead. +var LibUtilsABI = LibUtilsMetaData.ABI + +// LibUtils is an auto generated Go binding around an Ethereum contract. +type LibUtils struct { + LibUtilsCaller // Read-only binding to the contract + LibUtilsTransactor // Write-only binding to the contract + LibUtilsFilterer // Log filterer for contract events +} + +// LibUtilsCaller is an auto generated read-only Go binding around an Ethereum contract. +type LibUtilsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibUtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type LibUtilsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibUtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type LibUtilsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibUtilsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type LibUtilsSession struct { + Contract *LibUtils // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibUtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type LibUtilsCallerSession struct { + Contract *LibUtilsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// LibUtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type LibUtilsTransactorSession struct { + Contract *LibUtilsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibUtilsRaw is an auto generated low-level Go binding around an Ethereum contract. +type LibUtilsRaw struct { + Contract *LibUtils // Generic contract binding to access the raw methods on +} + +// LibUtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type LibUtilsCallerRaw struct { + Contract *LibUtilsCaller // Generic read-only contract binding to access the raw methods on +} + +// LibUtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type LibUtilsTransactorRaw struct { + Contract *LibUtilsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewLibUtils creates a new instance of LibUtils, bound to a specific deployed contract. +func NewLibUtils(address common.Address, backend bind.ContractBackend) (*LibUtils, error) { + contract, err := bindLibUtils(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &LibUtils{LibUtilsCaller: LibUtilsCaller{contract: contract}, LibUtilsTransactor: LibUtilsTransactor{contract: contract}, LibUtilsFilterer: LibUtilsFilterer{contract: contract}}, nil +} + +// NewLibUtilsCaller creates a new read-only instance of LibUtils, bound to a specific deployed contract. +func NewLibUtilsCaller(address common.Address, caller bind.ContractCaller) (*LibUtilsCaller, error) { + contract, err := bindLibUtils(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &LibUtilsCaller{contract: contract}, nil +} + +// NewLibUtilsTransactor creates a new write-only instance of LibUtils, bound to a specific deployed contract. +func NewLibUtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*LibUtilsTransactor, error) { + contract, err := bindLibUtils(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &LibUtilsTransactor{contract: contract}, nil +} + +// NewLibUtilsFilterer creates a new log filterer instance of LibUtils, bound to a specific deployed contract. +func NewLibUtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*LibUtilsFilterer, error) { + contract, err := bindLibUtils(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &LibUtilsFilterer{contract: contract}, nil +} + +// bindLibUtils binds a generic wrapper to an already deployed contract. +func bindLibUtils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := LibUtilsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibUtils *LibUtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibUtils.Contract.LibUtilsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibUtils *LibUtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibUtils.Contract.LibUtilsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibUtils *LibUtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibUtils.Contract.LibUtilsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibUtils *LibUtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibUtils.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibUtils *LibUtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibUtils.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibUtils *LibUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibUtils.Contract.contract.Transact(opts, method, params...) +} diff --git a/packages/taiko-client/bindings/gen_lib_verifying.go b/packages/taiko-client/bindings/gen_lib_verifying.go new file mode 100644 index 00000000000..b69d8478c0e --- /dev/null +++ b/packages/taiko-client/bindings/gen_lib_verifying.go @@ -0,0 +1,471 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// LibVerifyingMetaData contains all meta data concerning the LibVerifying contract. +var LibVerifyingMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]}]", +} + +// LibVerifyingABI is the input ABI used to generate the binding from. +// Deprecated: Use LibVerifyingMetaData.ABI instead. +var LibVerifyingABI = LibVerifyingMetaData.ABI + +// LibVerifying is an auto generated Go binding around an Ethereum contract. +type LibVerifying struct { + LibVerifyingCaller // Read-only binding to the contract + LibVerifyingTransactor // Write-only binding to the contract + LibVerifyingFilterer // Log filterer for contract events +} + +// LibVerifyingCaller is an auto generated read-only Go binding around an Ethereum contract. +type LibVerifyingCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibVerifyingTransactor is an auto generated write-only Go binding around an Ethereum contract. +type LibVerifyingTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibVerifyingFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type LibVerifyingFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// LibVerifyingSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type LibVerifyingSession struct { + Contract *LibVerifying // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibVerifyingCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type LibVerifyingCallerSession struct { + Contract *LibVerifyingCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// LibVerifyingTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type LibVerifyingTransactorSession struct { + Contract *LibVerifyingTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// LibVerifyingRaw is an auto generated low-level Go binding around an Ethereum contract. +type LibVerifyingRaw struct { + Contract *LibVerifying // Generic contract binding to access the raw methods on +} + +// LibVerifyingCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type LibVerifyingCallerRaw struct { + Contract *LibVerifyingCaller // Generic read-only contract binding to access the raw methods on +} + +// LibVerifyingTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type LibVerifyingTransactorRaw struct { + Contract *LibVerifyingTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewLibVerifying creates a new instance of LibVerifying, bound to a specific deployed contract. +func NewLibVerifying(address common.Address, backend bind.ContractBackend) (*LibVerifying, error) { + contract, err := bindLibVerifying(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &LibVerifying{LibVerifyingCaller: LibVerifyingCaller{contract: contract}, LibVerifyingTransactor: LibVerifyingTransactor{contract: contract}, LibVerifyingFilterer: LibVerifyingFilterer{contract: contract}}, nil +} + +// NewLibVerifyingCaller creates a new read-only instance of LibVerifying, bound to a specific deployed contract. +func NewLibVerifyingCaller(address common.Address, caller bind.ContractCaller) (*LibVerifyingCaller, error) { + contract, err := bindLibVerifying(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &LibVerifyingCaller{contract: contract}, nil +} + +// NewLibVerifyingTransactor creates a new write-only instance of LibVerifying, bound to a specific deployed contract. +func NewLibVerifyingTransactor(address common.Address, transactor bind.ContractTransactor) (*LibVerifyingTransactor, error) { + contract, err := bindLibVerifying(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &LibVerifyingTransactor{contract: contract}, nil +} + +// NewLibVerifyingFilterer creates a new log filterer instance of LibVerifying, bound to a specific deployed contract. +func NewLibVerifyingFilterer(address common.Address, filterer bind.ContractFilterer) (*LibVerifyingFilterer, error) { + contract, err := bindLibVerifying(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &LibVerifyingFilterer{contract: contract}, nil +} + +// bindLibVerifying binds a generic wrapper to an already deployed contract. +func bindLibVerifying(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := LibVerifyingMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibVerifying *LibVerifyingRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibVerifying.Contract.LibVerifyingCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibVerifying *LibVerifyingRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibVerifying.Contract.LibVerifyingTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibVerifying *LibVerifyingRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibVerifying.Contract.LibVerifyingTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_LibVerifying *LibVerifyingCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _LibVerifying.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_LibVerifying *LibVerifyingTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _LibVerifying.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_LibVerifying *LibVerifyingTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _LibVerifying.Contract.contract.Transact(opts, method, params...) +} + +// LibVerifyingBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the LibVerifying contract. +type LibVerifyingBlockVerifiedIterator struct { + Event *LibVerifyingBlockVerified // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LibVerifyingBlockVerifiedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LibVerifyingBlockVerified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LibVerifyingBlockVerified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LibVerifyingBlockVerifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibVerifyingBlockVerifiedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibVerifyingBlockVerified represents a BlockVerified event raised by the LibVerifying contract. +type LibVerifyingBlockVerified struct { + BlockId *big.Int + Prover common.Address + BlockHash [32]byte + StateRoot [32]byte + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockVerified is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_LibVerifying *LibVerifyingFilterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*LibVerifyingBlockVerifiedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _LibVerifying.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return &LibVerifyingBlockVerifiedIterator{contract: _LibVerifying.contract, event: "BlockVerified", logs: logs, sub: sub}, nil +} + +// WatchBlockVerified is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_LibVerifying *LibVerifyingFilterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *LibVerifyingBlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _LibVerifying.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LibVerifyingBlockVerified) + if err := _LibVerifying.contract.UnpackLog(event, "BlockVerified", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockVerified is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_LibVerifying *LibVerifyingFilterer) ParseBlockVerified(log types.Log) (*LibVerifyingBlockVerified, error) { + event := new(LibVerifyingBlockVerified) + if err := _LibVerifying.contract.UnpackLog(event, "BlockVerified", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// LibVerifyingStateVariablesUpdatedIterator is returned from FilterStateVariablesUpdated and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated events raised by the LibVerifying contract. +type LibVerifyingStateVariablesUpdatedIterator struct { + Event *LibVerifyingStateVariablesUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *LibVerifyingStateVariablesUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(LibVerifyingStateVariablesUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(LibVerifyingStateVariablesUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *LibVerifyingStateVariablesUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *LibVerifyingStateVariablesUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// LibVerifyingStateVariablesUpdated represents a StateVariablesUpdated event raised by the LibVerifying contract. +type LibVerifyingStateVariablesUpdated struct { + SlotB TaikoDataSlotB + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStateVariablesUpdated is a free log retrieval operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_LibVerifying *LibVerifyingFilterer) FilterStateVariablesUpdated(opts *bind.FilterOpts) (*LibVerifyingStateVariablesUpdatedIterator, error) { + + logs, sub, err := _LibVerifying.contract.FilterLogs(opts, "StateVariablesUpdated") + if err != nil { + return nil, err + } + return &LibVerifyingStateVariablesUpdatedIterator{contract: _LibVerifying.contract, event: "StateVariablesUpdated", logs: logs, sub: sub}, nil +} + +// WatchStateVariablesUpdated is a free log subscription operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_LibVerifying *LibVerifyingFilterer) WatchStateVariablesUpdated(opts *bind.WatchOpts, sink chan<- *LibVerifyingStateVariablesUpdated) (event.Subscription, error) { + + logs, sub, err := _LibVerifying.contract.WatchLogs(opts, "StateVariablesUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(LibVerifyingStateVariablesUpdated) + if err := _LibVerifying.contract.UnpackLog(event, "StateVariablesUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStateVariablesUpdated is a log parse operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_LibVerifying *LibVerifyingFilterer) ParseStateVariablesUpdated(log types.Log) (*LibVerifyingStateVariablesUpdated, error) { + event := new(LibVerifyingStateVariablesUpdated) + if err := _LibVerifying.contract.UnpackLog(event, "StateVariablesUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_sgx_verifier.go b/packages/taiko-client/bindings/gen_sgx_verifier.go new file mode 100644 index 00000000000..01316f6022a --- /dev/null +++ b/packages/taiko-client/bindings/gen_sgx_verifier.go @@ -0,0 +1,2385 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// V3StructCertificationData is an auto generated low-level Go binding around an user-defined struct. +type V3StructCertificationData struct { + CertType uint16 + CertDataSize uint32 + DecodedCertDataArray [3][]byte +} + +// V3StructECDSAQuoteV3AuthData is an auto generated low-level Go binding around an user-defined struct. +type V3StructECDSAQuoteV3AuthData struct { + Ecdsa256BitSignature []byte + EcdsaAttestationKey []byte + PckSignedQeReport V3StructEnclaveReport + QeReportSignature []byte + QeAuthData V3StructQEAuthData + Certification V3StructCertificationData +} + +// V3StructEnclaveReport is an auto generated low-level Go binding around an user-defined struct. +type V3StructEnclaveReport struct { + CpuSvn [16]byte + MiscSelect [4]byte + Reserved1 [28]byte + Attributes [16]byte + MrEnclave [32]byte + Reserved2 [32]byte + MrSigner [32]byte + Reserved3 []byte + IsvProdId uint16 + IsvSvn uint16 + Reserved4 []byte + ReportData []byte +} + +// V3StructHeader is an auto generated low-level Go binding around an user-defined struct. +type V3StructHeader struct { + Version [2]byte + AttestationKeyType [2]byte + TeeType [4]byte + QeSvn [2]byte + PceSvn [2]byte + QeVendorId [16]byte + UserData [20]byte +} + +// V3StructParsedV3QuoteStruct is an auto generated low-level Go binding around an user-defined struct. +type V3StructParsedV3QuoteStruct struct { + Header V3StructHeader + LocalEnclaveReport V3StructEnclaveReport + V3AuthData V3StructECDSAQuoteV3AuthData +} + +// V3StructQEAuthData is an auto generated low-level Go binding around an user-defined struct. +type V3StructQEAuthData struct { + ParsedDataSize uint16 + Data []byte +} + +// SgxVerifierMetaData contains all meta data concerning the SgxVerifier contract. +var SgxVerifierMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"INSTANCE_EXPIRY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"INSTANCE_VALIDITY_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addInstances\",\"inputs\":[{\"name\":\"_instances\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addressRegistered\",\"inputs\":[{\"name\":\"instanceAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"alreadyAttested\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteInstances\",\"inputs\":[{\"name\":\"_ids\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"instances\",\"inputs\":[{\"name\":\"instanceId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextInstanceId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerInstance\",\"inputs\":[{\"name\":\"_attestation\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ParsedV3QuoteStruct\",\"components\":[{\"name\":\"header\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.Header\",\"components\":[{\"name\":\"version\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"attestationKeyType\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"teeType\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"qeSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"pceSvn\",\"type\":\"bytes2\",\"internalType\":\"bytes2\"},{\"name\":\"qeVendorId\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"userData\",\"type\":\"bytes20\",\"internalType\":\"bytes20\"}]},{\"name\":\"localEnclaveReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"v3AuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.ECDSAQuoteV3AuthData\",\"components\":[{\"name\":\"ecdsa256BitSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"ecdsaAttestationKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"pckSignedQeReport\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.EnclaveReport\",\"components\":[{\"name\":\"cpuSvn\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"miscSelect\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"reserved1\",\"type\":\"bytes28\",\"internalType\":\"bytes28\"},{\"name\":\"attributes\",\"type\":\"bytes16\",\"internalType\":\"bytes16\"},{\"name\":\"mrEnclave\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved2\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mrSigner\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reserved3\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"isvProdId\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"isvSvn\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"reserved4\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"reportData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"qeReportSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"qeAuthData\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.QEAuthData\",\"components\":[{\"name\":\"parsedDataSize\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"certification\",\"type\":\"tuple\",\"internalType\":\"structV3Struct.CertificationData\",\"components\":[{\"name\":\"certType\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"certDataSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"decodedCertDataArray\",\"type\":\"bytes[3]\",\"internalType\":\"bytes[3]\"}]}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyProof\",\"inputs\":[{\"name\":\"_ctx\",\"type\":\"tuple\",\"internalType\":\"structIVerifier.Context\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"isContesting\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"msgSender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"_tran\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_proof\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TierProof\",\"components\":[{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceAdded\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"replaced\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"validSince\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InstanceDeleted\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"instance\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SGX_ALREADY_ATTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_ATTESTATION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_INSTANCE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_INVALID_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SGX_RA_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// SgxVerifierABI is the input ABI used to generate the binding from. +// Deprecated: Use SgxVerifierMetaData.ABI instead. +var SgxVerifierABI = SgxVerifierMetaData.ABI + +// SgxVerifier is an auto generated Go binding around an Ethereum contract. +type SgxVerifier struct { + SgxVerifierCaller // Read-only binding to the contract + SgxVerifierTransactor // Write-only binding to the contract + SgxVerifierFilterer // Log filterer for contract events +} + +// SgxVerifierCaller is an auto generated read-only Go binding around an Ethereum contract. +type SgxVerifierCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SgxVerifierTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SgxVerifierTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SgxVerifierFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SgxVerifierFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SgxVerifierSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SgxVerifierSession struct { + Contract *SgxVerifier // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SgxVerifierCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SgxVerifierCallerSession struct { + Contract *SgxVerifierCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SgxVerifierTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SgxVerifierTransactorSession struct { + Contract *SgxVerifierTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SgxVerifierRaw is an auto generated low-level Go binding around an Ethereum contract. +type SgxVerifierRaw struct { + Contract *SgxVerifier // Generic contract binding to access the raw methods on +} + +// SgxVerifierCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SgxVerifierCallerRaw struct { + Contract *SgxVerifierCaller // Generic read-only contract binding to access the raw methods on +} + +// SgxVerifierTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SgxVerifierTransactorRaw struct { + Contract *SgxVerifierTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSgxVerifier creates a new instance of SgxVerifier, bound to a specific deployed contract. +func NewSgxVerifier(address common.Address, backend bind.ContractBackend) (*SgxVerifier, error) { + contract, err := bindSgxVerifier(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SgxVerifier{SgxVerifierCaller: SgxVerifierCaller{contract: contract}, SgxVerifierTransactor: SgxVerifierTransactor{contract: contract}, SgxVerifierFilterer: SgxVerifierFilterer{contract: contract}}, nil +} + +// NewSgxVerifierCaller creates a new read-only instance of SgxVerifier, bound to a specific deployed contract. +func NewSgxVerifierCaller(address common.Address, caller bind.ContractCaller) (*SgxVerifierCaller, error) { + contract, err := bindSgxVerifier(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SgxVerifierCaller{contract: contract}, nil +} + +// NewSgxVerifierTransactor creates a new write-only instance of SgxVerifier, bound to a specific deployed contract. +func NewSgxVerifierTransactor(address common.Address, transactor bind.ContractTransactor) (*SgxVerifierTransactor, error) { + contract, err := bindSgxVerifier(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SgxVerifierTransactor{contract: contract}, nil +} + +// NewSgxVerifierFilterer creates a new log filterer instance of SgxVerifier, bound to a specific deployed contract. +func NewSgxVerifierFilterer(address common.Address, filterer bind.ContractFilterer) (*SgxVerifierFilterer, error) { + contract, err := bindSgxVerifier(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SgxVerifierFilterer{contract: contract}, nil +} + +// bindSgxVerifier binds a generic wrapper to an already deployed contract. +func bindSgxVerifier(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SgxVerifierMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SgxVerifier *SgxVerifierRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SgxVerifier.Contract.SgxVerifierCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SgxVerifier *SgxVerifierRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SgxVerifier.Contract.SgxVerifierTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SgxVerifier *SgxVerifierRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SgxVerifier.Contract.SgxVerifierTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SgxVerifier *SgxVerifierCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SgxVerifier.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SgxVerifier *SgxVerifierTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SgxVerifier.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SgxVerifier *SgxVerifierTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SgxVerifier.Contract.contract.Transact(opts, method, params...) +} + +// INSTANCEEXPIRY is a free data retrieval call binding the contract method 0xd632cf35. +// +// Solidity: function INSTANCE_EXPIRY() view returns(uint64) +func (_SgxVerifier *SgxVerifierCaller) INSTANCEEXPIRY(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "INSTANCE_EXPIRY") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// INSTANCEEXPIRY is a free data retrieval call binding the contract method 0xd632cf35. +// +// Solidity: function INSTANCE_EXPIRY() view returns(uint64) +func (_SgxVerifier *SgxVerifierSession) INSTANCEEXPIRY() (uint64, error) { + return _SgxVerifier.Contract.INSTANCEEXPIRY(&_SgxVerifier.CallOpts) +} + +// INSTANCEEXPIRY is a free data retrieval call binding the contract method 0xd632cf35. +// +// Solidity: function INSTANCE_EXPIRY() view returns(uint64) +func (_SgxVerifier *SgxVerifierCallerSession) INSTANCEEXPIRY() (uint64, error) { + return _SgxVerifier.Contract.INSTANCEEXPIRY(&_SgxVerifier.CallOpts) +} + +// INSTANCEVALIDITYDELAY is a free data retrieval call binding the contract method 0xb51ec328. +// +// Solidity: function INSTANCE_VALIDITY_DELAY() view returns(uint64) +func (_SgxVerifier *SgxVerifierCaller) INSTANCEVALIDITYDELAY(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "INSTANCE_VALIDITY_DELAY") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// INSTANCEVALIDITYDELAY is a free data retrieval call binding the contract method 0xb51ec328. +// +// Solidity: function INSTANCE_VALIDITY_DELAY() view returns(uint64) +func (_SgxVerifier *SgxVerifierSession) INSTANCEVALIDITYDELAY() (uint64, error) { + return _SgxVerifier.Contract.INSTANCEVALIDITYDELAY(&_SgxVerifier.CallOpts) +} + +// INSTANCEVALIDITYDELAY is a free data retrieval call binding the contract method 0xb51ec328. +// +// Solidity: function INSTANCE_VALIDITY_DELAY() view returns(uint64) +func (_SgxVerifier *SgxVerifierCallerSession) INSTANCEVALIDITYDELAY() (uint64, error) { + return _SgxVerifier.Contract.INSTANCEVALIDITYDELAY(&_SgxVerifier.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_SgxVerifier *SgxVerifierCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_SgxVerifier *SgxVerifierSession) AddressManager() (common.Address, error) { + return _SgxVerifier.Contract.AddressManager(&_SgxVerifier.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_SgxVerifier *SgxVerifierCallerSession) AddressManager() (common.Address, error) { + return _SgxVerifier.Contract.AddressManager(&_SgxVerifier.CallOpts) +} + +// AddressRegistered is a free data retrieval call binding the contract method 0x9d7809b5. +// +// Solidity: function addressRegistered(address instanceAddress) view returns(bool alreadyAttested) +func (_SgxVerifier *SgxVerifierCaller) AddressRegistered(opts *bind.CallOpts, instanceAddress common.Address) (bool, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "addressRegistered", instanceAddress) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// AddressRegistered is a free data retrieval call binding the contract method 0x9d7809b5. +// +// Solidity: function addressRegistered(address instanceAddress) view returns(bool alreadyAttested) +func (_SgxVerifier *SgxVerifierSession) AddressRegistered(instanceAddress common.Address) (bool, error) { + return _SgxVerifier.Contract.AddressRegistered(&_SgxVerifier.CallOpts, instanceAddress) +} + +// AddressRegistered is a free data retrieval call binding the contract method 0x9d7809b5. +// +// Solidity: function addressRegistered(address instanceAddress) view returns(bool alreadyAttested) +func (_SgxVerifier *SgxVerifierCallerSession) AddressRegistered(instanceAddress common.Address) (bool, error) { + return _SgxVerifier.Contract.AddressRegistered(&_SgxVerifier.CallOpts, instanceAddress) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_SgxVerifier *SgxVerifierCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_SgxVerifier *SgxVerifierSession) InNonReentrant() (bool, error) { + return _SgxVerifier.Contract.InNonReentrant(&_SgxVerifier.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_SgxVerifier *SgxVerifierCallerSession) InNonReentrant() (bool, error) { + return _SgxVerifier.Contract.InNonReentrant(&_SgxVerifier.CallOpts) +} + +// Instances is a free data retrieval call binding the contract method 0xa2f7b3a5. +// +// Solidity: function instances(uint256 instanceId) view returns(address addr, uint64 validSince) +func (_SgxVerifier *SgxVerifierCaller) Instances(opts *bind.CallOpts, instanceId *big.Int) (struct { + Addr common.Address + ValidSince uint64 +}, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "instances", instanceId) + + outstruct := new(struct { + Addr common.Address + ValidSince uint64 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.ValidSince = *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return *outstruct, err + +} + +// Instances is a free data retrieval call binding the contract method 0xa2f7b3a5. +// +// Solidity: function instances(uint256 instanceId) view returns(address addr, uint64 validSince) +func (_SgxVerifier *SgxVerifierSession) Instances(instanceId *big.Int) (struct { + Addr common.Address + ValidSince uint64 +}, error) { + return _SgxVerifier.Contract.Instances(&_SgxVerifier.CallOpts, instanceId) +} + +// Instances is a free data retrieval call binding the contract method 0xa2f7b3a5. +// +// Solidity: function instances(uint256 instanceId) view returns(address addr, uint64 validSince) +func (_SgxVerifier *SgxVerifierCallerSession) Instances(instanceId *big.Int) (struct { + Addr common.Address + ValidSince uint64 +}, error) { + return _SgxVerifier.Contract.Instances(&_SgxVerifier.CallOpts, instanceId) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_SgxVerifier *SgxVerifierCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_SgxVerifier *SgxVerifierSession) LastUnpausedAt() (uint64, error) { + return _SgxVerifier.Contract.LastUnpausedAt(&_SgxVerifier.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_SgxVerifier *SgxVerifierCallerSession) LastUnpausedAt() (uint64, error) { + return _SgxVerifier.Contract.LastUnpausedAt(&_SgxVerifier.CallOpts) +} + +// NextInstanceId is a free data retrieval call binding the contract method 0xee45abb0. +// +// Solidity: function nextInstanceId() view returns(uint256) +func (_SgxVerifier *SgxVerifierCaller) NextInstanceId(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "nextInstanceId") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NextInstanceId is a free data retrieval call binding the contract method 0xee45abb0. +// +// Solidity: function nextInstanceId() view returns(uint256) +func (_SgxVerifier *SgxVerifierSession) NextInstanceId() (*big.Int, error) { + return _SgxVerifier.Contract.NextInstanceId(&_SgxVerifier.CallOpts) +} + +// NextInstanceId is a free data retrieval call binding the contract method 0xee45abb0. +// +// Solidity: function nextInstanceId() view returns(uint256) +func (_SgxVerifier *SgxVerifierCallerSession) NextInstanceId() (*big.Int, error) { + return _SgxVerifier.Contract.NextInstanceId(&_SgxVerifier.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SgxVerifier *SgxVerifierCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SgxVerifier *SgxVerifierSession) Owner() (common.Address, error) { + return _SgxVerifier.Contract.Owner(&_SgxVerifier.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SgxVerifier *SgxVerifierCallerSession) Owner() (common.Address, error) { + return _SgxVerifier.Contract.Owner(&_SgxVerifier.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SgxVerifier *SgxVerifierCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SgxVerifier *SgxVerifierSession) Paused() (bool, error) { + return _SgxVerifier.Contract.Paused(&_SgxVerifier.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SgxVerifier *SgxVerifierCallerSession) Paused() (bool, error) { + return _SgxVerifier.Contract.Paused(&_SgxVerifier.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_SgxVerifier *SgxVerifierCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_SgxVerifier *SgxVerifierSession) PendingOwner() (common.Address, error) { + return _SgxVerifier.Contract.PendingOwner(&_SgxVerifier.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_SgxVerifier *SgxVerifierCallerSession) PendingOwner() (common.Address, error) { + return _SgxVerifier.Contract.PendingOwner(&_SgxVerifier.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_SgxVerifier *SgxVerifierCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_SgxVerifier *SgxVerifierSession) ProxiableUUID() ([32]byte, error) { + return _SgxVerifier.Contract.ProxiableUUID(&_SgxVerifier.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_SgxVerifier *SgxVerifierCallerSession) ProxiableUUID() ([32]byte, error) { + return _SgxVerifier.Contract.ProxiableUUID(&_SgxVerifier.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_SgxVerifier *SgxVerifierCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_SgxVerifier *SgxVerifierSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _SgxVerifier.Contract.Resolve(&_SgxVerifier.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_SgxVerifier *SgxVerifierCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _SgxVerifier.Contract.Resolve(&_SgxVerifier.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_SgxVerifier *SgxVerifierCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _SgxVerifier.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_SgxVerifier *SgxVerifierSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _SgxVerifier.Contract.Resolve0(&_SgxVerifier.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_SgxVerifier *SgxVerifierCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _SgxVerifier.Contract.Resolve0(&_SgxVerifier.CallOpts, _name, _allowZeroAddress) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_SgxVerifier *SgxVerifierTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_SgxVerifier *SgxVerifierSession) AcceptOwnership() (*types.Transaction, error) { + return _SgxVerifier.Contract.AcceptOwnership(&_SgxVerifier.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_SgxVerifier *SgxVerifierTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _SgxVerifier.Contract.AcceptOwnership(&_SgxVerifier.TransactOpts) +} + +// AddInstances is a paid mutator transaction binding the contract method 0x16107290. +// +// Solidity: function addInstances(address[] _instances) returns(uint256[]) +func (_SgxVerifier *SgxVerifierTransactor) AddInstances(opts *bind.TransactOpts, _instances []common.Address) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "addInstances", _instances) +} + +// AddInstances is a paid mutator transaction binding the contract method 0x16107290. +// +// Solidity: function addInstances(address[] _instances) returns(uint256[]) +func (_SgxVerifier *SgxVerifierSession) AddInstances(_instances []common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.AddInstances(&_SgxVerifier.TransactOpts, _instances) +} + +// AddInstances is a paid mutator transaction binding the contract method 0x16107290. +// +// Solidity: function addInstances(address[] _instances) returns(uint256[]) +func (_SgxVerifier *SgxVerifierTransactorSession) AddInstances(_instances []common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.AddInstances(&_SgxVerifier.TransactOpts, _instances) +} + +// DeleteInstances is a paid mutator transaction binding the contract method 0x4ef36a56. +// +// Solidity: function deleteInstances(uint256[] _ids) returns() +func (_SgxVerifier *SgxVerifierTransactor) DeleteInstances(opts *bind.TransactOpts, _ids []*big.Int) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "deleteInstances", _ids) +} + +// DeleteInstances is a paid mutator transaction binding the contract method 0x4ef36a56. +// +// Solidity: function deleteInstances(uint256[] _ids) returns() +func (_SgxVerifier *SgxVerifierSession) DeleteInstances(_ids []*big.Int) (*types.Transaction, error) { + return _SgxVerifier.Contract.DeleteInstances(&_SgxVerifier.TransactOpts, _ids) +} + +// DeleteInstances is a paid mutator transaction binding the contract method 0x4ef36a56. +// +// Solidity: function deleteInstances(uint256[] _ids) returns() +func (_SgxVerifier *SgxVerifierTransactorSession) DeleteInstances(_ids []*big.Int) (*types.Transaction, error) { + return _SgxVerifier.Contract.DeleteInstances(&_SgxVerifier.TransactOpts, _ids) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_SgxVerifier *SgxVerifierTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "init", _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_SgxVerifier *SgxVerifierSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.Init(&_SgxVerifier.TransactOpts, _owner, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _addressManager) returns() +func (_SgxVerifier *SgxVerifierTransactorSession) Init(_owner common.Address, _addressManager common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.Init(&_SgxVerifier.TransactOpts, _owner, _addressManager) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SgxVerifier *SgxVerifierTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SgxVerifier *SgxVerifierSession) Pause() (*types.Transaction, error) { + return _SgxVerifier.Contract.Pause(&_SgxVerifier.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SgxVerifier *SgxVerifierTransactorSession) Pause() (*types.Transaction, error) { + return _SgxVerifier.Contract.Pause(&_SgxVerifier.TransactOpts) +} + +// RegisterInstance is a paid mutator transaction binding the contract method 0xa91951a2. +// +// Solidity: function registerInstance(((bytes2,bytes2,bytes4,bytes2,bytes2,bytes16,bytes20),(bytes16,bytes4,bytes28,bytes16,bytes32,bytes32,bytes32,bytes,uint16,uint16,bytes,bytes),(bytes,bytes,(bytes16,bytes4,bytes28,bytes16,bytes32,bytes32,bytes32,bytes,uint16,uint16,bytes,bytes),bytes,(uint16,bytes),(uint16,uint32,bytes[3]))) _attestation) returns(uint256) +func (_SgxVerifier *SgxVerifierTransactor) RegisterInstance(opts *bind.TransactOpts, _attestation V3StructParsedV3QuoteStruct) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "registerInstance", _attestation) +} + +// RegisterInstance is a paid mutator transaction binding the contract method 0xa91951a2. +// +// Solidity: function registerInstance(((bytes2,bytes2,bytes4,bytes2,bytes2,bytes16,bytes20),(bytes16,bytes4,bytes28,bytes16,bytes32,bytes32,bytes32,bytes,uint16,uint16,bytes,bytes),(bytes,bytes,(bytes16,bytes4,bytes28,bytes16,bytes32,bytes32,bytes32,bytes,uint16,uint16,bytes,bytes),bytes,(uint16,bytes),(uint16,uint32,bytes[3]))) _attestation) returns(uint256) +func (_SgxVerifier *SgxVerifierSession) RegisterInstance(_attestation V3StructParsedV3QuoteStruct) (*types.Transaction, error) { + return _SgxVerifier.Contract.RegisterInstance(&_SgxVerifier.TransactOpts, _attestation) +} + +// RegisterInstance is a paid mutator transaction binding the contract method 0xa91951a2. +// +// Solidity: function registerInstance(((bytes2,bytes2,bytes4,bytes2,bytes2,bytes16,bytes20),(bytes16,bytes4,bytes28,bytes16,bytes32,bytes32,bytes32,bytes,uint16,uint16,bytes,bytes),(bytes,bytes,(bytes16,bytes4,bytes28,bytes16,bytes32,bytes32,bytes32,bytes,uint16,uint16,bytes,bytes),bytes,(uint16,bytes),(uint16,uint32,bytes[3]))) _attestation) returns(uint256) +func (_SgxVerifier *SgxVerifierTransactorSession) RegisterInstance(_attestation V3StructParsedV3QuoteStruct) (*types.Transaction, error) { + return _SgxVerifier.Contract.RegisterInstance(&_SgxVerifier.TransactOpts, _attestation) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SgxVerifier *SgxVerifierTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SgxVerifier *SgxVerifierSession) RenounceOwnership() (*types.Transaction, error) { + return _SgxVerifier.Contract.RenounceOwnership(&_SgxVerifier.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SgxVerifier *SgxVerifierTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _SgxVerifier.Contract.RenounceOwnership(&_SgxVerifier.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SgxVerifier *SgxVerifierTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SgxVerifier *SgxVerifierSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.TransferOwnership(&_SgxVerifier.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SgxVerifier *SgxVerifierTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.TransferOwnership(&_SgxVerifier.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SgxVerifier *SgxVerifierTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SgxVerifier *SgxVerifierSession) Unpause() (*types.Transaction, error) { + return _SgxVerifier.Contract.Unpause(&_SgxVerifier.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SgxVerifier *SgxVerifierTransactorSession) Unpause() (*types.Transaction, error) { + return _SgxVerifier.Contract.Unpause(&_SgxVerifier.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_SgxVerifier *SgxVerifierTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_SgxVerifier *SgxVerifierSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.UpgradeTo(&_SgxVerifier.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_SgxVerifier *SgxVerifierTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _SgxVerifier.Contract.UpgradeTo(&_SgxVerifier.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_SgxVerifier *SgxVerifierTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_SgxVerifier *SgxVerifierSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _SgxVerifier.Contract.UpgradeToAndCall(&_SgxVerifier.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_SgxVerifier *SgxVerifierTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _SgxVerifier.Contract.UpgradeToAndCall(&_SgxVerifier.TransactOpts, newImplementation, data) +} + +// VerifyProof is a paid mutator transaction binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns() +func (_SgxVerifier *SgxVerifierTransactor) VerifyProof(opts *bind.TransactOpts, _ctx IVerifierContext, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _SgxVerifier.contract.Transact(opts, "verifyProof", _ctx, _tran, _proof) +} + +// VerifyProof is a paid mutator transaction binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns() +func (_SgxVerifier *SgxVerifierSession) VerifyProof(_ctx IVerifierContext, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _SgxVerifier.Contract.VerifyProof(&_SgxVerifier.TransactOpts, _ctx, _tran, _proof) +} + +// VerifyProof is a paid mutator transaction binding the contract method 0x21e89968. +// +// Solidity: function verifyProof((bytes32,bytes32,address,uint64,bool,bool,address) _ctx, (bytes32,bytes32,bytes32,bytes32) _tran, (uint16,bytes) _proof) returns() +func (_SgxVerifier *SgxVerifierTransactorSession) VerifyProof(_ctx IVerifierContext, _tran TaikoDataTransition, _proof TaikoDataTierProof) (*types.Transaction, error) { + return _SgxVerifier.Contract.VerifyProof(&_SgxVerifier.TransactOpts, _ctx, _tran, _proof) +} + +// SgxVerifierAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the SgxVerifier contract. +type SgxVerifierAdminChangedIterator struct { + Event *SgxVerifierAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierAdminChanged represents a AdminChanged event raised by the SgxVerifier contract. +type SgxVerifierAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_SgxVerifier *SgxVerifierFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*SgxVerifierAdminChangedIterator, error) { + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &SgxVerifierAdminChangedIterator{contract: _SgxVerifier.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_SgxVerifier *SgxVerifierFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *SgxVerifierAdminChanged) (event.Subscription, error) { + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierAdminChanged) + if err := _SgxVerifier.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_SgxVerifier *SgxVerifierFilterer) ParseAdminChanged(log types.Log) (*SgxVerifierAdminChanged, error) { + event := new(SgxVerifierAdminChanged) + if err := _SgxVerifier.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the SgxVerifier contract. +type SgxVerifierBeaconUpgradedIterator struct { + Event *SgxVerifierBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierBeaconUpgraded represents a BeaconUpgraded event raised by the SgxVerifier contract. +type SgxVerifierBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_SgxVerifier *SgxVerifierFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*SgxVerifierBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &SgxVerifierBeaconUpgradedIterator{contract: _SgxVerifier.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_SgxVerifier *SgxVerifierFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *SgxVerifierBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierBeaconUpgraded) + if err := _SgxVerifier.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_SgxVerifier *SgxVerifierFilterer) ParseBeaconUpgraded(log types.Log) (*SgxVerifierBeaconUpgraded, error) { + event := new(SgxVerifierBeaconUpgraded) + if err := _SgxVerifier.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the SgxVerifier contract. +type SgxVerifierInitializedIterator struct { + Event *SgxVerifierInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierInitialized represents a Initialized event raised by the SgxVerifier contract. +type SgxVerifierInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_SgxVerifier *SgxVerifierFilterer) FilterInitialized(opts *bind.FilterOpts) (*SgxVerifierInitializedIterator, error) { + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &SgxVerifierInitializedIterator{contract: _SgxVerifier.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_SgxVerifier *SgxVerifierFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *SgxVerifierInitialized) (event.Subscription, error) { + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierInitialized) + if err := _SgxVerifier.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_SgxVerifier *SgxVerifierFilterer) ParseInitialized(log types.Log) (*SgxVerifierInitialized, error) { + event := new(SgxVerifierInitialized) + if err := _SgxVerifier.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierInstanceAddedIterator is returned from FilterInstanceAdded and is used to iterate over the raw logs and unpacked data for InstanceAdded events raised by the SgxVerifier contract. +type SgxVerifierInstanceAddedIterator struct { + Event *SgxVerifierInstanceAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierInstanceAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierInstanceAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierInstanceAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierInstanceAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierInstanceAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierInstanceAdded represents a InstanceAdded event raised by the SgxVerifier contract. +type SgxVerifierInstanceAdded struct { + Id *big.Int + Instance common.Address + Replaced common.Address + ValidSince *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInstanceAdded is a free log retrieval operation binding the contract event 0xbbe529d240965181270c1e2e32a80761e8807dda1ee9765e326178bd6804a9cb. +// +// Solidity: event InstanceAdded(uint256 indexed id, address indexed instance, address indexed replaced, uint256 validSince) +func (_SgxVerifier *SgxVerifierFilterer) FilterInstanceAdded(opts *bind.FilterOpts, id []*big.Int, instance []common.Address, replaced []common.Address) (*SgxVerifierInstanceAddedIterator, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + var instanceRule []interface{} + for _, instanceItem := range instance { + instanceRule = append(instanceRule, instanceItem) + } + var replacedRule []interface{} + for _, replacedItem := range replaced { + replacedRule = append(replacedRule, replacedItem) + } + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "InstanceAdded", idRule, instanceRule, replacedRule) + if err != nil { + return nil, err + } + return &SgxVerifierInstanceAddedIterator{contract: _SgxVerifier.contract, event: "InstanceAdded", logs: logs, sub: sub}, nil +} + +// WatchInstanceAdded is a free log subscription operation binding the contract event 0xbbe529d240965181270c1e2e32a80761e8807dda1ee9765e326178bd6804a9cb. +// +// Solidity: event InstanceAdded(uint256 indexed id, address indexed instance, address indexed replaced, uint256 validSince) +func (_SgxVerifier *SgxVerifierFilterer) WatchInstanceAdded(opts *bind.WatchOpts, sink chan<- *SgxVerifierInstanceAdded, id []*big.Int, instance []common.Address, replaced []common.Address) (event.Subscription, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + var instanceRule []interface{} + for _, instanceItem := range instance { + instanceRule = append(instanceRule, instanceItem) + } + var replacedRule []interface{} + for _, replacedItem := range replaced { + replacedRule = append(replacedRule, replacedItem) + } + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "InstanceAdded", idRule, instanceRule, replacedRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierInstanceAdded) + if err := _SgxVerifier.contract.UnpackLog(event, "InstanceAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInstanceAdded is a log parse operation binding the contract event 0xbbe529d240965181270c1e2e32a80761e8807dda1ee9765e326178bd6804a9cb. +// +// Solidity: event InstanceAdded(uint256 indexed id, address indexed instance, address indexed replaced, uint256 validSince) +func (_SgxVerifier *SgxVerifierFilterer) ParseInstanceAdded(log types.Log) (*SgxVerifierInstanceAdded, error) { + event := new(SgxVerifierInstanceAdded) + if err := _SgxVerifier.contract.UnpackLog(event, "InstanceAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierInstanceDeletedIterator is returned from FilterInstanceDeleted and is used to iterate over the raw logs and unpacked data for InstanceDeleted events raised by the SgxVerifier contract. +type SgxVerifierInstanceDeletedIterator struct { + Event *SgxVerifierInstanceDeleted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierInstanceDeletedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierInstanceDeleted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierInstanceDeleted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierInstanceDeletedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierInstanceDeletedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierInstanceDeleted represents a InstanceDeleted event raised by the SgxVerifier contract. +type SgxVerifierInstanceDeleted struct { + Id *big.Int + Instance common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInstanceDeleted is a free log retrieval operation binding the contract event 0x89d0dca869ffe08b709ca9ff5adfd5ee8d9de2750d0561e15df614c7a2596d8e. +// +// Solidity: event InstanceDeleted(uint256 indexed id, address indexed instance) +func (_SgxVerifier *SgxVerifierFilterer) FilterInstanceDeleted(opts *bind.FilterOpts, id []*big.Int, instance []common.Address) (*SgxVerifierInstanceDeletedIterator, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + var instanceRule []interface{} + for _, instanceItem := range instance { + instanceRule = append(instanceRule, instanceItem) + } + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "InstanceDeleted", idRule, instanceRule) + if err != nil { + return nil, err + } + return &SgxVerifierInstanceDeletedIterator{contract: _SgxVerifier.contract, event: "InstanceDeleted", logs: logs, sub: sub}, nil +} + +// WatchInstanceDeleted is a free log subscription operation binding the contract event 0x89d0dca869ffe08b709ca9ff5adfd5ee8d9de2750d0561e15df614c7a2596d8e. +// +// Solidity: event InstanceDeleted(uint256 indexed id, address indexed instance) +func (_SgxVerifier *SgxVerifierFilterer) WatchInstanceDeleted(opts *bind.WatchOpts, sink chan<- *SgxVerifierInstanceDeleted, id []*big.Int, instance []common.Address) (event.Subscription, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + var instanceRule []interface{} + for _, instanceItem := range instance { + instanceRule = append(instanceRule, instanceItem) + } + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "InstanceDeleted", idRule, instanceRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierInstanceDeleted) + if err := _SgxVerifier.contract.UnpackLog(event, "InstanceDeleted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInstanceDeleted is a log parse operation binding the contract event 0x89d0dca869ffe08b709ca9ff5adfd5ee8d9de2750d0561e15df614c7a2596d8e. +// +// Solidity: event InstanceDeleted(uint256 indexed id, address indexed instance) +func (_SgxVerifier *SgxVerifierFilterer) ParseInstanceDeleted(log types.Log) (*SgxVerifierInstanceDeleted, error) { + event := new(SgxVerifierInstanceDeleted) + if err := _SgxVerifier.contract.UnpackLog(event, "InstanceDeleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the SgxVerifier contract. +type SgxVerifierOwnershipTransferStartedIterator struct { + Event *SgxVerifierOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the SgxVerifier contract. +type SgxVerifierOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_SgxVerifier *SgxVerifierFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SgxVerifierOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &SgxVerifierOwnershipTransferStartedIterator{contract: _SgxVerifier.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_SgxVerifier *SgxVerifierFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *SgxVerifierOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierOwnershipTransferStarted) + if err := _SgxVerifier.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_SgxVerifier *SgxVerifierFilterer) ParseOwnershipTransferStarted(log types.Log) (*SgxVerifierOwnershipTransferStarted, error) { + event := new(SgxVerifierOwnershipTransferStarted) + if err := _SgxVerifier.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the SgxVerifier contract. +type SgxVerifierOwnershipTransferredIterator struct { + Event *SgxVerifierOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierOwnershipTransferred represents a OwnershipTransferred event raised by the SgxVerifier contract. +type SgxVerifierOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SgxVerifier *SgxVerifierFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SgxVerifierOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &SgxVerifierOwnershipTransferredIterator{contract: _SgxVerifier.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SgxVerifier *SgxVerifierFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SgxVerifierOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierOwnershipTransferred) + if err := _SgxVerifier.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SgxVerifier *SgxVerifierFilterer) ParseOwnershipTransferred(log types.Log) (*SgxVerifierOwnershipTransferred, error) { + event := new(SgxVerifierOwnershipTransferred) + if err := _SgxVerifier.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the SgxVerifier contract. +type SgxVerifierPausedIterator struct { + Event *SgxVerifierPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierPaused represents a Paused event raised by the SgxVerifier contract. +type SgxVerifierPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SgxVerifier *SgxVerifierFilterer) FilterPaused(opts *bind.FilterOpts) (*SgxVerifierPausedIterator, error) { + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &SgxVerifierPausedIterator{contract: _SgxVerifier.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SgxVerifier *SgxVerifierFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *SgxVerifierPaused) (event.Subscription, error) { + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierPaused) + if err := _SgxVerifier.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SgxVerifier *SgxVerifierFilterer) ParsePaused(log types.Log) (*SgxVerifierPaused, error) { + event := new(SgxVerifierPaused) + if err := _SgxVerifier.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the SgxVerifier contract. +type SgxVerifierUnpausedIterator struct { + Event *SgxVerifierUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierUnpaused represents a Unpaused event raised by the SgxVerifier contract. +type SgxVerifierUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SgxVerifier *SgxVerifierFilterer) FilterUnpaused(opts *bind.FilterOpts) (*SgxVerifierUnpausedIterator, error) { + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &SgxVerifierUnpausedIterator{contract: _SgxVerifier.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SgxVerifier *SgxVerifierFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *SgxVerifierUnpaused) (event.Subscription, error) { + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierUnpaused) + if err := _SgxVerifier.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SgxVerifier *SgxVerifierFilterer) ParseUnpaused(log types.Log) (*SgxVerifierUnpaused, error) { + event := new(SgxVerifierUnpaused) + if err := _SgxVerifier.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SgxVerifierUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the SgxVerifier contract. +type SgxVerifierUpgradedIterator struct { + Event *SgxVerifierUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SgxVerifierUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SgxVerifierUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SgxVerifierUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SgxVerifierUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SgxVerifierUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SgxVerifierUpgraded represents a Upgraded event raised by the SgxVerifier contract. +type SgxVerifierUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_SgxVerifier *SgxVerifierFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*SgxVerifierUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _SgxVerifier.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &SgxVerifierUpgradedIterator{contract: _SgxVerifier.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_SgxVerifier *SgxVerifierFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *SgxVerifierUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _SgxVerifier.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SgxVerifierUpgraded) + if err := _SgxVerifier.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_SgxVerifier *SgxVerifierFilterer) ParseUpgraded(log types.Log) (*SgxVerifierUpgraded, error) { + event := new(SgxVerifierUpgraded) + if err := _SgxVerifier.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go new file mode 100644 index 00000000000..1e78adc2c05 --- /dev/null +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -0,0 +1,3994 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// TaikoDataBlock is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataBlock struct { + MetaHash [32]byte + AssignedProver common.Address + LivenessBond *big.Int + BlockId uint64 + ProposedAt uint64 + ProposedIn uint64 + NextTransitionId uint32 + VerifiedTransitionId uint32 +} + +// TaikoDataBlockMetadata is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataBlockMetadata struct { + L1Hash [32]byte + Difficulty [32]byte + BlobHash [32]byte + ExtraData [32]byte + DepositsHash [32]byte + Coinbase common.Address + Id uint64 + GasLimit uint32 + Timestamp uint64 + L1Height uint64 + MinTier uint16 + BlobUsed bool + ParentMetaHash [32]byte + Sender common.Address +} + +// TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataConfig struct { + ChainId uint64 + BlockMaxProposals uint64 + BlockRingBufferSize uint64 + MaxBlocksToVerifyPerProposal uint64 + BlockMaxGasLimit uint32 + LivenessBond *big.Int + BlockSyncThreshold uint8 +} + +// TaikoDataEthDeposit is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataEthDeposit struct { + Recipient common.Address + Amount *big.Int + Id uint64 +} + +// TaikoDataSlotA is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataSlotA struct { + GenesisHeight uint64 + GenesisTimestamp uint64 + LastSyncedBlockId uint64 + LastSynecdAt uint64 +} + +// TaikoDataSlotB is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataSlotB struct { + NumBlocks uint64 + LastVerifiedBlockId uint64 + ProvingPaused bool + ReservedB1 uint8 + ReservedB2 uint16 + ReservedB3 uint32 + LastUnpausedAt uint64 +} + +// TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTransition struct { + ParentHash [32]byte + BlockHash [32]byte + StateRoot [32]byte + Graffiti [32]byte +} + +// TaikoDataTransitionState is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTransitionState struct { + Key [32]byte + BlockHash [32]byte + StateRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Contester common.Address + ContestBond *big.Int + Timestamp uint64 + Tier uint16 + Reserved1 uint8 +} + +// TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract. +var TaikoL1ClientMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockSyncThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotA\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// TaikoL1ClientABI is the input ABI used to generate the binding from. +// Deprecated: Use TaikoL1ClientMetaData.ABI instead. +var TaikoL1ClientABI = TaikoL1ClientMetaData.ABI + +// TaikoL1Client is an auto generated Go binding around an Ethereum contract. +type TaikoL1Client struct { + TaikoL1ClientCaller // Read-only binding to the contract + TaikoL1ClientTransactor // Write-only binding to the contract + TaikoL1ClientFilterer // Log filterer for contract events +} + +// TaikoL1ClientCaller is an auto generated read-only Go binding around an Ethereum contract. +type TaikoL1ClientCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoL1ClientTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TaikoL1ClientTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoL1ClientFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TaikoL1ClientFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoL1ClientSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TaikoL1ClientSession struct { + Contract *TaikoL1Client // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TaikoL1ClientCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TaikoL1ClientCallerSession struct { + Contract *TaikoL1ClientCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TaikoL1ClientTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TaikoL1ClientTransactorSession struct { + Contract *TaikoL1ClientTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TaikoL1ClientRaw is an auto generated low-level Go binding around an Ethereum contract. +type TaikoL1ClientRaw struct { + Contract *TaikoL1Client // Generic contract binding to access the raw methods on +} + +// TaikoL1ClientCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TaikoL1ClientCallerRaw struct { + Contract *TaikoL1ClientCaller // Generic read-only contract binding to access the raw methods on +} + +// TaikoL1ClientTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TaikoL1ClientTransactorRaw struct { + Contract *TaikoL1ClientTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTaikoL1Client creates a new instance of TaikoL1Client, bound to a specific deployed contract. +func NewTaikoL1Client(address common.Address, backend bind.ContractBackend) (*TaikoL1Client, error) { + contract, err := bindTaikoL1Client(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TaikoL1Client{TaikoL1ClientCaller: TaikoL1ClientCaller{contract: contract}, TaikoL1ClientTransactor: TaikoL1ClientTransactor{contract: contract}, TaikoL1ClientFilterer: TaikoL1ClientFilterer{contract: contract}}, nil +} + +// NewTaikoL1ClientCaller creates a new read-only instance of TaikoL1Client, bound to a specific deployed contract. +func NewTaikoL1ClientCaller(address common.Address, caller bind.ContractCaller) (*TaikoL1ClientCaller, error) { + contract, err := bindTaikoL1Client(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TaikoL1ClientCaller{contract: contract}, nil +} + +// NewTaikoL1ClientTransactor creates a new write-only instance of TaikoL1Client, bound to a specific deployed contract. +func NewTaikoL1ClientTransactor(address common.Address, transactor bind.ContractTransactor) (*TaikoL1ClientTransactor, error) { + contract, err := bindTaikoL1Client(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TaikoL1ClientTransactor{contract: contract}, nil +} + +// NewTaikoL1ClientFilterer creates a new log filterer instance of TaikoL1Client, bound to a specific deployed contract. +func NewTaikoL1ClientFilterer(address common.Address, filterer bind.ContractFilterer) (*TaikoL1ClientFilterer, error) { + contract, err := bindTaikoL1Client(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TaikoL1ClientFilterer{contract: contract}, nil +} + +// bindTaikoL1Client binds a generic wrapper to an already deployed contract. +func bindTaikoL1Client(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TaikoL1ClientMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TaikoL1Client *TaikoL1ClientRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TaikoL1Client.Contract.TaikoL1ClientCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TaikoL1Client *TaikoL1ClientRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.Contract.TaikoL1ClientTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TaikoL1Client *TaikoL1ClientRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TaikoL1Client.Contract.TaikoL1ClientTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TaikoL1Client *TaikoL1ClientCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TaikoL1Client.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TaikoL1Client *TaikoL1ClientTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TaikoL1Client *TaikoL1ClientTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TaikoL1Client.Contract.contract.Transact(opts, method, params...) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoL1Client *TaikoL1ClientCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoL1Client *TaikoL1ClientSession) AddressManager() (common.Address, error) { + return _TaikoL1Client.Contract.AddressManager(&_TaikoL1Client.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoL1Client *TaikoL1ClientCallerSession) AddressManager() (common.Address, error) { + return _TaikoL1Client.Contract.AddressManager(&_TaikoL1Client.CallOpts) +} + +// GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. +// +// Solidity: function getBlock(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) blk_) +func (_TaikoL1Client *TaikoL1ClientCaller) GetBlock(opts *bind.CallOpts, _blockId uint64) (TaikoDataBlock, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getBlock", _blockId) + + if err != nil { + return *new(TaikoDataBlock), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataBlock)).(*TaikoDataBlock) + + return out0, err + +} + +// GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. +// +// Solidity: function getBlock(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) blk_) +func (_TaikoL1Client *TaikoL1ClientSession) GetBlock(_blockId uint64) (TaikoDataBlock, error) { + return _TaikoL1Client.Contract.GetBlock(&_TaikoL1Client.CallOpts, _blockId) +} + +// GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. +// +// Solidity: function getBlock(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) blk_) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetBlock(_blockId uint64) (TaikoDataBlock, error) { + return _TaikoL1Client.Contract.GetBlock(&_TaikoL1Client.CallOpts, _blockId) +} + +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8)) +func (_TaikoL1Client *TaikoL1ClientCaller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getConfig") + + if err != nil { + return *new(TaikoDataConfig), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataConfig)).(*TaikoDataConfig) + + return out0, err + +} + +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8)) +func (_TaikoL1Client *TaikoL1ClientSession) GetConfig() (TaikoDataConfig, error) { + return _TaikoL1Client.Contract.GetConfig(&_TaikoL1Client.CallOpts) +} + +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint96,uint8)) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetConfig() (TaikoDataConfig, error) { + return _TaikoL1Client.Contract.GetConfig(&_TaikoL1Client.CallOpts) +} + +// GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. +// +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint8,uint16,uint32,uint64)) +func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariables(opts *bind.CallOpts) (TaikoDataSlotA, TaikoDataSlotB, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getStateVariables") + + if err != nil { + return *new(TaikoDataSlotA), *new(TaikoDataSlotB), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) + out1 := *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotB) + + return out0, out1, err + +} + +// GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. +// +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint8,uint16,uint32,uint64)) +func (_TaikoL1Client *TaikoL1ClientSession) GetStateVariables() (TaikoDataSlotA, TaikoDataSlotB, error) { + return _TaikoL1Client.Contract.GetStateVariables(&_TaikoL1Client.CallOpts) +} + +// GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. +// +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint8,uint16,uint32,uint64)) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetStateVariables() (TaikoDataSlotA, TaikoDataSlotB, error) { + return _TaikoL1Client.Contract.GetStateVariables(&_TaikoL1Client.CallOpts) +} + +// GetTransition is a free data retrieval call binding the contract method 0x563479a5. +// +// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) +func (_TaikoL1Client *TaikoL1ClientCaller) GetTransition(opts *bind.CallOpts, _blockId uint64, _tid uint32) (TaikoDataTransitionState, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getTransition", _blockId, _tid) + + if err != nil { + return *new(TaikoDataTransitionState), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataTransitionState)).(*TaikoDataTransitionState) + + return out0, err + +} + +// GetTransition is a free data retrieval call binding the contract method 0x563479a5. +// +// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) +func (_TaikoL1Client *TaikoL1ClientSession) GetTransition(_blockId uint64, _tid uint32) (TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransition(&_TaikoL1Client.CallOpts, _blockId, _tid) +} + +// GetTransition is a free data retrieval call binding the contract method 0x563479a5. +// +// Solidity: function getTransition(uint64 _blockId, uint32 _tid) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransition(_blockId uint64, _tid uint32) (TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransition(&_TaikoL1Client.CallOpts, _blockId, _tid) +} + +// GetTransition0 is a free data retrieval call binding the contract method 0xfd257e29. +// +// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) +func (_TaikoL1Client *TaikoL1ClientCaller) GetTransition0(opts *bind.CallOpts, _blockId uint64, _parentHash [32]byte) (TaikoDataTransitionState, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getTransition0", _blockId, _parentHash) + + if err != nil { + return *new(TaikoDataTransitionState), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataTransitionState)).(*TaikoDataTransitionState) + + return out0, err + +} + +// GetTransition0 is a free data retrieval call binding the contract method 0xfd257e29. +// +// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) +func (_TaikoL1Client *TaikoL1ClientSession) GetTransition0(_blockId uint64, _parentHash [32]byte) (TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransition0(&_TaikoL1Client.CallOpts, _blockId, _parentHash) +} + +// GetTransition0 is a free data retrieval call binding the contract method 0xfd257e29. +// +// Solidity: function getTransition(uint64 _blockId, bytes32 _parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8)) +func (_TaikoL1Client *TaikoL1ClientCallerSession) GetTransition0(_blockId uint64, _parentHash [32]byte) (TaikoDataTransitionState, error) { + return _TaikoL1Client.Contract.GetTransition0(&_TaikoL1Client.CallOpts, _blockId, _parentHash) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoL1Client *TaikoL1ClientCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoL1Client *TaikoL1ClientSession) InNonReentrant() (bool, error) { + return _TaikoL1Client.Contract.InNonReentrant(&_TaikoL1Client.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoL1Client *TaikoL1ClientCallerSession) InNonReentrant() (bool, error) { + return _TaikoL1Client.Contract.InNonReentrant(&_TaikoL1Client.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoL1Client *TaikoL1ClientCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoL1Client *TaikoL1ClientSession) LastUnpausedAt() (uint64, error) { + return _TaikoL1Client.Contract.LastUnpausedAt(&_TaikoL1Client.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoL1Client *TaikoL1ClientCallerSession) LastUnpausedAt() (uint64, error) { + return _TaikoL1Client.Contract.LastUnpausedAt(&_TaikoL1Client.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoL1Client *TaikoL1ClientCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoL1Client *TaikoL1ClientSession) Owner() (common.Address, error) { + return _TaikoL1Client.Contract.Owner(&_TaikoL1Client.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoL1Client *TaikoL1ClientCallerSession) Owner() (common.Address, error) { + return _TaikoL1Client.Contract.Owner(&_TaikoL1Client.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1Client *TaikoL1ClientCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1Client *TaikoL1ClientSession) Paused() (bool, error) { + return _TaikoL1Client.Contract.Paused(&_TaikoL1Client.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1Client *TaikoL1ClientCallerSession) Paused() (bool, error) { + return _TaikoL1Client.Contract.Paused(&_TaikoL1Client.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1Client *TaikoL1ClientCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1Client *TaikoL1ClientSession) PendingOwner() (common.Address, error) { + return _TaikoL1Client.Contract.PendingOwner(&_TaikoL1Client.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1Client *TaikoL1ClientCallerSession) PendingOwner() (common.Address, error) { + return _TaikoL1Client.Contract.PendingOwner(&_TaikoL1Client.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoL1Client *TaikoL1ClientCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoL1Client *TaikoL1ClientSession) ProxiableUUID() ([32]byte, error) { + return _TaikoL1Client.Contract.ProxiableUUID(&_TaikoL1Client.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoL1Client *TaikoL1ClientCallerSession) ProxiableUUID() ([32]byte, error) { + return _TaikoL1Client.Contract.ProxiableUUID(&_TaikoL1Client.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL1Client *TaikoL1ClientCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL1Client *TaikoL1ClientSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL1Client.Contract.Resolve(&_TaikoL1Client.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL1Client *TaikoL1ClientCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL1Client.Contract.Resolve(&_TaikoL1Client.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL1Client *TaikoL1ClientCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL1Client *TaikoL1ClientSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL1Client.Contract.Resolve0(&_TaikoL1Client.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL1Client *TaikoL1ClientCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL1Client.Contract.Resolve0(&_TaikoL1Client.CallOpts, _name, _allowZeroAddress) +} + +// SlotA is a free data retrieval call binding the contract method 0xc7821568. +// +// Solidity: function slotA() view returns((uint64,uint64,uint64,uint64)) +func (_TaikoL1Client *TaikoL1ClientCaller) SlotA(opts *bind.CallOpts) (TaikoDataSlotA, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "slotA") + + if err != nil { + return *new(TaikoDataSlotA), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) + + return out0, err + +} + +// SlotA is a free data retrieval call binding the contract method 0xc7821568. +// +// Solidity: function slotA() view returns((uint64,uint64,uint64,uint64)) +func (_TaikoL1Client *TaikoL1ClientSession) SlotA() (TaikoDataSlotA, error) { + return _TaikoL1Client.Contract.SlotA(&_TaikoL1Client.CallOpts) +} + +// SlotA is a free data retrieval call binding the contract method 0xc7821568. +// +// Solidity: function slotA() view returns((uint64,uint64,uint64,uint64)) +func (_TaikoL1Client *TaikoL1ClientCallerSession) SlotA() (TaikoDataSlotA, error) { + return _TaikoL1Client.Contract.SlotA(&_TaikoL1Client.CallOpts) +} + +// SlotB is a free data retrieval call binding the contract method 0x19e8dce2. +// +// Solidity: function slotB() view returns((uint64,uint64,bool,uint8,uint16,uint32,uint64)) +func (_TaikoL1Client *TaikoL1ClientCaller) SlotB(opts *bind.CallOpts) (TaikoDataSlotB, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "slotB") + + if err != nil { + return *new(TaikoDataSlotB), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataSlotB)).(*TaikoDataSlotB) + + return out0, err + +} + +// SlotB is a free data retrieval call binding the contract method 0x19e8dce2. +// +// Solidity: function slotB() view returns((uint64,uint64,bool,uint8,uint16,uint32,uint64)) +func (_TaikoL1Client *TaikoL1ClientSession) SlotB() (TaikoDataSlotB, error) { + return _TaikoL1Client.Contract.SlotB(&_TaikoL1Client.CallOpts) +} + +// SlotB is a free data retrieval call binding the contract method 0x19e8dce2. +// +// Solidity: function slotB() view returns((uint64,uint64,bool,uint8,uint16,uint32,uint64)) +func (_TaikoL1Client *TaikoL1ClientCallerSession) SlotB() (TaikoDataSlotB, error) { + return _TaikoL1Client.Contract.SlotB(&_TaikoL1Client.CallOpts) +} + +// State is a free data retrieval call binding the contract method 0xc19d93fb. +// +// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientCaller) State(opts *bind.CallOpts) (struct { + Reserve1 [32]byte + SlotA TaikoDataSlotA + SlotB TaikoDataSlotB +}, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "state") + + outstruct := new(struct { + Reserve1 [32]byte + SlotA TaikoDataSlotA + SlotB TaikoDataSlotB + }) + if err != nil { + return *outstruct, err + } + + outstruct.Reserve1 = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.SlotA = *abi.ConvertType(out[1], new(TaikoDataSlotA)).(*TaikoDataSlotA) + outstruct.SlotB = *abi.ConvertType(out[2], new(TaikoDataSlotB)).(*TaikoDataSlotB) + + return *outstruct, err + +} + +// State is a free data retrieval call binding the contract method 0xc19d93fb. +// +// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientSession) State() (struct { + Reserve1 [32]byte + SlotA TaikoDataSlotA + SlotB TaikoDataSlotB +}, error) { + return _TaikoL1Client.Contract.State(&_TaikoL1Client.CallOpts) +} + +// State is a free data retrieval call binding the contract method 0xc19d93fb. +// +// Solidity: function state() view returns(bytes32 __reserve1, (uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientCallerSession) State() (struct { + Reserve1 [32]byte + SlotA TaikoDataSlotA + SlotB TaikoDataSlotB +}, error) { + return _TaikoL1Client.Contract.State(&_TaikoL1Client.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1Client *TaikoL1ClientSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL1Client.Contract.AcceptOwnership(&_TaikoL1Client.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL1Client.Contract.AcceptOwnership(&_TaikoL1Client.TransactOpts) +} + +// Init is a paid mutator transaction binding the contract method 0x29d1b62f. +// +// Solidity: function init(address _owner, address _addressManager, bytes32 _genesisBlockHash, bool _toPause) returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "init", _owner, _addressManager, _genesisBlockHash, _toPause) +} + +// Init is a paid mutator transaction binding the contract method 0x29d1b62f. +// +// Solidity: function init(address _owner, address _addressManager, bytes32 _genesisBlockHash, bool _toPause) returns() +func (_TaikoL1Client *TaikoL1ClientSession) Init(_owner common.Address, _addressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { + return _TaikoL1Client.Contract.Init(&_TaikoL1Client.TransactOpts, _owner, _addressManager, _genesisBlockHash, _toPause) +} + +// Init is a paid mutator transaction binding the contract method 0x29d1b62f. +// +// Solidity: function init(address _owner, address _addressManager, bytes32 _genesisBlockHash, bool _toPause) returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) Init(_owner common.Address, _addressManager common.Address, _genesisBlockHash [32]byte, _toPause bool) (*types.Transaction, error) { + return _TaikoL1Client.Contract.Init(&_TaikoL1Client.TransactOpts, _owner, _addressManager, _genesisBlockHash, _toPause) +} + +// Init2 is a paid mutator transaction binding the contract method 0x069489a2. +// +// Solidity: function init2() returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) Init2(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "init2") +} + +// Init2 is a paid mutator transaction binding the contract method 0x069489a2. +// +// Solidity: function init2() returns() +func (_TaikoL1Client *TaikoL1ClientSession) Init2() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Init2(&_TaikoL1Client.TransactOpts) +} + +// Init2 is a paid mutator transaction binding the contract method 0x069489a2. +// +// Solidity: function init2() returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) Init2() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Init2(&_TaikoL1Client.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL1Client *TaikoL1ClientSession) Pause() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Pause(&_TaikoL1Client.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) Pause() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Pause(&_TaikoL1Client.TransactOpts) +} + +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. +// +// Solidity: function pauseProving(bool _pause) returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) PauseProving(opts *bind.TransactOpts, _pause bool) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "pauseProving", _pause) +} + +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. +// +// Solidity: function pauseProving(bool _pause) returns() +func (_TaikoL1Client *TaikoL1ClientSession) PauseProving(_pause bool) (*types.Transaction, error) { + return _TaikoL1Client.Contract.PauseProving(&_TaikoL1Client.TransactOpts, _pause) +} + +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. +// +// Solidity: function pauseProving(bool _pause) returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) PauseProving(_pause bool) (*types.Transaction, error) { + return _TaikoL1Client.Contract.PauseProving(&_TaikoL1Client.TransactOpts, _pause) +} + +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. +// +// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta_, (address,uint96,uint64)[] deposits_) +func (_TaikoL1Client *TaikoL1ClientTransactor) ProposeBlock(opts *bind.TransactOpts, _params []byte, _txList []byte) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "proposeBlock", _params, _txList) +} + +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. +// +// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta_, (address,uint96,uint64)[] deposits_) +func (_TaikoL1Client *TaikoL1ClientSession) ProposeBlock(_params []byte, _txList []byte) (*types.Transaction, error) { + return _TaikoL1Client.Contract.ProposeBlock(&_TaikoL1Client.TransactOpts, _params, _txList) +} + +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. +// +// Solidity: function proposeBlock(bytes _params, bytes _txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta_, (address,uint96,uint64)[] deposits_) +func (_TaikoL1Client *TaikoL1ClientTransactorSession) ProposeBlock(_params []byte, _txList []byte) (*types.Transaction, error) { + return _TaikoL1Client.Contract.ProposeBlock(&_TaikoL1Client.TransactOpts, _params, _txList) +} + +// ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. +// +// Solidity: function proveBlock(uint64 _blockId, bytes _input) returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) ProveBlock(opts *bind.TransactOpts, _blockId uint64, _input []byte) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "proveBlock", _blockId, _input) +} + +// ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. +// +// Solidity: function proveBlock(uint64 _blockId, bytes _input) returns() +func (_TaikoL1Client *TaikoL1ClientSession) ProveBlock(_blockId uint64, _input []byte) (*types.Transaction, error) { + return _TaikoL1Client.Contract.ProveBlock(&_TaikoL1Client.TransactOpts, _blockId, _input) +} + +// ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. +// +// Solidity: function proveBlock(uint64 _blockId, bytes _input) returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) ProveBlock(_blockId uint64, _input []byte) (*types.Transaction, error) { + return _TaikoL1Client.Contract.ProveBlock(&_TaikoL1Client.TransactOpts, _blockId, _input) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoL1Client *TaikoL1ClientSession) RenounceOwnership() (*types.Transaction, error) { + return _TaikoL1Client.Contract.RenounceOwnership(&_TaikoL1Client.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _TaikoL1Client.Contract.RenounceOwnership(&_TaikoL1Client.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoL1Client *TaikoL1ClientSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TaikoL1Client.Contract.TransferOwnership(&_TaikoL1Client.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TaikoL1Client.Contract.TransferOwnership(&_TaikoL1Client.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1Client *TaikoL1ClientSession) Unpause() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Unpause(&_TaikoL1Client.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) Unpause() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Unpause(&_TaikoL1Client.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoL1Client *TaikoL1ClientSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TaikoL1Client.Contract.UpgradeTo(&_TaikoL1Client.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TaikoL1Client.Contract.UpgradeTo(&_TaikoL1Client.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoL1Client *TaikoL1ClientSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoL1Client.Contract.UpgradeToAndCall(&_TaikoL1Client.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoL1Client.Contract.UpgradeToAndCall(&_TaikoL1Client.TransactOpts, newImplementation, data) +} + +// VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. +// +// Solidity: function verifyBlocks(uint64 _maxBlocksToVerify) returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) VerifyBlocks(opts *bind.TransactOpts, _maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1Client.contract.Transact(opts, "verifyBlocks", _maxBlocksToVerify) +} + +// VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. +// +// Solidity: function verifyBlocks(uint64 _maxBlocksToVerify) returns() +func (_TaikoL1Client *TaikoL1ClientSession) VerifyBlocks(_maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1Client.Contract.VerifyBlocks(&_TaikoL1Client.TransactOpts, _maxBlocksToVerify) +} + +// VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. +// +// Solidity: function verifyBlocks(uint64 _maxBlocksToVerify) returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) VerifyBlocks(_maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1Client.Contract.VerifyBlocks(&_TaikoL1Client.TransactOpts, _maxBlocksToVerify) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_TaikoL1Client *TaikoL1ClientTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1Client.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_TaikoL1Client *TaikoL1ClientSession) Receive() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Receive(&_TaikoL1Client.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_TaikoL1Client *TaikoL1ClientTransactorSession) Receive() (*types.Transaction, error) { + return _TaikoL1Client.Contract.Receive(&_TaikoL1Client.TransactOpts) +} + +// TaikoL1ClientAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TaikoL1Client contract. +type TaikoL1ClientAdminChangedIterator struct { + Event *TaikoL1ClientAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientAdminChanged represents a AdminChanged event raised by the TaikoL1Client contract. +type TaikoL1ClientAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*TaikoL1ClientAdminChangedIterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &TaikoL1ClientAdminChangedIterator{contract: _TaikoL1Client.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientAdminChanged) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientAdminChanged) + if err := _TaikoL1Client.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseAdminChanged(log types.Log) (*TaikoL1ClientAdminChanged, error) { + event := new(TaikoL1ClientAdminChanged) + if err := _TaikoL1Client.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the TaikoL1Client contract. +type TaikoL1ClientBeaconUpgradedIterator struct { + Event *TaikoL1ClientBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBeaconUpgraded represents a BeaconUpgraded event raised by the TaikoL1Client contract. +type TaikoL1ClientBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*TaikoL1ClientBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBeaconUpgradedIterator{contract: _TaikoL1Client.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBeaconUpgraded) + if err := _TaikoL1Client.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBeaconUpgraded(log types.Log) (*TaikoL1ClientBeaconUpgraded, error) { + event := new(TaikoL1ClientBeaconUpgraded) + if err := _TaikoL1Client.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the TaikoL1Client contract. +type TaikoL1ClientBlockProposedIterator struct { + Event *TaikoL1ClientBlockProposed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBlockProposedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockProposed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockProposed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBlockProposedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBlockProposedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBlockProposed represents a BlockProposed event raised by the TaikoL1Client contract. +type TaikoL1ClientBlockProposed struct { + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + Meta TaikoDataBlockMetadata + DepositsProcessed []TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockProposed is a free log retrieval operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1ClientBlockProposedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBlockProposedIterator{contract: _TaikoL1Client.contract, event: "BlockProposed", logs: logs, sub: sub}, nil +} + +// WatchBlockProposed is a free log subscription operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBlockProposed) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockProposed is a log parse operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockProposed(log types.Log) (*TaikoL1ClientBlockProposed, error) { + event := new(TaikoL1ClientBlockProposed) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBlockProposed0Iterator is returned from FilterBlockProposed0 and is used to iterate over the raw logs and unpacked data for BlockProposed0 events raised by the TaikoL1Client contract. +type TaikoL1ClientBlockProposed0Iterator struct { + Event *TaikoL1ClientBlockProposed0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBlockProposed0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockProposed0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockProposed0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBlockProposed0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBlockProposed0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBlockProposed0 represents a BlockProposed0 event raised by the TaikoL1Client contract. +type TaikoL1ClientBlockProposed0 struct { + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + Meta TaikoDataBlockMetadata + DepositsProcessed []TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1ClientBlockProposed0Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBlockProposed0Iterator{contract: _TaikoL1Client.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil +} + +// WatchBlockProposed0 is a free log subscription operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBlockProposed0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposed0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockProposed0 is a log parse operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockProposed0(log types.Log) (*TaikoL1ClientBlockProposed0, error) { + event := new(TaikoL1ClientBlockProposed0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposed0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerifiedIterator struct { + Event *TaikoL1ClientBlockVerified // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBlockVerifiedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockVerified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockVerified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBlockVerifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBlockVerifiedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBlockVerified represents a BlockVerified event raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerified struct { + BlockId *big.Int + Prover common.Address + BlockHash [32]byte + StateRoot [32]byte + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockVerified is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerifiedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBlockVerifiedIterator{contract: _TaikoL1Client.contract, event: "BlockVerified", logs: logs, sub: sub}, nil +} + +// WatchBlockVerified is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBlockVerified) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockVerified is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerified(log types.Log) (*TaikoL1ClientBlockVerified, error) { + event := new(TaikoL1ClientBlockVerified) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientBlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerified0Iterator struct { + Event *TaikoL1ClientBlockVerified0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockVerified0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientBlockVerified0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientBlockVerified0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientBlockVerified0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientBlockVerified0 represents a BlockVerified0 event raised by the TaikoL1Client contract. +type TaikoL1ClientBlockVerified0 struct { + BlockId *big.Int + Prover common.Address + BlockHash [32]byte + StateRoot [32]byte + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerified0Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientBlockVerified0Iterator{contract: _TaikoL1Client.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil +} + +// WatchBlockVerified0 is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerified0, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, proverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientBlockVerified0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockVerified0 is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerified0(log types.Log) (*TaikoL1ClientBlockVerified0, error) { + event := new(TaikoL1ClientBlockVerified0) + if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1Client contract. +type TaikoL1ClientInitializedIterator struct { + Event *TaikoL1ClientInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientInitialized represents a Initialized event raised by the TaikoL1Client contract. +type TaikoL1ClientInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1ClientInitializedIterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TaikoL1ClientInitializedIterator{contract: _TaikoL1Client.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientInitialized) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientInitialized) + if err := _TaikoL1Client.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseInitialized(log types.Log) (*TaikoL1ClientInitialized, error) { + event := new(TaikoL1ClientInitialized) + if err := _TaikoL1Client.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoL1Client contract. +type TaikoL1ClientOwnershipTransferStartedIterator struct { + Event *TaikoL1ClientOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoL1Client contract. +type TaikoL1ClientOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1ClientOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientOwnershipTransferStartedIterator{contract: _TaikoL1Client.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientOwnershipTransferStarted) + if err := _TaikoL1Client.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseOwnershipTransferStarted(log types.Log) (*TaikoL1ClientOwnershipTransferStarted, error) { + event := new(TaikoL1ClientOwnershipTransferStarted) + if err := _TaikoL1Client.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1Client contract. +type TaikoL1ClientOwnershipTransferredIterator struct { + Event *TaikoL1ClientOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientOwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1Client contract. +type TaikoL1ClientOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1ClientOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientOwnershipTransferredIterator{contract: _TaikoL1Client.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientOwnershipTransferred) + if err := _TaikoL1Client.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1ClientOwnershipTransferred, error) { + event := new(TaikoL1ClientOwnershipTransferred) + if err := _TaikoL1Client.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL1Client contract. +type TaikoL1ClientPausedIterator struct { + Event *TaikoL1ClientPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientPaused represents a Paused event raised by the TaikoL1Client contract. +type TaikoL1ClientPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL1ClientPausedIterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &TaikoL1ClientPausedIterator{contract: _TaikoL1Client.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientPaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientPaused) + if err := _TaikoL1Client.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParsePaused(log types.Log) (*TaikoL1ClientPaused, error) { + event := new(TaikoL1ClientPaused) + if err := _TaikoL1Client.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientProvingPausedIterator is returned from FilterProvingPaused and is used to iterate over the raw logs and unpacked data for ProvingPaused events raised by the TaikoL1Client contract. +type TaikoL1ClientProvingPausedIterator struct { + Event *TaikoL1ClientProvingPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientProvingPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientProvingPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientProvingPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientProvingPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientProvingPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientProvingPaused represents a ProvingPaused event raised by the TaikoL1Client contract. +type TaikoL1ClientProvingPaused struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProvingPaused is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterProvingPaused(opts *bind.FilterOpts) (*TaikoL1ClientProvingPausedIterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "ProvingPaused") + if err != nil { + return nil, err + } + return &TaikoL1ClientProvingPausedIterator{contract: _TaikoL1Client.contract, event: "ProvingPaused", logs: logs, sub: sub}, nil +} + +// WatchProvingPaused is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchProvingPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientProvingPaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "ProvingPaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientProvingPaused) + if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProvingPaused is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseProvingPaused(log types.Log) (*TaikoL1ClientProvingPaused, error) { + event := new(TaikoL1ClientProvingPaused) + if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientProvingPaused0Iterator is returned from FilterProvingPaused0 and is used to iterate over the raw logs and unpacked data for ProvingPaused0 events raised by the TaikoL1Client contract. +type TaikoL1ClientProvingPaused0Iterator struct { + Event *TaikoL1ClientProvingPaused0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientProvingPaused0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientProvingPaused0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientProvingPaused0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientProvingPaused0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientProvingPaused0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientProvingPaused0 represents a ProvingPaused0 event raised by the TaikoL1Client contract. +type TaikoL1ClientProvingPaused0 struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterProvingPaused0 is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterProvingPaused0(opts *bind.FilterOpts) (*TaikoL1ClientProvingPaused0Iterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "ProvingPaused0") + if err != nil { + return nil, err + } + return &TaikoL1ClientProvingPaused0Iterator{contract: _TaikoL1Client.contract, event: "ProvingPaused0", logs: logs, sub: sub}, nil +} + +// WatchProvingPaused0 is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchProvingPaused0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientProvingPaused0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "ProvingPaused0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientProvingPaused0) + if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseProvingPaused0 is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. +// +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseProvingPaused0(log types.Log) (*TaikoL1ClientProvingPaused0, error) { + event := new(TaikoL1ClientProvingPaused0) + if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientStateVariablesUpdatedIterator is returned from FilterStateVariablesUpdated and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated events raised by the TaikoL1Client contract. +type TaikoL1ClientStateVariablesUpdatedIterator struct { + Event *TaikoL1ClientStateVariablesUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientStateVariablesUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientStateVariablesUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientStateVariablesUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientStateVariablesUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientStateVariablesUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientStateVariablesUpdated represents a StateVariablesUpdated event raised by the TaikoL1Client contract. +type TaikoL1ClientStateVariablesUpdated struct { + SlotB TaikoDataSlotB + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStateVariablesUpdated is a free log retrieval operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterStateVariablesUpdated(opts *bind.FilterOpts) (*TaikoL1ClientStateVariablesUpdatedIterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "StateVariablesUpdated") + if err != nil { + return nil, err + } + return &TaikoL1ClientStateVariablesUpdatedIterator{contract: _TaikoL1Client.contract, event: "StateVariablesUpdated", logs: logs, sub: sub}, nil +} + +// WatchStateVariablesUpdated is a free log subscription operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchStateVariablesUpdated(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientStateVariablesUpdated) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "StateVariablesUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientStateVariablesUpdated) + if err := _TaikoL1Client.contract.UnpackLog(event, "StateVariablesUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStateVariablesUpdated is a log parse operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseStateVariablesUpdated(log types.Log) (*TaikoL1ClientStateVariablesUpdated, error) { + event := new(TaikoL1ClientStateVariablesUpdated) + if err := _TaikoL1Client.contract.UnpackLog(event, "StateVariablesUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientStateVariablesUpdated0Iterator is returned from FilterStateVariablesUpdated0 and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated0 events raised by the TaikoL1Client contract. +type TaikoL1ClientStateVariablesUpdated0Iterator struct { + Event *TaikoL1ClientStateVariablesUpdated0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientStateVariablesUpdated0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientStateVariablesUpdated0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientStateVariablesUpdated0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientStateVariablesUpdated0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientStateVariablesUpdated0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientStateVariablesUpdated0 represents a StateVariablesUpdated0 event raised by the TaikoL1Client contract. +type TaikoL1ClientStateVariablesUpdated0 struct { + SlotB TaikoDataSlotB + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStateVariablesUpdated0 is a free log retrieval operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterStateVariablesUpdated0(opts *bind.FilterOpts) (*TaikoL1ClientStateVariablesUpdated0Iterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "StateVariablesUpdated0") + if err != nil { + return nil, err + } + return &TaikoL1ClientStateVariablesUpdated0Iterator{contract: _TaikoL1Client.contract, event: "StateVariablesUpdated0", logs: logs, sub: sub}, nil +} + +// WatchStateVariablesUpdated0 is a free log subscription operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchStateVariablesUpdated0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientStateVariablesUpdated0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "StateVariablesUpdated0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientStateVariablesUpdated0) + if err := _TaikoL1Client.contract.UnpackLog(event, "StateVariablesUpdated0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStateVariablesUpdated0 is a log parse operation binding the contract event 0xdf66aee38ea9fe523cfd238705d455a354305a646748dbb931898b51cee4727b. +// +// Solidity: event StateVariablesUpdated((uint64,uint64,bool,uint8,uint16,uint32,uint64) slotB) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseStateVariablesUpdated0(log types.Log) (*TaikoL1ClientStateVariablesUpdated0, error) { + event := new(TaikoL1ClientStateVariablesUpdated0) + if err := _TaikoL1Client.contract.UnpackLog(event, "StateVariablesUpdated0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientTransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionContestedIterator struct { + Event *TaikoL1ClientTransitionContested // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientTransitionContestedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionContested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionContested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientTransitionContestedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientTransitionContestedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientTransitionContested represents a TransitionContested event raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionContested struct { + BlockId *big.Int + Tran TaikoDataTransition + Contester common.Address + ContestBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionContested is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterTransitionContested(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientTransitionContestedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "TransitionContested", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientTransitionContestedIterator{contract: _TaikoL1Client.contract, event: "TransitionContested", logs: logs, sub: sub}, nil +} + +// WatchTransitionContested is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchTransitionContested(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientTransitionContested, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "TransitionContested", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientTransitionContested) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionContested", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionContested is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionContested(log types.Log) (*TaikoL1ClientTransitionContested, error) { + event := new(TaikoL1ClientTransitionContested) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionContested", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientTransitionContested0Iterator is returned from FilterTransitionContested0 and is used to iterate over the raw logs and unpacked data for TransitionContested0 events raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionContested0Iterator struct { + Event *TaikoL1ClientTransitionContested0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientTransitionContested0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionContested0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionContested0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientTransitionContested0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientTransitionContested0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientTransitionContested0 represents a TransitionContested0 event raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionContested0 struct { + BlockId *big.Int + Tran TaikoDataTransition + Contester common.Address + ContestBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterTransitionContested0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientTransitionContested0Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "TransitionContested0", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientTransitionContested0Iterator{contract: _TaikoL1Client.contract, event: "TransitionContested0", logs: logs, sub: sub}, nil +} + +// WatchTransitionContested0 is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchTransitionContested0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientTransitionContested0, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "TransitionContested0", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientTransitionContested0) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionContested0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionContested0 is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. +// +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionContested0(log types.Log) (*TaikoL1ClientTransitionContested0, error) { + event := new(TaikoL1ClientTransitionContested0) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionContested0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientTransitionProvedIterator is returned from FilterTransitionProved and is used to iterate over the raw logs and unpacked data for TransitionProved events raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionProvedIterator struct { + Event *TaikoL1ClientTransitionProved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientTransitionProvedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionProved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionProved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientTransitionProvedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientTransitionProvedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientTransitionProved represents a TransitionProved event raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionProved struct { + BlockId *big.Int + Tran TaikoDataTransition + Prover common.Address + ValidityBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionProved is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterTransitionProved(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientTransitionProvedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "TransitionProved", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientTransitionProvedIterator{contract: _TaikoL1Client.contract, event: "TransitionProved", logs: logs, sub: sub}, nil +} + +// WatchTransitionProved is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchTransitionProved(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientTransitionProved, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "TransitionProved", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientTransitionProved) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionProved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionProved is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionProved(log types.Log) (*TaikoL1ClientTransitionProved, error) { + event := new(TaikoL1ClientTransitionProved) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionProved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientTransitionProved0Iterator is returned from FilterTransitionProved0 and is used to iterate over the raw logs and unpacked data for TransitionProved0 events raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionProved0Iterator struct { + Event *TaikoL1ClientTransitionProved0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientTransitionProved0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionProved0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientTransitionProved0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientTransitionProved0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientTransitionProved0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientTransitionProved0 represents a TransitionProved0 event raised by the TaikoL1Client contract. +type TaikoL1ClientTransitionProved0 struct { + BlockId *big.Int + Tran TaikoDataTransition + Prover common.Address + ValidityBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterTransitionProved0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientTransitionProved0Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "TransitionProved0", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientTransitionProved0Iterator{contract: _TaikoL1Client.contract, event: "TransitionProved0", logs: logs, sub: sub}, nil +} + +// WatchTransitionProved0 is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchTransitionProved0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientTransitionProved0, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "TransitionProved0", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientTransitionProved0) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionProved0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionProved0 is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. +// +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionProved0(log types.Log) (*TaikoL1ClientTransitionProved0, error) { + event := new(TaikoL1ClientTransitionProved0) + if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionProved0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoL1Client contract. +type TaikoL1ClientUnpausedIterator struct { + Event *TaikoL1ClientUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientUnpaused represents a Unpaused event raised by the TaikoL1Client contract. +type TaikoL1ClientUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterUnpaused(opts *bind.FilterOpts) (*TaikoL1ClientUnpausedIterator, error) { + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TaikoL1ClientUnpausedIterator{contract: _TaikoL1Client.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientUnpaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientUnpaused) + if err := _TaikoL1Client.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseUnpaused(log types.Log) (*TaikoL1ClientUnpaused, error) { + event := new(TaikoL1ClientUnpaused) + if err := _TaikoL1Client.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1ClientUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the TaikoL1Client contract. +type TaikoL1ClientUpgradedIterator struct { + Event *TaikoL1ClientUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1ClientUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1ClientUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1ClientUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1ClientUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1ClientUpgraded represents a Upgraded event raised by the TaikoL1Client contract. +type TaikoL1ClientUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoL1Client *TaikoL1ClientFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*TaikoL1ClientUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &TaikoL1ClientUpgradedIterator{contract: _TaikoL1Client.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoL1Client *TaikoL1ClientFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1ClientUpgraded) + if err := _TaikoL1Client.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoL1Client *TaikoL1ClientFilterer) ParseUpgraded(log types.Log) (*TaikoL1ClientUpgraded, error) { + event := new(TaikoL1ClientUpgraded) + if err := _TaikoL1Client.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_taiko_l2.go b/packages/taiko-client/bindings/gen_taiko_l2.go new file mode 100644 index 00000000000..6d051ce2a4b --- /dev/null +++ b/packages/taiko-client/bindings/gen_taiko_l2.go @@ -0,0 +1,2266 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// LibL2ConfigConfig is an auto generated low-level Go binding around an user-defined struct. +type LibL2ConfigConfig struct { + GasTargetPerL1Block uint32 + BasefeeAdjustmentQuotient uint8 +} + +// TaikoL2ClientMetaData contains all meta data concerning the TaikoL2Client contract. +var TaikoL2ClientMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"anchor\",\"inputs\":[{\"name\":\"_l1BlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1StateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasExcess\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBasefee\",\"inputs\":[{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"basefee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockHash\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structLibL2Config.Config\",\"components\":[{\"name\":\"gasTargetPerL1Block\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_l1ChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_gasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"l1ChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"l2Hashes\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"publicInputHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"skipFeeCheck\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Anchored\",\"inputs\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"gasExcess\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EIP1559_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_BASEFEE_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L1_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L2_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_SENDER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Overflow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// TaikoL2ClientABI is the input ABI used to generate the binding from. +// Deprecated: Use TaikoL2ClientMetaData.ABI instead. +var TaikoL2ClientABI = TaikoL2ClientMetaData.ABI + +// TaikoL2Client is an auto generated Go binding around an Ethereum contract. +type TaikoL2Client struct { + TaikoL2ClientCaller // Read-only binding to the contract + TaikoL2ClientTransactor // Write-only binding to the contract + TaikoL2ClientFilterer // Log filterer for contract events +} + +// TaikoL2ClientCaller is an auto generated read-only Go binding around an Ethereum contract. +type TaikoL2ClientCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoL2ClientTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TaikoL2ClientTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoL2ClientFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TaikoL2ClientFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoL2ClientSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TaikoL2ClientSession struct { + Contract *TaikoL2Client // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TaikoL2ClientCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TaikoL2ClientCallerSession struct { + Contract *TaikoL2ClientCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TaikoL2ClientTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TaikoL2ClientTransactorSession struct { + Contract *TaikoL2ClientTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TaikoL2ClientRaw is an auto generated low-level Go binding around an Ethereum contract. +type TaikoL2ClientRaw struct { + Contract *TaikoL2Client // Generic contract binding to access the raw methods on +} + +// TaikoL2ClientCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TaikoL2ClientCallerRaw struct { + Contract *TaikoL2ClientCaller // Generic read-only contract binding to access the raw methods on +} + +// TaikoL2ClientTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TaikoL2ClientTransactorRaw struct { + Contract *TaikoL2ClientTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTaikoL2Client creates a new instance of TaikoL2Client, bound to a specific deployed contract. +func NewTaikoL2Client(address common.Address, backend bind.ContractBackend) (*TaikoL2Client, error) { + contract, err := bindTaikoL2Client(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TaikoL2Client{TaikoL2ClientCaller: TaikoL2ClientCaller{contract: contract}, TaikoL2ClientTransactor: TaikoL2ClientTransactor{contract: contract}, TaikoL2ClientFilterer: TaikoL2ClientFilterer{contract: contract}}, nil +} + +// NewTaikoL2ClientCaller creates a new read-only instance of TaikoL2Client, bound to a specific deployed contract. +func NewTaikoL2ClientCaller(address common.Address, caller bind.ContractCaller) (*TaikoL2ClientCaller, error) { + contract, err := bindTaikoL2Client(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TaikoL2ClientCaller{contract: contract}, nil +} + +// NewTaikoL2ClientTransactor creates a new write-only instance of TaikoL2Client, bound to a specific deployed contract. +func NewTaikoL2ClientTransactor(address common.Address, transactor bind.ContractTransactor) (*TaikoL2ClientTransactor, error) { + contract, err := bindTaikoL2Client(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TaikoL2ClientTransactor{contract: contract}, nil +} + +// NewTaikoL2ClientFilterer creates a new log filterer instance of TaikoL2Client, bound to a specific deployed contract. +func NewTaikoL2ClientFilterer(address common.Address, filterer bind.ContractFilterer) (*TaikoL2ClientFilterer, error) { + contract, err := bindTaikoL2Client(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TaikoL2ClientFilterer{contract: contract}, nil +} + +// bindTaikoL2Client binds a generic wrapper to an already deployed contract. +func bindTaikoL2Client(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TaikoL2ClientMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TaikoL2Client *TaikoL2ClientRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TaikoL2Client.Contract.TaikoL2ClientCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TaikoL2Client *TaikoL2ClientRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2Client.Contract.TaikoL2ClientTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TaikoL2Client *TaikoL2ClientRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TaikoL2Client.Contract.TaikoL2ClientTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TaikoL2Client *TaikoL2ClientCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TaikoL2Client.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TaikoL2Client *TaikoL2ClientTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2Client.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TaikoL2Client *TaikoL2ClientTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TaikoL2Client.Contract.contract.Transact(opts, method, params...) +} + +// GOLDENTOUCHADDRESS is a free data retrieval call binding the contract method 0x9ee512f2. +// +// Solidity: function GOLDEN_TOUCH_ADDRESS() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCaller) GOLDENTOUCHADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "GOLDEN_TOUCH_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GOLDENTOUCHADDRESS is a free data retrieval call binding the contract method 0x9ee512f2. +// +// Solidity: function GOLDEN_TOUCH_ADDRESS() view returns(address) +func (_TaikoL2Client *TaikoL2ClientSession) GOLDENTOUCHADDRESS() (common.Address, error) { + return _TaikoL2Client.Contract.GOLDENTOUCHADDRESS(&_TaikoL2Client.CallOpts) +} + +// GOLDENTOUCHADDRESS is a free data retrieval call binding the contract method 0x9ee512f2. +// +// Solidity: function GOLDEN_TOUCH_ADDRESS() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCallerSession) GOLDENTOUCHADDRESS() (common.Address, error) { + return _TaikoL2Client.Contract.GOLDENTOUCHADDRESS(&_TaikoL2Client.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoL2Client *TaikoL2ClientSession) AddressManager() (common.Address, error) { + return _TaikoL2Client.Contract.AddressManager(&_TaikoL2Client.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCallerSession) AddressManager() (common.Address, error) { + return _TaikoL2Client.Contract.AddressManager(&_TaikoL2Client.CallOpts) +} + +// GasExcess is a free data retrieval call binding the contract method 0xf535bd56. +// +// Solidity: function gasExcess() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCaller) GasExcess(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "gasExcess") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GasExcess is a free data retrieval call binding the contract method 0xf535bd56. +// +// Solidity: function gasExcess() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientSession) GasExcess() (uint64, error) { + return _TaikoL2Client.Contract.GasExcess(&_TaikoL2Client.CallOpts) +} + +// GasExcess is a free data retrieval call binding the contract method 0xf535bd56. +// +// Solidity: function gasExcess() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCallerSession) GasExcess() (uint64, error) { + return _TaikoL2Client.Contract.GasExcess(&_TaikoL2Client.CallOpts) +} + +// GetBasefee is a free data retrieval call binding the contract method 0xa7e022d1. +// +// Solidity: function getBasefee(uint64 _l1BlockId, uint32 _parentGasUsed) view returns(uint256 basefee_, uint64 gasExcess_) +func (_TaikoL2Client *TaikoL2ClientCaller) GetBasefee(opts *bind.CallOpts, _l1BlockId uint64, _parentGasUsed uint32) (struct { + Basefee *big.Int + GasExcess uint64 +}, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "getBasefee", _l1BlockId, _parentGasUsed) + + outstruct := new(struct { + Basefee *big.Int + GasExcess uint64 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Basefee = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.GasExcess = *abi.ConvertType(out[1], new(uint64)).(*uint64) + + return *outstruct, err + +} + +// GetBasefee is a free data retrieval call binding the contract method 0xa7e022d1. +// +// Solidity: function getBasefee(uint64 _l1BlockId, uint32 _parentGasUsed) view returns(uint256 basefee_, uint64 gasExcess_) +func (_TaikoL2Client *TaikoL2ClientSession) GetBasefee(_l1BlockId uint64, _parentGasUsed uint32) (struct { + Basefee *big.Int + GasExcess uint64 +}, error) { + return _TaikoL2Client.Contract.GetBasefee(&_TaikoL2Client.CallOpts, _l1BlockId, _parentGasUsed) +} + +// GetBasefee is a free data retrieval call binding the contract method 0xa7e022d1. +// +// Solidity: function getBasefee(uint64 _l1BlockId, uint32 _parentGasUsed) view returns(uint256 basefee_, uint64 gasExcess_) +func (_TaikoL2Client *TaikoL2ClientCallerSession) GetBasefee(_l1BlockId uint64, _parentGasUsed uint32) (struct { + Basefee *big.Int + GasExcess uint64 +}, error) { + return _TaikoL2Client.Contract.GetBasefee(&_TaikoL2Client.CallOpts, _l1BlockId, _parentGasUsed) +} + +// GetBlockHash is a free data retrieval call binding the contract method 0x23ac7136. +// +// Solidity: function getBlockHash(uint64 _blockId) view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientCaller) GetBlockHash(opts *bind.CallOpts, _blockId uint64) ([32]byte, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "getBlockHash", _blockId) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockHash is a free data retrieval call binding the contract method 0x23ac7136. +// +// Solidity: function getBlockHash(uint64 _blockId) view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientSession) GetBlockHash(_blockId uint64) ([32]byte, error) { + return _TaikoL2Client.Contract.GetBlockHash(&_TaikoL2Client.CallOpts, _blockId) +} + +// GetBlockHash is a free data retrieval call binding the contract method 0x23ac7136. +// +// Solidity: function getBlockHash(uint64 _blockId) view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientCallerSession) GetBlockHash(_blockId uint64) ([32]byte, error) { + return _TaikoL2Client.Contract.GetBlockHash(&_TaikoL2Client.CallOpts, _blockId) +} + +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// +// Solidity: function getConfig() view returns((uint32,uint8)) +func (_TaikoL2Client *TaikoL2ClientCaller) GetConfig(opts *bind.CallOpts) (LibL2ConfigConfig, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "getConfig") + + if err != nil { + return *new(LibL2ConfigConfig), err + } + + out0 := *abi.ConvertType(out[0], new(LibL2ConfigConfig)).(*LibL2ConfigConfig) + + return out0, err + +} + +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// +// Solidity: function getConfig() view returns((uint32,uint8)) +func (_TaikoL2Client *TaikoL2ClientSession) GetConfig() (LibL2ConfigConfig, error) { + return _TaikoL2Client.Contract.GetConfig(&_TaikoL2Client.CallOpts) +} + +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. +// +// Solidity: function getConfig() view returns((uint32,uint8)) +func (_TaikoL2Client *TaikoL2ClientCallerSession) GetConfig() (LibL2ConfigConfig, error) { + return _TaikoL2Client.Contract.GetConfig(&_TaikoL2Client.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoL2Client *TaikoL2ClientCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoL2Client *TaikoL2ClientSession) InNonReentrant() (bool, error) { + return _TaikoL2Client.Contract.InNonReentrant(&_TaikoL2Client.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoL2Client *TaikoL2ClientCallerSession) InNonReentrant() (bool, error) { + return _TaikoL2Client.Contract.InNonReentrant(&_TaikoL2Client.CallOpts) +} + +// L1ChainId is a free data retrieval call binding the contract method 0x12622e5b. +// +// Solidity: function l1ChainId() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCaller) L1ChainId(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "l1ChainId") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// L1ChainId is a free data retrieval call binding the contract method 0x12622e5b. +// +// Solidity: function l1ChainId() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientSession) L1ChainId() (uint64, error) { + return _TaikoL2Client.Contract.L1ChainId(&_TaikoL2Client.CallOpts) +} + +// L1ChainId is a free data retrieval call binding the contract method 0x12622e5b. +// +// Solidity: function l1ChainId() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCallerSession) L1ChainId() (uint64, error) { + return _TaikoL2Client.Contract.L1ChainId(&_TaikoL2Client.CallOpts) +} + +// L2Hashes is a free data retrieval call binding the contract method 0x8551f41e. +// +// Solidity: function l2Hashes(uint256 blockId) view returns(bytes32 blockHash) +func (_TaikoL2Client *TaikoL2ClientCaller) L2Hashes(opts *bind.CallOpts, blockId *big.Int) ([32]byte, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "l2Hashes", blockId) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// L2Hashes is a free data retrieval call binding the contract method 0x8551f41e. +// +// Solidity: function l2Hashes(uint256 blockId) view returns(bytes32 blockHash) +func (_TaikoL2Client *TaikoL2ClientSession) L2Hashes(blockId *big.Int) ([32]byte, error) { + return _TaikoL2Client.Contract.L2Hashes(&_TaikoL2Client.CallOpts, blockId) +} + +// L2Hashes is a free data retrieval call binding the contract method 0x8551f41e. +// +// Solidity: function l2Hashes(uint256 blockId) view returns(bytes32 blockHash) +func (_TaikoL2Client *TaikoL2ClientCallerSession) L2Hashes(blockId *big.Int) ([32]byte, error) { + return _TaikoL2Client.Contract.L2Hashes(&_TaikoL2Client.CallOpts, blockId) +} + +// LastSyncedBlock is a free data retrieval call binding the contract method 0x33d5ac9b. +// +// Solidity: function lastSyncedBlock() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCaller) LastSyncedBlock(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "lastSyncedBlock") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastSyncedBlock is a free data retrieval call binding the contract method 0x33d5ac9b. +// +// Solidity: function lastSyncedBlock() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientSession) LastSyncedBlock() (uint64, error) { + return _TaikoL2Client.Contract.LastSyncedBlock(&_TaikoL2Client.CallOpts) +} + +// LastSyncedBlock is a free data retrieval call binding the contract method 0x33d5ac9b. +// +// Solidity: function lastSyncedBlock() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCallerSession) LastSyncedBlock() (uint64, error) { + return _TaikoL2Client.Contract.LastSyncedBlock(&_TaikoL2Client.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientSession) LastUnpausedAt() (uint64, error) { + return _TaikoL2Client.Contract.LastUnpausedAt(&_TaikoL2Client.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoL2Client *TaikoL2ClientCallerSession) LastUnpausedAt() (uint64, error) { + return _TaikoL2Client.Contract.LastUnpausedAt(&_TaikoL2Client.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoL2Client *TaikoL2ClientSession) Owner() (common.Address, error) { + return _TaikoL2Client.Contract.Owner(&_TaikoL2Client.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCallerSession) Owner() (common.Address, error) { + return _TaikoL2Client.Contract.Owner(&_TaikoL2Client.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL2Client *TaikoL2ClientCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL2Client *TaikoL2ClientSession) Paused() (bool, error) { + return _TaikoL2Client.Contract.Paused(&_TaikoL2Client.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL2Client *TaikoL2ClientCallerSession) Paused() (bool, error) { + return _TaikoL2Client.Contract.Paused(&_TaikoL2Client.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL2Client *TaikoL2ClientSession) PendingOwner() (common.Address, error) { + return _TaikoL2Client.Contract.PendingOwner(&_TaikoL2Client.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL2Client *TaikoL2ClientCallerSession) PendingOwner() (common.Address, error) { + return _TaikoL2Client.Contract.PendingOwner(&_TaikoL2Client.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientSession) ProxiableUUID() ([32]byte, error) { + return _TaikoL2Client.Contract.ProxiableUUID(&_TaikoL2Client.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientCallerSession) ProxiableUUID() ([32]byte, error) { + return _TaikoL2Client.Contract.ProxiableUUID(&_TaikoL2Client.CallOpts) +} + +// PublicInputHash is a free data retrieval call binding the contract method 0xdac5df78. +// +// Solidity: function publicInputHash() view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientCaller) PublicInputHash(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "publicInputHash") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PublicInputHash is a free data retrieval call binding the contract method 0xdac5df78. +// +// Solidity: function publicInputHash() view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientSession) PublicInputHash() ([32]byte, error) { + return _TaikoL2Client.Contract.PublicInputHash(&_TaikoL2Client.CallOpts) +} + +// PublicInputHash is a free data retrieval call binding the contract method 0xdac5df78. +// +// Solidity: function publicInputHash() view returns(bytes32) +func (_TaikoL2Client *TaikoL2ClientCallerSession) PublicInputHash() ([32]byte, error) { + return _TaikoL2Client.Contract.PublicInputHash(&_TaikoL2Client.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL2Client *TaikoL2ClientCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL2Client *TaikoL2ClientSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL2Client.Contract.Resolve(&_TaikoL2Client.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL2Client *TaikoL2ClientCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL2Client.Contract.Resolve(&_TaikoL2Client.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL2Client *TaikoL2ClientCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL2Client *TaikoL2ClientSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL2Client.Contract.Resolve0(&_TaikoL2Client.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoL2Client *TaikoL2ClientCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoL2Client.Contract.Resolve0(&_TaikoL2Client.CallOpts, _name, _allowZeroAddress) +} + +// SkipFeeCheck is a free data retrieval call binding the contract method 0x2f980473. +// +// Solidity: function skipFeeCheck() pure returns(bool) +func (_TaikoL2Client *TaikoL2ClientCaller) SkipFeeCheck(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL2Client.contract.Call(opts, &out, "skipFeeCheck") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SkipFeeCheck is a free data retrieval call binding the contract method 0x2f980473. +// +// Solidity: function skipFeeCheck() pure returns(bool) +func (_TaikoL2Client *TaikoL2ClientSession) SkipFeeCheck() (bool, error) { + return _TaikoL2Client.Contract.SkipFeeCheck(&_TaikoL2Client.CallOpts) +} + +// SkipFeeCheck is a free data retrieval call binding the contract method 0x2f980473. +// +// Solidity: function skipFeeCheck() pure returns(bool) +func (_TaikoL2Client *TaikoL2ClientCallerSession) SkipFeeCheck() (bool, error) { + return _TaikoL2Client.Contract.SkipFeeCheck(&_TaikoL2Client.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL2Client *TaikoL2ClientSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL2Client.Contract.AcceptOwnership(&_TaikoL2Client.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL2Client.Contract.AcceptOwnership(&_TaikoL2Client.TransactOpts) +} + +// Anchor is a paid mutator transaction binding the contract method 0xda69d3db. +// +// Solidity: function anchor(bytes32 _l1BlockHash, bytes32 _l1StateRoot, uint64 _l1BlockId, uint32 _parentGasUsed) returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) Anchor(opts *bind.TransactOpts, _l1BlockHash [32]byte, _l1StateRoot [32]byte, _l1BlockId uint64, _parentGasUsed uint32) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "anchor", _l1BlockHash, _l1StateRoot, _l1BlockId, _parentGasUsed) +} + +// Anchor is a paid mutator transaction binding the contract method 0xda69d3db. +// +// Solidity: function anchor(bytes32 _l1BlockHash, bytes32 _l1StateRoot, uint64 _l1BlockId, uint32 _parentGasUsed) returns() +func (_TaikoL2Client *TaikoL2ClientSession) Anchor(_l1BlockHash [32]byte, _l1StateRoot [32]byte, _l1BlockId uint64, _parentGasUsed uint32) (*types.Transaction, error) { + return _TaikoL2Client.Contract.Anchor(&_TaikoL2Client.TransactOpts, _l1BlockHash, _l1StateRoot, _l1BlockId, _parentGasUsed) +} + +// Anchor is a paid mutator transaction binding the contract method 0xda69d3db. +// +// Solidity: function anchor(bytes32 _l1BlockHash, bytes32 _l1StateRoot, uint64 _l1BlockId, uint32 _parentGasUsed) returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) Anchor(_l1BlockHash [32]byte, _l1StateRoot [32]byte, _l1BlockId uint64, _parentGasUsed uint32) (*types.Transaction, error) { + return _TaikoL2Client.Contract.Anchor(&_TaikoL2Client.TransactOpts, _l1BlockHash, _l1StateRoot, _l1BlockId, _parentGasUsed) +} + +// Init is a paid mutator transaction binding the contract method 0x5950f9f1. +// +// Solidity: function init(address _owner, address _addressManager, uint64 _l1ChainId, uint64 _gasExcess) returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _addressManager common.Address, _l1ChainId uint64, _gasExcess uint64) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "init", _owner, _addressManager, _l1ChainId, _gasExcess) +} + +// Init is a paid mutator transaction binding the contract method 0x5950f9f1. +// +// Solidity: function init(address _owner, address _addressManager, uint64 _l1ChainId, uint64 _gasExcess) returns() +func (_TaikoL2Client *TaikoL2ClientSession) Init(_owner common.Address, _addressManager common.Address, _l1ChainId uint64, _gasExcess uint64) (*types.Transaction, error) { + return _TaikoL2Client.Contract.Init(&_TaikoL2Client.TransactOpts, _owner, _addressManager, _l1ChainId, _gasExcess) +} + +// Init is a paid mutator transaction binding the contract method 0x5950f9f1. +// +// Solidity: function init(address _owner, address _addressManager, uint64 _l1ChainId, uint64 _gasExcess) returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) Init(_owner common.Address, _addressManager common.Address, _l1ChainId uint64, _gasExcess uint64) (*types.Transaction, error) { + return _TaikoL2Client.Contract.Init(&_TaikoL2Client.TransactOpts, _owner, _addressManager, _l1ChainId, _gasExcess) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL2Client *TaikoL2ClientSession) Pause() (*types.Transaction, error) { + return _TaikoL2Client.Contract.Pause(&_TaikoL2Client.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) Pause() (*types.Transaction, error) { + return _TaikoL2Client.Contract.Pause(&_TaikoL2Client.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoL2Client *TaikoL2ClientSession) RenounceOwnership() (*types.Transaction, error) { + return _TaikoL2Client.Contract.RenounceOwnership(&_TaikoL2Client.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _TaikoL2Client.Contract.RenounceOwnership(&_TaikoL2Client.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoL2Client *TaikoL2ClientSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TaikoL2Client.Contract.TransferOwnership(&_TaikoL2Client.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TaikoL2Client.Contract.TransferOwnership(&_TaikoL2Client.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL2Client *TaikoL2ClientSession) Unpause() (*types.Transaction, error) { + return _TaikoL2Client.Contract.Unpause(&_TaikoL2Client.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) Unpause() (*types.Transaction, error) { + return _TaikoL2Client.Contract.Unpause(&_TaikoL2Client.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoL2Client *TaikoL2ClientSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TaikoL2Client.Contract.UpgradeTo(&_TaikoL2Client.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TaikoL2Client.Contract.UpgradeTo(&_TaikoL2Client.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoL2Client *TaikoL2ClientSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoL2Client.Contract.UpgradeToAndCall(&_TaikoL2Client.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoL2Client.Contract.UpgradeToAndCall(&_TaikoL2Client.TransactOpts, newImplementation, data) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xf940e385. +// +// Solidity: function withdraw(address _token, address _to) returns() +func (_TaikoL2Client *TaikoL2ClientTransactor) Withdraw(opts *bind.TransactOpts, _token common.Address, _to common.Address) (*types.Transaction, error) { + return _TaikoL2Client.contract.Transact(opts, "withdraw", _token, _to) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xf940e385. +// +// Solidity: function withdraw(address _token, address _to) returns() +func (_TaikoL2Client *TaikoL2ClientSession) Withdraw(_token common.Address, _to common.Address) (*types.Transaction, error) { + return _TaikoL2Client.Contract.Withdraw(&_TaikoL2Client.TransactOpts, _token, _to) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xf940e385. +// +// Solidity: function withdraw(address _token, address _to) returns() +func (_TaikoL2Client *TaikoL2ClientTransactorSession) Withdraw(_token common.Address, _to common.Address) (*types.Transaction, error) { + return _TaikoL2Client.Contract.Withdraw(&_TaikoL2Client.TransactOpts, _token, _to) +} + +// TaikoL2ClientAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TaikoL2Client contract. +type TaikoL2ClientAdminChangedIterator struct { + Event *TaikoL2ClientAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientAdminChanged represents a AdminChanged event raised by the TaikoL2Client contract. +type TaikoL2ClientAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*TaikoL2ClientAdminChangedIterator, error) { + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &TaikoL2ClientAdminChangedIterator{contract: _TaikoL2Client.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientAdminChanged) (event.Subscription, error) { + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientAdminChanged) + if err := _TaikoL2Client.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseAdminChanged(log types.Log) (*TaikoL2ClientAdminChanged, error) { + event := new(TaikoL2ClientAdminChanged) + if err := _TaikoL2Client.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientAnchoredIterator is returned from FilterAnchored and is used to iterate over the raw logs and unpacked data for Anchored events raised by the TaikoL2Client contract. +type TaikoL2ClientAnchoredIterator struct { + Event *TaikoL2ClientAnchored // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientAnchoredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientAnchored) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientAnchored) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientAnchoredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientAnchoredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientAnchored represents a Anchored event raised by the TaikoL2Client contract. +type TaikoL2ClientAnchored struct { + ParentHash [32]byte + GasExcess uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAnchored is a free log retrieval operation binding the contract event 0x41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4. +// +// Solidity: event Anchored(bytes32 parentHash, uint64 gasExcess) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterAnchored(opts *bind.FilterOpts) (*TaikoL2ClientAnchoredIterator, error) { + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "Anchored") + if err != nil { + return nil, err + } + return &TaikoL2ClientAnchoredIterator{contract: _TaikoL2Client.contract, event: "Anchored", logs: logs, sub: sub}, nil +} + +// WatchAnchored is a free log subscription operation binding the contract event 0x41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4. +// +// Solidity: event Anchored(bytes32 parentHash, uint64 gasExcess) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchAnchored(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientAnchored) (event.Subscription, error) { + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "Anchored") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientAnchored) + if err := _TaikoL2Client.contract.UnpackLog(event, "Anchored", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAnchored is a log parse operation binding the contract event 0x41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4. +// +// Solidity: event Anchored(bytes32 parentHash, uint64 gasExcess) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseAnchored(log types.Log) (*TaikoL2ClientAnchored, error) { + event := new(TaikoL2ClientAnchored) + if err := _TaikoL2Client.contract.UnpackLog(event, "Anchored", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the TaikoL2Client contract. +type TaikoL2ClientBeaconUpgradedIterator struct { + Event *TaikoL2ClientBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientBeaconUpgraded represents a BeaconUpgraded event raised by the TaikoL2Client contract. +type TaikoL2ClientBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*TaikoL2ClientBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &TaikoL2ClientBeaconUpgradedIterator{contract: _TaikoL2Client.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientBeaconUpgraded) + if err := _TaikoL2Client.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseBeaconUpgraded(log types.Log) (*TaikoL2ClientBeaconUpgraded, error) { + event := new(TaikoL2ClientBeaconUpgraded) + if err := _TaikoL2Client.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL2Client contract. +type TaikoL2ClientInitializedIterator struct { + Event *TaikoL2ClientInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientInitialized represents a Initialized event raised by the TaikoL2Client contract. +type TaikoL2ClientInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL2ClientInitializedIterator, error) { + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TaikoL2ClientInitializedIterator{contract: _TaikoL2Client.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientInitialized) (event.Subscription, error) { + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientInitialized) + if err := _TaikoL2Client.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseInitialized(log types.Log) (*TaikoL2ClientInitialized, error) { + event := new(TaikoL2ClientInitialized) + if err := _TaikoL2Client.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoL2Client contract. +type TaikoL2ClientOwnershipTransferStartedIterator struct { + Event *TaikoL2ClientOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoL2Client contract. +type TaikoL2ClientOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL2ClientOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TaikoL2ClientOwnershipTransferStartedIterator{contract: _TaikoL2Client.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientOwnershipTransferStarted) + if err := _TaikoL2Client.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseOwnershipTransferStarted(log types.Log) (*TaikoL2ClientOwnershipTransferStarted, error) { + event := new(TaikoL2ClientOwnershipTransferStarted) + if err := _TaikoL2Client.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL2Client contract. +type TaikoL2ClientOwnershipTransferredIterator struct { + Event *TaikoL2ClientOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientOwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL2Client contract. +type TaikoL2ClientOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL2ClientOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TaikoL2ClientOwnershipTransferredIterator{contract: _TaikoL2Client.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientOwnershipTransferred) + if err := _TaikoL2Client.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseOwnershipTransferred(log types.Log) (*TaikoL2ClientOwnershipTransferred, error) { + event := new(TaikoL2ClientOwnershipTransferred) + if err := _TaikoL2Client.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL2Client contract. +type TaikoL2ClientPausedIterator struct { + Event *TaikoL2ClientPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientPaused represents a Paused event raised by the TaikoL2Client contract. +type TaikoL2ClientPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL2ClientPausedIterator, error) { + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &TaikoL2ClientPausedIterator{contract: _TaikoL2Client.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientPaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientPaused) + if err := _TaikoL2Client.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParsePaused(log types.Log) (*TaikoL2ClientPaused, error) { + event := new(TaikoL2ClientPaused) + if err := _TaikoL2Client.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoL2Client contract. +type TaikoL2ClientUnpausedIterator struct { + Event *TaikoL2ClientUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientUnpaused represents a Unpaused event raised by the TaikoL2Client contract. +type TaikoL2ClientUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterUnpaused(opts *bind.FilterOpts) (*TaikoL2ClientUnpausedIterator, error) { + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TaikoL2ClientUnpausedIterator{contract: _TaikoL2Client.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientUnpaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientUnpaused) + if err := _TaikoL2Client.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseUnpaused(log types.Log) (*TaikoL2ClientUnpaused, error) { + event := new(TaikoL2ClientUnpaused) + if err := _TaikoL2Client.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2ClientUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the TaikoL2Client contract. +type TaikoL2ClientUpgradedIterator struct { + Event *TaikoL2ClientUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2ClientUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2ClientUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2ClientUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2ClientUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2ClientUpgraded represents a Upgraded event raised by the TaikoL2Client contract. +type TaikoL2ClientUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoL2Client *TaikoL2ClientFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*TaikoL2ClientUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TaikoL2Client.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &TaikoL2ClientUpgradedIterator{contract: _TaikoL2Client.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoL2Client *TaikoL2ClientFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *TaikoL2ClientUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TaikoL2Client.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2ClientUpgraded) + if err := _TaikoL2Client.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoL2Client *TaikoL2ClientFilterer) ParseUpgraded(log types.Log) (*TaikoL2ClientUpgraded, error) { + event := new(TaikoL2ClientUpgraded) + if err := _TaikoL2Client.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_taiko_token.go b/packages/taiko-client/bindings/gen_taiko_token.go new file mode 100644 index 00000000000..eff022d4ba4 --- /dev/null +++ b/packages/taiko-client/bindings/gen_taiko_token.go @@ -0,0 +1,3248 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20VotesUpgradeableCheckpoint is an auto generated low-level Go binding around an user-defined struct. +type ERC20VotesUpgradeableCheckpoint struct { + FromBlock uint32 + Votes *big.Int +} + +// TaikoTokenMetaData contains all meta data concerning the TaikoToken contract. +var TaikoTokenMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// TaikoTokenABI is the input ABI used to generate the binding from. +// Deprecated: Use TaikoTokenMetaData.ABI instead. +var TaikoTokenABI = TaikoTokenMetaData.ABI + +// TaikoToken is an auto generated Go binding around an Ethereum contract. +type TaikoToken struct { + TaikoTokenCaller // Read-only binding to the contract + TaikoTokenTransactor // Write-only binding to the contract + TaikoTokenFilterer // Log filterer for contract events +} + +// TaikoTokenCaller is an auto generated read-only Go binding around an Ethereum contract. +type TaikoTokenCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoTokenTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TaikoTokenTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoTokenFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TaikoTokenFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TaikoTokenSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TaikoTokenSession struct { + Contract *TaikoToken // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TaikoTokenCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TaikoTokenCallerSession struct { + Contract *TaikoTokenCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TaikoTokenTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TaikoTokenTransactorSession struct { + Contract *TaikoTokenTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TaikoTokenRaw is an auto generated low-level Go binding around an Ethereum contract. +type TaikoTokenRaw struct { + Contract *TaikoToken // Generic contract binding to access the raw methods on +} + +// TaikoTokenCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TaikoTokenCallerRaw struct { + Contract *TaikoTokenCaller // Generic read-only contract binding to access the raw methods on +} + +// TaikoTokenTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TaikoTokenTransactorRaw struct { + Contract *TaikoTokenTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTaikoToken creates a new instance of TaikoToken, bound to a specific deployed contract. +func NewTaikoToken(address common.Address, backend bind.ContractBackend) (*TaikoToken, error) { + contract, err := bindTaikoToken(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TaikoToken{TaikoTokenCaller: TaikoTokenCaller{contract: contract}, TaikoTokenTransactor: TaikoTokenTransactor{contract: contract}, TaikoTokenFilterer: TaikoTokenFilterer{contract: contract}}, nil +} + +// NewTaikoTokenCaller creates a new read-only instance of TaikoToken, bound to a specific deployed contract. +func NewTaikoTokenCaller(address common.Address, caller bind.ContractCaller) (*TaikoTokenCaller, error) { + contract, err := bindTaikoToken(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TaikoTokenCaller{contract: contract}, nil +} + +// NewTaikoTokenTransactor creates a new write-only instance of TaikoToken, bound to a specific deployed contract. +func NewTaikoTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*TaikoTokenTransactor, error) { + contract, err := bindTaikoToken(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TaikoTokenTransactor{contract: contract}, nil +} + +// NewTaikoTokenFilterer creates a new log filterer instance of TaikoToken, bound to a specific deployed contract. +func NewTaikoTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*TaikoTokenFilterer, error) { + contract, err := bindTaikoToken(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TaikoTokenFilterer{contract: contract}, nil +} + +// bindTaikoToken binds a generic wrapper to an already deployed contract. +func bindTaikoToken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TaikoTokenMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TaikoToken *TaikoTokenRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TaikoToken.Contract.TaikoTokenCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TaikoToken *TaikoTokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoToken.Contract.TaikoTokenTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TaikoToken *TaikoTokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TaikoToken.Contract.TaikoTokenTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TaikoToken *TaikoTokenCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TaikoToken.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TaikoToken *TaikoTokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoToken.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TaikoToken *TaikoTokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TaikoToken.Contract.contract.Transact(opts, method, params...) +} + +// CLOCKMODE is a free data retrieval call binding the contract method 0x4bf5d7e9. +// +// Solidity: function CLOCK_MODE() pure returns(string) +func (_TaikoToken *TaikoTokenCaller) CLOCKMODE(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "CLOCK_MODE") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// CLOCKMODE is a free data retrieval call binding the contract method 0x4bf5d7e9. +// +// Solidity: function CLOCK_MODE() pure returns(string) +func (_TaikoToken *TaikoTokenSession) CLOCKMODE() (string, error) { + return _TaikoToken.Contract.CLOCKMODE(&_TaikoToken.CallOpts) +} + +// CLOCKMODE is a free data retrieval call binding the contract method 0x4bf5d7e9. +// +// Solidity: function CLOCK_MODE() pure returns(string) +func (_TaikoToken *TaikoTokenCallerSession) CLOCKMODE() (string, error) { + return _TaikoToken.Contract.CLOCKMODE(&_TaikoToken.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_TaikoToken *TaikoTokenCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "DOMAIN_SEPARATOR") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_TaikoToken *TaikoTokenSession) DOMAINSEPARATOR() ([32]byte, error) { + return _TaikoToken.Contract.DOMAINSEPARATOR(&_TaikoToken.CallOpts) +} + +// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515. +// +// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32) +func (_TaikoToken *TaikoTokenCallerSession) DOMAINSEPARATOR() ([32]byte, error) { + return _TaikoToken.Contract.DOMAINSEPARATOR(&_TaikoToken.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoToken *TaikoTokenCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoToken *TaikoTokenSession) AddressManager() (common.Address, error) { + return _TaikoToken.Contract.AddressManager(&_TaikoToken.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TaikoToken *TaikoTokenCallerSession) AddressManager() (common.Address, error) { + return _TaikoToken.Contract.AddressManager(&_TaikoToken.CallOpts) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_TaikoToken *TaikoTokenCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_TaikoToken *TaikoTokenSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _TaikoToken.Contract.Allowance(&_TaikoToken.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_TaikoToken *TaikoTokenCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _TaikoToken.Contract.Allowance(&_TaikoToken.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_TaikoToken *TaikoTokenCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_TaikoToken *TaikoTokenSession) BalanceOf(account common.Address) (*big.Int, error) { + return _TaikoToken.Contract.BalanceOf(&_TaikoToken.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_TaikoToken *TaikoTokenCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _TaikoToken.Contract.BalanceOf(&_TaikoToken.CallOpts, account) +} + +// Checkpoints is a free data retrieval call binding the contract method 0xf1127ed8. +// +// Solidity: function checkpoints(address account, uint32 pos) view returns((uint32,uint224)) +func (_TaikoToken *TaikoTokenCaller) Checkpoints(opts *bind.CallOpts, account common.Address, pos uint32) (ERC20VotesUpgradeableCheckpoint, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "checkpoints", account, pos) + + if err != nil { + return *new(ERC20VotesUpgradeableCheckpoint), err + } + + out0 := *abi.ConvertType(out[0], new(ERC20VotesUpgradeableCheckpoint)).(*ERC20VotesUpgradeableCheckpoint) + + return out0, err + +} + +// Checkpoints is a free data retrieval call binding the contract method 0xf1127ed8. +// +// Solidity: function checkpoints(address account, uint32 pos) view returns((uint32,uint224)) +func (_TaikoToken *TaikoTokenSession) Checkpoints(account common.Address, pos uint32) (ERC20VotesUpgradeableCheckpoint, error) { + return _TaikoToken.Contract.Checkpoints(&_TaikoToken.CallOpts, account, pos) +} + +// Checkpoints is a free data retrieval call binding the contract method 0xf1127ed8. +// +// Solidity: function checkpoints(address account, uint32 pos) view returns((uint32,uint224)) +func (_TaikoToken *TaikoTokenCallerSession) Checkpoints(account common.Address, pos uint32) (ERC20VotesUpgradeableCheckpoint, error) { + return _TaikoToken.Contract.Checkpoints(&_TaikoToken.CallOpts, account, pos) +} + +// Clock is a free data retrieval call binding the contract method 0x91ddadf4. +// +// Solidity: function clock() view returns(uint48) +func (_TaikoToken *TaikoTokenCaller) Clock(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "clock") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Clock is a free data retrieval call binding the contract method 0x91ddadf4. +// +// Solidity: function clock() view returns(uint48) +func (_TaikoToken *TaikoTokenSession) Clock() (*big.Int, error) { + return _TaikoToken.Contract.Clock(&_TaikoToken.CallOpts) +} + +// Clock is a free data retrieval call binding the contract method 0x91ddadf4. +// +// Solidity: function clock() view returns(uint48) +func (_TaikoToken *TaikoTokenCallerSession) Clock() (*big.Int, error) { + return _TaikoToken.Contract.Clock(&_TaikoToken.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_TaikoToken *TaikoTokenCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_TaikoToken *TaikoTokenSession) Decimals() (uint8, error) { + return _TaikoToken.Contract.Decimals(&_TaikoToken.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_TaikoToken *TaikoTokenCallerSession) Decimals() (uint8, error) { + return _TaikoToken.Contract.Decimals(&_TaikoToken.CallOpts) +} + +// Delegates is a free data retrieval call binding the contract method 0x587cde1e. +// +// Solidity: function delegates(address account) view returns(address) +func (_TaikoToken *TaikoTokenCaller) Delegates(opts *bind.CallOpts, account common.Address) (common.Address, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "delegates", account) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Delegates is a free data retrieval call binding the contract method 0x587cde1e. +// +// Solidity: function delegates(address account) view returns(address) +func (_TaikoToken *TaikoTokenSession) Delegates(account common.Address) (common.Address, error) { + return _TaikoToken.Contract.Delegates(&_TaikoToken.CallOpts, account) +} + +// Delegates is a free data retrieval call binding the contract method 0x587cde1e. +// +// Solidity: function delegates(address account) view returns(address) +func (_TaikoToken *TaikoTokenCallerSession) Delegates(account common.Address) (common.Address, error) { + return _TaikoToken.Contract.Delegates(&_TaikoToken.CallOpts, account) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_TaikoToken *TaikoTokenCaller) Eip712Domain(opts *bind.CallOpts) (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "eip712Domain") + + outstruct := new(struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Fields = *abi.ConvertType(out[0], new([1]byte)).(*[1]byte) + outstruct.Name = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Version = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.ChainId = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.VerifyingContract = *abi.ConvertType(out[4], new(common.Address)).(*common.Address) + outstruct.Salt = *abi.ConvertType(out[5], new([32]byte)).(*[32]byte) + outstruct.Extensions = *abi.ConvertType(out[6], new([]*big.Int)).(*[]*big.Int) + + return *outstruct, err + +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_TaikoToken *TaikoTokenSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _TaikoToken.Contract.Eip712Domain(&_TaikoToken.CallOpts) +} + +// Eip712Domain is a free data retrieval call binding the contract method 0x84b0196e. +// +// Solidity: function eip712Domain() view returns(bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) +func (_TaikoToken *TaikoTokenCallerSession) Eip712Domain() (struct { + Fields [1]byte + Name string + Version string + ChainId *big.Int + VerifyingContract common.Address + Salt [32]byte + Extensions []*big.Int +}, error) { + return _TaikoToken.Contract.Eip712Domain(&_TaikoToken.CallOpts) +} + +// GetPastTotalSupply is a free data retrieval call binding the contract method 0x8e539e8c. +// +// Solidity: function getPastTotalSupply(uint256 timepoint) view returns(uint256) +func (_TaikoToken *TaikoTokenCaller) GetPastTotalSupply(opts *bind.CallOpts, timepoint *big.Int) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "getPastTotalSupply", timepoint) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetPastTotalSupply is a free data retrieval call binding the contract method 0x8e539e8c. +// +// Solidity: function getPastTotalSupply(uint256 timepoint) view returns(uint256) +func (_TaikoToken *TaikoTokenSession) GetPastTotalSupply(timepoint *big.Int) (*big.Int, error) { + return _TaikoToken.Contract.GetPastTotalSupply(&_TaikoToken.CallOpts, timepoint) +} + +// GetPastTotalSupply is a free data retrieval call binding the contract method 0x8e539e8c. +// +// Solidity: function getPastTotalSupply(uint256 timepoint) view returns(uint256) +func (_TaikoToken *TaikoTokenCallerSession) GetPastTotalSupply(timepoint *big.Int) (*big.Int, error) { + return _TaikoToken.Contract.GetPastTotalSupply(&_TaikoToken.CallOpts, timepoint) +} + +// GetPastVotes is a free data retrieval call binding the contract method 0x3a46b1a8. +// +// Solidity: function getPastVotes(address account, uint256 timepoint) view returns(uint256) +func (_TaikoToken *TaikoTokenCaller) GetPastVotes(opts *bind.CallOpts, account common.Address, timepoint *big.Int) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "getPastVotes", account, timepoint) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetPastVotes is a free data retrieval call binding the contract method 0x3a46b1a8. +// +// Solidity: function getPastVotes(address account, uint256 timepoint) view returns(uint256) +func (_TaikoToken *TaikoTokenSession) GetPastVotes(account common.Address, timepoint *big.Int) (*big.Int, error) { + return _TaikoToken.Contract.GetPastVotes(&_TaikoToken.CallOpts, account, timepoint) +} + +// GetPastVotes is a free data retrieval call binding the contract method 0x3a46b1a8. +// +// Solidity: function getPastVotes(address account, uint256 timepoint) view returns(uint256) +func (_TaikoToken *TaikoTokenCallerSession) GetPastVotes(account common.Address, timepoint *big.Int) (*big.Int, error) { + return _TaikoToken.Contract.GetPastVotes(&_TaikoToken.CallOpts, account, timepoint) +} + +// GetVotes is a free data retrieval call binding the contract method 0x9ab24eb0. +// +// Solidity: function getVotes(address account) view returns(uint256) +func (_TaikoToken *TaikoTokenCaller) GetVotes(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "getVotes", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetVotes is a free data retrieval call binding the contract method 0x9ab24eb0. +// +// Solidity: function getVotes(address account) view returns(uint256) +func (_TaikoToken *TaikoTokenSession) GetVotes(account common.Address) (*big.Int, error) { + return _TaikoToken.Contract.GetVotes(&_TaikoToken.CallOpts, account) +} + +// GetVotes is a free data retrieval call binding the contract method 0x9ab24eb0. +// +// Solidity: function getVotes(address account) view returns(uint256) +func (_TaikoToken *TaikoTokenCallerSession) GetVotes(account common.Address) (*big.Int, error) { + return _TaikoToken.Contract.GetVotes(&_TaikoToken.CallOpts, account) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoToken *TaikoTokenCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoToken *TaikoTokenSession) InNonReentrant() (bool, error) { + return _TaikoToken.Contract.InNonReentrant(&_TaikoToken.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TaikoToken *TaikoTokenCallerSession) InNonReentrant() (bool, error) { + return _TaikoToken.Contract.InNonReentrant(&_TaikoToken.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoToken *TaikoTokenCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoToken *TaikoTokenSession) LastUnpausedAt() (uint64, error) { + return _TaikoToken.Contract.LastUnpausedAt(&_TaikoToken.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TaikoToken *TaikoTokenCallerSession) LastUnpausedAt() (uint64, error) { + return _TaikoToken.Contract.LastUnpausedAt(&_TaikoToken.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_TaikoToken *TaikoTokenCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_TaikoToken *TaikoTokenSession) Name() (string, error) { + return _TaikoToken.Contract.Name(&_TaikoToken.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_TaikoToken *TaikoTokenCallerSession) Name() (string, error) { + return _TaikoToken.Contract.Name(&_TaikoToken.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_TaikoToken *TaikoTokenCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_TaikoToken *TaikoTokenSession) Nonces(owner common.Address) (*big.Int, error) { + return _TaikoToken.Contract.Nonces(&_TaikoToken.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_TaikoToken *TaikoTokenCallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _TaikoToken.Contract.Nonces(&_TaikoToken.CallOpts, owner) +} + +// NumCheckpoints is a free data retrieval call binding the contract method 0x6fcfff45. +// +// Solidity: function numCheckpoints(address account) view returns(uint32) +func (_TaikoToken *TaikoTokenCaller) NumCheckpoints(opts *bind.CallOpts, account common.Address) (uint32, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "numCheckpoints", account) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// NumCheckpoints is a free data retrieval call binding the contract method 0x6fcfff45. +// +// Solidity: function numCheckpoints(address account) view returns(uint32) +func (_TaikoToken *TaikoTokenSession) NumCheckpoints(account common.Address) (uint32, error) { + return _TaikoToken.Contract.NumCheckpoints(&_TaikoToken.CallOpts, account) +} + +// NumCheckpoints is a free data retrieval call binding the contract method 0x6fcfff45. +// +// Solidity: function numCheckpoints(address account) view returns(uint32) +func (_TaikoToken *TaikoTokenCallerSession) NumCheckpoints(account common.Address) (uint32, error) { + return _TaikoToken.Contract.NumCheckpoints(&_TaikoToken.CallOpts, account) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoToken *TaikoTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoToken *TaikoTokenSession) Owner() (common.Address, error) { + return _TaikoToken.Contract.Owner(&_TaikoToken.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TaikoToken *TaikoTokenCallerSession) Owner() (common.Address, error) { + return _TaikoToken.Contract.Owner(&_TaikoToken.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoToken *TaikoTokenCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoToken *TaikoTokenSession) Paused() (bool, error) { + return _TaikoToken.Contract.Paused(&_TaikoToken.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoToken *TaikoTokenCallerSession) Paused() (bool, error) { + return _TaikoToken.Contract.Paused(&_TaikoToken.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoToken *TaikoTokenCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoToken *TaikoTokenSession) PendingOwner() (common.Address, error) { + return _TaikoToken.Contract.PendingOwner(&_TaikoToken.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoToken *TaikoTokenCallerSession) PendingOwner() (common.Address, error) { + return _TaikoToken.Contract.PendingOwner(&_TaikoToken.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoToken *TaikoTokenCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoToken *TaikoTokenSession) ProxiableUUID() ([32]byte, error) { + return _TaikoToken.Contract.ProxiableUUID(&_TaikoToken.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TaikoToken *TaikoTokenCallerSession) ProxiableUUID() ([32]byte, error) { + return _TaikoToken.Contract.ProxiableUUID(&_TaikoToken.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoToken *TaikoTokenCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoToken *TaikoTokenSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoToken.Contract.Resolve(&_TaikoToken.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoToken *TaikoTokenCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoToken.Contract.Resolve(&_TaikoToken.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoToken *TaikoTokenCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoToken *TaikoTokenSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoToken.Contract.Resolve0(&_TaikoToken.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TaikoToken *TaikoTokenCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TaikoToken.Contract.Resolve0(&_TaikoToken.CallOpts, _name, _allowZeroAddress) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_TaikoToken *TaikoTokenCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_TaikoToken *TaikoTokenSession) Symbol() (string, error) { + return _TaikoToken.Contract.Symbol(&_TaikoToken.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_TaikoToken *TaikoTokenCallerSession) Symbol() (string, error) { + return _TaikoToken.Contract.Symbol(&_TaikoToken.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_TaikoToken *TaikoTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TaikoToken.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_TaikoToken *TaikoTokenSession) TotalSupply() (*big.Int, error) { + return _TaikoToken.Contract.TotalSupply(&_TaikoToken.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_TaikoToken *TaikoTokenCallerSession) TotalSupply() (*big.Int, error) { + return _TaikoToken.Contract.TotalSupply(&_TaikoToken.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoToken *TaikoTokenTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoToken *TaikoTokenSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoToken.Contract.AcceptOwnership(&_TaikoToken.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoToken *TaikoTokenTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoToken.Contract.AcceptOwnership(&_TaikoToken.TransactOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.Approve(&_TaikoToken.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.Approve(&_TaikoToken.TransactOpts, spender, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_TaikoToken *TaikoTokenTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_TaikoToken *TaikoTokenSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.DecreaseAllowance(&_TaikoToken.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_TaikoToken *TaikoTokenTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.DecreaseAllowance(&_TaikoToken.TransactOpts, spender, subtractedValue) +} + +// Delegate is a paid mutator transaction binding the contract method 0x5c19a95c. +// +// Solidity: function delegate(address delegatee) returns() +func (_TaikoToken *TaikoTokenTransactor) Delegate(opts *bind.TransactOpts, delegatee common.Address) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "delegate", delegatee) +} + +// Delegate is a paid mutator transaction binding the contract method 0x5c19a95c. +// +// Solidity: function delegate(address delegatee) returns() +func (_TaikoToken *TaikoTokenSession) Delegate(delegatee common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.Delegate(&_TaikoToken.TransactOpts, delegatee) +} + +// Delegate is a paid mutator transaction binding the contract method 0x5c19a95c. +// +// Solidity: function delegate(address delegatee) returns() +func (_TaikoToken *TaikoTokenTransactorSession) Delegate(delegatee common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.Delegate(&_TaikoToken.TransactOpts, delegatee) +} + +// DelegateBySig is a paid mutator transaction binding the contract method 0xc3cda520. +// +// Solidity: function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) returns() +func (_TaikoToken *TaikoTokenTransactor) DelegateBySig(opts *bind.TransactOpts, delegatee common.Address, nonce *big.Int, expiry *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "delegateBySig", delegatee, nonce, expiry, v, r, s) +} + +// DelegateBySig is a paid mutator transaction binding the contract method 0xc3cda520. +// +// Solidity: function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) returns() +func (_TaikoToken *TaikoTokenSession) DelegateBySig(delegatee common.Address, nonce *big.Int, expiry *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _TaikoToken.Contract.DelegateBySig(&_TaikoToken.TransactOpts, delegatee, nonce, expiry, v, r, s) +} + +// DelegateBySig is a paid mutator transaction binding the contract method 0xc3cda520. +// +// Solidity: function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) returns() +func (_TaikoToken *TaikoTokenTransactorSession) DelegateBySig(delegatee common.Address, nonce *big.Int, expiry *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _TaikoToken.Contract.DelegateBySig(&_TaikoToken.TransactOpts, delegatee, nonce, expiry, v, r, s) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_TaikoToken *TaikoTokenTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_TaikoToken *TaikoTokenSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.IncreaseAllowance(&_TaikoToken.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_TaikoToken *TaikoTokenTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.IncreaseAllowance(&_TaikoToken.TransactOpts, spender, addedValue) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _recipient) returns() +func (_TaikoToken *TaikoTokenTransactor) Init(opts *bind.TransactOpts, _owner common.Address, _recipient common.Address) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "init", _owner, _recipient) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _recipient) returns() +func (_TaikoToken *TaikoTokenSession) Init(_owner common.Address, _recipient common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.Init(&_TaikoToken.TransactOpts, _owner, _recipient) +} + +// Init is a paid mutator transaction binding the contract method 0xf09a4016. +// +// Solidity: function init(address _owner, address _recipient) returns() +func (_TaikoToken *TaikoTokenTransactorSession) Init(_owner common.Address, _recipient common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.Init(&_TaikoToken.TransactOpts, _owner, _recipient) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoToken *TaikoTokenTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoToken *TaikoTokenSession) Pause() (*types.Transaction, error) { + return _TaikoToken.Contract.Pause(&_TaikoToken.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoToken *TaikoTokenTransactorSession) Pause() (*types.Transaction, error) { + return _TaikoToken.Contract.Pause(&_TaikoToken.TransactOpts) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_TaikoToken *TaikoTokenTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_TaikoToken *TaikoTokenSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _TaikoToken.Contract.Permit(&_TaikoToken.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// Permit is a paid mutator transaction binding the contract method 0xd505accf. +// +// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns() +func (_TaikoToken *TaikoTokenTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) { + return _TaikoToken.Contract.Permit(&_TaikoToken.TransactOpts, owner, spender, value, deadline, v, r, s) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoToken *TaikoTokenTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoToken *TaikoTokenSession) RenounceOwnership() (*types.Transaction, error) { + return _TaikoToken.Contract.RenounceOwnership(&_TaikoToken.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TaikoToken *TaikoTokenTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _TaikoToken.Contract.RenounceOwnership(&_TaikoToken.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.Transfer(&_TaikoToken.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.Transfer(&_TaikoToken.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.TransferFrom(&_TaikoToken.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_TaikoToken *TaikoTokenTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoToken.Contract.TransferFrom(&_TaikoToken.TransactOpts, from, to, amount) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoToken *TaikoTokenTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoToken *TaikoTokenSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.TransferOwnership(&_TaikoToken.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TaikoToken *TaikoTokenTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.TransferOwnership(&_TaikoToken.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoToken *TaikoTokenTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoToken *TaikoTokenSession) Unpause() (*types.Transaction, error) { + return _TaikoToken.Contract.Unpause(&_TaikoToken.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoToken *TaikoTokenTransactorSession) Unpause() (*types.Transaction, error) { + return _TaikoToken.Contract.Unpause(&_TaikoToken.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoToken *TaikoTokenTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoToken *TaikoTokenSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.UpgradeTo(&_TaikoToken.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TaikoToken *TaikoTokenTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TaikoToken.Contract.UpgradeTo(&_TaikoToken.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoToken *TaikoTokenTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoToken.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoToken *TaikoTokenSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoToken.Contract.UpgradeToAndCall(&_TaikoToken.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TaikoToken *TaikoTokenTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TaikoToken.Contract.UpgradeToAndCall(&_TaikoToken.TransactOpts, newImplementation, data) +} + +// TaikoTokenAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TaikoToken contract. +type TaikoTokenAdminChangedIterator struct { + Event *TaikoTokenAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenAdminChanged represents a AdminChanged event raised by the TaikoToken contract. +type TaikoTokenAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoToken *TaikoTokenFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*TaikoTokenAdminChangedIterator, error) { + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &TaikoTokenAdminChangedIterator{contract: _TaikoToken.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoToken *TaikoTokenFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *TaikoTokenAdminChanged) (event.Subscription, error) { + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenAdminChanged) + if err := _TaikoToken.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TaikoToken *TaikoTokenFilterer) ParseAdminChanged(log types.Log) (*TaikoTokenAdminChanged, error) { + event := new(TaikoTokenAdminChanged) + if err := _TaikoToken.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the TaikoToken contract. +type TaikoTokenApprovalIterator struct { + Event *TaikoTokenApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenApproval represents a Approval event raised by the TaikoToken contract. +type TaikoTokenApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_TaikoToken *TaikoTokenFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*TaikoTokenApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &TaikoTokenApprovalIterator{contract: _TaikoToken.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_TaikoToken *TaikoTokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *TaikoTokenApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenApproval) + if err := _TaikoToken.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_TaikoToken *TaikoTokenFilterer) ParseApproval(log types.Log) (*TaikoTokenApproval, error) { + event := new(TaikoTokenApproval) + if err := _TaikoToken.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the TaikoToken contract. +type TaikoTokenBeaconUpgradedIterator struct { + Event *TaikoTokenBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenBeaconUpgraded represents a BeaconUpgraded event raised by the TaikoToken contract. +type TaikoTokenBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoToken *TaikoTokenFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*TaikoTokenBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &TaikoTokenBeaconUpgradedIterator{contract: _TaikoToken.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoToken *TaikoTokenFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *TaikoTokenBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenBeaconUpgraded) + if err := _TaikoToken.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TaikoToken *TaikoTokenFilterer) ParseBeaconUpgraded(log types.Log) (*TaikoTokenBeaconUpgraded, error) { + event := new(TaikoTokenBeaconUpgraded) + if err := _TaikoToken.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenDelegateChangedIterator is returned from FilterDelegateChanged and is used to iterate over the raw logs and unpacked data for DelegateChanged events raised by the TaikoToken contract. +type TaikoTokenDelegateChangedIterator struct { + Event *TaikoTokenDelegateChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenDelegateChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenDelegateChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenDelegateChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenDelegateChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenDelegateChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenDelegateChanged represents a DelegateChanged event raised by the TaikoToken contract. +type TaikoTokenDelegateChanged struct { + Delegator common.Address + FromDelegate common.Address + ToDelegate common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegateChanged is a free log retrieval operation binding the contract event 0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f. +// +// Solidity: event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate) +func (_TaikoToken *TaikoTokenFilterer) FilterDelegateChanged(opts *bind.FilterOpts, delegator []common.Address, fromDelegate []common.Address, toDelegate []common.Address) (*TaikoTokenDelegateChangedIterator, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var fromDelegateRule []interface{} + for _, fromDelegateItem := range fromDelegate { + fromDelegateRule = append(fromDelegateRule, fromDelegateItem) + } + var toDelegateRule []interface{} + for _, toDelegateItem := range toDelegate { + toDelegateRule = append(toDelegateRule, toDelegateItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "DelegateChanged", delegatorRule, fromDelegateRule, toDelegateRule) + if err != nil { + return nil, err + } + return &TaikoTokenDelegateChangedIterator{contract: _TaikoToken.contract, event: "DelegateChanged", logs: logs, sub: sub}, nil +} + +// WatchDelegateChanged is a free log subscription operation binding the contract event 0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f. +// +// Solidity: event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate) +func (_TaikoToken *TaikoTokenFilterer) WatchDelegateChanged(opts *bind.WatchOpts, sink chan<- *TaikoTokenDelegateChanged, delegator []common.Address, fromDelegate []common.Address, toDelegate []common.Address) (event.Subscription, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var fromDelegateRule []interface{} + for _, fromDelegateItem := range fromDelegate { + fromDelegateRule = append(fromDelegateRule, fromDelegateItem) + } + var toDelegateRule []interface{} + for _, toDelegateItem := range toDelegate { + toDelegateRule = append(toDelegateRule, toDelegateItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "DelegateChanged", delegatorRule, fromDelegateRule, toDelegateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenDelegateChanged) + if err := _TaikoToken.contract.UnpackLog(event, "DelegateChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegateChanged is a log parse operation binding the contract event 0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f. +// +// Solidity: event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate) +func (_TaikoToken *TaikoTokenFilterer) ParseDelegateChanged(log types.Log) (*TaikoTokenDelegateChanged, error) { + event := new(TaikoTokenDelegateChanged) + if err := _TaikoToken.contract.UnpackLog(event, "DelegateChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenDelegateVotesChangedIterator is returned from FilterDelegateVotesChanged and is used to iterate over the raw logs and unpacked data for DelegateVotesChanged events raised by the TaikoToken contract. +type TaikoTokenDelegateVotesChangedIterator struct { + Event *TaikoTokenDelegateVotesChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenDelegateVotesChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenDelegateVotesChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenDelegateVotesChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenDelegateVotesChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenDelegateVotesChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenDelegateVotesChanged represents a DelegateVotesChanged event raised by the TaikoToken contract. +type TaikoTokenDelegateVotesChanged struct { + Delegate common.Address + PreviousBalance *big.Int + NewBalance *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegateVotesChanged is a free log retrieval operation binding the contract event 0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724. +// +// Solidity: event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance) +func (_TaikoToken *TaikoTokenFilterer) FilterDelegateVotesChanged(opts *bind.FilterOpts, delegate []common.Address) (*TaikoTokenDelegateVotesChangedIterator, error) { + + var delegateRule []interface{} + for _, delegateItem := range delegate { + delegateRule = append(delegateRule, delegateItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "DelegateVotesChanged", delegateRule) + if err != nil { + return nil, err + } + return &TaikoTokenDelegateVotesChangedIterator{contract: _TaikoToken.contract, event: "DelegateVotesChanged", logs: logs, sub: sub}, nil +} + +// WatchDelegateVotesChanged is a free log subscription operation binding the contract event 0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724. +// +// Solidity: event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance) +func (_TaikoToken *TaikoTokenFilterer) WatchDelegateVotesChanged(opts *bind.WatchOpts, sink chan<- *TaikoTokenDelegateVotesChanged, delegate []common.Address) (event.Subscription, error) { + + var delegateRule []interface{} + for _, delegateItem := range delegate { + delegateRule = append(delegateRule, delegateItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "DelegateVotesChanged", delegateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenDelegateVotesChanged) + if err := _TaikoToken.contract.UnpackLog(event, "DelegateVotesChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegateVotesChanged is a log parse operation binding the contract event 0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724. +// +// Solidity: event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance) +func (_TaikoToken *TaikoTokenFilterer) ParseDelegateVotesChanged(log types.Log) (*TaikoTokenDelegateVotesChanged, error) { + event := new(TaikoTokenDelegateVotesChanged) + if err := _TaikoToken.contract.UnpackLog(event, "DelegateVotesChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenEIP712DomainChangedIterator is returned from FilterEIP712DomainChanged and is used to iterate over the raw logs and unpacked data for EIP712DomainChanged events raised by the TaikoToken contract. +type TaikoTokenEIP712DomainChangedIterator struct { + Event *TaikoTokenEIP712DomainChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenEIP712DomainChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenEIP712DomainChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenEIP712DomainChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenEIP712DomainChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenEIP712DomainChanged represents a EIP712DomainChanged event raised by the TaikoToken contract. +type TaikoTokenEIP712DomainChanged struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEIP712DomainChanged is a free log retrieval operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_TaikoToken *TaikoTokenFilterer) FilterEIP712DomainChanged(opts *bind.FilterOpts) (*TaikoTokenEIP712DomainChangedIterator, error) { + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return &TaikoTokenEIP712DomainChangedIterator{contract: _TaikoToken.contract, event: "EIP712DomainChanged", logs: logs, sub: sub}, nil +} + +// WatchEIP712DomainChanged is a free log subscription operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_TaikoToken *TaikoTokenFilterer) WatchEIP712DomainChanged(opts *bind.WatchOpts, sink chan<- *TaikoTokenEIP712DomainChanged) (event.Subscription, error) { + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "EIP712DomainChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenEIP712DomainChanged) + if err := _TaikoToken.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEIP712DomainChanged is a log parse operation binding the contract event 0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31. +// +// Solidity: event EIP712DomainChanged() +func (_TaikoToken *TaikoTokenFilterer) ParseEIP712DomainChanged(log types.Log) (*TaikoTokenEIP712DomainChanged, error) { + event := new(TaikoTokenEIP712DomainChanged) + if err := _TaikoToken.contract.UnpackLog(event, "EIP712DomainChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoToken contract. +type TaikoTokenInitializedIterator struct { + Event *TaikoTokenInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenInitialized represents a Initialized event raised by the TaikoToken contract. +type TaikoTokenInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoToken *TaikoTokenFilterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoTokenInitializedIterator, error) { + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TaikoTokenInitializedIterator{contract: _TaikoToken.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoToken *TaikoTokenFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoTokenInitialized) (event.Subscription, error) { + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenInitialized) + if err := _TaikoToken.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoToken *TaikoTokenFilterer) ParseInitialized(log types.Log) (*TaikoTokenInitialized, error) { + event := new(TaikoTokenInitialized) + if err := _TaikoToken.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoToken contract. +type TaikoTokenOwnershipTransferStartedIterator struct { + Event *TaikoTokenOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoToken contract. +type TaikoTokenOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoToken *TaikoTokenFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoTokenOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TaikoTokenOwnershipTransferStartedIterator{contract: _TaikoToken.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoToken *TaikoTokenFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *TaikoTokenOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenOwnershipTransferStarted) + if err := _TaikoToken.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoToken *TaikoTokenFilterer) ParseOwnershipTransferStarted(log types.Log) (*TaikoTokenOwnershipTransferStarted, error) { + event := new(TaikoTokenOwnershipTransferStarted) + if err := _TaikoToken.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoToken contract. +type TaikoTokenOwnershipTransferredIterator struct { + Event *TaikoTokenOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenOwnershipTransferred represents a OwnershipTransferred event raised by the TaikoToken contract. +type TaikoTokenOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoToken *TaikoTokenFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoTokenOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TaikoTokenOwnershipTransferredIterator{contract: _TaikoToken.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoToken *TaikoTokenFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoTokenOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenOwnershipTransferred) + if err := _TaikoToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoToken *TaikoTokenFilterer) ParseOwnershipTransferred(log types.Log) (*TaikoTokenOwnershipTransferred, error) { + event := new(TaikoTokenOwnershipTransferred) + if err := _TaikoToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoToken contract. +type TaikoTokenPausedIterator struct { + Event *TaikoTokenPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenPaused represents a Paused event raised by the TaikoToken contract. +type TaikoTokenPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoToken *TaikoTokenFilterer) FilterPaused(opts *bind.FilterOpts) (*TaikoTokenPausedIterator, error) { + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &TaikoTokenPausedIterator{contract: _TaikoToken.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoToken *TaikoTokenFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoTokenPaused) (event.Subscription, error) { + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenPaused) + if err := _TaikoToken.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoToken *TaikoTokenFilterer) ParsePaused(log types.Log) (*TaikoTokenPaused, error) { + event := new(TaikoTokenPaused) + if err := _TaikoToken.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the TaikoToken contract. +type TaikoTokenTransferIterator struct { + Event *TaikoTokenTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenTransfer represents a Transfer event raised by the TaikoToken contract. +type TaikoTokenTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_TaikoToken *TaikoTokenFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*TaikoTokenTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &TaikoTokenTransferIterator{contract: _TaikoToken.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_TaikoToken *TaikoTokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *TaikoTokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenTransfer) + if err := _TaikoToken.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_TaikoToken *TaikoTokenFilterer) ParseTransfer(log types.Log) (*TaikoTokenTransfer, error) { + event := new(TaikoTokenTransfer) + if err := _TaikoToken.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoToken contract. +type TaikoTokenUnpausedIterator struct { + Event *TaikoTokenUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenUnpaused represents a Unpaused event raised by the TaikoToken contract. +type TaikoTokenUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoToken *TaikoTokenFilterer) FilterUnpaused(opts *bind.FilterOpts) (*TaikoTokenUnpausedIterator, error) { + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TaikoTokenUnpausedIterator{contract: _TaikoToken.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoToken *TaikoTokenFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TaikoTokenUnpaused) (event.Subscription, error) { + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenUnpaused) + if err := _TaikoToken.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoToken *TaikoTokenFilterer) ParseUnpaused(log types.Log) (*TaikoTokenUnpaused, error) { + event := new(TaikoTokenUnpaused) + if err := _TaikoToken.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoTokenUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the TaikoToken contract. +type TaikoTokenUpgradedIterator struct { + Event *TaikoTokenUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoTokenUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoTokenUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoTokenUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoTokenUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoTokenUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoTokenUpgraded represents a Upgraded event raised by the TaikoToken contract. +type TaikoTokenUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoToken *TaikoTokenFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*TaikoTokenUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TaikoToken.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &TaikoTokenUpgradedIterator{contract: _TaikoToken.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoToken *TaikoTokenFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *TaikoTokenUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TaikoToken.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoTokenUpgraded) + if err := _TaikoToken.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TaikoToken *TaikoTokenFilterer) ParseUpgraded(log types.Log) (*TaikoTokenUpgraded, error) { + event := new(TaikoTokenUpgraded) + if err := _TaikoToken.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/bindings/gen_tier_provider.go b/packages/taiko-client/bindings/gen_tier_provider.go new file mode 100644 index 00000000000..22ba0529f0a --- /dev/null +++ b/packages/taiko-client/bindings/gen_tier_provider.go @@ -0,0 +1,1862 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. +type ITierProviderTier struct { + VerifierName [32]byte + ValidityBond *big.Int + ContestBond *big.Int + CooldownWindow *big.Int + ProvingWindow uint16 + MaxBlocksToVerifyPerProof uint8 +} + +// TierProviderMetaData contains all meta data concerning the TierProvider contract. +var TierProviderMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinTier\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTier\",\"inputs\":[{\"name\":\"_tierId\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structITierProvider.Tier\",\"components\":[{\"name\":\"verifierName\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"cooldownWindow\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"provingWindow\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maxBlocksToVerifyPerProof\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTierIds\",\"inputs\":[],\"outputs\":[{\"name\":\"tiers_\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"TIER_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", +} + +// TierProviderABI is the input ABI used to generate the binding from. +// Deprecated: Use TierProviderMetaData.ABI instead. +var TierProviderABI = TierProviderMetaData.ABI + +// TierProvider is an auto generated Go binding around an Ethereum contract. +type TierProvider struct { + TierProviderCaller // Read-only binding to the contract + TierProviderTransactor // Write-only binding to the contract + TierProviderFilterer // Log filterer for contract events +} + +// TierProviderCaller is an auto generated read-only Go binding around an Ethereum contract. +type TierProviderCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TierProviderTransactor is an auto generated write-only Go binding around an Ethereum contract. +type TierProviderTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TierProviderFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type TierProviderFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// TierProviderSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type TierProviderSession struct { + Contract *TierProvider // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TierProviderCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type TierProviderCallerSession struct { + Contract *TierProviderCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// TierProviderTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type TierProviderTransactorSession struct { + Contract *TierProviderTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// TierProviderRaw is an auto generated low-level Go binding around an Ethereum contract. +type TierProviderRaw struct { + Contract *TierProvider // Generic contract binding to access the raw methods on +} + +// TierProviderCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type TierProviderCallerRaw struct { + Contract *TierProviderCaller // Generic read-only contract binding to access the raw methods on +} + +// TierProviderTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type TierProviderTransactorRaw struct { + Contract *TierProviderTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewTierProvider creates a new instance of TierProvider, bound to a specific deployed contract. +func NewTierProvider(address common.Address, backend bind.ContractBackend) (*TierProvider, error) { + contract, err := bindTierProvider(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &TierProvider{TierProviderCaller: TierProviderCaller{contract: contract}, TierProviderTransactor: TierProviderTransactor{contract: contract}, TierProviderFilterer: TierProviderFilterer{contract: contract}}, nil +} + +// NewTierProviderCaller creates a new read-only instance of TierProvider, bound to a specific deployed contract. +func NewTierProviderCaller(address common.Address, caller bind.ContractCaller) (*TierProviderCaller, error) { + contract, err := bindTierProvider(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &TierProviderCaller{contract: contract}, nil +} + +// NewTierProviderTransactor creates a new write-only instance of TierProvider, bound to a specific deployed contract. +func NewTierProviderTransactor(address common.Address, transactor bind.ContractTransactor) (*TierProviderTransactor, error) { + contract, err := bindTierProvider(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &TierProviderTransactor{contract: contract}, nil +} + +// NewTierProviderFilterer creates a new log filterer instance of TierProvider, bound to a specific deployed contract. +func NewTierProviderFilterer(address common.Address, filterer bind.ContractFilterer) (*TierProviderFilterer, error) { + contract, err := bindTierProvider(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &TierProviderFilterer{contract: contract}, nil +} + +// bindTierProvider binds a generic wrapper to an already deployed contract. +func bindTierProvider(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := TierProviderMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TierProvider *TierProviderRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TierProvider.Contract.TierProviderCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TierProvider *TierProviderRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TierProvider.Contract.TierProviderTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TierProvider *TierProviderRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TierProvider.Contract.TierProviderTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_TierProvider *TierProviderCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _TierProvider.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_TierProvider *TierProviderTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TierProvider.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_TierProvider *TierProviderTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _TierProvider.Contract.contract.Transact(opts, method, params...) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TierProvider *TierProviderCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TierProvider *TierProviderSession) AddressManager() (common.Address, error) { + return _TierProvider.Contract.AddressManager(&_TierProvider.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_TierProvider *TierProviderCallerSession) AddressManager() (common.Address, error) { + return _TierProvider.Contract.AddressManager(&_TierProvider.CallOpts) +} + +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. +// +// Solidity: function getMinTier(uint256 ) pure returns(uint16) +func (_TierProvider *TierProviderCaller) GetMinTier(opts *bind.CallOpts, arg0 *big.Int) (uint16, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "getMinTier", arg0) + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. +// +// Solidity: function getMinTier(uint256 ) pure returns(uint16) +func (_TierProvider *TierProviderSession) GetMinTier(arg0 *big.Int) (uint16, error) { + return _TierProvider.Contract.GetMinTier(&_TierProvider.CallOpts, arg0) +} + +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. +// +// Solidity: function getMinTier(uint256 ) pure returns(uint16) +func (_TierProvider *TierProviderCallerSession) GetMinTier(arg0 *big.Int) (uint16, error) { + return _TierProvider.Contract.GetMinTier(&_TierProvider.CallOpts, arg0) +} + +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. +// +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) +func (_TierProvider *TierProviderCaller) GetTier(opts *bind.CallOpts, _tierId uint16) (ITierProviderTier, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "getTier", _tierId) + + if err != nil { + return *new(ITierProviderTier), err + } + + out0 := *abi.ConvertType(out[0], new(ITierProviderTier)).(*ITierProviderTier) + + return out0, err + +} + +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. +// +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) +func (_TierProvider *TierProviderSession) GetTier(_tierId uint16) (ITierProviderTier, error) { + return _TierProvider.Contract.GetTier(&_TierProvider.CallOpts, _tierId) +} + +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. +// +// Solidity: function getTier(uint16 _tierId) pure returns((bytes32,uint96,uint96,uint24,uint16,uint8)) +func (_TierProvider *TierProviderCallerSession) GetTier(_tierId uint16) (ITierProviderTier, error) { + return _TierProvider.Contract.GetTier(&_TierProvider.CallOpts, _tierId) +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() pure returns(uint16[] tiers_) +func (_TierProvider *TierProviderCaller) GetTierIds(opts *bind.CallOpts) ([]uint16, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "getTierIds") + + if err != nil { + return *new([]uint16), err + } + + out0 := *abi.ConvertType(out[0], new([]uint16)).(*[]uint16) + + return out0, err + +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() pure returns(uint16[] tiers_) +func (_TierProvider *TierProviderSession) GetTierIds() ([]uint16, error) { + return _TierProvider.Contract.GetTierIds(&_TierProvider.CallOpts) +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() pure returns(uint16[] tiers_) +func (_TierProvider *TierProviderCallerSession) GetTierIds() ([]uint16, error) { + return _TierProvider.Contract.GetTierIds(&_TierProvider.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TierProvider *TierProviderCaller) InNonReentrant(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "inNonReentrant") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TierProvider *TierProviderSession) InNonReentrant() (bool, error) { + return _TierProvider.Contract.InNonReentrant(&_TierProvider.CallOpts) +} + +// InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. +// +// Solidity: function inNonReentrant() view returns(bool) +func (_TierProvider *TierProviderCallerSession) InNonReentrant() (bool, error) { + return _TierProvider.Contract.InNonReentrant(&_TierProvider.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TierProvider *TierProviderCaller) LastUnpausedAt(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "lastUnpausedAt") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TierProvider *TierProviderSession) LastUnpausedAt() (uint64, error) { + return _TierProvider.Contract.LastUnpausedAt(&_TierProvider.CallOpts) +} + +// LastUnpausedAt is a free data retrieval call binding the contract method 0xe07baba6. +// +// Solidity: function lastUnpausedAt() view returns(uint64) +func (_TierProvider *TierProviderCallerSession) LastUnpausedAt() (uint64, error) { + return _TierProvider.Contract.LastUnpausedAt(&_TierProvider.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TierProvider *TierProviderCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TierProvider *TierProviderSession) Owner() (common.Address, error) { + return _TierProvider.Contract.Owner(&_TierProvider.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_TierProvider *TierProviderCallerSession) Owner() (common.Address, error) { + return _TierProvider.Contract.Owner(&_TierProvider.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TierProvider *TierProviderCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TierProvider *TierProviderSession) Paused() (bool, error) { + return _TierProvider.Contract.Paused(&_TierProvider.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TierProvider *TierProviderCallerSession) Paused() (bool, error) { + return _TierProvider.Contract.Paused(&_TierProvider.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TierProvider *TierProviderCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TierProvider *TierProviderSession) PendingOwner() (common.Address, error) { + return _TierProvider.Contract.PendingOwner(&_TierProvider.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TierProvider *TierProviderCallerSession) PendingOwner() (common.Address, error) { + return _TierProvider.Contract.PendingOwner(&_TierProvider.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TierProvider *TierProviderCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TierProvider *TierProviderSession) ProxiableUUID() ([32]byte, error) { + return _TierProvider.Contract.ProxiableUUID(&_TierProvider.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_TierProvider *TierProviderCallerSession) ProxiableUUID() ([32]byte, error) { + return _TierProvider.Contract.ProxiableUUID(&_TierProvider.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TierProvider *TierProviderCaller) Resolve(opts *bind.CallOpts, _chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "resolve", _chainId, _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TierProvider *TierProviderSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TierProvider.Contract.Resolve(&_TierProvider.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 _chainId, bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TierProvider *TierProviderCallerSession) Resolve(_chainId uint64, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TierProvider.Contract.Resolve(&_TierProvider.CallOpts, _chainId, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TierProvider *TierProviderCaller) Resolve0(opts *bind.CallOpts, _name [32]byte, _allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _TierProvider.contract.Call(opts, &out, "resolve0", _name, _allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TierProvider *TierProviderSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TierProvider.Contract.Resolve0(&_TierProvider.CallOpts, _name, _allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 _name, bool _allowZeroAddress) view returns(address) +func (_TierProvider *TierProviderCallerSession) Resolve0(_name [32]byte, _allowZeroAddress bool) (common.Address, error) { + return _TierProvider.Contract.Resolve0(&_TierProvider.CallOpts, _name, _allowZeroAddress) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TierProvider *TierProviderTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TierProvider *TierProviderSession) AcceptOwnership() (*types.Transaction, error) { + return _TierProvider.Contract.AcceptOwnership(&_TierProvider.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TierProvider *TierProviderTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _TierProvider.Contract.AcceptOwnership(&_TierProvider.TransactOpts) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _owner) returns() +func (_TierProvider *TierProviderTransactor) Init(opts *bind.TransactOpts, _owner common.Address) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "init", _owner) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _owner) returns() +func (_TierProvider *TierProviderSession) Init(_owner common.Address) (*types.Transaction, error) { + return _TierProvider.Contract.Init(&_TierProvider.TransactOpts, _owner) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _owner) returns() +func (_TierProvider *TierProviderTransactorSession) Init(_owner common.Address) (*types.Transaction, error) { + return _TierProvider.Contract.Init(&_TierProvider.TransactOpts, _owner) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TierProvider *TierProviderTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TierProvider *TierProviderSession) Pause() (*types.Transaction, error) { + return _TierProvider.Contract.Pause(&_TierProvider.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TierProvider *TierProviderTransactorSession) Pause() (*types.Transaction, error) { + return _TierProvider.Contract.Pause(&_TierProvider.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TierProvider *TierProviderTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TierProvider *TierProviderSession) RenounceOwnership() (*types.Transaction, error) { + return _TierProvider.Contract.RenounceOwnership(&_TierProvider.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_TierProvider *TierProviderTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _TierProvider.Contract.RenounceOwnership(&_TierProvider.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TierProvider *TierProviderTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TierProvider *TierProviderSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TierProvider.Contract.TransferOwnership(&_TierProvider.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_TierProvider *TierProviderTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _TierProvider.Contract.TransferOwnership(&_TierProvider.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TierProvider *TierProviderTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TierProvider *TierProviderSession) Unpause() (*types.Transaction, error) { + return _TierProvider.Contract.Unpause(&_TierProvider.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TierProvider *TierProviderTransactorSession) Unpause() (*types.Transaction, error) { + return _TierProvider.Contract.Unpause(&_TierProvider.TransactOpts) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TierProvider *TierProviderTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "upgradeTo", newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TierProvider *TierProviderSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TierProvider.Contract.UpgradeTo(&_TierProvider.TransactOpts, newImplementation) +} + +// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. +// +// Solidity: function upgradeTo(address newImplementation) returns() +func (_TierProvider *TierProviderTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { + return _TierProvider.Contract.UpgradeTo(&_TierProvider.TransactOpts, newImplementation) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TierProvider *TierProviderTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TierProvider.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TierProvider *TierProviderSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TierProvider.Contract.UpgradeToAndCall(&_TierProvider.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_TierProvider *TierProviderTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _TierProvider.Contract.UpgradeToAndCall(&_TierProvider.TransactOpts, newImplementation, data) +} + +// TierProviderAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the TierProvider contract. +type TierProviderAdminChangedIterator struct { + Event *TierProviderAdminChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderAdminChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderAdminChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderAdminChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderAdminChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderAdminChanged represents a AdminChanged event raised by the TierProvider contract. +type TierProviderAdminChanged struct { + PreviousAdmin common.Address + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TierProvider *TierProviderFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*TierProviderAdminChangedIterator, error) { + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return &TierProviderAdminChangedIterator{contract: _TierProvider.contract, event: "AdminChanged", logs: logs, sub: sub}, nil +} + +// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TierProvider *TierProviderFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *TierProviderAdminChanged) (event.Subscription, error) { + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "AdminChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderAdminChanged) + if err := _TierProvider.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. +// +// Solidity: event AdminChanged(address previousAdmin, address newAdmin) +func (_TierProvider *TierProviderFilterer) ParseAdminChanged(log types.Log) (*TierProviderAdminChanged, error) { + event := new(TierProviderAdminChanged) + if err := _TierProvider.contract.UnpackLog(event, "AdminChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TierProviderBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the TierProvider contract. +type TierProviderBeaconUpgradedIterator struct { + Event *TierProviderBeaconUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderBeaconUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderBeaconUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderBeaconUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderBeaconUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderBeaconUpgraded represents a BeaconUpgraded event raised by the TierProvider contract. +type TierProviderBeaconUpgraded struct { + Beacon common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TierProvider *TierProviderFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*TierProviderBeaconUpgradedIterator, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return &TierProviderBeaconUpgradedIterator{contract: _TierProvider.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil +} + +// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TierProvider *TierProviderFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *TierProviderBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { + + var beaconRule []interface{} + for _, beaconItem := range beacon { + beaconRule = append(beaconRule, beaconItem) + } + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderBeaconUpgraded) + if err := _TierProvider.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. +// +// Solidity: event BeaconUpgraded(address indexed beacon) +func (_TierProvider *TierProviderFilterer) ParseBeaconUpgraded(log types.Log) (*TierProviderBeaconUpgraded, error) { + event := new(TierProviderBeaconUpgraded) + if err := _TierProvider.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TierProviderInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TierProvider contract. +type TierProviderInitializedIterator struct { + Event *TierProviderInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderInitialized represents a Initialized event raised by the TierProvider contract. +type TierProviderInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TierProvider *TierProviderFilterer) FilterInitialized(opts *bind.FilterOpts) (*TierProviderInitializedIterator, error) { + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TierProviderInitializedIterator{contract: _TierProvider.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TierProvider *TierProviderFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TierProviderInitialized) (event.Subscription, error) { + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderInitialized) + if err := _TierProvider.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TierProvider *TierProviderFilterer) ParseInitialized(log types.Log) (*TierProviderInitialized, error) { + event := new(TierProviderInitialized) + if err := _TierProvider.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TierProviderOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TierProvider contract. +type TierProviderOwnershipTransferStartedIterator struct { + Event *TierProviderOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TierProvider contract. +type TierProviderOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TierProvider *TierProviderFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TierProviderOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TierProviderOwnershipTransferStartedIterator{contract: _TierProvider.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TierProvider *TierProviderFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *TierProviderOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderOwnershipTransferStarted) + if err := _TierProvider.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TierProvider *TierProviderFilterer) ParseOwnershipTransferStarted(log types.Log) (*TierProviderOwnershipTransferStarted, error) { + event := new(TierProviderOwnershipTransferStarted) + if err := _TierProvider.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TierProviderOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TierProvider contract. +type TierProviderOwnershipTransferredIterator struct { + Event *TierProviderOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderOwnershipTransferred represents a OwnershipTransferred event raised by the TierProvider contract. +type TierProviderOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TierProvider *TierProviderFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TierProviderOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TierProviderOwnershipTransferredIterator{contract: _TierProvider.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TierProvider *TierProviderFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TierProviderOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderOwnershipTransferred) + if err := _TierProvider.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TierProvider *TierProviderFilterer) ParseOwnershipTransferred(log types.Log) (*TierProviderOwnershipTransferred, error) { + event := new(TierProviderOwnershipTransferred) + if err := _TierProvider.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TierProviderPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TierProvider contract. +type TierProviderPausedIterator struct { + Event *TierProviderPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderPaused represents a Paused event raised by the TierProvider contract. +type TierProviderPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TierProvider *TierProviderFilterer) FilterPaused(opts *bind.FilterOpts) (*TierProviderPausedIterator, error) { + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &TierProviderPausedIterator{contract: _TierProvider.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TierProvider *TierProviderFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TierProviderPaused) (event.Subscription, error) { + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderPaused) + if err := _TierProvider.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TierProvider *TierProviderFilterer) ParsePaused(log types.Log) (*TierProviderPaused, error) { + event := new(TierProviderPaused) + if err := _TierProvider.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TierProviderUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TierProvider contract. +type TierProviderUnpausedIterator struct { + Event *TierProviderUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderUnpaused represents a Unpaused event raised by the TierProvider contract. +type TierProviderUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TierProvider *TierProviderFilterer) FilterUnpaused(opts *bind.FilterOpts) (*TierProviderUnpausedIterator, error) { + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TierProviderUnpausedIterator{contract: _TierProvider.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TierProvider *TierProviderFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TierProviderUnpaused) (event.Subscription, error) { + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderUnpaused) + if err := _TierProvider.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TierProvider *TierProviderFilterer) ParseUnpaused(log types.Log) (*TierProviderUnpaused, error) { + event := new(TierProviderUnpaused) + if err := _TierProvider.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TierProviderUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the TierProvider contract. +type TierProviderUpgradedIterator struct { + Event *TierProviderUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TierProviderUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TierProviderUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TierProviderUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TierProviderUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TierProviderUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TierProviderUpgraded represents a Upgraded event raised by the TierProvider contract. +type TierProviderUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TierProvider *TierProviderFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*TierProviderUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TierProvider.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &TierProviderUpgradedIterator{contract: _TierProvider.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TierProvider *TierProviderFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *TierProviderUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _TierProvider.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TierProviderUpgraded) + if err := _TierProvider.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_TierProvider *TierProviderFilterer) ParseUpgraded(log types.Log) (*TierProviderUpgraded, error) { + event := new(TierProviderUpgraded) + if err := _TierProvider.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/taiko-client/cmd/flags/common.go b/packages/taiko-client/cmd/flags/common.go new file mode 100644 index 00000000000..f5e8887616d --- /dev/null +++ b/packages/taiko-client/cmd/flags/common.go @@ -0,0 +1,181 @@ +package flags + +import ( + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/urfave/cli/v2" +) + +var ( + commonCategory = "COMMON" + metricsCategory = "METRICS" + loggingCategory = "LOGGING" + driverCategory = "DRIVER" + proposerCategory = "PROPOSER" + proverCategory = "PROVER" + txmgrCategory = "TX_MANAGER" +) + +// Required flags used by all client software. +var ( + L1WSEndpoint = &cli.StringFlag{ + Name: "l1.ws", + Usage: "Websocket RPC endpoint of a L1 ethereum node", + Required: true, + Category: commonCategory, + EnvVars: []string{"L1_WS"}, + } + L2WSEndpoint = &cli.StringFlag{ + Name: "l2.ws", + Usage: "Websocket RPC endpoint of a L2 taiko-geth execution engine", + Required: true, + Category: commonCategory, + EnvVars: []string{"L2_WS"}, + } + L1HTTPEndpoint = &cli.StringFlag{ + Name: "l1.http", + Usage: "HTTP RPC endpoint of a L1 ethereum node", + Required: true, + Category: commonCategory, + EnvVars: []string{"L1_HTTP"}, + } + L1BeaconEndpoint = &cli.StringFlag{ + Name: "l1.beacon", + Usage: "HTTP RPC endpoint of a L1 beacon node", + Category: commonCategory, + EnvVars: []string{"L1_BEACON"}, + } + L2HTTPEndpoint = &cli.StringFlag{ + Name: "l2.http", + Usage: "HTTP RPC endpoint of a L2 taiko-geth execution engine", + Required: true, + Category: commonCategory, + EnvVars: []string{"L2_HTTP"}, + } + L2AuthEndpoint = &cli.StringFlag{ + Name: "l2.auth", + Usage: "Authenticated HTTP RPC endpoint of a L2 taiko-geth execution engine", + Required: true, + Category: commonCategory, + EnvVars: []string{"L2_AUTH"}, + } + JWTSecret = &cli.StringFlag{ + Name: "jwtSecret", + Usage: "Path to a JWT secret to use for authenticated RPC endpoints", + Required: true, + Category: commonCategory, + EnvVars: []string{"JWT_SECRET"}, + } + TaikoL1Address = &cli.StringFlag{ + Name: "taikoL1", + Usage: "TaikoL1 contract `address`", + Required: true, + Category: commonCategory, + EnvVars: []string{"TAIKO_L1"}, + } + TaikoL2Address = &cli.StringFlag{ + Name: "taikoL2", + Usage: "TaikoL2 contract `address`", + Required: true, + Category: commonCategory, + EnvVars: []string{"TAIKO_L2"}, + } + TaikoTokenAddress = &cli.StringFlag{ + Name: "taikoToken", + Usage: "TaikoToken contract `address`", + Required: true, + Category: commonCategory, + EnvVars: []string{"TAIKO_TOKEN"}, + } + // Optional flags used by all client software. + // Logging + Verbosity = &cli.IntFlag{ + Name: "verbosity", + Usage: "Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail", + Value: 3, + Category: loggingCategory, + EnvVars: []string{"VERBOSITY"}, + } + LogJSON = &cli.BoolFlag{ + Name: "log.json", + Usage: "Format logs with JSON", + Category: loggingCategory, + EnvVars: []string{"LOG_JSON"}, + } + // Metrics + MetricsEnabled = &cli.BoolFlag{ + Name: "metrics", + Usage: "Enable metrics collection and reporting", + Category: metricsCategory, + Value: false, + EnvVars: []string{"METRICS"}, + } + MetricsAddr = &cli.StringFlag{ + Name: "metrics.addr", + Usage: "Metrics reporting server listening address", + Category: metricsCategory, + Value: "0.0.0.0", + EnvVars: []string{"METRICS_ADDR"}, + } + MetricsPort = &cli.IntFlag{ + Name: "metrics.port", + Usage: "Metrics reporting server listening port", + Category: metricsCategory, + Value: 6060, + EnvVars: []string{"METRICS_PORT"}, + } + BackOffMaxRetries = &cli.Uint64Flag{ + Name: "backoff.maxRetries", + Usage: "Max retry times when there is an error", + Category: commonCategory, + Value: 10, + EnvVars: []string{"BACKOFF_MAX_RETRIES"}, + } + BackOffRetryInterval = &cli.DurationFlag{ + Name: "backoff.retryInterval", + Usage: "Retry interval in seconds when there is an error", + Category: commonCategory, + Value: backoff.DefaultMaxInterval, + EnvVars: []string{"BACKOFF_RETRY_INTERVAL"}, + } + RPCTimeout = &cli.DurationFlag{ + Name: "rpc.timeout", + Usage: "Timeout in seconds for RPC calls", + Category: commonCategory, + Value: 12 * time.Second, + EnvVars: []string{"RPC_TIMEOUT"}, + } + AssignmentHookAddress = &cli.StringFlag{ + Name: "assignmentHookAddress", + Usage: "Address of the AssignmentHook contract", + Category: commonCategory, + EnvVars: []string{"ASSIGNMENT_HOOK_ADDRESS"}, + } +) + +// CommonFlags All common flags. +var CommonFlags = []cli.Flag{ + // Required + L1WSEndpoint, + TaikoL1Address, + TaikoL2Address, + // Optional + Verbosity, + LogJSON, + MetricsEnabled, + MetricsAddr, + MetricsPort, + BackOffMaxRetries, + BackOffRetryInterval, + RPCTimeout, +} + +// MergeFlags merges the given flag slices. +func MergeFlags(groups ...[]cli.Flag) []cli.Flag { + var merged []cli.Flag + for _, group := range groups { + merged = append(merged, group...) + } + return merged +} diff --git a/packages/taiko-client/cmd/flags/driver.go b/packages/taiko-client/cmd/flags/driver.go new file mode 100644 index 00000000000..eab6e480854 --- /dev/null +++ b/packages/taiko-client/cmd/flags/driver.go @@ -0,0 +1,62 @@ +package flags + +import ( + "time" + + "github.com/urfave/cli/v2" +) + +// Optional flags used by driver. +var ( + P2PSync = &cli.BoolFlag{ + Name: "p2p.sync", + Usage: "Try P2P syncing blocks between L2 execution engines, " + + "will be helpful to bring a new node online quickly", + Value: false, + Category: driverCategory, + EnvVars: []string{"P2P_SYNC"}, + } + P2PSyncTimeout = &cli.DurationFlag{ + Name: "p2p.syncTimeout", + Usage: "P2P syncing timeout, if no sync progress is made within this time span, " + + "driver will stop the P2P sync and insert all remaining L2 blocks one by one", + Value: 1 * time.Hour, + Category: driverCategory, + EnvVars: []string{"P2P_SYNC_TIMEOUT"}, + } + CheckPointSyncURL = &cli.StringFlag{ + Name: "p2p.checkPointSyncUrl", + Usage: "HTTP RPC endpoint of another synced L2 execution engine node", + Category: driverCategory, + EnvVars: []string{"P2P_CHECK_POINT_SYNC_URL"}, + } + // syncer specific flag + MaxExponent = &cli.Uint64Flag{ + Name: "syncer.maxExponent", + Usage: "Maximum exponent of retrieving L1 blocks when there is a mismatch between protocol and L2 EE," + + "0 means that it is reset to the genesis height", + Value: 0, + Category: driverCategory, + EnvVars: []string{"SYNCER_MAX_EXPONENT"}, + } + // blob server endpoint + BlobServerEndpoint = &cli.StringFlag{ + Name: "blob.server", + Usage: "Blob sidecar storage server", + Category: driverCategory, + EnvVars: []string{"BLOB_SERVER"}, + } +) + +// DriverFlags All driver flags. +var DriverFlags = MergeFlags(CommonFlags, []cli.Flag{ + L1BeaconEndpoint, + L2WSEndpoint, + L2AuthEndpoint, + JWTSecret, + P2PSync, + P2PSyncTimeout, + CheckPointSyncURL, + MaxExponent, + BlobServerEndpoint, +}) diff --git a/packages/taiko-client/cmd/flags/proposer.go b/packages/taiko-client/cmd/flags/proposer.go new file mode 100644 index 00000000000..d47399e6fbc --- /dev/null +++ b/packages/taiko-client/cmd/flags/proposer.go @@ -0,0 +1,169 @@ +package flags + +import ( + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/version" +) + +// Required flags used by proposer. +var ( + L1ProposerPrivKey = &cli.StringFlag{ + Name: "l1.proposerPrivKey", + Usage: "Private key of the L1 proposer, who will send TaikoL1.proposeBlock transactions", + Required: true, + Category: proposerCategory, + EnvVars: []string{"L1_PROPOSER_PRIV_KEY"}, + } + ProverEndpoints = &cli.StringFlag{ + Name: "proverEndpoints", + Usage: "Comma-delineated list of prover endpoints proposer should query when attempting to propose a block", + Required: true, + Category: proposerCategory, + EnvVars: []string{"PROVER_ENDPOINTS"}, + } + L2SuggestedFeeRecipient = &cli.StringFlag{ + Name: "l2.suggestedFeeRecipient", + Usage: "Address of the proposed block's suggested L2 fee recipient", + Required: true, + Category: proposerCategory, + EnvVars: []string{"L2_SUGGESTED_FEE_RECIPIENT"}, + } +) + +// Optional flags used by proposer. +var ( + // Tier fee related. + OptimisticTierFee = &cli.Float64Flag{ + Name: "tierFee.optimistic", + Usage: "Initial tier fee (in GWei) paid to prover to generate an optimistic proofs", + Category: proposerCategory, + EnvVars: []string{"TIER_FEE_OPTIMISTIC"}, + } + SgxTierFee = &cli.Float64Flag{ + Name: "tierFee.sgx", + Usage: "Initial tier fee (in GWei) paid to prover to generate a SGX proofs", + Category: proposerCategory, + EnvVars: []string{"TIER_FEE_SGX"}, + } + TierFeePriceBump = &cli.Uint64Flag{ + Name: "tierFee.priceBump", + Usage: "Price bump percentage when no prover wants to accept the block at initial fee", + Value: 10, + Category: proposerCategory, + EnvVars: []string{"TIER_FEE_PRICE_BUMP"}, + } + MaxTierFeePriceBumps = &cli.Uint64Flag{ + Name: "tierFee.maxPriceBumps", + Usage: "If nobody accepts block at initial tier fee, how many iterations to increase tier fee before giving up", + Category: proposerCategory, + Value: 3, + EnvVars: []string{"TIER_FEE_MAX_PRICE_BUMPS"}, + } + // Proposing epoch related. + ProposeInterval = &cli.DurationFlag{ + Name: "epoch.interval", + Usage: "Time interval to propose L2 pending transactions", + Category: proposerCategory, + Value: 0, + EnvVars: []string{"EPOCH_INTERVAL"}, + } + MinGasUsed = &cli.Uint64Flag{ + Name: "epoch.minGasUsed", + Usage: "Minimum gas used for a transactions list to propose", + Category: proposerCategory, + Value: 0, + EnvVars: []string{"EPOCH_MIN_GAS_USED"}, + } + MinTxListBytes = &cli.Uint64Flag{ + Name: "epoch.minTxListBytes", + Usage: "Minimum bytes for a transactions list to propose", + Category: proposerCategory, + Value: 0, + EnvVars: []string{"EPOCH_MIN_TX_LIST_BYTES"}, + } + MinProposingInternal = &cli.DurationFlag{ + Name: "epoch.minProposingInterval", + Usage: "Minimum time interval to force proposing a block, even if there are no transaction in mempool", + Category: proposerCategory, + Value: 0, + EnvVars: []string{"EPOCH_MIN_PROPOSING_INTERNAL"}, + } + // Proposing metadata related. + ExtraData = &cli.StringFlag{ + Name: "extraData", + Usage: "Block extra data set by the proposer (default = client version)", + Value: version.CommitVersion(), + Category: proposerCategory, + EnvVars: []string{"EXTRA_DATA"}, + } + // Transactions pool related. + TxPoolLocals = &cli.StringSliceFlag{ + Name: "txPool.locals", + Usage: "Comma separated accounts to treat as locals (priority inclusion)", + Category: proposerCategory, + EnvVars: []string{"TX_POOL_LOCALS"}, + } + TxPoolLocalsOnly = &cli.BoolFlag{ + Name: "txPool.localsOnly", + Usage: "If set to true, proposer will only propose transactions of local accounts", + Value: false, + Category: proposerCategory, + EnvVars: []string{"TX_POOL_LOCALS_ONLY"}, + } + MaxProposedTxListsPerEpoch = &cli.Uint64Flag{ + Name: "txPool.maxTxListsPerEpoch", + Usage: "Maximum number of transaction lists which will be proposed inside one proposing epoch", + Value: 1, + Category: proposerCategory, + EnvVars: []string{"TX_POOL_MAX_TX_LISTS_PER_EPOCH"}, + } + ProposeBlockIncludeParentMetaHash = &cli.BoolFlag{ + Name: "includeParentMetaHash", + Usage: "Include parent meta hash when proposing block", + Value: false, + Category: proposerCategory, + EnvVars: []string{"INCLUDE_PARENT_META_HASH"}, + } + // Transaction related. + BlobAllowed = &cli.BoolFlag{ + Name: "l1.blobAllowed", + Usage: "Send EIP-4844 blob transactions when proposing blocks", + Value: false, + EnvVars: []string{"L1_BLOB_ALLOWED"}, + } + L1BlockBuilderTip = &cli.Uint64Flag{ + Name: "l1.blockBuilderTip", + Usage: "Amount you wish to tip the L1 block builder", + Value: 0, + Category: proposerCategory, + EnvVars: []string{"L1_BLOCK_BUILDER_TIP"}, + } +) + +// ProposerFlags All proposer flags. +var ProposerFlags = MergeFlags(CommonFlags, []cli.Flag{ + L2HTTPEndpoint, + L2AuthEndpoint, + JWTSecret, + TaikoTokenAddress, + L1ProposerPrivKey, + L2SuggestedFeeRecipient, + ProposeInterval, + TxPoolLocals, + TxPoolLocalsOnly, + ExtraData, + MinGasUsed, + MinTxListBytes, + MinProposingInternal, + MaxProposedTxListsPerEpoch, + ProverEndpoints, + OptimisticTierFee, + SgxTierFee, + TierFeePriceBump, + MaxTierFeePriceBumps, + ProposeBlockIncludeParentMetaHash, + AssignmentHookAddress, + BlobAllowed, + L1BlockBuilderTip, +}, TxmgrFlags) diff --git a/packages/taiko-client/cmd/flags/prover.go b/packages/taiko-client/cmd/flags/prover.go new file mode 100644 index 00000000000..2519d72da9b --- /dev/null +++ b/packages/taiko-client/cmd/flags/prover.go @@ -0,0 +1,255 @@ +package flags + +import ( + "time" + + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// Required flags used by prover. +var ( + L1ProverPrivKey = &cli.StringFlag{ + Name: "l1.proverPrivKey", + Usage: "Private key of L1 prover, who will send TaikoL1.proveBlock transactions", + Required: true, + Category: proverCategory, + EnvVars: []string{"L1_PROVER_PRIV_KEY"}, + } + ProverCapacity = &cli.Uint64Flag{ + Name: "prover.capacity", + Usage: "Capacity of prover", + Required: true, + Category: proverCategory, + EnvVars: []string{"PROVER_CAPACITY"}, + } + RaikoHostEndpoint = &cli.StringFlag{ + Name: "raiko.host", + Usage: "RPC endpoint of a Raiko host service", + Required: true, + Category: proverCategory, + EnvVars: []string{"RAIKO_HOST"}, + } +) + +// Optional flags used by prover. +var ( + RaikoL1Endpoint = &cli.StringFlag{ + Name: "raiko.l1", + Usage: "L1 RPC endpoint which will be sent to the Raiko service", + Category: proverCategory, + EnvVars: []string{"RAIKO_L1"}, + } + RaikoL1BeaconEndpoint = &cli.StringFlag{ + Name: "raiko.l1Beacon", + Usage: "L1 beacon RPC endpoint which will be sent to the Raiko service", + Category: proverCategory, + EnvVars: []string{"RAIKO_L1_BEACON"}, + } + RaikoL2Endpoint = &cli.StringFlag{ + Name: "raiko.l2", + Usage: "L2 RPC endpoint which will be sent to the Raiko service", + Category: proverCategory, + EnvVars: []string{"RAIKO_L2"}, + } + StartingBlockID = &cli.Uint64Flag{ + Name: "prover.startingBlockID", + Usage: "If set, prover will start proving blocks from the block with this ID", + Category: proverCategory, + EnvVars: []string{"PROVER_STARTING_BLOCK_ID"}, + } + Graffiti = &cli.StringFlag{ + Name: "prover.graffiti", + Usage: "When string is passed, adds additional graffiti info to proof evidence", + Category: proverCategory, + Value: "", + EnvVars: []string{"PROVER_GRAFFITI"}, + } + // Proving strategy. + ProveUnassignedBlocks = &cli.BoolFlag{ + Name: "prover.proveUnassignedBlocks", + Usage: "Whether you want to prove unassigned blocks, or only work on assigned proofs", + Category: proverCategory, + Value: false, + EnvVars: []string{"PROVER_PROVE_UNASSIGNED_BLOCKS"}, + } + MinEthBalance = &cli.Float64Flag{ + Name: "prover.minEthBalance", + Usage: "Minimum ETH balance (in Ether) a prover wants to keep", + Category: proverCategory, + Value: 0, + EnvVars: []string{"PROVER_MIN_ETH_BALANCE"}, + } + MinTaikoTokenBalance = &cli.Float64Flag{ + Name: "prover.minTaikoTokenBalance", + Usage: "Minimum Taiko token balance without decimal a prover wants to keep", + Category: proverCategory, + Value: 0, + EnvVars: []string{"PROVER_MIN_TAIKO_TOKEN_BALANCE"}, + } + // Tier fee related. + MinOptimisticTierFee = &cli.Uint64Flag{ + Name: "minTierFee.optimistic", + Usage: "Minimum accepted fee for generating an optimistic proof", + Category: proverCategory, + EnvVars: []string{"MIN_TIER_FEE_OPTIMISTIC"}, + } + MinSgxTierFee = &cli.Uint64Flag{ + Name: "minTierFee.sgx", + Usage: "Minimum accepted fee for generating a SGX proof", + Category: proverCategory, + EnvVars: []string{"MIN_TIER_FEE_SGX"}, + } + MinSgxAndZkVMTierFee = &cli.Uint64Flag{ + Name: "minTierFee.sgxAndZkvm", + Usage: "Minimum accepted fee for generating a SGX + zkVM proof", + Category: proverCategory, + EnvVars: []string{"MIN_TIER_FEE_SGX_AND_ZKVM"}, + } + // Running mode + ContesterMode = &cli.BoolFlag{ + Name: "mode.contester", + Usage: "Whether you want to contest wrong transitions with higher tier proofs", + Category: proverCategory, + Value: false, + EnvVars: []string{"MODE_CONTESTER"}, + } + // HTTP server related. + ProverHTTPServerPort = &cli.Uint64Flag{ + Name: "prover.port", + Usage: "Port to expose for http server", + Category: proverCategory, + Value: 9876, + EnvVars: []string{"PROVER_PORT"}, + } + MaxExpiry = &cli.DurationFlag{ + Name: "http.maxExpiry", + Usage: "Maximum accepted expiry in seconds for accepting proving a block", + Value: 1 * time.Hour, + Category: proverCategory, + EnvVars: []string{"HTTP_MAX_EXPIRY"}, + } + // Special flags for testing. + Dummy = &cli.BoolFlag{ + Name: "prover.dummy", + Usage: "Produce dummy proofs, testing purposes only", + Value: false, + Category: proverCategory, + EnvVars: []string{"PROVER_DUMMY"}, + } + // Max slippage allowed + MaxAcceptableBlockSlippage = &cli.Uint64Flag{ + Name: "prover.blockSlippage", + Usage: "Maximum accepted slippage difference for blockID for accepting proving a block", + Value: 1024, + Category: proverCategory, + EnvVars: []string{"PROVER_BLOCK_SLIPPAGE"}, + } + // Max amount of L1 blocks that can pass before block is invalid + MaxProposedIn = &cli.Uint64Flag{ + Name: "prover.maxProposedIn", + Usage: "Maximum amount of L1 blocks that can pass before block can not be proposed. 0 means no limit.", + Value: 0, + Category: proverCategory, + EnvVars: []string{"PROVER_MAX_PROPOSED_IN"}, + } + Allowance = &cli.Float64Flag{ + Name: "prover.allowance", + Usage: "Amount without decimal to approve AssignmentHook contract for TaikoToken usage", + Category: proverCategory, + EnvVars: []string{"PROVER_ALLOWANCE"}, + } + GuardianProverHealthCheckServerEndpoint = &cli.StringFlag{ + Name: "prover.guardianProverHealthCheckServerEndpoint", + Usage: "HTTP endpoint for main guardian prover health check server", + Category: proverCategory, + EnvVars: []string{"PROVER_GUARDIAN_PROVER_HEALTH_CHECK_SERVER_ENDPOINT"}, + } + // Guardian prover specific flag + GuardianProverMinority = &cli.StringFlag{ + Name: "guardianProverMinority", + Usage: "GuardianProverMinority contract `address`", + Value: rpc.ZeroAddress.Hex(), + Category: proverCategory, + EnvVars: []string{"GUARDIAN_PROVER_MINORITY"}, + } + GuardianProverMajority = &cli.StringFlag{ + Name: "guardianProverMajority", + Usage: "GuardianProverMajority contract `address`", + Category: proverCategory, + EnvVars: []string{"GUARDIAN_PROVER_MAJORITY"}, + } + GuardianProofSubmissionDelay = &cli.DurationFlag{ + Name: "guardian.submissionDelay", + Usage: "Guardian proof submission delay", + Value: 1 * time.Hour, + Category: proverCategory, + EnvVars: []string{"GUARDIAN_SUBMISSION_DELAY"}, + } + EnableLivenessBondProof = &cli.BoolFlag{ + Name: "prover.enableLivenessBondProof", + Usage: "Toggles whether the proof is a dummy proof or returns keccak256(RETURN_LIVENESS_BOND) as proof", + Value: false, + Category: proverCategory, + EnvVars: []string{"PROVER_ENABLE_LIVENESS_BOND_PROOF"}, + } + L1NodeVersion = &cli.StringFlag{ + Name: "prover.l1NodeVersion", + Usage: "Version or tag or the L1 Node Version used as an L1 RPC Url by this guardian prover", + Category: proverCategory, + EnvVars: []string{"PROVER_L1_NODE_VERSION"}, + } + L2NodeVersion = &cli.StringFlag{ + Name: "prover.l2NodeVersion", + Usage: "Version or tag or the L2 Node Version used as an L2 RPC Url by this guardian prover", + Category: proverCategory, + EnvVars: []string{"PROVER_L2_NODE_VERSION"}, + } + // Confirmations specific flag + BlockConfirmations = &cli.Uint64Flag{ + Name: "prover.blockConfirmations", + Usage: "Confirmations to the latest L1 block before submitting a proof for a L2 block", + Value: 6, + Category: proverCategory, + EnvVars: []string{"PROVER_BLOCK_CONFIRMATIONS"}, + } +) + +// ProverFlags All prover flags. +var ProverFlags = MergeFlags(CommonFlags, []cli.Flag{ + L1HTTPEndpoint, + L1BeaconEndpoint, + L2WSEndpoint, + L2HTTPEndpoint, + RaikoHostEndpoint, + RaikoL1Endpoint, + RaikoL1BeaconEndpoint, + RaikoL2Endpoint, + L1ProverPrivKey, + MinOptimisticTierFee, + MinSgxTierFee, + MinSgxAndZkVMTierFee, + MinEthBalance, + MinTaikoTokenBalance, + StartingBlockID, + Dummy, + GuardianProverMinority, + GuardianProverMajority, + GuardianProofSubmissionDelay, + GuardianProverHealthCheckServerEndpoint, + Graffiti, + ProveUnassignedBlocks, + ContesterMode, + ProverHTTPServerPort, + ProverCapacity, + MaxExpiry, + MaxProposedIn, + TaikoTokenAddress, + MaxAcceptableBlockSlippage, + AssignmentHookAddress, + Allowance, + L1NodeVersion, + L2NodeVersion, + BlockConfirmations, +}, TxmgrFlags) diff --git a/packages/taiko-client/cmd/flags/txmgr.go b/packages/taiko-client/cmd/flags/txmgr.go new file mode 100644 index 00000000000..640f13a457f --- /dev/null +++ b/packages/taiko-client/cmd/flags/txmgr.go @@ -0,0 +1,103 @@ +package flags + +import ( + "time" + + "github.com/urfave/cli/v2" +) + +var ( + NumConfirmations = &cli.Uint64Flag{ + Name: "tx.numConfirmations", + Usage: "Number of confirmations which we will wait after sending a transaction", + Value: 0, + Category: txmgrCategory, + EnvVars: []string{"TX_NUM_CONFIRMATIONS"}, + } + SafeAbortNonceTooLowCount = &cli.Uint64Flag{ + Name: "tx.safeAbortNonceTooLowCount", + Usage: "Number of ErrNonceTooLow observations required to give up on " + + "a tx at a particular nonce without receiving confirmation", + Value: 3, + Category: txmgrCategory, + EnvVars: []string{"TX_SAFE_ABORT_NONCE_TOO_LOW_COUNT"}, + } + FeeLimitMultiplier = &cli.Uint64Flag{ + Name: "tx.feeLimitMultiplier", + Usage: "The multiplier applied to fee suggestions to put a hard limit on fee increases", + Value: 10, + Category: txmgrCategory, + EnvVars: []string{"TX_FEE_LIMIT_MULTIPLIER"}, + } + FeeLimitThreshold = &cli.Float64Flag{ + Name: "tx.feeLimitThreshold", + Usage: "The minimum threshold (in GWei) at which fee bumping starts to be capped. " + + "Allows arbitrary fee bumps below this threshold.", + Value: 100.0, + Category: txmgrCategory, + EnvVars: []string{"TX_FEE_LIMIT_THRESHOLD"}, + } + MinTipCap = &cli.Float64Flag{ + Name: "tx.minTipCap", + Usage: "Enforces a minimum tip cap (in GWei) to use when determining tx fees. 1 GWei by default.", + Value: 1.0, + Category: txmgrCategory, + EnvVars: []string{"TX_MIN_TIP_CAP"}, + } + MinBaseFee = &cli.Float64Flag{ + Name: "tx.minBaseFee", + Usage: "Enforces a minimum base fee (in GWei) to assume when determining tx fees. 1 GWei by default.", + Value: 1.0, + Category: txmgrCategory, + EnvVars: []string{"TX_MIN_BASE_FEE"}, + } + ResubmissionTimeout = &cli.DurationFlag{ + Name: "tx.resubmissionTimeout", + Usage: "Duration we will wait before resubmitting a transaction to L1", + Value: 48 * time.Second, + Category: txmgrCategory, + EnvVars: []string{"TX_RESUBMISSION_TIMEOUT"}, + } + TxSendTimeout = &cli.DurationFlag{ + Name: "tx.sendTimeout", + Usage: "Timeout for sending transactions. If 0 it is disabled.", + Value: 0, + Category: txmgrCategory, + EnvVars: []string{"TX_SEND_TIMEOUT"}, + } + TxNotInMempoolTimeout = &cli.DurationFlag{ + Name: "tx.notInMempoolTimeout", + Usage: "Timeout for aborting a tx send if the tx does not make it to the mempool.", + Value: 2 * time.Minute, + Category: txmgrCategory, + EnvVars: []string{"TX_NOT_IN_MEMPOOL_TIMEOUT"}, + } + ReceiptQueryInterval = &cli.DurationFlag{ + Name: "tx.receiptQueryInterval", + Usage: "Frequency to poll for receipts", + Value: 12 * time.Second, + Category: txmgrCategory, + EnvVars: []string{"TX_RECEIPT_QUERY_INTERVAL"}, + } + TxGasLimit = &cli.Uint64Flag{ + Name: "tx.gasLimit", + Usage: "Gas limit will be used for transactions (0 means using gas estimation)", + Value: 0, + Category: txmgrCategory, + EnvVars: []string{"TX_GAS_LIMIT"}, + } +) + +var TxmgrFlags = []cli.Flag{ + NumConfirmations, + SafeAbortNonceTooLowCount, + FeeLimitMultiplier, + FeeLimitThreshold, + MinTipCap, + MinBaseFee, + ResubmissionTimeout, + TxSendTimeout, + TxNotInMempoolTimeout, + ReceiptQueryInterval, + TxGasLimit, +} diff --git a/packages/taiko-client/cmd/logger/logger.go b/packages/taiko-client/cmd/logger/logger.go new file mode 100644 index 00000000000..7c150b81f57 --- /dev/null +++ b/packages/taiko-client/cmd/logger/logger.go @@ -0,0 +1,27 @@ +package logger + +import ( + "os" + + "github.com/ethereum/go-ethereum/log" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" +) + +// InitLogger initializes the root logger with the command line flags. +func InitLogger(c *cli.Context) { + var ( + slogVerbosity = log.FromLegacyLevel(c.Int(flags.Verbosity.Name)) + ) + + if c.Bool(flags.LogJSON.Name) { + glogger := log.NewGlogHandler(log.NewGlogHandler(log.JSONHandler(os.Stdout))) + glogger.Verbosity(slogVerbosity) + log.SetDefault(log.NewLogger(glogger)) + } else { + glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stdout, true)) + glogger.Verbosity(slogVerbosity) + log.SetDefault(log.NewLogger(glogger)) + } +} diff --git a/packages/taiko-client/cmd/main.go b/packages/taiko-client/cmd/main.go new file mode 100644 index 00000000000..cfba0443e0e --- /dev/null +++ b/packages/taiko-client/cmd/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/version" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover" +) + +func main() { + app := cli.NewApp() + + app.Name = "Taiko Clients" + app.Usage = "The taiko client software command line interface" + app.Copyright = "Copyright 2021-2022 Taiko Labs" + app.Version = version.CommitVersion() + app.Description = "Client software implementation in Golang for Taiko protocol" + app.Authors = []*cli.Author{{Name: "Taiko Labs", Email: "info@taiko.xyz"}} + app.EnableBashCompletion = true + + // All supported sub commands. + app.Commands = []*cli.Command{ + { + Name: "driver", + Flags: flags.DriverFlags, + Usage: "Starts the driver software", + Description: "Taiko driver software", + Action: utils.SubcommandAction(new(driver.Driver)), + }, + { + Name: "proposer", + Flags: flags.ProposerFlags, + Usage: "Starts the proposer software", + Description: "Taiko proposer software", + Action: utils.SubcommandAction(new(proposer.Proposer)), + }, + { + Name: "prover", + Flags: flags.ProverFlags, + Usage: "Starts the prover software", + Description: "Taiko prover software", + Action: utils.SubcommandAction(new(prover.Prover)), + }, + } + + if err := app.Run(os.Args); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} diff --git a/packages/taiko-client/cmd/utils/sub_command.go b/packages/taiko-client/cmd/utils/sub_command.go new file mode 100644 index 00000000000..020ad5616e5 --- /dev/null +++ b/packages/taiko-client/cmd/utils/sub_command.go @@ -0,0 +1,63 @@ +package utils + +import ( + "context" + "os" + "os/signal" + "syscall" + + "github.com/ethereum/go-ethereum/log" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/logger" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" +) + +type SubcommandApplication interface { + InitFromCli(context.Context, *cli.Context) error + Name() string + Start() error + Close(context.Context) +} + +func SubcommandAction(app SubcommandApplication) cli.ActionFunc { + return func(c *cli.Context) error { + logger.InitLogger(c) + + ctx, ctxClose := context.WithCancel(context.Background()) + defer ctxClose() + + if err := app.InitFromCli(ctx, c); err != nil { + return err + } + + log.Info("Starting Taiko client application", "name", app.Name()) + + if err := app.Start(); err != nil { + log.Error("Starting application error", "name", app.Name(), "error", err) + return err + } + + if err := metrics.Serve(ctx, c); err != nil { + log.Error("Starting metrics server error", "error", err) + return err + } + + defer func() { + ctxClose() + app.Close(ctx) + log.Info("Application stopped", "name", app.Name()) + }() + + quitCh := make(chan os.Signal, 1) + signal.Notify(quitCh, []os.Signal{ + os.Interrupt, + os.Kill, + syscall.SIGTERM, + syscall.SIGQUIT, + }...) + <-quitCh + + return nil + } +} diff --git a/packages/taiko-client/codecov.yml b/packages/taiko-client/codecov.yml new file mode 100644 index 00000000000..677e4001775 --- /dev/null +++ b/packages/taiko-client/codecov.yml @@ -0,0 +1,6 @@ +coverage: + status: + patch: off + project: off +fixes: + - "taiko-client/::" diff --git a/packages/taiko-client/docs/docs.go b/packages/taiko-client/docs/docs.go new file mode 100644 index 00000000000..82a6b6bfdc2 --- /dev/null +++ b/packages/taiko-client/docs/docs.go @@ -0,0 +1,170 @@ +// Package docs Code generated by swaggo/swag. DO NOT EDIT +package docs + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "termsOfService": "http://swagger.io/terms/", + "contact": { + "name": "API Support", + "url": "https://community.taiko.xyz/", + "email": "info@taiko.xyz" + }, + "license": { + "name": "MIT", + "url": "https://github.com/taikoxyz/taiko-mono/packages/taiko-client/blob/main/LICENSE.md" + }, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/assignment": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Try to accept a block proof assignment", + "parameters": [ + { + "description": "assignment request body", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/server.CreateAssignmentRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/server.ProposeBlockResponse" + } + }, + "422": { + "description": "prover does not have capacity", + "schema": { + "type": "string" + } + } + } + } + }, + "/status": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Get current prover server status", + "operationId": "get-status", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/server.Status" + } + } + } + } + } + }, + "definitions": { + "server.CreateAssignmentRequestBody": { + "type": "object", + "properties": { + "blobHash": { + "type": "array", + "items": { + "type": "integer" + } + }, + "expiry": { + "type": "integer" + }, + "feeToken": { + "type": "string" + }, + "proposer": { + "type": "string" + }, + "tierFees": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "server.ProposeBlockResponse": { + "type": "object", + "properties": { + "maxBlockID": { + "type": "integer" + }, + "maxProposedIn": { + "type": "integer" + }, + "prover": { + "type": "string" + }, + "signedPayload": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "server.Status": { + "type": "object", + "properties": { + "maxExpiry": { + "type": "integer" + }, + "minOptimisticTierFee": { + "type": "integer" + }, + "minSgxAndZkVMTierFee": { + "type": "integer" + }, + "minSgxTierFee": { + "type": "integer" + }, + "prover": { + "type": "string" + } + } + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "1.0", + Host: "", + BasePath: "", + Schemes: []string{}, + Title: "Taiko Prover Server API", + Description: "", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, + LeftDelim: "{{", + RightDelim: "}}", +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/packages/taiko-client/docs/swagger.json b/packages/taiko-client/docs/swagger.json new file mode 100644 index 00000000000..64110df27cc --- /dev/null +++ b/packages/taiko-client/docs/swagger.json @@ -0,0 +1,135 @@ +{ + "swagger": "2.0", + "info": { + "title": "Taiko Prover Server API", + "termsOfService": "http://swagger.io/terms/", + "contact": { + "name": "API Support", + "url": "https://community.taiko.xyz/", + "email": "info@taiko.xyz" + }, + "license": { + "name": "MIT", + "url": "https://github.com/taikoxyz/taiko-mono/packages/taiko-client/blob/main/LICENSE.md" + }, + "version": "1.0" + }, + "paths": { + "/assignment": { + "post": { + "consumes": ["application/json"], + "produces": ["application/json"], + "summary": "Try to accept a block proof assignment", + "parameters": [ + { + "description": "assignment request body", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/server.CreateAssignmentRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/server.ProposeBlockResponse" + } + }, + "422": { + "description": "prover does not have capacity", + "schema": { + "type": "string" + } + } + } + } + }, + "/status": { + "get": { + "consumes": ["application/json"], + "produces": ["application/json"], + "summary": "Get current prover server status", + "operationId": "get-status", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/server.Status" + } + } + } + } + } + }, + "definitions": { + "server.CreateAssignmentRequestBody": { + "type": "object", + "properties": { + "blobHash": { + "type": "array", + "items": { + "type": "integer" + } + }, + "expiry": { + "type": "integer" + }, + "feeToken": { + "type": "string" + }, + "proposer": { + "type": "string" + }, + "tierFees": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "server.ProposeBlockResponse": { + "type": "object", + "properties": { + "maxBlockID": { + "type": "integer" + }, + "maxProposedIn": { + "type": "integer" + }, + "prover": { + "type": "string" + }, + "signedPayload": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "server.Status": { + "type": "object", + "properties": { + "maxExpiry": { + "type": "integer" + }, + "minOptimisticTierFee": { + "type": "integer" + }, + "minSgxAndZkVMTierFee": { + "type": "integer" + }, + "minSgxTierFee": { + "type": "integer" + }, + "prover": { + "type": "string" + } + } + } + } +} diff --git a/packages/taiko-client/docs/swagger.yaml b/packages/taiko-client/docs/swagger.yaml new file mode 100644 index 00000000000..1c1a1495322 --- /dev/null +++ b/packages/taiko-client/docs/swagger.yaml @@ -0,0 +1,93 @@ +definitions: + server.CreateAssignmentRequestBody: + properties: + blobHash: + items: + type: integer + type: array + expiry: + type: integer + feeToken: + type: string + proposer: + type: string + tierFees: + items: + type: integer + type: array + type: object + server.ProposeBlockResponse: + properties: + maxBlockID: + type: integer + maxProposedIn: + type: integer + prover: + type: string + signedPayload: + items: + type: integer + type: array + type: object + server.Status: + properties: + maxExpiry: + type: integer + minOptimisticTierFee: + type: integer + minSgxAndZkVMTierFee: + type: integer + minSgxTierFee: + type: integer + prover: + type: string + type: object +info: + contact: + email: info@taiko.xyz + name: API Support + url: https://community.taiko.xyz/ + license: + name: MIT + url: https://github.com/taikoxyz/taiko-mono/packages/taiko-client/blob/main/LICENSE.md + termsOfService: http://swagger.io/terms/ + title: Taiko Prover Server API + version: "1.0" +paths: + /assignment: + post: + consumes: + - application/json + parameters: + - description: assignment request body + in: body + name: body + required: true + schema: + $ref: "#/definitions/server.CreateAssignmentRequestBody" + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: "#/definitions/server.ProposeBlockResponse" + "422": + description: prover does not have capacity + schema: + type: string + summary: Try to accept a block proof assignment + /status: + get: + consumes: + - application/json + operationId: get-status + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: "#/definitions/server.Status" + summary: Get current prover server status +swagger: "2.0" diff --git a/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go b/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go new file mode 100644 index 00000000000..c97bbbe040a --- /dev/null +++ b/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor.go @@ -0,0 +1,140 @@ +package anchortxconstructor + +import ( + "context" + "fmt" + "math/big" + + "github.com/decred/dcrd/dcrec/secp256k1/v4" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/signer" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +var ( + // Each TaikoL2.anchor transaction should use this value as it's gas limit. + AnchorGasLimit uint64 = 250_000 + GoldenTouchAddress = common.HexToAddress("0x0000777735367b36bC9B61C50022d9D0700dB4Ec") +) + +// AnchorTxConstructor is responsible for assembling the anchor transaction (TaikoL2.anchor) in +// each L2 block, which must be the first transaction, and its sender must be the golden touch account. +type AnchorTxConstructor struct { + rpc *rpc.Client + signer *signer.FixedKSigner +} + +// New creates a new AnchorConstructor instance. +func New(rpc *rpc.Client) (*AnchorTxConstructor, error) { + signer, err := signer.NewFixedKSigner("0x" + encoding.GoldenTouchPrivKey) + if err != nil { + return nil, fmt.Errorf("invalid golden touch private key %s", encoding.GoldenTouchPrivKey) + } + + return &AnchorTxConstructor{rpc, signer}, nil +} + +// AssembleAnchorTx assembles a signed TaikoL2.anchor transaction. +func (c *AnchorTxConstructor) AssembleAnchorTx( + ctx context.Context, + // Parameters of the TaikoL2.anchor transaction. + l1Height *big.Int, + l1Hash common.Hash, + // Height of the L2 block which including the TaikoL2.anchor transaction. + l2Height *big.Int, + baseFee *big.Int, + parentGasUsed uint64, +) (*types.Transaction, error) { + opts, err := c.transactOpts(ctx, l2Height, baseFee) + if err != nil { + return nil, err + } + + l1Header, err := c.rpc.L1.HeaderByHash(ctx, l1Hash) + if err != nil { + return nil, err + } + + log.Info( + "Anchor arguments", + "l2Height", l2Height, + "l1Height", l1Height, + "l1Hash", l1Hash, + "stateRoot", l1Header.Root, + "baseFee", utils.WeiToGWei(baseFee), + "gasUsed", parentGasUsed, + ) + + return c.rpc.TaikoL2.Anchor(opts, l1Hash, l1Header.Root, l1Height.Uint64(), uint32(parentGasUsed)) +} + +// transactOpts is a utility method to create some transact options of the anchor transaction in given L2 block with +// golden touch account's private key. +func (c *AnchorTxConstructor) transactOpts( + ctx context.Context, + l2Height *big.Int, + baseFee *big.Int, +) (*bind.TransactOpts, error) { + var ( + signer = types.LatestSignerForChainID(c.rpc.L2.ChainID) + parentHeight = new(big.Int).Sub(l2Height, common.Big1) + ) + + // Get the nonce of golden touch account at the specified parentHeight. + nonce, err := c.rpc.L2AccountNonce(ctx, GoldenTouchAddress, parentHeight) + if err != nil { + return nil, err + } + + log.Info( + "Golden touch account nonce", + "address", GoldenTouchAddress, + "nonce", nonce, + "parent", parentHeight, + ) + + return &bind.TransactOpts{ + From: GoldenTouchAddress, + Signer: func(address common.Address, tx *types.Transaction) (*types.Transaction, error) { + if address != GoldenTouchAddress { + return nil, bind.ErrNotAuthorized + } + signature, err := c.signTxPayload(signer.Hash(tx).Bytes()) + if err != nil { + return nil, err + } + return tx.WithSignature(signer, signature) + }, + Nonce: new(big.Int).SetUint64(nonce), + Context: ctx, + GasFeeCap: baseFee, + GasTipCap: common.Big0, + GasLimit: AnchorGasLimit, + NoSend: true, + }, nil +} + +// signTxPayload calculates an ECDSA signature for an anchor transaction. +func (c *AnchorTxConstructor) signTxPayload(hash []byte) ([]byte, error) { + if len(hash) != 32 { + return nil, fmt.Errorf("hash is required to be exactly 32 bytes (%d)", len(hash)) + } + + // Try k = 1. + sig, ok := c.signer.SignWithK(new(secp256k1.ModNScalar).SetInt(1))(hash) + if !ok { + // Try k = 2. + sig, ok = c.signer.SignWithK(new(secp256k1.ModNScalar).SetInt(2))(hash) + if !ok { + log.Crit("Failed to sign TaikoL2.anchor transaction using K = 1 and K = 2") + } + } + + return sig[:], nil +} diff --git a/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor_test.go b/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor_test.go new file mode 100644 index 00000000000..0aa240a1a06 --- /dev/null +++ b/packages/taiko-client/driver/anchor_tx_constructor/anchor_tx_constructor_test.go @@ -0,0 +1,109 @@ +package anchortxconstructor + +import ( + "context" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +type AnchorTxConstructorTestSuite struct { + testutils.ClientTestSuite + l1Height *big.Int + l1Hash common.Hash + c *AnchorTxConstructor +} + +func (s *AnchorTxConstructorTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + c, err := New(s.RPCClient) + s.Nil(err) + head, err := s.RPCClient.L1.BlockByNumber(context.Background(), nil) + s.Nil(err) + s.l1Height = head.Number() + s.l1Hash = head.Hash() + s.c = c +} + +func (s *AnchorTxConstructorTestSuite) TestGasLimit() { + s.Greater(AnchorGasLimit, uint64(0)) +} + +func (s *AnchorTxConstructorTestSuite) TestAssembleAnchorTx() { + tx, err := s.c.AssembleAnchorTx(context.Background(), s.l1Height, s.l1Hash, common.Big1, common.Big256, 1024) + s.Nil(err) + s.NotNil(tx) +} + +func (s *AnchorTxConstructorTestSuite) TestNewAnchorTransactor() { + goldenTouchAddress, err := s.RPCClient.TaikoL2.GOLDENTOUCHADDRESS(nil) + s.Nil(err) + + c, err := New(s.RPCClient) + s.Nil(err) + + opts, err := c.transactOpts(context.Background(), common.Big1, common.Big256) + s.Nil(err) + s.Equal(true, opts.NoSend) + s.Equal(common.Big0, opts.Nonce) + s.Equal(goldenTouchAddress, opts.From) + s.Equal(common.Big256, opts.GasFeeCap) + s.Equal(common.Big0, opts.GasTipCap) +} + +func (s *AnchorTxConstructorTestSuite) TestCancelCtxTransactOpts() { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + opts, err := s.c.transactOpts(ctx, common.Big1, common.Big256) + s.Nil(opts) + s.ErrorContains(err, "context canceled") +} + +func (s *AnchorTxConstructorTestSuite) TestSign() { + // Payload 1 + hash := hexutil.MustDecode("0x44943399d1507f3ce7525e9be2f987c3db9136dc759cb7f92f742154196868b9") + signatureBytes := testutils.SignatureFromRSV( + "0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "0x782a1e70872ecc1a9f740dd445664543f8b7598c94582720bca9a8c48d6a4766", + 1, + ) + pubKey, err := crypto.Ecrecover(hash, signatureBytes) + s.Nil(err) + isValid := crypto.VerifySignature(pubKey, hash, signatureBytes[:64]) + s.True(isValid) + signed, err := s.c.signTxPayload(hash) + s.Nil(err) + s.Equal(signatureBytes, signed) + + // Payload 2 + hash = hexutil.MustDecode("0x663d210fa6dba171546498489de1ba024b89db49e21662f91bf83cdffe788820") + signatureBytes = testutils.SignatureFromRSV( + "0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "0x568130fab1a3a9e63261d4278a7e130588beb51f27de7c20d0258d38a85a27ff", + 1, + ) + pubKey, err = crypto.Ecrecover(hash, signatureBytes) + s.Nil(err) + isValid = crypto.VerifySignature(pubKey, hash, signatureBytes[:64]) + s.True(isValid) + signed, err = s.c.signTxPayload(hash) + s.Nil(err) + s.Equal(signatureBytes, signed) +} + +func (s *AnchorTxConstructorTestSuite) TestSignShortHash() { + rand := testutils.RandomHash().Bytes() + hash := rand[:len(rand)-2] + _, err := s.c.signTxPayload(hash) + s.ErrorContains(err, "hash is required to be exactly 32 bytes") +} + +func TestAnchorTxConstructorTestSuite(t *testing.T) { + suite.Run(t, new(AnchorTxConstructorTestSuite)) +} diff --git a/packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker.go b/packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker.go new file mode 100644 index 00000000000..d86e47408bf --- /dev/null +++ b/packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker.go @@ -0,0 +1,260 @@ +package beaconsync + +import ( + "context" + "math/big" + "sync" + "time" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +var ( + syncProgressCheckInterval = 12 * time.Second +) + +// SyncProgressTracker is responsible for tracking the L2 execution engine's sync progress, after +// a beacon sync is triggered, and check whether the L2 execution is not able to sync through P2P (due to no +// connected peer or some other reasons). +type SyncProgressTracker struct { + // RPC client + client *rpc.EthClient + + // Meta data + triggered bool + lastSyncedBlockID *big.Int + lastSyncedBlockHash common.Hash + + // Out-of-sync check related + lastSyncProgress *ethereum.SyncProgress + lastProgressedTime time.Time + timeout time.Duration + outOfSync bool + ticker *time.Ticker + + // A marker to indicate whether the beacon sync has been finished. + finished bool + + // Read-write mutex + mutex sync.RWMutex +} + +// NewSyncProgressTracker creates a new SyncProgressTracker instance. +func NewSyncProgressTracker(c *rpc.EthClient, timeout time.Duration) *SyncProgressTracker { + return &SyncProgressTracker{client: c, timeout: timeout, ticker: time.NewTicker(syncProgressCheckInterval)} +} + +// Track starts the inner event loop, to monitor the sync progress. +func (t *SyncProgressTracker) Track(ctx context.Context) { + for { + select { + case <-ctx.Done(): + return + case <-t.ticker.C: + t.track(ctx) + } + } +} + +// track is the internal implementation of MonitorSyncProgress, tries to +// track the L2 execution engine's beacon sync progress. +func (t *SyncProgressTracker) track(ctx context.Context) { + t.mutex.Lock() + defer t.mutex.Unlock() + + if !t.triggered { + log.Debug("Beacon sync not triggered") + return + } + + if t.outOfSync { + return + } + + progress, err := t.client.SyncProgress(ctx) + if err != nil { + log.Error("Get L2 execution engine sync progress error", "error", err) + return + } + + if progress != nil { + log.Info( + "L2 execution engine sync progress", + "progress", progress, + "lastProgressedTime", t.lastProgressedTime, + "timeout", t.timeout, + ) + } + + if progress == nil { + headHeight, err := t.client.BlockNumber(ctx) + if err != nil { + log.Error("Get L2 execution engine head height error", "error", err) + return + } + + if new(big.Int).SetUint64(headHeight).Cmp(t.lastSyncedBlockID) >= 0 { + t.lastProgressedTime = time.Now() + log.Info( + "L2 execution engine has finished the P2P sync work, all verified blocks synced, "+ + "will switch to insert pending blocks one by one", + "lastSyncedBlockID", t.lastSyncedBlockID, + "lastSyncedBlockHash", t.lastSyncedBlockHash, + ) + return + } + + log.Info("L2 execution engine has not started P2P syncing yet", "timeout", t.timeout) + } + + defer func() { t.lastSyncProgress = progress }() + + // Check whether the L2 execution engine has synced any new block through P2P since last event loop. + if syncProgressed(t.lastSyncProgress, progress) { + t.outOfSync = false + t.lastProgressedTime = time.Now() + return + } + + // Has not synced any new block since last loop, check whether reaching the timeout. + if time.Since(t.lastProgressedTime) > t.timeout { + // Mark the L2 execution engine out of sync. + t.outOfSync = true + + log.Warn( + "L2 execution engine is not able to sync through P2P", + "lastProgressedTime", t.lastProgressedTime, + "timeout", t.timeout, + ) + } +} + +// UpdateMeta updates the inner beacon sync metadata. +func (t *SyncProgressTracker) UpdateMeta(id *big.Int, blockHash common.Hash) { + t.mutex.Lock() + defer t.mutex.Unlock() + + log.Debug("Update sync progress tracker meta", "id", id, "hash", blockHash) + + if !t.triggered { + t.lastProgressedTime = time.Now() + } + + t.triggered = true + t.lastSyncedBlockID = id + t.lastSyncedBlockHash = blockHash +} + +// ClearMeta cleans the inner beacon sync metadata. +func (t *SyncProgressTracker) ClearMeta() { + t.mutex.Lock() + defer t.mutex.Unlock() + + log.Debug("Clear sync progress tracker meta") + + t.triggered = false + t.lastSyncedBlockID = nil + t.lastSyncedBlockHash = common.Hash{} + t.outOfSync = false +} + +// HeadChanged checks if a new beacon sync request will be needed. +func (t *SyncProgressTracker) HeadChanged(newID *big.Int) bool { + t.mutex.RLock() + defer t.mutex.RUnlock() + + if !t.triggered { + return true + } + + return t.lastSyncedBlockID != nil && t.lastSyncedBlockID != newID +} + +// OutOfSync tells whether the L2 execution engine is marked as out of sync. +func (t *SyncProgressTracker) OutOfSync() bool { + t.mutex.RLock() + defer t.mutex.RUnlock() + + return t.outOfSync +} + +// Triggered returns tracker.triggered. +func (t *SyncProgressTracker) Triggered() bool { + t.mutex.RLock() + defer t.mutex.RUnlock() + + return t.triggered +} + +// LastSyncedBlockID returns tracker.lastSyncedBlockID. +func (t *SyncProgressTracker) LastSyncedBlockID() *big.Int { + t.mutex.RLock() + defer t.mutex.RUnlock() + + if t.lastSyncedBlockID == nil { + return nil + } + + return new(big.Int).Set(t.lastSyncedBlockID) +} + +// LastSyncedBlockHash returns tracker.lastSyncedBlockHash. +func (t *SyncProgressTracker) LastSyncedBlockHash() common.Hash { + t.mutex.RLock() + defer t.mutex.RUnlock() + + return t.lastSyncedBlockHash +} + +// syncProgressed checks whether there is any new progress since last sync progress check. +func syncProgressed(last *ethereum.SyncProgress, new *ethereum.SyncProgress) bool { + if last == nil { + return false + } + + if new == nil { + return true + } + + // Block + if new.CurrentBlock > last.CurrentBlock { + return true + } + + // Fast sync fields + if new.PulledStates > last.PulledStates { + return true + } + + // Snap sync fields + if new.SyncedAccounts > last.SyncedAccounts || + new.SyncedAccountBytes > last.SyncedAccountBytes || + new.SyncedBytecodes > last.SyncedBytecodes || + new.SyncedBytecodeBytes > last.SyncedBytecodeBytes || + new.SyncedStorage > last.SyncedStorage || + new.SyncedStorageBytes > last.SyncedStorageBytes || + new.HealedTrienodes > last.HealedTrienodes || + new.HealedTrienodeBytes > last.HealedTrienodeBytes || + new.HealedBytecodes > last.HealedBytecodes || + new.HealedBytecodeBytes > last.HealedBytecodeBytes || + new.HealingTrienodes > last.HealingTrienodes || + new.HealingBytecode > last.HealingBytecode { + return true + } + + return false +} + +// MarkFinished marks the current beacon sync as finished. +func (t *SyncProgressTracker) MarkFinished() { + t.finished = true +} + +// Finished returns whether the current beacon sync has been finished. +func (t *SyncProgressTracker) Finished() bool { + return t.finished +} diff --git a/packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker_test.go b/packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker_test.go new file mode 100644 index 00000000000..084e57c41f7 --- /dev/null +++ b/packages/taiko-client/driver/chain_syncer/beaconsync/progress_tracker_test.go @@ -0,0 +1,90 @@ +package beaconsync + +import ( + "testing" + "time" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +type BeaconSyncProgressTrackerTestSuite struct { + testutils.ClientTestSuite + t *SyncProgressTracker +} + +func (s *BeaconSyncProgressTrackerTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + s.t = NewSyncProgressTracker(s.RPCClient.L2, 30*time.Second) +} + +func (s *BeaconSyncProgressTrackerTestSuite) TestSyncProgressed() { + s.False(syncProgressed(nil, ðereum.SyncProgress{}), nil) + s.False(syncProgressed(ðereum.SyncProgress{}, ðereum.SyncProgress{})) + + // Block + s.True(syncProgressed(ðereum.SyncProgress{CurrentBlock: 0}, ðereum.SyncProgress{CurrentBlock: 1})) + s.False(syncProgressed(ðereum.SyncProgress{CurrentBlock: 0}, ðereum.SyncProgress{CurrentBlock: 0})) + s.False(syncProgressed(ðereum.SyncProgress{CurrentBlock: 1}, ðereum.SyncProgress{CurrentBlock: 1})) + + // Fast sync fields + s.True(syncProgressed(ðereum.SyncProgress{PulledStates: 0}, ðereum.SyncProgress{PulledStates: 1})) + + // Snap sync fields + s.True(syncProgressed(ðereum.SyncProgress{SyncedAccounts: 0}, ðereum.SyncProgress{SyncedAccounts: 1})) + s.True(syncProgressed(ðereum.SyncProgress{SyncedAccountBytes: 0}, ðereum.SyncProgress{SyncedAccountBytes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{SyncedBytecodes: 0}, ðereum.SyncProgress{SyncedBytecodes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{SyncedBytecodeBytes: 0}, ðereum.SyncProgress{SyncedBytecodeBytes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{SyncedStorage: 0}, ðereum.SyncProgress{SyncedStorage: 1})) + s.True(syncProgressed(ðereum.SyncProgress{SyncedStorageBytes: 0}, ðereum.SyncProgress{SyncedStorageBytes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{HealedTrienodes: 0}, ðereum.SyncProgress{HealedTrienodes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{HealedTrienodeBytes: 0}, ðereum.SyncProgress{HealedTrienodeBytes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{HealedBytecodes: 0}, ðereum.SyncProgress{HealedBytecodes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{HealedBytecodeBytes: 0}, ðereum.SyncProgress{HealedBytecodeBytes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{HealingTrienodes: 0}, ðereum.SyncProgress{HealingTrienodes: 1})) + s.True(syncProgressed(ðereum.SyncProgress{HealingBytecode: 0}, ðereum.SyncProgress{HealingBytecode: 1})) +} + +func (s *BeaconSyncProgressTrackerTestSuite) TestClearMeta() { + s.t.triggered = true + s.t.ClearMeta() + s.False(s.t.triggered) +} + +func (s *BeaconSyncProgressTrackerTestSuite) TestHeadChanged() { + s.True(s.t.HeadChanged(common.Big256)) + s.t.triggered = true + s.False(s.t.HeadChanged(common.Big256)) +} + +func (s *BeaconSyncProgressTrackerTestSuite) TestOutOfSync() { + s.False(s.t.OutOfSync()) +} + +func (s *BeaconSyncProgressTrackerTestSuite) TestTriggered() { + s.False(s.t.Triggered()) +} + +func (s *BeaconSyncProgressTrackerTestSuite) TestLastSyncedBlockID() { + s.Nil(s.t.LastSyncedBlockID()) + s.t.lastSyncedBlockID = common.Big1 + s.Equal(common.Big1.Uint64(), s.t.LastSyncedBlockID().Uint64()) +} + +func (s *BeaconSyncProgressTrackerTestSuite) TestLastSyncedVerifiedBlockHash() { + s.Equal( + common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + s.t.LastSyncedBlockHash(), + ) + randomHash := testutils.RandomHash() + s.t.lastSyncedBlockHash = randomHash + s.Equal(randomHash, s.t.LastSyncedBlockHash()) +} + +func TestBeaconSyncProgressTrackerTestSuite(t *testing.T) { + suite.Run(t, new(BeaconSyncProgressTrackerTestSuite)) +} diff --git a/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go b/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go new file mode 100644 index 00000000000..d593d868be2 --- /dev/null +++ b/packages/taiko-client/driver/chain_syncer/beaconsync/syncer.go @@ -0,0 +1,124 @@ +package beaconsync + +import ( + "context" + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/beacon/engine" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/eth/downloader" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// Syncer responsible for letting the L2 execution engine catching up with protocol's latest +// verified block through P2P beacon sync. +type Syncer struct { + ctx context.Context + rpc *rpc.Client + state *state.State + syncMode string + progressTracker *SyncProgressTracker // Sync progress tracker +} + +// NewSyncer creates a new syncer instance. +func NewSyncer( + ctx context.Context, + rpc *rpc.Client, + state *state.State, + syncMode string, + progressTracker *SyncProgressTracker, +) *Syncer { + return &Syncer{ctx, rpc, state, syncMode, progressTracker} +} + +// TriggerBeaconSync triggers the L2 execution engine to start performing a beacon sync, if the +// latest verified block has changed. +func (s *Syncer) TriggerBeaconSync(blockID uint64) error { + latestVerifiedHeadPayload, err := s.getVerifiedBlockPayload(s.ctx, blockID) + if err != nil { + return err + } + + if !s.progressTracker.HeadChanged(new(big.Int).SetUint64(blockID)) { + log.Debug("Verified head has not changed", "blockID", blockID, "hash", latestVerifiedHeadPayload.BlockHash) + return nil + } + + if s.progressTracker.Triggered() { + if s.progressTracker.lastSyncProgress == nil { + log.Info( + "Syncing beacon headers, please check L2 execution engine logs for progress", + "currentSyncHead", s.progressTracker.LastSyncedBlockID(), + "newBlockID", blockID, + ) + } + } + + status, err := s.rpc.L2Engine.NewPayload(s.ctx, latestVerifiedHeadPayload) + if err != nil { + return err + } + + if status.Status != engine.SYNCING && status.Status != engine.VALID { + return fmt.Errorf("unexpected NewPayload response status: %s", status.Status) + } + + fcRes, err := s.rpc.L2Engine.ForkchoiceUpdate(s.ctx, &engine.ForkchoiceStateV1{ + HeadBlockHash: latestVerifiedHeadPayload.BlockHash, + SafeBlockHash: latestVerifiedHeadPayload.BlockHash, + FinalizedBlockHash: latestVerifiedHeadPayload.BlockHash, + }, nil) + if err != nil { + return err + } + if fcRes.PayloadStatus.Status != engine.SYNCING { + return fmt.Errorf("unexpected ForkchoiceUpdate response status: %s", fcRes.PayloadStatus.Status) + } + + // Update sync status. + s.progressTracker.UpdateMeta(new(big.Int).SetUint64(blockID), latestVerifiedHeadPayload.BlockHash) + + log.Info( + "⛓️ Beacon sync triggered", + "newHeadID", blockID, + "newHeadHash", s.progressTracker.LastSyncedBlockHash(), + ) + + return nil +} + +// getVerifiedBlockPayload fetches the latest verified block's header, and converts it to an Engine API executable data, +// which will be used to let the node start beacon syncing. +func (s *Syncer) getVerifiedBlockPayload(ctx context.Context, blockID uint64) (*engine.ExecutableData, error) { + header, err := s.rpc.L2CheckPoint.HeaderByNumber(s.ctx, new(big.Int).SetUint64(blockID)) + if err != nil { + return nil, err + } + + if s.syncMode == downloader.FullSync.String() { + blockInfo, err := s.rpc.GetL2BlockInfo(ctx, new(big.Int).SetUint64(blockID)) + if err != nil { + return nil, err + } + ts, err := s.rpc.GetTransition(ctx, new(big.Int).SetUint64(blockInfo.BlockId), blockInfo.VerifiedTransitionId) + if err != nil { + return nil, err + } + if header.Hash() != ts.BlockHash { + return nil, fmt.Errorf( + "latest verified block hash mismatch: %s != %s", + header.Hash(), + common.BytesToHash(ts.BlockHash[:]), + ) + } + } + + log.Info("Latest verified block header retrieved", "hash", header.Hash()) + + return encoding.ToExecutableData(header), nil +} diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go new file mode 100644 index 00000000000..82c8ad671d4 --- /dev/null +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -0,0 +1,668 @@ +package blob + +import ( + "context" + "errors" + "fmt" + "math/big" + "net/url" + "time" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/beacon/engine" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + + anchorTxConstructor "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/anchor_tx_constructor" + txListDecompressor "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/txlist_decompressor" + txlistFetcher "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/txlist_fetcher" + eventIterator "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/chain_iterator/event_iterator" +) + +// Syncer responsible for letting the L2 execution engine catching up with protocol's latest +// pending block through deriving L1 calldata. +type Syncer struct { + ctx context.Context + rpc *rpc.Client + state *state.State + progressTracker *beaconsync.SyncProgressTracker // Sync progress tracker + anchorConstructor *anchorTxConstructor.AnchorTxConstructor // TaikoL2.anchor transactions constructor + txListDecompressor *txListDecompressor.TxListDecompressor // Transactions list decompressor + // Used by BlockInserter + lastInsertedBlockID *big.Int + reorgDetectedFlag bool + maxRetrieveExponent uint64 + blobDatasource *rpc.BlobDataSource +} + +// NewSyncer creates a new syncer instance. +func NewSyncer( + ctx context.Context, + client *rpc.Client, + state *state.State, + progressTracker *beaconsync.SyncProgressTracker, + maxRetrieveExponent uint64, + blobServerEndpoint *url.URL, +) (*Syncer, error) { + configs, err := client.TaikoL1.GetConfig(&bind.CallOpts{Context: ctx}) + if err != nil { + return nil, fmt.Errorf("failed to get protocol configs: %w", err) + } + + constructor, err := anchorTxConstructor.New(client) + if err != nil { + return nil, fmt.Errorf("failed to initialize anchor constructor: %w", err) + } + + return &Syncer{ + ctx: ctx, + rpc: client, + state: state, + progressTracker: progressTracker, + anchorConstructor: constructor, + txListDecompressor: txListDecompressor.NewTxListDecompressor( + uint64(configs.BlockMaxGasLimit), + rpc.BlockMaxTxListBytes, + client.L2.ChainID, + ), + maxRetrieveExponent: maxRetrieveExponent, + blobDatasource: rpc.NewBlobDataSource( + ctx, + client, + blobServerEndpoint, + ), + }, nil +} + +// ProcessL1Blocks fetches all `TaikoL1.BlockProposed` events between given +// L1 block heights, and then tries inserting them into L2 execution engine's blockchain. +func (s *Syncer) ProcessL1Blocks(ctx context.Context) error { + for { + if err := s.processL1Blocks(ctx); err != nil { + return err + } + + // If the L1 chain has been reorged, we process the new L1 blocks again with + // the new L1Current cursor. + if s.reorgDetectedFlag { + s.reorgDetectedFlag = false + continue + } + + return nil + } +} + +// processL1Blocks is the inner method which responsible for processing +// all new L1 blocks. +func (s *Syncer) processL1Blocks(ctx context.Context) error { + l1End := s.state.GetL1Head() + startL1Current := s.state.GetL1Current() + // If there is a L1 reorg, sometimes this will happen. + if startL1Current.Number.Uint64() >= l1End.Number.Uint64() && startL1Current.Hash() != l1End.Hash() { + newL1Current, err := s.rpc.L1.HeaderByNumber(ctx, new(big.Int).Sub(l1End.Number, common.Big1)) + if err != nil { + return err + } + + log.Info( + "Reorg detected", + "oldL1CurrentHeight", startL1Current.Number, + "oldL1CurrentHash", startL1Current.Hash(), + "newL1CurrentHeight", newL1Current.Number, + "newL1CurrentHash", newL1Current.Hash(), + "l1Head", l1End.Number, + ) + + s.state.SetL1Current(newL1Current) + s.lastInsertedBlockID = nil + } + + iter, err := eventIterator.NewBlockProposedIterator(ctx, &eventIterator.BlockProposedIteratorConfig{ + Client: s.rpc.L1, + TaikoL1: s.rpc.TaikoL1, + StartHeight: s.state.GetL1Current().Number, + EndHeight: l1End.Number, + FilterQuery: nil, + OnBlockProposedEvent: s.onBlockProposed, + }) + if err != nil { + return err + } + + if err := iter.Iter(); err != nil { + return err + } + + // If there is a L1 reorg, we don't update the L1Current cursor. + if !s.reorgDetectedFlag { + s.state.SetL1Current(l1End) + metrics.DriverL1CurrentHeightGauge.Set(float64(s.state.GetL1Current().Number.Uint64())) + } + + return nil +} + +// OnBlockProposed is a `BlockProposed` event callback which responsible for +// inserting the proposed block one by one to the L2 execution engine. +func (s *Syncer) onBlockProposed( + ctx context.Context, + event *bindings.TaikoL1ClientBlockProposed, + endIter eventIterator.EndBlockProposedEventIterFunc, +) error { + // We simply ignore the genesis block's `BlockProposed` event. + if event.BlockId.Cmp(common.Big0) == 0 { + return nil + } + + // If we are not inserting a block whose parent block is the latest verified block in protocol, + // and the node hasn't just finished the P2P sync, we check if the L1 chain has been reorged. + if !s.progressTracker.Triggered() { + reorgCheckResult, err := s.checkReorg(ctx, event) + if err != nil { + return err + } + + if reorgCheckResult.IsReorged { + log.Info( + "Reset L1Current cursor due to L1 reorg", + "l1CurrentHeightOld", s.state.GetL1Current().Number, + "l1CurrentHashOld", s.state.GetL1Current().Hash(), + "l1CurrentHeightNew", reorgCheckResult.L1CurrentToReset.Number, + "l1CurrentHashNew", reorgCheckResult.L1CurrentToReset.Hash(), + "lastInsertedBlockIDOld", s.lastInsertedBlockID, + "lastInsertedBlockIDNew", reorgCheckResult.LastHandledBlockIDToReset, + ) + s.state.SetL1Current(reorgCheckResult.L1CurrentToReset) + s.lastInsertedBlockID = reorgCheckResult.LastHandledBlockIDToReset + s.reorgDetectedFlag = true + endIter() + + return nil + } + } + // Ignore those already inserted blocks. + if s.lastInsertedBlockID != nil && event.BlockId.Cmp(s.lastInsertedBlockID) <= 0 { + return nil + } + + log.Info( + "New BlockProposed event", + "l1Height", event.Raw.BlockNumber, + "l1Hash", event.Raw.BlockHash, + "blockID", event.BlockId, + "removed", event.Raw.Removed, + ) + + // If the event's timestamp is in the future, we wait until the timestamp is reached, should + // only happen when testing. + if event.Meta.Timestamp > uint64(time.Now().Unix()) { + log.Warn("Future L2 block, waiting", "L2BlockTimestamp", event.Meta.Timestamp, "now", time.Now().Unix()) + time.Sleep(time.Until(time.Unix(int64(event.Meta.Timestamp), 0))) + } + + // Fetch the L2 parent block, if the node is just finished a P2P sync, we simply use the tracker's + // last synced verified block as the parent, otherwise, we fetch the parent block from L2 EE. + var ( + parent *types.Header + err error + ) + if s.progressTracker.Triggered() { + // Already synced through beacon sync, just skip this event. + if event.BlockId.Cmp(s.progressTracker.LastSyncedBlockID()) <= 0 { + return nil + } + + parent, err = s.rpc.L2.HeaderByHash(ctx, s.progressTracker.LastSyncedBlockHash()) + } else { + parent, err = s.rpc.L2ParentByBlockID(ctx, event.BlockId) + } + if err != nil { + return fmt.Errorf("failed to fetch L2 parent block: %w", err) + } + + log.Debug( + "Parent block", + "height", parent.Number, + "hash", parent.Hash(), + "beaconSyncTriggered", s.progressTracker.Triggered(), + ) + + tx, err := s.rpc.L1.TransactionInBlock(ctx, event.Raw.BlockHash, event.Raw.TxIndex) + if err != nil { + return fmt.Errorf("failed to fetch original TaikoL1.proposeBlock transaction: %w", err) + } + + // Decode transactions list. + var txListFetcher txlistFetcher.TxListFetcher + if event.Meta.BlobUsed { + txListFetcher = txlistFetcher.NewBlobTxListFetcher(s.rpc.L1Beacon, s.blobDatasource) + } else { + txListFetcher = new(txlistFetcher.CalldataFetcher) + } + txListBytes, err := txListFetcher.Fetch(ctx, tx, &event.Meta) + if err != nil { + if errors.Is(err, rpc.ErrBlobInvalid) { + log.Info("Invalid blob detected", "blockID", event.BlockId) + txListBytes = []byte{} + } else { + return fmt.Errorf("failed to fetch tx list: %w", err) + } + } + + // Decompress the transactions list and try to insert a new head block to L2 EE. + payloadData, err := s.insertNewHead( + ctx, + event, + parent, + s.state.GetHeadBlockID(), + s.txListDecompressor.TryDecompress(event.BlockId, txListBytes, event.Meta.BlobUsed), + &rawdb.L1Origin{ + BlockID: event.BlockId, + L2BlockHash: common.Hash{}, // Will be set by taiko-geth. + L1BlockHeight: new(big.Int).SetUint64(event.Raw.BlockNumber), + L1BlockHash: event.Raw.BlockHash, + }, + ) + if err != nil { + return fmt.Errorf("failed to insert new head to L2 execution engine: %w", err) + } + + log.Debug("Payload data", "hash", payloadData.BlockHash, "txs", len(payloadData.Transactions)) + + log.Info( + "🔗 New L2 block inserted", + "blockID", event.BlockId, + "height", payloadData.Number, + "hash", payloadData.BlockHash, + "transactions", len(payloadData.Transactions), + "baseFee", utils.WeiToGWei(payloadData.BaseFeePerGas), + "withdrawals", len(payloadData.Withdrawals), + ) + + metrics.DriverL1CurrentHeightGauge.Set(float64(event.Raw.BlockNumber)) + s.lastInsertedBlockID = event.BlockId + + if s.progressTracker.Triggered() { + s.progressTracker.ClearMeta() + } + + return nil +} + +// insertNewHead tries to insert a new head block to the L2 execution engine's local +// block chain through Engine APIs. +func (s *Syncer) insertNewHead( + ctx context.Context, + event *bindings.TaikoL1ClientBlockProposed, + parent *types.Header, + headBlockID *big.Int, + txListBytes []byte, + l1Origin *rawdb.L1Origin, +) (*engine.ExecutableData, error) { + log.Debug( + "Try to insert a new L2 head block", + "parentNumber", parent.Number, + "parentHash", parent.Hash(), + "headBlockID", headBlockID, + "l1Origin", l1Origin, + ) + + // Insert a TaikoL2.anchor transaction at transactions list head + var txList []*types.Transaction + if len(txListBytes) != 0 { + if err := rlp.DecodeBytes(txListBytes, &txList); err != nil { + log.Error("Invalid txList bytes", "blockID", event.BlockId) + return nil, err + } + } + + // Get L2 baseFee + baseFeeInfo, err := s.rpc.TaikoL2.GetBasefee( + &bind.CallOpts{BlockNumber: parent.Number, Context: ctx}, + event.Meta.L1Height, + uint32(parent.GasUsed), + ) + if err != nil { + return nil, fmt.Errorf("failed to get L2 baseFee: %w", encoding.TryParsingCustomError(err)) + } + + log.Info( + "L2 baseFee", + "blockID", event.BlockId, + "baseFee", utils.WeiToGWei(baseFeeInfo.Basefee), + "syncedL1Height", event.Meta.L1Height, + "parentGasUsed", parent.GasUsed, + ) + + // Get withdrawals + withdrawals := make(types.Withdrawals, len(event.DepositsProcessed)) + for i, d := range event.DepositsProcessed { + withdrawals[i] = &types.Withdrawal{Address: d.Recipient, Amount: d.Amount.Uint64(), Index: d.Id} + } + + // Assemble a TaikoL2.anchor transaction + anchorTx, err := s.anchorConstructor.AssembleAnchorTx( + ctx, + new(big.Int).SetUint64(event.Meta.L1Height), + event.Meta.L1Hash, + new(big.Int).Add(parent.Number, common.Big1), + baseFeeInfo.Basefee, + parent.GasUsed, + ) + if err != nil { + return nil, fmt.Errorf("failed to create TaikoL2.anchor transaction: %w", err) + } + + // Insert the anchor transaction at the head of the transactions list + txList = append([]*types.Transaction{anchorTx}, txList...) + if txListBytes, err = rlp.EncodeToBytes(txList); err != nil { + log.Error("Encode txList error", "blockID", event.BlockId, "error", err) + return nil, err + } + + payload, err := s.createExecutionPayloads( + ctx, + event, + parent.Hash(), + l1Origin, + headBlockID, + txListBytes, + baseFeeInfo.Basefee, + withdrawals, + ) + if err != nil { + return nil, fmt.Errorf("failed to create execution payloads: %w", err) + } + + fc := &engine.ForkchoiceStateV1{HeadBlockHash: payload.BlockHash} + if err = s.fillForkchoiceState(ctx, event, fc); err != nil { + return nil, err + } + + // Update the fork choice + fcRes, err := s.rpc.L2Engine.ForkchoiceUpdate(ctx, fc, nil) + if err != nil { + return nil, err + } + if fcRes.PayloadStatus.Status != engine.VALID { + return nil, fmt.Errorf("unexpected ForkchoiceUpdate response status: %s", fcRes.PayloadStatus.Status) + } + + return payload, nil +} + +// fillForkchoiceState fills the forkchoice state with the finalized block hash and the safe block hash. +func (s *Syncer) fillForkchoiceState( + ctx context.Context, + event *bindings.TaikoL1ClientBlockProposed, + fc *engine.ForkchoiceStateV1, +) error { + // If the event is emitted from the genesis block, we don't need to fill the forkchoice state, + // should only happen when testing. + if event.Raw.BlockNumber == 0 { + return nil + } + + // Fetch the latest verified block's header from protocol. + variables, err := s.rpc.GetTaikoDataSlotBByNumber(ctx, event.Raw.BlockNumber) + if err != nil { + return err + } + finalizeHeader, err := s.rpc.L2.HeaderByNumber(ctx, new(big.Int).SetUint64(variables.LastVerifiedBlockId)) + if err != nil { + return err + } + + // Fill the forkchoice state. + fc.FinalizedBlockHash = finalizeHeader.Hash() + fc.SafeBlockHash = finalizeHeader.ParentHash + + return nil +} + +// createExecutionPayloads creates a new execution payloads through +// Engine APIs. +func (s *Syncer) createExecutionPayloads( + ctx context.Context, + event *bindings.TaikoL1ClientBlockProposed, + parentHash common.Hash, + l1Origin *rawdb.L1Origin, + headBlockID *big.Int, + txListBytes []byte, + baseFee *big.Int, + withdrawals types.Withdrawals, +) (payloadData *engine.ExecutableData, err error) { + fc := &engine.ForkchoiceStateV1{HeadBlockHash: parentHash} + attributes := &engine.PayloadAttributes{ + Timestamp: event.Meta.Timestamp, + Random: event.Meta.Difficulty, + SuggestedFeeRecipient: event.Meta.Coinbase, + Withdrawals: withdrawals, + BlockMetadata: &engine.BlockMetadata{ + HighestBlockID: headBlockID, + Beneficiary: event.Meta.Coinbase, + GasLimit: uint64(event.Meta.GasLimit) + anchorTxConstructor.AnchorGasLimit, + Timestamp: event.Meta.Timestamp, + TxList: txListBytes, + MixHash: event.Meta.Difficulty, + ExtraData: event.Meta.ExtraData[:], + }, + BaseFeePerGas: baseFee, + L1Origin: l1Origin, + } + + log.Debug( + "PayloadAttributes", + "blockID", event.BlockId, + "timestamp", attributes.Timestamp, + "random", attributes.Random, + "suggestedFeeRecipient", attributes.SuggestedFeeRecipient, + "withdrawals", len(attributes.Withdrawals), + "highestBlockID", attributes.BlockMetadata.HighestBlockID, + "gasLimit", attributes.BlockMetadata.GasLimit, + "timestamp", attributes.BlockMetadata.Timestamp, + "mixHash", attributes.BlockMetadata.MixHash, + "baseFee", utils.WeiToGWei(attributes.BaseFeePerGas), + "extraData", string(attributes.BlockMetadata.ExtraData), + "l1OriginHeight", attributes.L1Origin.L1BlockHeight, + "l1OriginHash", attributes.L1Origin.L1BlockHash, + ) + + // Step 1, prepare a payload + fcRes, err := s.rpc.L2Engine.ForkchoiceUpdate(ctx, fc, attributes) + if err != nil { + return nil, fmt.Errorf("failed to update fork choice: %w", err) + } + if fcRes.PayloadStatus.Status != engine.VALID { + return nil, fmt.Errorf("unexpected ForkchoiceUpdate response status: %s", fcRes.PayloadStatus.Status) + } + if fcRes.PayloadID == nil { + return nil, errors.New("empty payload ID") + } + + // Step 2, get the payload + payload, err := s.rpc.L2Engine.GetPayload(ctx, fcRes.PayloadID) + if err != nil { + return nil, fmt.Errorf("failed to get payload: %w", err) + } + + log.Debug( + "Payload", + "blockID", event.BlockId, + "baseFee", utils.WeiToGWei(payload.BaseFeePerGas), + "number", payload.Number, + "hash", payload.BlockHash, + "gasLimit", payload.GasLimit, + "gasUsed", payload.GasUsed, + "timestamp", payload.Timestamp, + "withdrawalsHash", payload.WithdrawalsHash, + ) + + // Step 3, execute the payload + execStatus, err := s.rpc.L2Engine.NewPayload(ctx, payload) + if err != nil { + return nil, fmt.Errorf("failed to create a new payload: %w", err) + } + if execStatus.Status != engine.VALID { + return nil, fmt.Errorf("unexpected NewPayload response status: %s", execStatus.Status) + } + + return payload, nil +} + +// checkLastVerifiedBlockMismatch checks if there is a mismatch between protocol's last verified block hash and +// the corresponding L2 EE block hash. +func (s *Syncer) checkLastVerifiedBlockMismatch(ctx context.Context) (*rpc.ReorgCheckResult, error) { + var ( + reorgCheckResult = new(rpc.ReorgCheckResult) + err error + ) + + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + return nil, err + } + + if s.state.GetL2Head().Number.Uint64() < stateVars.B.LastVerifiedBlockId { + return reorgCheckResult, nil + } + + genesisL1Header, err := s.rpc.GetGenesisL1Header(ctx) + if err != nil { + return nil, fmt.Errorf("failed to fetch genesis L1 header: %w", err) + } + reorgCheckResult, err = s.retrievePastBlock(ctx, stateVars.B.LastVerifiedBlockId, 0, genesisL1Header) + if err != nil { + return nil, err + } + + return reorgCheckResult, nil +} + +// retrievePastBlock find proper L1 header and L2 block id to reset when there is a mismatch +func (s *Syncer) retrievePastBlock( + ctx context.Context, + blockID uint64, + retries uint64, + genesisL1Header *types.Header) (*rpc.ReorgCheckResult, error) { + if retries > s.maxRetrieveExponent { + return &rpc.ReorgCheckResult{ + IsReorged: true, + L1CurrentToReset: genesisL1Header, + LastHandledBlockIDToReset: new(big.Int).SetUint64(blockID), + }, nil + } + + var ( + reorgCheckResult = new(rpc.ReorgCheckResult) + err error + currentBlockID uint64 + l1HeaderToSet = genesisL1Header + ) + + if val := uint64(1 << retries); blockID > val { + currentBlockID = blockID - val + 1 + } else { + currentBlockID = 0 + } + + blockInfo, err := s.rpc.GetL2BlockInfo(ctx, new(big.Int).SetUint64(currentBlockID)) + if err != nil { + return nil, err + } + ts, err := s.rpc.GetTransition(ctx, new(big.Int).SetUint64(blockInfo.BlockId), blockInfo.VerifiedTransitionId) + if err != nil { + return nil, err + } + + l2Header, err := s.rpc.L2.HeaderByNumber(ctx, new(big.Int).SetUint64(currentBlockID)) + if err != nil { + return nil, err + } + if ts.BlockHash == l2Header.Hash() { + // To reduce the number of call contracts by bringing forward the termination condition judgement + if retries == 0 { + return nil, nil + } + l1Origin, err := s.rpc.L2.L1OriginByID(ctx, new(big.Int).SetUint64(currentBlockID)) + if err != nil { + if err.Error() == ethereum.NotFound.Error() { + log.Info( + "L1Origin not found in retrievePastBlock because the L2 EE is just synced through P2P", + "blockID", + currentBlockID, + ) + // Can't find l1Origin in L2 EE, so we call the contract to get block info + blockInfo, err := s.rpc.TaikoL1.GetBlock(&bind.CallOpts{Context: ctx}, currentBlockID) + if err != nil { + return nil, err + } + if blockInfo.ProposedIn != 0 { + l1HeaderToSet, err = s.rpc.L1.HeaderByNumber(ctx, new(big.Int).SetUint64(blockInfo.ProposedIn)) + if err != nil { + return nil, err + } + } + } else { + return nil, err + } + } else { + l1HeaderToSet, err = s.rpc.L1.HeaderByNumber(ctx, l1Origin.L1BlockHeight) + if err != nil { + return nil, err + } + } + reorgCheckResult.IsReorged = retries > 0 + reorgCheckResult.L1CurrentToReset = l1HeaderToSet + reorgCheckResult.LastHandledBlockIDToReset = new(big.Int).SetUint64(currentBlockID) + } else { + reorgCheckResult, err = s.retrievePastBlock(ctx, blockID, retries+1, genesisL1Header) + if err != nil { + return nil, err + } + } + return reorgCheckResult, nil +} + +// checkReorg checks whether the L1 chain has been reorged, and resets the L1Current cursor if necessary. +func (s *Syncer) checkReorg( + ctx context.Context, + event *bindings.TaikoL1ClientBlockProposed, +) (*rpc.ReorgCheckResult, error) { + // If the L2 chain is at genesis, we don't need to check L1 reorg. + if s.state.GetL1Current().Number == s.state.GenesisL1Height { + return new(rpc.ReorgCheckResult), nil + } + + // 1. The latest verified block + reorgCheckResult, err := s.checkLastVerifiedBlockMismatch(ctx) + if err != nil { + return nil, fmt.Errorf("failed to check if last verified block in L2 EE has been reorged: %w", err) + } + + if reorgCheckResult == nil { + // 2. Parent block + reorgCheckResult, err = s.rpc.CheckL1Reorg( + ctx, + new(big.Int).Sub(event.BlockId, common.Big1), + ) + if err != nil { + return nil, fmt.Errorf("failed to check whether L1 chain has been reorged: %w", err) + } + } + + return reorgCheckResult, nil +} diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go new file mode 100644 index 00000000000..bec4c006b98 --- /dev/null +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go @@ -0,0 +1,242 @@ +package blob + +import ( + "context" + "math/big" + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" +) + +type BlobSyncerTestSuite struct { + testutils.ClientTestSuite + s *Syncer + p testutils.Proposer +} + +func (s *BlobSyncerTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + state2, err := state.New(context.Background(), s.RPCClient) + s.Nil(err) + + syncer, err := NewSyncer( + context.Background(), + s.RPCClient, + state2, + beaconsync.NewSyncProgressTracker(s.RPCClient.L2, 1*time.Hour), + 0, + nil, + ) + s.Nil(err) + s.s = syncer + + s.initProposer() +} +func (s *BlobSyncerTestSuite) TestCancelNewSyncer() { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + syncer, err := NewSyncer( + ctx, + s.RPCClient, + s.s.state, + s.s.progressTracker, + 0, + nil, + ) + s.Nil(syncer) + s.NotNil(err) +} + +func (s *BlobSyncerTestSuite) TestProcessL1Blocks() { + s.Nil(s.s.ProcessL1Blocks(context.Background())) +} + +func (s *BlobSyncerTestSuite) TestProcessL1BlocksReorg() { + s.ProposeAndInsertEmptyBlocks(s.p, s.s) + s.Nil(s.s.ProcessL1Blocks(context.Background())) +} + +func (s *BlobSyncerTestSuite) TestOnBlockProposed() { + s.Nil(s.s.onBlockProposed( + context.Background(), + &bindings.TaikoL1ClientBlockProposed{BlockId: common.Big0}, + func() {}, + )) + s.NotNil(s.s.onBlockProposed( + context.Background(), + &bindings.TaikoL1ClientBlockProposed{BlockId: common.Big1}, + func() {}, + )) +} + +func (s *BlobSyncerTestSuite) TestInsertNewHead() { + parent, err := s.s.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l1Head, err := s.s.rpc.L1.BlockByNumber(context.Background(), nil) + s.Nil(err) + _, err = s.s.insertNewHead( + context.Background(), + &bindings.TaikoL1ClientBlockProposed{ + BlockId: common.Big1, + Meta: bindings.TaikoDataBlockMetadata{ + Id: 1, + L1Height: l1Head.NumberU64(), + L1Hash: l1Head.Hash(), + Coinbase: common.BytesToAddress(testutils.RandomBytes(1024)), + BlobHash: testutils.RandomHash(), + Difficulty: testutils.RandomHash(), + GasLimit: utils.RandUint32(nil), + Timestamp: uint64(time.Now().Unix()), + }, + }, + parent, + common.Big2, + []byte{}, + &rawdb.L1Origin{ + BlockID: common.Big1, + L1BlockHeight: common.Big1, + L1BlockHash: testutils.RandomHash(), + }, + ) + s.Nil(err) +} + +func (s *BlobSyncerTestSuite) TestTreasuryIncomeAllAnchors() { + treasury := common.HexToAddress(os.Getenv("TREASURY")) + s.NotZero(treasury.Big().Uint64()) + + balance, err := s.RPCClient.L2.BalanceAt(context.Background(), treasury, nil) + s.Nil(err) + + headBefore, err := s.RPCClient.L2.BlockNumber(context.Background()) + s.Nil(err) + + s.ProposeAndInsertEmptyBlocks(s.p, s.s) + + headAfter, err := s.RPCClient.L2.BlockNumber(context.Background()) + s.Nil(err) + + balanceAfter, err := s.RPCClient.L2.BalanceAt(context.Background(), treasury, nil) + s.Nil(err) + + s.Greater(headAfter, headBefore) + s.Zero(balanceAfter.Cmp(balance)) +} + +func (s *BlobSyncerTestSuite) TestTreasuryIncome() { + treasury := common.HexToAddress(os.Getenv("TREASURY")) + s.NotZero(treasury.Big().Uint64()) + + balance, err := s.RPCClient.L2.BalanceAt(context.Background(), treasury, nil) + s.Nil(err) + + headBefore, err := s.RPCClient.L2.BlockNumber(context.Background()) + s.Nil(err) + + s.ProposeAndInsertEmptyBlocks(s.p, s.s) + s.ProposeAndInsertValidBlock(s.p, s.s) + + headAfter, err := s.RPCClient.L2.BlockNumber(context.Background()) + s.Nil(err) + + balanceAfter, err := s.RPCClient.L2.BalanceAt(context.Background(), treasury, nil) + s.Nil(err) + + s.Greater(headAfter, headBefore) + s.True(balanceAfter.Cmp(balance) > 0) + + var hasNoneAnchorTxs bool + for i := headBefore + 1; i <= headAfter; i++ { + block, err := s.RPCClient.L2.BlockByNumber(context.Background(), new(big.Int).SetUint64(i)) + s.Nil(err) + s.GreaterOrEqual(block.Transactions().Len(), 1) + s.Greater(block.BaseFee().Uint64(), uint64(0)) + + for j, tx := range block.Transactions() { + if j == 0 { + continue + } + + hasNoneAnchorTxs = true + receipt, err := s.RPCClient.L2.TransactionReceipt(context.Background(), tx.Hash()) + s.Nil(err) + + fee := new(big.Int).Mul(block.BaseFee(), new(big.Int).SetUint64(receipt.GasUsed)) + + balance = new(big.Int).Add(balance, fee) + } + } + + s.True(hasNoneAnchorTxs) + s.Zero(balanceAfter.Cmp(balance)) +} + +func (s *BlobSyncerTestSuite) initProposer() { + prop := new(proposer.Proposer) + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) + + s.Nil(prop.InitFromConfig(context.Background(), &proposer.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: string(jwtSecret), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + }, + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), + ProposeInterval: 1024 * time.Hour, + MaxProposedTxListsPerEpoch: 1, + ProverEndpoints: s.ProverEndpoints, + OptimisticTierFee: common.Big256, + SgxTierFee: common.Big256, + MaxTierFeePriceBumps: 3, + TierFeePriceBump: common.Big2, + L1BlockBuilderTip: common.Big0, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProposerPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + + s.p = prop +} + +func TestBlobSyncerTestSuite(t *testing.T) { + suite.Run(t, new(BlobSyncerTestSuite)) +} diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer.go b/packages/taiko-client/driver/chain_syncer/chain_syncer.go new file mode 100644 index 00000000000..47269f5631f --- /dev/null +++ b/packages/taiko-client/driver/chain_syncer/chain_syncer.go @@ -0,0 +1,211 @@ +package chainsyncer + +import ( + "context" + "fmt" + "net/url" + "time" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/eth/downloader" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/blob" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// L2ChainSyncer is responsible for keeping the L2 execution engine's local chain in sync with the one +// in TaikoL1 contract. +type L2ChainSyncer struct { + ctx context.Context + state *state.State // Driver's state + rpc *rpc.Client // L1/L2 RPC clients + + // Syncers + beaconSyncer *beaconsync.Syncer + blobSyncer *blob.Syncer + + // Monitors + progressTracker *beaconsync.SyncProgressTracker + + // Sync mode + syncMode string + + // If this flag is activated, will try P2P beacon sync if current node is behind of the protocol's + // the latest verified block head + p2pSync bool +} + +// New creates a new chain syncer instance. +func New( + ctx context.Context, + rpc *rpc.Client, + state *state.State, + p2pSync bool, + p2pSyncTimeout time.Duration, + maxRetrieveExponent uint64, + blobServerEndpoint *url.URL, + +) (*L2ChainSyncer, error) { + tracker := beaconsync.NewSyncProgressTracker(rpc.L2, p2pSyncTimeout) + go tracker.Track(ctx) + + syncMode, err := rpc.L2.GetSyncMode(ctx) + if err != nil { + return nil, err + } + beaconSyncer := beaconsync.NewSyncer(ctx, rpc, state, syncMode, tracker) + blobSyncer, err := blob.NewSyncer(ctx, rpc, state, tracker, maxRetrieveExponent, blobServerEndpoint) + if err != nil { + return nil, err + } + + return &L2ChainSyncer{ + ctx: ctx, + rpc: rpc, + state: state, + beaconSyncer: beaconSyncer, + blobSyncer: blobSyncer, + progressTracker: tracker, + syncMode: syncMode, + p2pSync: p2pSync, + }, nil +} + +// Sync performs a sync operation to L2 execution engine's local chain. +func (s *L2ChainSyncer) Sync() error { + blockID, needNewBeaconSyncTriggered, err := s.needNewBeaconSyncTriggered() + if err != nil { + return err + } + // If current L2 execution engine's chain is behind of the protocol's latest verified block head, and the + // `P2PSync` flag is set, try triggering a beacon sync in L2 execution engine to catch up the + // latest verified block head. + if needNewBeaconSyncTriggered { + if err := s.beaconSyncer.TriggerBeaconSync(blockID); err != nil { + return fmt.Errorf("trigger beacon sync error: %w", err) + } + + return nil + } + + // We have triggered at least a beacon sync in L2 execution engine, we should reset the L1Current + // cursor at first, before start inserting pending L2 blocks one by one. + if s.progressTracker.Triggered() { + log.Info( + "Switch to insert pending blocks one by one", + "p2pEnabled", s.p2pSync, + "p2pOutOfSync", s.progressTracker.OutOfSync(), + ) + + // Mark the beacon sync progress as finished. + s.progressTracker.MarkFinished() + + // Get the execution engine's chain head. + l2Head, err := s.rpc.L2.HeaderByNumber(s.ctx, nil) + if err != nil { + return err + } + + log.Info( + "L2 head information", + "number", l2Head.Number, + "hash", l2Head.Hash(), + "lastSyncedVerifiedBlockID", s.progressTracker.LastSyncedBlockID(), + "lastSyncedVerifiedBlockHash", s.progressTracker.LastSyncedBlockHash(), + ) + + // Reset the L1Current cursor. + if err := s.state.ResetL1Current(s.ctx, l2Head.Number); err != nil { + return err + } + + // Reset to the latest L2 execution engine's chain status. + s.progressTracker.UpdateMeta(l2Head.Number, l2Head.Hash()) + } + + // Insert the proposed block one by one. + return s.blobSyncer.ProcessL1Blocks(s.ctx) +} + +// AheadOfProtocolVerifiedHead checks whether the L2 chain is ahead of verified head in protocol. +func (s *L2ChainSyncer) AheadOfProtocolVerifiedHead(verifiedHeightToCompare uint64) bool { + log.Debug( + "Checking whether the execution engine is ahead of protocol's verified head", + "latestVerifiedBlock", verifiedHeightToCompare, + "executionEngineHead", s.state.GetL2Head().Number, + ) + if verifiedHeightToCompare > 0 { + // If latest verified head height is equal to L2 execution engine's synced head height minus one, + // we also mark the triggered P2P sync progress as finished to prevent a potential `InsertBlockWithoutSetHead` in + // execution engine, which may cause errors since we do not pass all transactions in ExecutePayload when calling + // `NewPayloadV1`. + verifiedHeightToCompare-- + } + + // If the L2 execution engine's chain is behind of the protocol's latest verified block head, + // we should keep the beacon sync. + if s.state.GetL2Head().Number.Uint64() < verifiedHeightToCompare { + return false + } + + if s.progressTracker.LastSyncedBlockID() != nil { + return s.state.GetL2Head().Number.Uint64() >= s.progressTracker.LastSyncedBlockID().Uint64() + } + + return true +} + +// needNewBeaconSyncTriggered checks whether the current L2 execution engine needs to trigger +// another new beacon sync, the following conditions should be met: +// 1. The `P2PSync` flag is set. +// 2. The protocol's latest verified block head is not zero. +// 3. The L2 execution engine's chain is behind of the protocol's latest verified block head. +// 4. The L2 execution engine's chain have met a sync timeout issue. +func (s *L2ChainSyncer) needNewBeaconSyncTriggered() (uint64, bool, error) { + // If the flag is not set or there was a finished beacon sync, we simply return false. + if !s.p2pSync || s.progressTracker.Finished() { + return 0, false, nil + } + + // For full sync mode, we will use the verified block head, + // And for snap sync mode, we will use the latest block head. + var ( + blockID uint64 + err error + ) + switch s.syncMode { + case downloader.SnapSync.String(): + if blockID, err = s.rpc.L2CheckPoint.BlockNumber(s.ctx); err != nil { + return 0, false, err + } + case downloader.FullSync.String(): + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: s.ctx}) + if err != nil { + return 0, false, err + } + blockID = stateVars.B.LastVerifiedBlockId + default: + return 0, false, fmt.Errorf("invalid sync mode: %s", s.syncMode) + } + + // If the protocol's block head is zero, we simply return false. + if blockID == 0 { + return 0, false, nil + } + + return blockID, !s.AheadOfProtocolVerifiedHead(blockID) && + !s.progressTracker.OutOfSync(), nil +} + +// BeaconSyncer returns the inner beacon syncer. +func (s *L2ChainSyncer) BeaconSyncer() *beaconsync.Syncer { + return s.beaconSyncer +} + +// BlobSyncer returns the inner blob syncer. +func (s *L2ChainSyncer) BlobSyncer() *blob.Syncer { + return s.blobSyncer +} diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go new file mode 100644 index 00000000000..3e222265ff7 --- /dev/null +++ b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go @@ -0,0 +1,161 @@ +package chainsyncer + +import ( + "bytes" + "context" + + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" +) + +type ChainSyncerTestSuite struct { + testutils.ClientTestSuite + s *L2ChainSyncer + snapshotID string + p testutils.Proposer +} + +func (s *ChainSyncerTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + state, err := state.New(context.Background(), s.RPCClient) + s.Nil(err) + + syncer, err := New( + context.Background(), + s.RPCClient, + state, + false, + 1*time.Hour, + 0, + nil, + ) + s.Nil(err) + s.s = syncer + + prop := new(proposer.Proposer) + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + s.Nil(prop.InitFromConfig(context.Background(), &proposer.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + }, + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), + ProposeInterval: 1024 * time.Hour, + MaxProposedTxListsPerEpoch: 1, + ProverEndpoints: s.ProverEndpoints, + OptimisticTierFee: common.Big256, + SgxTierFee: common.Big256, + MaxTierFeePriceBumps: 3, + TierFeePriceBump: common.Big2, + ExtraData: "test", + L1BlockBuilderTip: common.Big0, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProposerPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + + s.p = prop +} + +func (s *ChainSyncerTestSuite) TestGetInnerSyncers() { + s.NotNil(s.s.BeaconSyncer()) + s.NotNil(s.s.BlobSyncer()) +} + +func (s *ChainSyncerTestSuite) TestSync() { + s.Nil(s.s.Sync()) +} + +func (s *ChainSyncerTestSuite) TestAheadOfProtocolVerifiedHead2() { + s.TakeSnapshot() + // propose a couple blocks + s.ProposeAndInsertEmptyBlocks(s.p, s.s.blobSyncer) + + // NOTE: need to prove the proposed blocks to be verified, writing helper function + // generate transactopts to interact with TaikoL1 contract with. + privKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + opts, err := bind.NewKeyedTransactorWithChainID(privKey, s.RPCClient.L1.ChainID) + s.Nil(err) + + head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + l2Head, err := s.RPCClient.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.Equal("test", string(bytes.TrimRight(l2Head.Extra, "\x00"))) + log.Info("L1HeaderByNumber head", "number", head.Number) + // (equiv to s.state.GetL2Head().Number) + log.Info("L2HeaderByNumber head", "number", l2Head.Number) + + // increase evm time to make blocks verifiable. + s.IncreaseTime(uint64((1024 * time.Hour).Seconds())) + + // interact with TaikoL1 contract to allow for verification of L2 blocks + tx, err := s.s.rpc.TaikoL1.VerifyBlocks(opts, uint64(3)) + s.Nil(err) + s.NotNil(tx) + + head2, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + l2Head2, err := s.RPCClient.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + log.Info("L1HeaderByNumber head2", "number", head2.Number) + log.Info("L2HeaderByNumber head", "number", l2Head2.Number) + + s.RevertSnapshot() +} + +func TestChainSyncerTestSuite(t *testing.T) { + suite.Run(t, new(ChainSyncerTestSuite)) +} + +func (s *ChainSyncerTestSuite) TakeSnapshot() { + // record snapshot state to revert to before changes + s.snapshotID = s.SetL1Snapshot() +} + +func (s *ChainSyncerTestSuite) RevertSnapshot() { + // revert to the snapshot state so protocol configs are unaffected + s.RevertL1Snapshot(s.snapshotID) + s.Nil(rpc.SetHead(context.Background(), s.RPCClient.L2, common.Big0)) +} + +func (s *ChainSyncerTestSuite) TestAheadOfProtocolVerifiedHead() { + s.True(s.s.AheadOfProtocolVerifiedHead(0)) +} diff --git a/packages/taiko-client/driver/config.go b/packages/taiko-client/driver/config.go new file mode 100644 index 00000000000..8f70e52a247 --- /dev/null +++ b/packages/taiko-client/driver/config.go @@ -0,0 +1,76 @@ +package driver + +import ( + "errors" + "fmt" + "net/url" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// Config contains the configurations to initialize a Taiko driver. +type Config struct { + *rpc.ClientConfig + P2PSync bool + P2PSyncTimeout time.Duration + RetryInterval time.Duration + MaxExponent uint64 + BlobServerEndpoint *url.URL +} + +// NewConfigFromCliContext creates a new config instance from +// the command line inputs. +func NewConfigFromCliContext(c *cli.Context) (*Config, error) { + jwtSecret, err := jwt.ParseSecretFromFile(c.String(flags.JWTSecret.Name)) + if err != nil { + return nil, fmt.Errorf("invalid JWT secret file: %w", err) + } + + var ( + p2pSync = c.Bool(flags.P2PSync.Name) + l2CheckPoint = c.String(flags.CheckPointSyncURL.Name) + ) + + if p2pSync && len(l2CheckPoint) == 0 { + return nil, errors.New("empty L2 check point URL") + } + + if !c.IsSet(flags.L1BeaconEndpoint.Name) { + return nil, errors.New("empty L1 beacon endpoint") + } + + var blobServerEndpoint *url.URL + if c.IsSet(flags.BlobServerEndpoint.Name) { + if blobServerEndpoint, err = url.Parse( + c.String(flags.BlobServerEndpoint.Name), + ); err != nil { + return nil, err + } + } + + var timeout = c.Duration(flags.RPCTimeout.Name) + return &Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: c.String(flags.L1WSEndpoint.Name), + L1BeaconEndpoint: c.String(flags.L1BeaconEndpoint.Name), + L2Endpoint: c.String(flags.L2WSEndpoint.Name), + L2CheckPoint: l2CheckPoint, + TaikoL1Address: common.HexToAddress(c.String(flags.TaikoL1Address.Name)), + TaikoL2Address: common.HexToAddress(c.String(flags.TaikoL2Address.Name)), + L2EngineEndpoint: c.String(flags.L2AuthEndpoint.Name), + JwtSecret: string(jwtSecret), + Timeout: timeout, + }, + RetryInterval: c.Duration(flags.BackOffRetryInterval.Name), + P2PSync: p2pSync, + P2PSyncTimeout: c.Duration(flags.P2PSyncTimeout.Name), + MaxExponent: c.Uint64(flags.MaxExponent.Name), + BlobServerEndpoint: blobServerEndpoint, + }, nil +} diff --git a/packages/taiko-client/driver/config_test.go b/packages/taiko-client/driver/config_test.go new file mode 100644 index 00000000000..d6a94b0a0ee --- /dev/null +++ b/packages/taiko-client/driver/config_test.go @@ -0,0 +1,98 @@ +package driver + +import ( + "context" + "os" + "time" + + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" +) + +var ( + l1Endpoint = os.Getenv("L1_NODE_WS_ENDPOINT") + l1BeaconEndpoint = os.Getenv("L1_NODE_HTTP_ENDPOINT") + l2Endpoint = os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT") + l2CheckPoint = os.Getenv("L2_EXECUTION_ENGINE_HTTP_ENDPOINT") + l2EngineEndpoint = os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT") + taikoL1 = os.Getenv("TAIKO_L1_ADDRESS") + taikoL2 = os.Getenv("TAIKO_L2_ADDRESS") +) + +func (s *DriverTestSuite) TestNewConfigFromCliContext() { + app := s.SetupApp() + + app.Action = func(ctx *cli.Context) error { + c, err := NewConfigFromCliContext(ctx) + s.Nil(err) + s.Equal(l1Endpoint, c.L1Endpoint) + s.Equal(l1BeaconEndpoint, c.L1BeaconEndpoint) + s.Equal(l2Endpoint, c.L2Endpoint) + s.Equal(l2EngineEndpoint, c.L2EngineEndpoint) + s.Equal(taikoL1, c.TaikoL1Address.String()) + s.Equal(taikoL2, c.TaikoL2Address.String()) + s.Equal(120*time.Second, c.P2PSyncTimeout) + s.NotEmpty(c.JwtSecret) + s.True(c.P2PSync) + s.Equal(l2CheckPoint, c.L2CheckPoint) + s.Nil(new(Driver).InitFromCli(context.Background(), ctx)) + + return err + } + + s.Nil(app.Run([]string{ + "TestNewConfigFromCliContext", + "--" + flags.L1WSEndpoint.Name, l1Endpoint, + "--" + flags.L1BeaconEndpoint.Name, l1BeaconEndpoint, + "--" + flags.L2WSEndpoint.Name, l2Endpoint, + "--" + flags.L2AuthEndpoint.Name, l2EngineEndpoint, + "--" + flags.TaikoL1Address.Name, taikoL1, + "--" + flags.TaikoL2Address.Name, taikoL2, + "--" + flags.JWTSecret.Name, os.Getenv("JWT_SECRET"), + "--" + flags.P2PSyncTimeout.Name, "120s", + "--" + flags.RPCTimeout.Name, "5s", + "--" + flags.P2PSync.Name, + "--" + flags.CheckPointSyncURL.Name, l2CheckPoint, + })) +} + +func (s *DriverTestSuite) TestNewConfigFromCliContextJWTError() { + app := s.SetupApp() + s.ErrorContains(app.Run([]string{ + "TestNewConfigFromCliContext", + "--" + flags.JWTSecret.Name, "wrongsecretfile.txt", + }), "invalid JWT secret file") +} + +func (s *DriverTestSuite) TestNewConfigFromCliContextEmptyL2CheckPoint() { + app := s.SetupApp() + s.ErrorContains(app.Run([]string{ + "TestNewConfigFromCliContext", + "--" + flags.JWTSecret.Name, os.Getenv("JWT_SECRET"), + "--" + flags.P2PSync.Name, + "--" + flags.L2WSEndpoint.Name, "", + }), "empty L2 check point URL") +} + +func (s *DriverTestSuite) SetupApp() *cli.App { + app := cli.NewApp() + app.Flags = []cli.Flag{ + &cli.StringFlag{Name: flags.L1WSEndpoint.Name}, + &cli.StringFlag{Name: flags.L1BeaconEndpoint.Name}, + &cli.StringFlag{Name: flags.L2WSEndpoint.Name}, + &cli.StringFlag{Name: flags.L2AuthEndpoint.Name}, + &cli.StringFlag{Name: flags.TaikoL1Address.Name}, + &cli.StringFlag{Name: flags.TaikoL2Address.Name}, + &cli.StringFlag{Name: flags.JWTSecret.Name}, + &cli.BoolFlag{Name: flags.P2PSync.Name}, + &cli.DurationFlag{Name: flags.P2PSyncTimeout.Name}, + &cli.DurationFlag{Name: flags.RPCTimeout.Name}, + &cli.StringFlag{Name: flags.CheckPointSyncURL.Name}, + } + app.Action = func(ctx *cli.Context) error { + _, err := NewConfigFromCliContext(ctx) + return err + } + return app +} diff --git a/packages/taiko-client/driver/driver.go b/packages/taiko-client/driver/driver.go new file mode 100644 index 00000000000..0e0ac605309 --- /dev/null +++ b/packages/taiko-client/driver/driver.go @@ -0,0 +1,259 @@ +package driver + +import ( + "context" + "sync" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/beacon/engine" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" + "github.com/ethereum/go-ethereum/log" + "github.com/urfave/cli/v2" + + chainSyncer "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +const ( + protocolStatusReportInterval = 30 * time.Second + exchangeTransitionConfigInterval = 1 * time.Minute +) + +// Driver keeps the L2 execution engine's local block chain in sync with the TaikoL1 +// contract. +type Driver struct { + *Config + rpc *rpc.Client + l2ChainSyncer *chainSyncer.L2ChainSyncer + state *state.State + + l1HeadCh chan *types.Header + l1HeadSub event.Subscription + + ctx context.Context + wg sync.WaitGroup +} + +// InitFromCli initializes the given driver instance based on the command line flags. +func (d *Driver) InitFromCli(ctx context.Context, c *cli.Context) error { + cfg, err := NewConfigFromCliContext(c) + if err != nil { + return err + } + + return d.InitFromConfig(ctx, cfg) +} + +// InitFromConfig initializes the driver instance based on the given configurations. +func (d *Driver) InitFromConfig(ctx context.Context, cfg *Config) (err error) { + d.l1HeadCh = make(chan *types.Header, 1024) + d.ctx = ctx + d.Config = cfg + + if d.rpc, err = rpc.NewClient(d.ctx, cfg.ClientConfig); err != nil { + return err + } + + if d.state, err = state.New(d.ctx, d.rpc); err != nil { + return err + } + + peers, err := d.rpc.L2.PeerCount(d.ctx) + if err != nil { + return err + } + + if cfg.P2PSync && peers == 0 { + log.Warn("P2P syncing verified blocks enabled, but no connected peer found in L2 execution engine") + } + + if d.l2ChainSyncer, err = chainSyncer.New( + d.ctx, + d.rpc, + d.state, + cfg.P2PSync, + cfg.P2PSyncTimeout, + cfg.MaxExponent, + cfg.BlobServerEndpoint, + ); err != nil { + return err + } + + d.l1HeadSub = d.state.SubL1HeadsFeed(d.l1HeadCh) + + return nil +} + +// Start starts the driver instance. +func (d *Driver) Start() error { + go d.eventLoop() + go d.reportProtocolStatus() + go d.exchangeTransitionConfigLoop() + + return nil +} + +// Close closes the driver instance. +func (d *Driver) Close(_ context.Context) { + d.l1HeadSub.Unsubscribe() + d.state.Close() + d.wg.Wait() +} + +// eventLoop starts the main loop of a L2 execution engine's driver. +func (d *Driver) eventLoop() { + d.wg.Add(1) + defer d.wg.Done() + + syncNotify := make(chan struct{}, 1) + // reqSync requests performing a synchronising operation, won't block + // if we are already synchronising. + reqSync := func() { + select { + case syncNotify <- struct{}{}: + default: + } + } + + // doSyncWithBackoff performs a synchronising operation with a backoff strategy. + doSyncWithBackoff := func() { + if err := backoff.Retry( + d.doSync, + backoff.WithContext(backoff.NewConstantBackOff(d.RetryInterval), d.ctx), + ); err != nil { + log.Error("Sync L2 execution engine's block chain error", "error", err) + } + } + + // Call doSync() right away to catch up with the latest known L1 head. + doSyncWithBackoff() + + for { + select { + case <-d.ctx.Done(): + return + case <-syncNotify: + doSyncWithBackoff() + case <-d.l1HeadCh: + reqSync() + } + } +} + +// doSync fetches all `BlockProposed` events emitted from local +// L1 sync cursor to the L1 head, and then applies all corresponding +// L2 blocks into node's local blockchain. +func (d *Driver) doSync() error { + // Check whether the application is closing. + if d.ctx.Err() != nil { + log.Warn("Driver context error", "error", d.ctx.Err()) + return nil + } + + if err := d.l2ChainSyncer.Sync(); err != nil { + log.Error("Process new L1 blocks error", "error", err) + return err + } + + return nil +} + +// ChainSyncer returns the driver's chain syncer, this method +// should only be used for testing. +func (d *Driver) ChainSyncer() *chainSyncer.L2ChainSyncer { + return d.l2ChainSyncer +} + +// reportProtocolStatus reports some protocol status intervally. +func (d *Driver) reportProtocolStatus() { + var ( + ticker = time.NewTicker(protocolStatusReportInterval) + maxNumBlocks uint64 + ) + d.wg.Add(1) + + defer func() { + ticker.Stop() + d.wg.Done() + }() + + if err := backoff.Retry( + func() error { + if d.ctx.Err() != nil { + return nil + } + configs, err := d.rpc.TaikoL1.GetConfig(&bind.CallOpts{Context: d.ctx}) + if err != nil { + return err + } + + maxNumBlocks = configs.BlockMaxProposals + return nil + }, + backoff.WithContext(backoff.NewConstantBackOff(d.RetryInterval), d.ctx), + ); err != nil { + log.Error("Failed to get protocol state variables", "error", err) + return + } + + for { + select { + case <-d.ctx.Done(): + return + case <-ticker.C: + vars, err := d.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: d.ctx}) + if err != nil { + log.Error("Failed to get protocol state variables", "error", err) + continue + } + + log.Info( + "📖 Protocol status", + "lastVerifiedBlockId", vars.B.LastVerifiedBlockId, + "pendingBlocks", vars.B.NumBlocks-vars.B.LastVerifiedBlockId-1, + "availableSlots", vars.B.LastVerifiedBlockId+maxNumBlocks-vars.B.NumBlocks, + ) + } + } +} + +// exchangeTransitionConfigLoop keeps exchanging transition configs with the +// L2 execution engine. +func (d *Driver) exchangeTransitionConfigLoop() { + ticker := time.NewTicker(exchangeTransitionConfigInterval) + d.wg.Add(1) + + defer func() { + ticker.Stop() + d.wg.Done() + }() + + for { + select { + case <-d.ctx.Done(): + return + case <-ticker.C: + tc, err := d.rpc.L2Engine.ExchangeTransitionConfiguration(d.ctx, &engine.TransitionConfigurationV1{ + TerminalTotalDifficulty: (*hexutil.Big)(common.Big0), + TerminalBlockHash: common.Hash{}, + TerminalBlockNumber: 0, + }) + if err != nil { + log.Error("Failed to exchange Transition Configuration", "error", err) + } else { + log.Debug("Exchanged transition config", "transitionConfig", tc) + } + } + } +} + +// Name returns the application name. +func (d *Driver) Name() string { + return "driver" +} diff --git a/packages/taiko-client/driver/driver_test.go b/packages/taiko-client/driver/driver_test.go new file mode 100644 index 00000000000..9271fbf4443 --- /dev/null +++ b/packages/taiko-client/driver/driver_test.go @@ -0,0 +1,339 @@ +package driver + +import ( + "context" + "math/big" + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" +) + +type DriverTestSuite struct { + testutils.ClientTestSuite + cancel context.CancelFunc + p *proposer.Proposer + d *Driver +} + +func (s *DriverTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + // InitFromConfig driver + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) + + d := new(Driver) + ctx, cancel := context.WithCancel(context.Background()) + s.Nil(d.InitFromConfig(ctx, &Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + JwtSecret: string(jwtSecret), + }, + })) + s.d = d + s.cancel = cancel + + // InitFromConfig proposer + s.InitProposer() +} + +func (s *DriverTestSuite) TestName() { + s.Equal("driver", s.d.Name()) +} + +func (s *DriverTestSuite) TestProcessL1Blocks() { + l2Head1, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Nil(s.d.ChainSyncer().BlobSyncer().ProcessL1Blocks(context.Background())) + + // Propose a valid L2 block + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) + + l2Head2, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Greater(l2Head2.Number.Uint64(), l2Head1.Number.Uint64()) + + // Empty blocks + s.ProposeAndInsertEmptyBlocks(s.p, s.d.ChainSyncer().BlobSyncer()) + s.Nil(err) + + l2Head3, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Greater(l2Head3.Number.Uint64(), l2Head2.Number.Uint64()) + + for _, height := range []uint64{l2Head3.Number.Uint64(), l2Head3.Number.Uint64() - 1} { + header, err := s.d.rpc.L2.HeaderByNumber(context.Background(), new(big.Int).SetUint64(height)) + s.Nil(err) + + txCount, err := s.d.rpc.L2.TransactionCount(context.Background(), header.Hash()) + s.Nil(err) + s.Equal(uint(1), txCount) + + anchorTx, err := s.d.rpc.L2.TransactionInBlock(context.Background(), header.Hash(), 0) + s.Nil(err) + + method, err := encoding.TaikoL2ABI.MethodById(anchorTx.Data()) + s.Nil(err) + s.Equal("anchor", method.Name) + } +} + +func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() { + var ( + testnetL1SnapshotID = s.SetL1Snapshot() + ) + l1Head1, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l2Head1, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + // Propose two L2 blocks + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) + + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) + + l1Head2, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l2Head2, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.Greater(l2Head2.Number.Uint64(), l2Head1.Number.Uint64()) + s.Greater(l1Head2.Number.Uint64(), l1Head1.Number.Uint64()) + + res, err := s.RPCClient.CheckL1Reorg( + context.Background(), + l2Head2.Number, + ) + s.Nil(err) + s.False(res.IsReorged) + + // Reorg back to l2Head1 + s.RevertL1Snapshot(testnetL1SnapshotID) + s.InitProposer() + + // Because of evm_revert operation, the nonce of the proposer need to be adjusted. + // Propose ten blocks on another fork + for i := 0; i < 10; i++ { + s.ProposeInvalidTxListBytes(s.p) + } + + l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Greater(l1Head4.Number.Uint64(), l1Head2.Number.Uint64()) + + s.Nil(s.d.ChainSyncer().BlobSyncer().ProcessL1Blocks(context.Background())) + + l2Head3, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Equal(l2Head1.Number.Uint64()+10, l2Head3.Number.Uint64()) + + parent, err := s.d.rpc.L2.HeaderByNumber(context.Background(), new(big.Int).SetUint64(l2Head1.Number.Uint64()+1)) + s.Nil(err) + s.Equal(parent.ParentHash, l2Head1.Hash()) + s.NotEqual(parent.Hash(), l2Head2.ParentHash) +} + +func (s *DriverTestSuite) TestCheckL1ReorgToLowerFork() { + var ( + testnetL1SnapshotID = s.SetL1Snapshot() + ) + l1Head1, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l2Head1, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + // Propose two L2 blocks + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) + time.Sleep(3 * time.Second) + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) + + l1Head2, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l2Head2, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.Greater(l2Head2.Number.Uint64(), l2Head1.Number.Uint64()) + s.Greater(l1Head2.Number.Uint64(), l1Head1.Number.Uint64()) + + res, err := s.RPCClient.CheckL1Reorg( + context.Background(), + l2Head2.Number, + ) + s.Nil(err) + s.False(res.IsReorged) + + // Reorg back to l2Head1 + s.RevertL1Snapshot(testnetL1SnapshotID) + s.InitProposer() + + l1Head3, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.GreaterOrEqual(l1Head3.Number.Uint64(), l1Head1.Number.Uint64()) + + // Propose one blocks on another fork + s.ProposeInvalidTxListBytes(s.p) + + l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Greater(l1Head4.Number.Uint64(), l1Head3.Number.Uint64()) + s.Less(l1Head4.Number.Uint64(), l1Head2.Number.Uint64()) + + s.Nil(s.d.ChainSyncer().BlobSyncer().ProcessL1Blocks(context.Background())) + + l2Head3, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + parent, err := s.d.rpc.L2.HeaderByHash(context.Background(), l2Head3.ParentHash) + s.Nil(err) + s.Equal(l2Head3.Number.Uint64(), l2Head2.Number.Uint64()-1) + s.Equal(parent.Hash(), l2Head1.Hash()) +} + +func (s *DriverTestSuite) TestCheckL1ReorgToSameHeightFork() { + var ( + testnetL1SnapshotID = s.SetL1Snapshot() + ) + l1Head1, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l2Head1, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + // Propose two L2 blocks + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) + time.Sleep(3 * time.Second) + s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().BlobSyncer()) + + l1Head2, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l2Head2, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.Greater(l2Head2.Number.Uint64(), l2Head1.Number.Uint64()) + s.Greater(l1Head2.Number.Uint64(), l1Head1.Number.Uint64()) + + res, err := s.RPCClient.CheckL1Reorg( + context.Background(), + l2Head2.Number, + ) + s.Nil(err) + s.False(res.IsReorged) + + // Reorg back to l2Head1 + s.RevertL1Snapshot(testnetL1SnapshotID) + s.InitProposer() + + l1Head3, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.GreaterOrEqual(l1Head3.Number.Uint64(), l1Head1.Number.Uint64()) + + // Propose two blocks on another fork + s.ProposeInvalidTxListBytes(s.p) + time.Sleep(3 * time.Second) + s.ProposeInvalidTxListBytes(s.p) + + l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + s.Greater(l1Head4.Number.Uint64(), l1Head3.Number.Uint64()) + + s.Nil(s.d.ChainSyncer().BlobSyncer().ProcessL1Blocks(context.Background())) + + l2Head3, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + parent, err := s.d.rpc.L2.HeaderByHash(context.Background(), l2Head3.ParentHash) + s.Nil(err) + s.Equal(l2Head3.Number.Uint64(), l2Head2.Number.Uint64()) + s.NotEqual(l2Head3.Hash(), l2Head2.Hash()) + s.Equal(parent.ParentHash, l2Head1.Hash()) +} + +func (s *DriverTestSuite) TestDoSyncNoNewL2Blocks() { + s.Nil(s.d.l2ChainSyncer.Sync()) +} + +func (s *DriverTestSuite) TestStartClose() { + s.Nil(s.d.Start()) + s.cancel() + s.d.Close(s.d.ctx) +} + +func (s *DriverTestSuite) TestL1Current() { + // propose and insert a block + s.ProposeAndInsertEmptyBlocks(s.p, s.d.ChainSyncer().BlobSyncer()) + // reset L1 current with increased height + s.Nil(s.d.state.ResetL1Current(s.d.ctx, common.Big1)) +} + +func (s *DriverTestSuite) InitProposer() { + p := new(proposer.Proposer) + + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) + + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + s.Nil(p.InitFromConfig(context.Background(), &proposer.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: string(jwtSecret), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + }, + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), + ProposeInterval: 1024 * time.Hour, + MaxProposedTxListsPerEpoch: 1, + ProverEndpoints: s.ProverEndpoints, + OptimisticTierFee: common.Big256, + SgxTierFee: common.Big256, + MaxTierFeePriceBumps: 3, + TierFeePriceBump: common.Big2, + L1BlockBuilderTip: common.Big0, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProposerPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + s.p = p +} + +func TestDriverTestSuite(t *testing.T) { + suite.Run(t, new(DriverTestSuite)) +} diff --git a/packages/taiko-client/driver/signer/fixed_k_signer.go b/packages/taiko-client/driver/signer/fixed_k_signer.go new file mode 100644 index 00000000000..de50decaf46 --- /dev/null +++ b/packages/taiko-client/driver/signer/fixed_k_signer.go @@ -0,0 +1,87 @@ +package signer + +import ( + "fmt" + + "github.com/btcsuite/btcd/btcec/v2" + "github.com/decred/dcrd/dcrec/secp256k1/v4" + "github.com/ethereum/go-ethereum/common/hexutil" +) + +var ( + // 32 zero bytes. + zero32 [32]byte +) + +// FixedKSigner is a ethereum ECDSA signer who always sign payload with the given K value. +// In theory K value is randomly selected in ECDSA algorithm's step 3: +// https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm, +// but here we use a fixed K value instead. +type FixedKSigner struct { + privKey *secp256k1.ModNScalar +} + +func NewFixedKSigner(privKey string) (*FixedKSigner, error) { + var priv btcec.PrivateKey + if overflow := priv.Key.SetByteSlice(hexutil.MustDecode(privKey)); overflow || priv.Key.IsZero() { + return nil, fmt.Errorf("invalid private key %s", privKey) + } + + return &FixedKSigner{privKey: &priv.Key}, nil +} + +// SignWithK signs the given hash using fixed K. +func (s *FixedKSigner) SignWithK(k *secp256k1.ModNScalar) func(hash []byte) ([]byte, bool) { + // k * G + var kG secp256k1.JacobianPoint + secp256k1.ScalarBaseMultNonConst(k, &kG) + kG.ToAffine() + + // r = kG.X mod N + // r != 0 + r, overflow := fieldToModNScalar(&kG.X) + pubKeyRecoveryCode := byte(overflow<<1) | byte(kG.Y.IsOddBit()) + + kinv := new(secp256k1.ModNScalar).InverseValNonConst(k) + _s := new(secp256k1.ModNScalar).Mul2(s.privKey, &r) + + return func(hash []byte) ([]byte, bool) { + var e secp256k1.ModNScalar + e.SetByteSlice(hash) + // copy _s here to avoid modifying the original one. + _s := *_s + s := _s.Add(&e).Mul(kinv) + if s.IsZero() { + return nil, false + } + // copy pubKeyRecoveryCode here to avoid modifying the original one. + pubKeyRecoveryCode := pubKeyRecoveryCode + if s.IsOverHalfOrder() { + s.Negate() + + pubKeyRecoveryCode ^= 0x01 + } + + var sig [65]byte // r(32) + s(32) + v(1) + r.PutBytesUnchecked(sig[:32]) + s.PutBytesUnchecked(sig[32:64]) + sig[64] = pubKeyRecoveryCode + return sig[:], true + } +} + +// fieldToModNScalar converts a `secp256k1.FieldVal` to `secp256k1.ModNScalar`. +func fieldToModNScalar(v *secp256k1.FieldVal) (secp256k1.ModNScalar, uint32) { + var buf [32]byte + v.PutBytes(&buf) + var s secp256k1.ModNScalar + overflow := s.SetBytes(&buf) + // Clear buf here maybe for preventing memory theft (copy from source) + resetBuffer(&buf) + return s, overflow +} + +// resetBuffer resets the given buffer. +func resetBuffer(b *[32]byte) { + copy(b[:], zero32[:]) +} diff --git a/packages/taiko-client/driver/signer/fixed_k_signer_test.go b/packages/taiko-client/driver/signer/fixed_k_signer_test.go new file mode 100644 index 00000000000..426491eb930 --- /dev/null +++ b/packages/taiko-client/driver/signer/fixed_k_signer_test.go @@ -0,0 +1,46 @@ +package signer + +import ( + "testing" + + "github.com/btcsuite/btcd/btcec/v2" + "github.com/decred/dcrd/dcrec/secp256k1/v4" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +func TestSignWithK(t *testing.T) { + var priv btcec.PrivateKey + overflow := priv.Key.SetByteSlice( + hexutil.MustDecode("0x92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce38"), + ) + require.False(t, overflow || priv.Key.IsZero()) + + signer := FixedKSigner{privKey: &priv.Key} + + // K = 2, test case 1 + payload := hexutil.MustDecode("0x44943399d1507f3ce7525e9be2f987c3db9136dc759cb7f92f742154196868b9") + expected := testutils.SignatureFromRSV( + "0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5", + "0x38940d69b21d5b088beb706e9ebabe6422307e12863997a44239774467e240d5", + 1, + ) + + signed, ok := signer.SignWithK(new(secp256k1.ModNScalar).SetInt(2))(payload) + require.True(t, ok) + require.Equal(t, expected, signed) + + // K = 2, test case 2 + payload = hexutil.MustDecode("0x663d210fa6dba171546498489de1ba024b89db49e21662f91bf83cdffe788820") + expected = testutils.SignatureFromRSV( + "0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5", + "0x5840695138a83611aa9dac67beb95aba7323429787a78df993f1c5c7f2c0ef7f", + 0, + ) + + signed, ok = signer.SignWithK(new(secp256k1.ModNScalar).SetInt(2))(payload) + require.True(t, ok) + require.Equal(t, expected, signed) +} diff --git a/packages/taiko-client/driver/state/l1_current.go b/packages/taiko-client/driver/state/l1_current.go new file mode 100644 index 00000000000..425ec1556d1 --- /dev/null +++ b/packages/taiko-client/driver/state/l1_current.go @@ -0,0 +1,61 @@ +package state + +import ( + "context" + "errors" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" +) + +// GetL1Current reads the L1 current cursor concurrent safely. +func (s *State) GetL1Current() *types.Header { + return s.l1Current.Load().(*types.Header) +} + +// SetL1Current sets the L1 current cursor concurrent safely. +func (s *State) SetL1Current(h *types.Header) { + if h == nil { + log.Warn("Empty l1 current cursor") + return + } + log.Debug("Set L1 current cursor", "number", h.Number) + s.l1Current.Store(h) +} + +// ResetL1Current resets the l1Current cursor to the L1 height which emitted a +// BlockProposed event with given blockID / blockHash. +func (s *State) ResetL1Current(ctx context.Context, blockID *big.Int) error { + if blockID == nil { + return errors.New("empty block ID") + } + + log.Info("Reset L1 current cursor", "blockID", blockID) + + // If blockID is zero, reset to genesis L1 height. + if blockID.Cmp(common.Big0) == 0 { + l1Current, err := s.rpc.L1.HeaderByNumber(ctx, s.GenesisL1Height) + if err != nil { + return err + } + s.SetL1Current(l1Current) + return nil + } + + // Fetch the block info from TaikoL1 contract, and set the L1 height. + blockInfo, err := s.rpc.GetL2BlockInfo(ctx, blockID) + if err != nil { + return err + } + l1Current, err := s.rpc.L1.HeaderByNumber(ctx, new(big.Int).SetUint64(blockInfo.ProposedIn)) + if err != nil { + return err + } + s.SetL1Current(l1Current) + + log.Info("Reset L1 current cursor", "height", s.GetL1Current().Number, "hash", s.GetL1Current().Hash()) + + return nil +} diff --git a/packages/taiko-client/driver/state/l1_current_test.go b/packages/taiko-client/driver/state/l1_current_test.go new file mode 100644 index 00000000000..dd8fc82d0c4 --- /dev/null +++ b/packages/taiko-client/driver/state/l1_current_test.go @@ -0,0 +1,37 @@ +package state + +import ( + "context" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +func (s *DriverStateTestSuite) TestGetL1Current() { + s.NotNil(s.s.GetL1Current()) +} + +func (s *DriverStateTestSuite) TestSetL1Current() { + h := &types.Header{ParentHash: testutils.RandomHash()} + s.s.SetL1Current(h) + s.Equal(h.Hash(), s.s.GetL1Current().Hash()) + + // should warn, but not panic + s.NotPanics(func() { s.s.SetL1Current(nil) }) +} + +func (s *DriverStateTestSuite) TestResetL1CurrentEmptyHeight() { + s.Nil(s.s.ResetL1Current(context.Background(), common.Big0)) +} + +func (s *DriverStateTestSuite) TestResetL1CurrentEmptyID() { + s.ErrorContains(s.s.ResetL1Current(context.Background(), common.Big1), "execution reverted") +} + +func (s *DriverStateTestSuite) TestResetL1CurrentCtxErr() { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + s.ErrorContains(s.s.ResetL1Current(ctx, common.Big0), "context canceled") +} diff --git a/packages/taiko-client/driver/state/state.go b/packages/taiko-client/driver/state/state.go new file mode 100644 index 00000000000..eb0d5068d8c --- /dev/null +++ b/packages/taiko-client/driver/state/state.go @@ -0,0 +1,207 @@ +package state + +import ( + "context" + "math/big" + "sync" + "sync/atomic" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// State contains all states which will be used by driver. +type State struct { + // Feeds + l1HeadsFeed event.Feed // L1 new heads notification feed + + l1Head atomic.Value // Latest known L1 head + l2Head atomic.Value // Current L2 execution engine's local chain head + l2HeadBlockID atomic.Value // Latest known L2 block ID in protocol + l1Current atomic.Value // Current L1 block sync cursor + + // Constants + GenesisL1Height *big.Int + + // RPC clients + rpc *rpc.Client + + wg sync.WaitGroup +} + +// New creates a new driver state instance. +func New(ctx context.Context, rpc *rpc.Client) (*State, error) { + s := &State{rpc: rpc} + + if err := s.init(ctx); err != nil { + return nil, err + } + + go s.eventLoop(ctx) + + return s, nil +} + +// Close closes all inner subscriptions. +func (s *State) Close() { + s.wg.Wait() +} + +// init fetches the latest status and initializes the state instance. +func (s *State) init(ctx context.Context) error { + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + return err + } + + log.Info("Genesis L1 height", "height", stateVars.A.GenesisHeight) + s.GenesisL1Height = new(big.Int).SetUint64(stateVars.A.GenesisHeight) + + // Set the L2 head's latest known L1 origin as current L1 sync cursor. + latestL2KnownL1Header, err := s.rpc.LatestL2KnownL1Header(ctx) + if err != nil { + return err + } + s.l1Current.Store(latestL2KnownL1Header) + + // L1 head + l1Head, err := s.rpc.L1.HeaderByNumber(ctx, nil) + if err != nil { + return err + } + s.setL1Head(l1Head) + + // L2 head + l2Head, err := s.rpc.L2.HeaderByNumber(ctx, nil) + if err != nil { + return err + } + + log.Info("L2 execution engine head", "height", l2Head.Number, "hash", l2Head.Hash()) + s.setL2Head(l2Head) + + s.setHeadBlockID(new(big.Int).SetUint64(stateVars.B.NumBlocks - 1)) + + return nil +} + +// eventLoop initializes and starts all subscriptions and callbacks in the given state instance. +func (s *State) eventLoop(ctx context.Context) { + s.wg.Add(1) + defer s.wg.Done() + + var ( + // Channels for subscriptions. + l1HeadCh = make(chan *types.Header, 10) + l2HeadCh = make(chan *types.Header, 10) + blockProposedCh = make(chan *bindings.TaikoL1ClientBlockProposed, 10) + transitionProvedCh = make(chan *bindings.TaikoL1ClientTransitionProved, 10) + blockVerifiedCh = make(chan *bindings.TaikoL1ClientBlockVerified, 10) + + // Subscriptions. + l1HeadSub = rpc.SubscribeChainHead(s.rpc.L1, l1HeadCh) + l2HeadSub = rpc.SubscribeChainHead(s.rpc.L2, l2HeadCh) + l2BlockVerifiedSub = rpc.SubscribeBlockVerified(s.rpc.TaikoL1, blockVerifiedCh) + l2BlockProposedSub = rpc.SubscribeBlockProposed(s.rpc.TaikoL1, blockProposedCh) + l2TransitionProvedSub = rpc.SubscribeTransitionProved(s.rpc.TaikoL1, transitionProvedCh) + ) + + defer func() { + l1HeadSub.Unsubscribe() + l2HeadSub.Unsubscribe() + l2BlockVerifiedSub.Unsubscribe() + l2BlockProposedSub.Unsubscribe() + l2TransitionProvedSub.Unsubscribe() + }() + + for { + select { + case <-ctx.Done(): + return + case e := <-blockProposedCh: + s.setHeadBlockID(e.BlockId) + case e := <-transitionProvedCh: + log.Info( + "✅ Transition proven", + "blockID", e.BlockId, + "parentHash", common.Hash(e.Tran.ParentHash), + "hash", common.Hash(e.Tran.BlockHash), + "stateRoot", common.Hash(e.Tran.StateRoot), + "prover", e.Prover, + ) + case e := <-blockVerifiedCh: + log.Info( + "📈 Block verified", + "blockID", e.BlockId, + "hash", common.Hash(e.BlockHash), + "stateRoot", common.Hash(e.StateRoot), + "prover", e.Prover, + ) + case newHead := <-l1HeadCh: + s.setL1Head(newHead) + s.l1HeadsFeed.Send(newHead) + case newHead := <-l2HeadCh: + s.setL2Head(newHead) + } + } +} + +// setL1Head sets the L1 head concurrent safely. +func (s *State) setL1Head(l1Head *types.Header) { + if l1Head == nil { + log.Warn("Empty new L1 head") + return + } + + log.Debug("New L1 head", "height", l1Head.Number, "hash", l1Head.Hash(), "timestamp", l1Head.Time) + metrics.DriverL1HeadHeightGauge.Set(float64(l1Head.Number.Int64())) + + s.l1Head.Store(l1Head) +} + +// GetL1Head reads the L1 head concurrent safely. +func (s *State) GetL1Head() *types.Header { + return s.l1Head.Load().(*types.Header) +} + +// setL2Head sets the L2 head concurrent safely. +func (s *State) setL2Head(l2Head *types.Header) { + if l2Head == nil { + log.Warn("Empty new L2 head") + return + } + + log.Debug("New L2 head", "height", l2Head.Number, "hash", l2Head.Hash(), "timestamp", l2Head.Time) + metrics.DriverL2HeadHeightGauge.Set(float64(l2Head.Number.Uint64())) + + s.l2Head.Store(l2Head) +} + +// GetL2Head reads the L2 head concurrent safely. +func (s *State) GetL2Head() *types.Header { + return s.l2Head.Load().(*types.Header) +} + +// setHeadBlockID sets the last pending block ID concurrent safely. +func (s *State) setHeadBlockID(id *big.Int) { + log.Debug("New head block ID", "ID", id) + metrics.DriverL2HeadIDGauge.Set(float64(id.Uint64())) + s.l2HeadBlockID.Store(id) +} + +// GetHeadBlockID reads the last pending block ID concurrent safely. +func (s *State) GetHeadBlockID() *big.Int { + return s.l2HeadBlockID.Load().(*big.Int) +} + +// SubL1HeadsFeed registers a subscription of new L1 heads. +func (s *State) SubL1HeadsFeed(ch chan *types.Header) event.Subscription { + return s.l1HeadsFeed.Subscribe(ch) +} diff --git a/packages/taiko-client/driver/state/state_test.go b/packages/taiko-client/driver/state/state_test.go new file mode 100644 index 00000000000..f7ac90f2243 --- /dev/null +++ b/packages/taiko-client/driver/state/state_test.go @@ -0,0 +1,80 @@ +package state + +import ( + "context" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +type DriverStateTestSuite struct { + testutils.ClientTestSuite + ctx context.Context + cancel context.CancelFunc + s *State +} + +func (s *DriverStateTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + s.ctx, s.cancel = context.WithCancel(context.Background()) + state, err := New(s.ctx, s.RPCClient) + s.Nil(err) + s.s = state +} + +func (s *DriverStateTestSuite) TearDownTest() { + if s.ctx.Err() == nil { + s.cancel() + } +} + +func (s *DriverStateTestSuite) TestGetL1Head() { + l1Head := s.s.GetL1Head() + s.NotNil(l1Head) +} + +func (s *DriverStateTestSuite) TestGetHeadBlockID() { + s.Equal(uint64(0), s.s.GetHeadBlockID().Uint64()) +} + +func (s *DriverStateTestSuite) TestClose() { + s.cancel() + s.NotPanics(s.s.Close) +} + +func (s *DriverStateTestSuite) TestGetL2Head() { + testHeight := utils.RandUint64(nil) + + s.s.setL2Head(nil) + s.s.setL2Head(&types.Header{Number: new(big.Int).SetUint64(testHeight)}) + h := s.s.GetL2Head() + s.Equal(testHeight, h.Number.Uint64()) +} + +func (s *DriverStateTestSuite) TestSubL1HeadsFeed() { + s.NotNil(s.s.SubL1HeadsFeed(make(chan *types.Header))) +} + +func (s *DriverStateTestSuite) TestNewDriverContextErr() { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + state, err := New(ctx, s.RPCClient) + s.Nil(state) + s.ErrorContains(err, "context canceled") +} + +func (s *DriverStateTestSuite) TestDriverInitContextErr() { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + err := s.s.init(ctx) + s.ErrorContains(err, "context canceled") +} + +func TestDriverStateTestSuite(t *testing.T) { + suite.Run(t, new(DriverStateTestSuite)) +} diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go new file mode 100644 index 00000000000..80f6e553b2d --- /dev/null +++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor.go @@ -0,0 +1,77 @@ +package txlistdecompressor + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +// TxListDecompressor is responsible for validating and decompressing +// the transactions list in a TaikoL1.proposeBlock transaction. +type TxListDecompressor struct { + blockMaxGasLimit uint64 + maxBytesPerTxList uint64 + chainID *big.Int +} + +// NewTxListDecompressor creates a new TxListDecompressor instance based on giving configurations. +func NewTxListDecompressor( + blockMaxGasLimit uint64, + maxBytesPerTxList uint64, + chainID *big.Int, +) *TxListDecompressor { + return &TxListDecompressor{ + blockMaxGasLimit: blockMaxGasLimit, + maxBytesPerTxList: maxBytesPerTxList, + chainID: chainID, + } +} + +// TryDecompress validates and decompresses whether the transactions list in the TaikoL1.proposeBlock transaction's +// input data is valid, the rules are: +// - If the transaction list is empty, it's valid. +// - If the transaction list is not empty: +// 1. If the transaction list is using calldata, the compressed bytes of the transaction list must be +// less than or equal to maxBytesPerTxList. +// 2. The transaction list bytes must be able to be RLP decoded into a list of transactions. +func (v *TxListDecompressor) TryDecompress( + blockID *big.Int, + txListBytes []byte, + blobUsed bool, +) []byte { + // If the transaction list is empty, it's valid. + if len(txListBytes) == 0 { + return []byte{} + } + + // If calldata is used, the compressed bytes of the transaction list must be + // less than or equal to maxBytesPerTxList. + if !blobUsed && (len(txListBytes) > int(v.maxBytesPerTxList)) { + log.Info("Compressed transactions list binary too large", "length", len(txListBytes), "blockID", blockID) + return []byte{} + } + + var ( + txs types.Transactions + err error + ) + + // Decompress the transaction list bytes. + if txListBytes, err = utils.Decompress(txListBytes); err != nil { + log.Info("Failed to decompress tx list bytes", "blockID", blockID, "error", err) + return []byte{} + } + + // Try to RLP decode the transaction list bytes. + if err = rlp.DecodeBytes(txListBytes, &txs); err != nil { + log.Info("Failed to decode transactions list bytes", "blockID", blockID, "error", err) + return []byte{} + } + + log.Info("Transaction list is valid", "blockID", blockID) + return txListBytes +} diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go new file mode 100644 index 00000000000..8dd9c9445e9 --- /dev/null +++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go @@ -0,0 +1,115 @@ +package txlistdecompressor + +import ( + "crypto/rand" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +var ( + maxBlocksGasLimit = uint64(50) + maxTxlistBytes = uint64(10000) + chainID = genesis.Config.ChainID + testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + testAddr = crypto.PubkeyToAddress(testKey.PublicKey) + genesis = &core.Genesis{ + Config: params.AllEthashProtocolChanges, + Alloc: types.GenesisAlloc{testAddr: {Balance: big.NewInt(2e15)}}, + ExtraData: []byte("test genesis"), + Timestamp: 9000, + BaseFee: big.NewInt(params.InitialBaseFee), + } +) + +func TestDecomporess(t *testing.T) { + d := NewTxListDecompressor( + maxBlocksGasLimit, + maxTxlistBytes, + chainID, + ) + compressed, err := utils.Compress(rlpEncodedTransactionBytes(1, true)) + require.NoError(t, err) + + tests := []struct { + name string + blockID *big.Int + txListBytes []byte + decompressed []byte + }{ + { + "txListBytes binary too large", + chainID, + randBytes(maxTxlistBytes + 1), + []byte{}, + }, + { + "txListBytes not decodable to rlp", + chainID, + randBytes(0x1), + []byte{}, + }, + { + "success empty tx list", + chainID, + rlpEncodedTransactionBytes(0, true), + []byte{}, + }, + { + "success non-empty tx list", + chainID, + compressed, + rlpEncodedTransactionBytes(1, true), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.decompressed, d.TryDecompress(tt.blockID, tt.txListBytes, false)) + }) + } +} + +func rlpEncodedTransactionBytes(l int, signed bool) []byte { + txs := make(types.Transactions, 0) + for i := 0; i < l; i++ { + var tx *types.Transaction + if signed { + txData := &types.LegacyTx{ + Nonce: 1, + To: &testAddr, + GasPrice: common.Big256, + Value: common.Big1, + Gas: 10, + } + + tx = types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), txData) + } else { + tx = types.NewTransaction(1, testAddr, common.Big1, 10, new(big.Int).SetUint64(10*params.GWei), nil) + } + txs = append( + txs, + tx, + ) + } + b, _ := rlp.EncodeToBytes(txs) + return b +} + +func randBytes(l uint64) []byte { + b := make([]byte, l) + if _, err := rand.Read(b); err != nil { + log.Crit("Failed to generate random bytes", "error", err) + } + return b +} diff --git a/packages/taiko-client/driver/txlist_fetcher/blob.go b/packages/taiko-client/driver/txlist_fetcher/blob.go new file mode 100644 index 00000000000..ecabd59b6ca --- /dev/null +++ b/packages/taiko-client/driver/txlist_fetcher/blob.go @@ -0,0 +1,67 @@ +package txlistdecoder + +import ( + "context" + "crypto/sha256" + + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto/kzg4844" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// BlobFetcher is responsible for fetching the txList blob from the L1 block sidecar. +type BlobFetcher struct { + l1Beacon *rpc.BeaconClient + ds *rpc.BlobDataSource +} + +// NewBlobTxListFetcher creates a new BlobFetcher instance based on the given rpc client. +func NewBlobTxListFetcher(l1Beacon *rpc.BeaconClient, ds *rpc.BlobDataSource) *BlobFetcher { + return &BlobFetcher{l1Beacon, ds} +} + +// Fetch implements the TxListFetcher interface. +func (d *BlobFetcher) Fetch( + ctx context.Context, + _ *types.Transaction, + meta *bindings.TaikoDataBlockMetadata, +) ([]byte, error) { + if !meta.BlobUsed { + return nil, pkg.ErrBlobUsed + } + + // Fetch the L1 block sidecars. + sidecars, err := d.ds.GetBlobs(ctx, meta) + if err != nil { + return nil, err + } + + log.Info("Fetch sidecars", "blockNumber", meta.L1Height+1, "sidecars", len(sidecars)) + + // Compare the blob hash with the sidecar's kzg commitment. + for i, sidecar := range sidecars { + log.Info( + "Block sidecar", + "index", i, + "KzgCommitment", sidecar.KzgCommitment, + "blobHash", common.Bytes2Hex(meta.BlobHash[:]), + ) + + commitment := kzg4844.Commitment(common.FromHex(sidecar.KzgCommitment)) + if kzg4844.CalcBlobHashV1( + sha256.New(), + &commitment, + ) == common.BytesToHash(meta.BlobHash[:]) { + blob := eth.Blob(common.FromHex(sidecar.Blob)) + return blob.ToData() + } + } + + return nil, pkg.ErrSidecarNotFound +} diff --git a/packages/taiko-client/driver/txlist_fetcher/calldata.go b/packages/taiko-client/driver/txlist_fetcher/calldata.go new file mode 100644 index 00000000000..4cd7f4c6619 --- /dev/null +++ b/packages/taiko-client/driver/txlist_fetcher/calldata.go @@ -0,0 +1,27 @@ +package txlistdecoder + +import ( + "context" + + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg" +) + +// CalldataFetcher is responsible for fetching the txList bytes from the transaction's calldata. +type CalldataFetcher struct{} + +// NewCalldataTxListFetcher creates a new CalldataFetcher instance. +func (d *CalldataFetcher) Fetch( + _ context.Context, + tx *types.Transaction, + meta *bindings.TaikoDataBlockMetadata, +) ([]byte, error) { + if meta.BlobUsed { + return nil, pkg.ErrBlobUsed + } + + return encoding.UnpackTxListBytes(tx.Data()) +} diff --git a/packages/taiko-client/driver/txlist_fetcher/interface.go b/packages/taiko-client/driver/txlist_fetcher/interface.go new file mode 100644 index 00000000000..7d412ec8806 --- /dev/null +++ b/packages/taiko-client/driver/txlist_fetcher/interface.go @@ -0,0 +1,14 @@ +package txlistdecoder + +import ( + "context" + + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +// TxListFetcher is responsible for fetching the L2 txList bytes from L1 +type TxListFetcher interface { + Fetch(ctx context.Context, tx *types.Transaction, meta *bindings.TaikoDataBlockMetadata) ([]byte, error) +} diff --git a/packages/taiko-client/index.html b/packages/taiko-client/index.html new file mode 100644 index 00000000000..6a06a93af5b --- /dev/null +++ b/packages/taiko-client/index.html @@ -0,0 +1,29 @@ + + + + + + Prover Server API + + +
    + + + diff --git a/packages/taiko-client/integration_test/README.md b/packages/taiko-client/integration_test/README.md new file mode 100644 index 00000000000..056dbacf88d --- /dev/null +++ b/packages/taiko-client/integration_test/README.md @@ -0,0 +1,26 @@ +# How to debug test cases? + +- start docker compose + +``` +./internal/docker/start.sh +``` + +- deploy L1 contracts + +``` +./integration_test/deploy_l1_contract.sh +``` + +- expose environment variables into .env file. + +``` +./integration_test/test_env.sh +``` + +- copy the result of previous step and paste it into `Debug configurations` + > after debugging, don't forget stop docker compose! + +``` +./internal/docker/stop.sh +``` diff --git a/packages/taiko-client/integration_test/deploy_l1_contract.sh b/packages/taiko-client/integration_test/deploy_l1_contract.sh new file mode 100755 index 00000000000..2fd8ccfc347 --- /dev/null +++ b/packages/taiko-client/integration_test/deploy_l1_contract.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +source scripts/common.sh + +# load l1 chain deploy contracts environment variables +source integration_test/l1_env.sh + +cd ../protocol && + forge script script/DeployOnL1.s.sol:DeployOnL1 \ + --fork-url "$L1_NODE_HTTP_ENDPOINT" \ + --broadcast \ + --ffi \ + -vvvvv \ + --evm-version cancun \ + --private-key "$PRIVATE_KEY" \ + --block-gas-limit 100000000 diff --git a/packages/taiko-client/integration_test/entrypoint.sh b/packages/taiko-client/integration_test/entrypoint.sh new file mode 100755 index 00000000000..c878085644c --- /dev/null +++ b/packages/taiko-client/integration_test/entrypoint.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +set -eou pipefail + +# load tool commands. +source scripts/common.sh + +# make sure all the commands are available. +check_command "cast" +check_command "forge" +check_command "docker" + +# start and stop docker compose +internal/docker/start.sh +trap "internal/docker/stop.sh" EXIT INT KILL ERR + +# deploy l1 contracts +integration_test/deploy_l1_contract.sh + +# load environment variables for integration test +source integration_test/test_env.sh + +# make sure environment variables are set +check_env "L1_NODE_HTTP_ENDPOINT" +check_env "L1_NODE_WS_ENDPOINT" +check_env "L2_EXECUTION_ENGINE_HTTP_ENDPOINT" +check_env "L2_EXECUTION_ENGINE_WS_ENDPOINT" +check_env "L2_EXECUTION_ENGINE_AUTH_ENDPOINT" +check_env "TAIKO_L1_ADDRESS" +check_env "TAIKO_L2_ADDRESS" +check_env "TAIKO_TOKEN_ADDRESS" +check_env "ASSIGNMENT_HOOK_ADDRESS" +check_env "TIMELOCK_CONTROLLER" +check_env "ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS" +check_env "GUARDIAN_PROVER_CONTRACT_ADDRESS" +check_env "GUARDIAN_PROVER_MINORITY_ADDRESS" +check_env "L1_CONTRACT_OWNER_PRIVATE_KEY" +check_env "L1_SECURITY_COUNCIL_PRIVATE_KEY" +check_env "L1_PROPOSER_PRIVATE_KEY" +check_env "L1_PROVER_PRIVATE_KEY" +check_env "TREASURY" +check_env "JWT_SECRET" +check_env "VERBOSITY" + +RUN_TESTS=${RUN_TESTS:-false} +PACKAGE=${PACKAGE:-...} + +if [ "$RUN_TESTS" == "true" ]; then + go test -v -p=1 ./"$PACKAGE" -coverprofile=coverage.out -covermode=atomic -timeout=700s +else + echo "💻 Local dev net started" +fi diff --git a/packages/taiko-client/integration_test/l1_env.sh b/packages/taiko-client/integration_test/l1_env.sh new file mode 100755 index 00000000000..12c2a25d3c3 --- /dev/null +++ b/packages/taiko-client/integration_test/l1_env.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +source internal/docker/docker_env.sh + +export PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +export TAIKO_L2_ADDRESS=0x1670010000000000000000000000000000010001 +export L2_SIGNAL_SERVICE=0x1670010000000000000000000000000000010005 +export CONTRACT_OWNER=0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f +export TAIKO_TOKEN_PREMINT_RECIPIENT=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 +export TAIKO_TOKEN_NAME="Taiko Token Test" +export TAIKO_TOKEN_SYMBOL="TTKOt" +export TIER_PROVIDER="devnet" +export PAUSE_TAIKO_L1="false" +export PAUSE_BRIDGE="false" +export TAIKO_TOKEN=0x0000000000000000000000000000000000000000 +export SHARED_ADDRESS_MANAGER=0x0000000000000000000000000000000000000000 +export PROPOSER=0x0000000000000000000000000000000000000000 +export PROPOSER_ONE=0x0000000000000000000000000000000000000000 + +GUARDIAN_PROVERS_ADDRESSES_LIST=( + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC" + "0x90F79bf6EB2c4f870365E785982E1f101E93b906" + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65" + "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f" + "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720" +) +GUARDIAN_PROVERS_ADDRESSES=$(printf ",%s" "${GUARDIAN_PROVERS_ADDRESSES_LIST[@]}") +export GUARDIAN_PROVERS=${GUARDIAN_PROVERS_ADDRESSES:1} +export MIN_GUARDIANS=${#GUARDIAN_PROVERS_ADDRESSES_LIST[@]} + +# Get the hash of L2 genesis. +export L2_GENESIS_HASH=$( + curl \ + --silent \ + -X POST \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","id":0,"method":"eth_getBlockByNumber","params":["0x0", false]}' \ + $L2_EXECUTION_ENGINE_HTTP_ENDPOINT | jq .result.hash | sed 's/\"//g' +) +echo "L2_GENESIS_HASH: $L2_GENESIS_HASH" diff --git a/packages/taiko-client/integration_test/test_env.sh b/packages/taiko-client/integration_test/test_env.sh new file mode 100755 index 00000000000..a1953d2d7cc --- /dev/null +++ b/packages/taiko-client/integration_test/test_env.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +source internal/docker/docker_env.sh +source scripts/common.sh + +# get deployed contract address. +DEPLOYMENT_JSON=$(cat ../protocol/deployments/deploy_l1.json) +export TAIKO_L1_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.taiko' | sed 's/\"//g') +export TAIKO_L2_ADDRESS=0x1670010000000000000000000000000000010001 +export TAIKO_TOKEN_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.taiko_token' | sed 's/\"//g') +export ASSIGNMENT_HOOK_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.assignment_hook' | sed 's/\"//g') +export TIMELOCK_CONTROLLER=$(echo "$DEPLOYMENT_JSON" | jq '.timelock_controller' | sed 's/\"//g') +export ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.rollup_address_manager' | sed 's/\"//g') +export GUARDIAN_PROVER_CONTRACT_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.guardian_prover' | sed 's/\"//g') +export GUARDIAN_PROVER_MINORITY_ADDRESS=$(echo "$DEPLOYMENT_JSON" | jq '.guardian_prover_minority' | sed 's/\"//g') +export L1_CONTRACT_OWNER_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +export L1_SECURITY_COUNCIL_PRIVATE_KEY=0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97 +export L1_PROPOSER_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +export L2_SUGGESTED_FEE_RECIPIENT=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 +export L1_PROVER_PRIVATE_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d +export TREASURY=0x1670010000000000000000000000000000010001 +export VERBOSITY=3 + +# show the integration test environment variables. +# L1_BEACON_HTTP_ENDPOINT=$L1_BEACON_HTTP_ENDPOINT +echo "RUN_TESTS=true +L1_NODE_HTTP_ENDPOINT=$L1_NODE_HTTP_ENDPOINT +L1_NODE_WS_ENDPOINT=$L1_NODE_WS_ENDPOINT +L2_SUGGESTED_FEE_RECIPIENT=$L2_SUGGESTED_FEE_RECIPIENT +L2_EXECUTION_ENGINE_HTTP_ENDPOINT=$L2_EXECUTION_ENGINE_HTTP_ENDPOINT +L2_EXECUTION_ENGINE_WS_ENDPOINT=$L2_EXECUTION_ENGINE_WS_ENDPOINT +L2_EXECUTION_ENGINE_AUTH_ENDPOINT=$L2_EXECUTION_ENGINE_AUTH_ENDPOINT +TAIKO_L1_ADDRESS=$TAIKO_L1_ADDRESS +TAIKO_L2_ADDRESS=$TAIKO_L2_ADDRESS +TAIKO_TOKEN_ADDRESS=$TAIKO_TOKEN_ADDRESS +ASSIGNMENT_HOOK_ADDRESS=$ASSIGNMENT_HOOK_ADDRESS +TIMELOCK_CONTROLLER=$TIMELOCK_CONTROLLER +ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS=$ROLLUP_ADDRESS_MANAGER_CONTRACT_ADDRESS +GUARDIAN_PROVER_CONTRACT_ADDRESS=$GUARDIAN_PROVER_CONTRACT_ADDRESS +GUARDIAN_PROVER_MINORITY_ADDRESS=$GUARDIAN_PROVER_MINORITY_ADDRESS +L1_CONTRACT_OWNER_PRIVATE_KEY=$L1_CONTRACT_OWNER_PRIVATE_KEY +L1_SECURITY_COUNCIL_PRIVATE_KEY=$L1_SECURITY_COUNCIL_PRIVATE_KEY +L1_PROPOSER_PRIVATE_KEY=$L1_PROPOSER_PRIVATE_KEY +L1_PROVER_PRIVATE_KEY=$L1_PROVER_PRIVATE_KEY +TREASURY=$TREASURY +JWT_SECRET=$JWT_SECRET +VERBOSITY=$VERBOSITY" > integration_test/.env diff --git a/packages/taiko-client/internal/docker/.gitignore b/packages/taiko-client/internal/docker/.gitignore new file mode 100644 index 00000000000..a3127c66cf1 --- /dev/null +++ b/packages/taiko-client/internal/docker/.gitignore @@ -0,0 +1 @@ +taikogeth/taiko-geth diff --git a/packages/taiko-client/internal/docker/docker_env.sh b/packages/taiko-client/internal/docker/docker_env.sh new file mode 100755 index 00000000000..ccaab9a033c --- /dev/null +++ b/packages/taiko-client/internal/docker/docker_env.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# check until L1 chain is ready +L1_PROBE_URL=ws://localhost:$(docker port l1_node | grep '0.0.0.0' | awk -F ':' '{print $2}') +until cast chain-id --rpc-url "$L1_PROBE_URL" 2> /dev/null; do + sleep 1 +done + +# check until L2 chain is ready +L2_PROBE_URL=ws://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==2 {print $2}') +until cast chain-id --rpc-url "$L2_PROBE_URL" 2> /dev/null; do + sleep 1 +done + +L1_NODE_PORT=$(docker port l1_node | grep '0.0.0.0' | awk -F ':' '{print $2}') +export L1_NODE_HTTP_ENDPOINT=http://localhost:$L1_NODE_PORT +export L1_NODE_WS_ENDPOINT=ws://localhost:$L1_NODE_PORT + +export L2_EXECUTION_ENGINE_HTTP_ENDPOINT=http://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==1 {print $2}') +export L2_EXECUTION_ENGINE_WS_ENDPOINT=ws://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==2 {print $2}') +export L2_EXECUTION_ENGINE_AUTH_ENDPOINT=http://localhost:$(docker port l2_node | grep "0.0.0.0" | awk -F ':' 'NR==3 {print $2}') +export JWT_SECRET=$DIR/nodes/jwt.hex + +echo -e "L1_NODE PORTS: \n$(docker port l1_node)" +echo -e "L2_NODE PORTS: \n$(docker port l2_node)" + +echo "L1_NODE_HTTP_ENDPOINT: $L1_NODE_HTTP_ENDPOINT" +echo "L1_NODE_WS_ENDPOINT: $L1_NODE_WS_ENDPOINT" +echo "L2_EXECUTION_ENGINE_HTTP_ENDPOINT: $L2_EXECUTION_ENGINE_HTTP_ENDPOINT" +echo "L2_EXECUTION_ENGINE_WS_ENDPOINT: $L2_EXECUTION_ENGINE_WS_ENDPOINT" +echo "L2_EXECUTION_ENGINE_AUTH_ENDPOINT: $L2_EXECUTION_ENGINE_AUTH_ENDPOINT" diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml new file mode 100644 index 00000000000..4880101823c --- /dev/null +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -0,0 +1,69 @@ +services: + l1_node: + container_name: l1_node + image: ghcr.io/foundry-rs/foundry:nightly + restart: unless-stopped + platform: linux/amd64 + pull_policy: always + ports: + - "8545" + entrypoint: + - anvil + - --chain-id + - "32301" + - --host + - "0.0.0.0" + - --hardfork + - cancun + + l2_execution_engine: + container_name: l2_node + image: us-docker.pkg.dev/evmchain/images/taiko-geth:taiko + restart: unless-stopped + pull_policy: always + volumes: + - .:/host + ports: + - "8545" + - "8546" + - "8551" + command: + - --nodiscover + - --gcmode + - archive + - --syncmode + - full + - --datadir + - /data/taiko-geth + - --networkid + - "167001" + - --metrics + - --metrics.expensive + - --metrics.addr + - "0.0.0.0" + - --http + - --http.addr + - "0.0.0.0" + - --http.vhosts + - "*" + - --http.corsdomain + - "*" + - --ws + - --ws.addr + - "0.0.0.0" + - --ws.origins + - "*" + - --authrpc.addr + - "0.0.0.0" + - --authrpc.port + - "8551" + - --authrpc.vhosts + - "*" + - --authrpc.jwtsecret + - /host/jwt.hex + - --allow-insecure-unlock + - --http.api + - admin,debug,eth,net,web3,txpool,miner,taiko + - --ws.api + - admin,debug,eth,net,web3,txpool,miner,taiko + - --taiko diff --git a/packages/taiko-client/internal/docker/nodes/jwt.hex b/packages/taiko-client/internal/docker/nodes/jwt.hex new file mode 100644 index 00000000000..e48067e7fd2 --- /dev/null +++ b/packages/taiko-client/internal/docker/nodes/jwt.hex @@ -0,0 +1 @@ +c49690b5a9bc72c7b451b48c5fee2b542e66559d840a133d090769abc56e39e7 diff --git a/packages/taiko-client/internal/docker/start.sh b/packages/taiko-client/internal/docker/start.sh new file mode 100755 index 00000000000..cde4a56a28c --- /dev/null +++ b/packages/taiko-client/internal/docker/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +source scripts/common.sh + +DOCKER_SERVICE_LIST=("l1_node" "l2_execution_engine") + +# start docker compose service list +echo "start docker compose service: ${DOCKER_SERVICE_LIST[*]}" + +compose_up "${DOCKER_SERVICE_LIST[@]}" + +# show all the running containers +echo +docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}" diff --git a/packages/taiko-client/internal/docker/stop.sh b/packages/taiko-client/internal/docker/stop.sh new file mode 100755 index 00000000000..0a69ade3282 --- /dev/null +++ b/packages/taiko-client/internal/docker/stop.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +source scripts/common.sh + +DOCKER_SERVICE_LIST=("l1_node" "l2_execution_engine") + +echo "stop docker compose service: ${DOCKER_SERVICE_LIST[*]}" + +compose_down "${DOCKER_SERVICE_LIST[@]}" diff --git a/packages/taiko-client/internal/metrics/metrics.go b/packages/taiko-client/internal/metrics/metrics.go new file mode 100644 index 00000000000..a95ee32ebf3 --- /dev/null +++ b/packages/taiko-client/internal/metrics/metrics.go @@ -0,0 +1,91 @@ +package metrics + +import ( + "context" + + opMetrics "github.com/ethereum-optimism/optimism/op-service/metrics" + "github.com/ethereum-optimism/optimism/op-service/opio" + txmgrMetrics "github.com/ethereum-optimism/optimism/op-service/txmgr/metrics" + "github.com/ethereum/go-ethereum/log" + "github.com/prometheus/client_golang/prometheus" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" +) + +// Metrics +var ( + registry = opMetrics.NewRegistry() + factory = opMetrics.With(registry) + + // Driver + DriverL1HeadHeightGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "driver_l1Head_height"}) + DriverL2HeadHeightGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "driver_l2Head_height"}) + DriverL1CurrentHeightGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "driver_l1Current_height"}) + DriverL2HeadIDGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "driver_l2Head_id"}) + DriverL2VerifiedHeightGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "driver_l2Verified_id"}) + + // Proposer + ProposerProposeEpochCounter = factory.NewCounter(prometheus.CounterOpts{Name: "proposer_epoch"}) + ProposerProposedTxListsCounter = factory.NewCounter(prometheus.CounterOpts{Name: "proposer_proposed_txLists"}) + ProposerProposedTxsCounter = factory.NewCounter(prometheus.CounterOpts{Name: "proposer_proposed_txs"}) + + // Prover + ProverLatestVerifiedIDGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "prover_latestVerified_id"}) + ProverLatestProvenBlockIDGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "prover_latestProven_id"}) + ProverQueuedProofCounter = factory.NewCounter(prometheus.CounterOpts{Name: "prover_proof_all_queued"}) + ProverReceivedProofCounter = factory.NewCounter(prometheus.CounterOpts{Name: "prover_proof_all_received"}) + ProverSentProofCounter = factory.NewCounter(prometheus.CounterOpts{Name: "prover_proof_all_sent"}) + ProverProofsAssigned = factory.NewCounter(prometheus.CounterOpts{Name: "prover_proof_assigned"}) + ProverReceivedProposedBlockGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "prover_proposed_received"}) + ProverReceivedProvenBlockGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "prover_proven_received"}) + ProverProvenByGuardianGauge = factory.NewGauge(prometheus.GaugeOpts{Name: "prover_proven_by_guardian"}) + ProverSubmissionAcceptedCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_submission_accepted", + }) + ProverSubmissionErrorCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_submission_error", + }) + ProverSgxProofGeneratedCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_sgx_generated", + }) + ProverSubmissionRevertedCounter = factory.NewCounter(prometheus.CounterOpts{ + Name: "prover_proof_submission_reverted", + }) + + // TxManager + TxMgrMetrics = txmgrMetrics.MakeTxMetrics("client", factory) +) + +// Serve starts the metrics server on the given address, will be closed when the given +// context is cancelled. +func Serve(ctx context.Context, c *cli.Context) error { + if !c.Bool(flags.MetricsEnabled.Name) { + return nil + } + + log.Info( + "Starting metrics server", + "host", c.String(flags.MetricsAddr.Name), + "port", c.Int(flags.MetricsPort.Name), + ) + + server, err := opMetrics.StartServer( + registry, + c.String(flags.MetricsAddr.Name), + c.Int(flags.MetricsPort.Name), + ) + if err != nil { + return err + } + + defer func() { + if err := server.Stop(ctx); err != nil { + log.Error("Failed to close metrics server", "error", err) + } + }() + + opio.BlockOnInterruptsContext(ctx) + + return nil +} diff --git a/packages/taiko-client/internal/testutils/helper.go b/packages/taiko-client/internal/testutils/helper.go new file mode 100644 index 00000000000..df90b84c9e2 --- /dev/null +++ b/packages/taiko-client/internal/testutils/helper.go @@ -0,0 +1,360 @@ +package testutils + +import ( + "context" + "crypto/ecdsa" + "crypto/rand" + "errors" + "fmt" + "math/big" + "net/http" + "net/url" + "os" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" + "github.com/go-resty/resty/v2" + "github.com/phayes/freeport" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/server" +) + +func (s *ClientTestSuite) ProposeInvalidTxListBytes(proposer Proposer) { + invalidTxListBytes := RandomBytes(256) + + s.Nil(proposer.ProposeTxList(context.Background(), invalidTxListBytes, 1)) +} + +func (s *ClientTestSuite) proposeEmptyBlockOp(ctx context.Context, proposer Proposer) { + emptyTxListBytes, err := rlp.EncodeToBytes(types.Transactions{}) + s.Nil(err) + s.Nil(proposer.ProposeTxList(ctx, emptyTxListBytes, 0)) +} + +func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks( + proposer Proposer, + blobSyncer BlobSyncer, +) []*bindings.TaikoL1ClientBlockProposed { + var events []*bindings.TaikoL1ClientBlockProposed + + l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + sink := make(chan *bindings.TaikoL1ClientBlockProposed) + + sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + // RLP encoded empty list + var emptyTxs []types.Transaction + encoded, err := rlp.EncodeToBytes(emptyTxs) + s.Nil(err) + + s.Nil(proposer.ProposeTxList(context.Background(), encoded, 0)) + + s.ProposeInvalidTxListBytes(proposer) + + // Random bytes txList + s.proposeEmptyBlockOp(context.Background(), proposer) + + events = append(events, []*bindings.TaikoL1ClientBlockProposed{<-sink, <-sink, <-sink}...) + + _, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), events[len(events)-1].Raw.TxHash) + s.Nil(err) + s.False(isPending) + + newL1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.Greater(newL1Head.Number.Uint64(), l1Head.Number.Uint64()) + + ctx, cancel := context.WithTimeout(context.Background(), time.Minute) + defer cancel() + + s.Nil(backoff.Retry(func() error { + return blobSyncer.ProcessL1Blocks(ctx) + }, backoff.NewExponentialBackOff())) + + s.Nil(s.RPCClient.WaitTillL2ExecutionEngineSynced(context.Background())) + + return events +} + +// ProposeAndInsertValidBlock proposes an valid tx list and then insert it +// into L2 execution engine's local chain. +func (s *ClientTestSuite) ProposeAndInsertValidBlock( + proposer Proposer, + blobSyncer BlobSyncer, +) *bindings.TaikoL1ClientBlockProposed { + l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + l2Head, err := s.RPCClient.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + // Propose txs in L2 execution engine's mempool + sink := make(chan *bindings.TaikoL1ClientBlockProposed) + + sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + baseFeeInfo, err := s.RPCClient.TaikoL2.GetBasefee(nil, l1Head.Number.Uint64()+1, uint32(l2Head.GasUsed)) + s.Nil(err) + + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) + s.Nil(err) + + tx := types.NewTransaction( + nonce, + common.BytesToAddress(RandomBytes(32)), + common.Big1, + 100000, + new(big.Int).SetUint64(uint64(10*params.GWei)+baseFeeInfo.Basefee.Uint64()), + []byte{}, + ) + signedTx, err := types.SignTx(tx, types.LatestSignerForChainID(s.RPCClient.L2.ChainID), s.TestAddrPrivKey) + s.Nil(err) + s.Nil(s.RPCClient.L2.SendTransaction(context.Background(), signedTx)) + + s.Nil(proposer.ProposeOp(context.Background())) + + event := <-sink + + _, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), event.Raw.TxHash) + s.Nil(err) + s.False(isPending) + + receipt, err := s.RPCClient.L1.TransactionReceipt(context.Background(), event.Raw.TxHash) + s.Nil(err) + s.Equal(types.ReceiptStatusSuccessful, receipt.Status) + + newL1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.Greater(newL1Head.Number.Uint64(), l1Head.Number.Uint64()) + + ctx, cancel := context.WithTimeout(context.Background(), time.Minute) + defer cancel() + + s.Nil(backoff.Retry(func() error { + return blobSyncer.ProcessL1Blocks(ctx) + }, backoff.NewExponentialBackOff())) + + s.Nil(s.RPCClient.WaitTillL2ExecutionEngineSynced(context.Background())) + + _, err = s.RPCClient.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + return event +} + +func (s *ClientTestSuite) ProposeValidBlock( + proposer Proposer, +) *bindings.TaikoL1ClientBlockProposed { + l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + l2Head, err := s.RPCClient.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + // Propose txs in L2 execution engine's mempool + sink := make(chan *bindings.TaikoL1ClientBlockProposed) + + sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + baseFeeInfo, err := s.RPCClient.TaikoL2.GetBasefee(nil, l1Head.Number.Uint64()+1, uint32(l2Head.GasUsed)) + s.Nil(err) + + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) + s.Nil(err) + + tx := types.NewTransaction( + nonce, + common.BytesToAddress(RandomBytes(32)), + common.Big1, + 100000, + new(big.Int).SetUint64(uint64(10*params.GWei)+baseFeeInfo.Basefee.Uint64()), + []byte{}, + ) + signedTx, err := types.SignTx(tx, types.LatestSignerForChainID(s.RPCClient.L2.ChainID), s.TestAddrPrivKey) + s.Nil(err) + s.Nil(s.RPCClient.L2.SendTransaction(context.Background(), signedTx)) + + s.Nil(proposer.ProposeOp(context.Background())) + + event := <-sink + + _, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), event.Raw.TxHash) + s.Nil(err) + s.False(isPending) + + receipt, err := s.RPCClient.L1.TransactionReceipt(context.Background(), event.Raw.TxHash) + s.Nil(err) + s.Equal(types.ReceiptStatusSuccessful, receipt.Status) + + newL1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + s.Greater(newL1Head.Number.Uint64(), l1Head.Number.Uint64()) + + return event +} + +// NewTestProverServer starts a new prover server that has channel listeners to respond and react +// to requests for capacity, which provers can call. +func (s *ClientTestSuite) NewTestProverServer( + proverPrivKey *ecdsa.PrivateKey, + url *url.URL, +) *server.ProverServer { + protocolConfig, err := s.RPCClient.TaikoL1.GetConfig(nil) + s.Nil(err) + + srv, err := server.New(&server.NewProverServerOpts{ + ProverPrivateKey: proverPrivKey, + MinOptimisticTierFee: common.Big1, + MinSgxTierFee: common.Big1, + MinSgxAndZkVMTierFee: common.Big1, + MinEthBalance: common.Big1, + MinTaikoTokenBalance: common.Big1, + MaxExpiry: 24 * time.Hour, + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + RPC: s.RPCClient, + ProtocolConfigs: &protocolConfig, + LivenessBond: protocolConfig.LivenessBond, + }) + s.Nil(err) + + go func() { + if err := srv.Start(fmt.Sprintf(":%v", url.Port())); !errors.Is(err, http.ErrServerClosed) { + log.Error("Failed to start prover server", "error", err) + } + }() + + // Wait till the server fully started. + s.Nil(backoff.Retry(func() error { + res, err := resty.New().R().Get(url.String() + "/healthz") + if err != nil { + return err + } + if !res.IsSuccess() { + return fmt.Errorf("invalid response status code: %d", res.StatusCode()) + } + + return nil + }, backoff.NewExponentialBackOff())) + + return srv +} + +// RandomHash generates a random blob of data and returns it as a hash. +func RandomHash() common.Hash { + var hash common.Hash + if n, err := rand.Read(hash[:]); n != common.HashLength || err != nil { + panic(err) + } + return hash +} + +// RandomBytes generates a random bytes. +func RandomBytes(size int) (b []byte) { + b = make([]byte, size) + if _, err := rand.Read(b); err != nil { + log.Crit("Generate random bytes error", "error", err) + } + return +} + +// RandomPort returns a local free random port. +func RandomPort() int { + port, err := freeport.GetFreePort() + if err != nil { + log.Crit("Failed to get local free random port", "error", err) + } + return port +} + +// LocalRandomProverEndpoint returns a local free random prover endpoint. +func LocalRandomProverEndpoint() *url.URL { + port := RandomPort() + + proverEndpoint, err := url.Parse(fmt.Sprintf("http://localhost:%v", port)) + if err != nil { + log.Crit("Failed to parse local prover endpoint", "error", err) + } + + return proverEndpoint +} + +// SignatureFromRSV creates the signature bytes from r,s,v. +func SignatureFromRSV(r, s string, v byte) []byte { + return append(append(hexutil.MustDecode(r), hexutil.MustDecode(s)...), v) +} + +// SendDynamicFeeTx sends a dynamic transaction, used for tests. +func SendDynamicFeeTx( + client *rpc.EthClient, + priv *ecdsa.PrivateKey, + to *common.Address, + value *big.Int, + data []byte, +) (*types.Transaction, error) { + head, err := client.HeaderByNumber(context.Background(), nil) + if err != nil { + return nil, err + } + + auth, err := bind.NewKeyedTransactorWithChainID(priv, client.ChainID) + if err != nil { + return nil, err + } + + nonce, err := client.PendingNonceAt(context.Background(), auth.From) + if err != nil { + return nil, err + } + + gasTipCap, err := client.SuggestGasTipCap(context.Background()) + if err != nil { + return nil, err + } + + tx, err := auth.Signer(auth.From, types.NewTx(&types.DynamicFeeTx{ + To: to, + Nonce: nonce, + Value: value, + GasTipCap: gasTipCap, + GasFeeCap: new(big.Int).Add( + gasTipCap, + new(big.Int).Mul(head.BaseFee, big.NewInt(2)), + ), + Gas: 2100_000, + Data: data, + })) + if err != nil { + return nil, err + } + if err = client.SendTransaction(context.Background(), tx); err != nil { + return nil, err + } + return tx, nil +} diff --git a/packages/taiko-client/internal/testutils/interfaces.go b/packages/taiko-client/internal/testutils/interfaces.go new file mode 100644 index 00000000000..d8d1a401899 --- /dev/null +++ b/packages/taiko-client/internal/testutils/interfaces.go @@ -0,0 +1,21 @@ +package testutils + +import ( + "context" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/utils" +) + +type BlobSyncer interface { + ProcessL1Blocks(ctx context.Context) error +} + +type Proposer interface { + utils.SubcommandApplication + ProposeOp(ctx context.Context) error + ProposeTxList( + ctx context.Context, + txListBytes []byte, + txNum uint, + ) error +} diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go new file mode 100644 index 00000000000..d31fc4e852e --- /dev/null +++ b/packages/taiko-client/internal/testutils/suite.go @@ -0,0 +1,191 @@ +package testutils + +import ( + "context" + "crypto/ecdsa" + "math/big" + "net/url" + "os" + "strconv" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum-optimism/optimism/op-service/txmgr/metrics" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/server" +) + +type ClientTestSuite struct { + suite.Suite + testnetL1SnapshotID string + RPCClient *rpc.Client + TestAddrPrivKey *ecdsa.PrivateKey + TestAddr common.Address + ProverEndpoints []*url.URL + AddressManager *bindings.AddressManager + proverServer *server.ProverServer +} + +func (s *ClientTestSuite) SetupTest() { + utils.LoadEnv() + // Default logger + ver, err := strconv.Atoi(os.Getenv("VERBOSITY")) + s.Nil(err) + glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stdout, true)) + glogger.Verbosity(log.FromLegacyLevel(ver)) + log.SetDefault(log.NewLogger(glogger)) + + testAddrPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + s.TestAddrPrivKey = testAddrPrivKey + s.TestAddr = common.HexToAddress("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266") + + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) + + rpcCli, err := rpc.NewClient(context.Background(), &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + GuardianProverMajorityAddress: common.HexToAddress(os.Getenv("GUARDIAN_PROVER_CONTRACT_ADDRESS")), + GuardianProverMinorityAddress: common.HexToAddress(os.Getenv("GUARDIAN_PROVER_MINORITY_ADDRESS")), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: string(jwtSecret), + }) + s.Nil(err) + s.RPCClient = rpcCli + + s.Nil(s.RPCClient.WaitTillL2ExecutionEngineSynced(context.Background())) + + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + + s.ProverEndpoints = []*url.URL{LocalRandomProverEndpoint()} + s.proverServer = s.NewTestProverServer(l1ProverPrivKey, s.ProverEndpoints[0]) + + balance, err := rpcCli.TaikoToken.BalanceOf(nil, crypto.PubkeyToAddress(l1ProverPrivKey.PublicKey)) + s.Nil(err) + + if balance.Cmp(common.Big0) == 0 { + ownerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_CONTRACT_OWNER_PRIVATE_KEY"))) + s.Nil(err) + + // Transfer some tokens to provers. + balance, err := rpcCli.TaikoToken.BalanceOf(nil, crypto.PubkeyToAddress(ownerPrivKey.PublicKey)) + s.Nil(err) + s.Greater(balance.Cmp(common.Big0), 0) + + opts, err := bind.NewKeyedTransactorWithChainID(ownerPrivKey, rpcCli.L1.ChainID) + s.Nil(err) + proverBalance := new(big.Int).Div(balance, common.Big2) + s.Greater(proverBalance.Cmp(common.Big0), 0) + + _, err = rpcCli.TaikoToken.Transfer(opts, crypto.PubkeyToAddress(l1ProverPrivKey.PublicKey), proverBalance) + s.Nil(err) + + // Increase allowance for AssignmentHook and TaikoL1 + s.setAllowance(l1ProverPrivKey) + s.setAllowance(ownerPrivKey) + } + s.testnetL1SnapshotID = s.SetL1Snapshot() +} + +func (s *ClientTestSuite) setAllowance(key *ecdsa.PrivateKey) { + t, err := txmgr.NewSimpleTxManager( + "setAllowance", + log.Root(), + new(metrics.NoopTxMetrics), + txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(key)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + ) + s.Nil(err) + + decimal, err := s.RPCClient.TaikoToken.Decimals(nil) + s.Nil(err) + + var ( + bigInt = new(big.Int).Exp(big.NewInt(1_000_000_000), new(big.Int).SetUint64(uint64(decimal)), nil) + taikoTokenAddress = common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")) + ) + + data, err := encoding.TaikoTokenABI.Pack( + "approve", + common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + bigInt, + ) + s.Nil(err) + _, err = t.Send(context.Background(), txmgr.TxCandidate{ + TxData: data, + To: &taikoTokenAddress, + }) + s.Nil(err) + + data, err = encoding.TaikoTokenABI.Pack( + "approve", + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + bigInt, + ) + s.Nil(err) + _, err = t.Send(context.Background(), txmgr.TxCandidate{ + TxData: data, + To: &taikoTokenAddress, + }) + s.Nil(err) +} + +func (s *ClientTestSuite) TearDownTest() { + s.RevertL1Snapshot(s.testnetL1SnapshotID) + + s.Nil(rpc.SetHead(context.Background(), s.RPCClient.L2, common.Big0)) + s.Nil(s.proverServer.Shutdown(context.Background())) +} + +func (s *ClientTestSuite) SetL1Automine(automine bool) { + s.Nil(s.RPCClient.L1.CallContext(context.Background(), nil, "evm_setAutomine", automine)) +} + +func (s *ClientTestSuite) IncreaseTime(time uint64) { + var result uint64 + s.Nil(s.RPCClient.L1.CallContext(context.Background(), &result, "evm_increaseTime", time)) + s.NotNil(result) +} + +func (s *ClientTestSuite) SetL1Snapshot() string { + var snapshotID string + s.Nil(s.RPCClient.L1.CallContext(context.Background(), &snapshotID, "evm_snapshot")) + s.NotEmpty(snapshotID) + return snapshotID +} + +func (s *ClientTestSuite) RevertL1Snapshot(snapshotID string) { + var revertRes bool + s.Nil(s.RPCClient.L1.CallContext(context.Background(), &revertRes, "evm_revert", snapshotID)) + s.True(revertRes) +} diff --git a/packages/taiko-client/internal/utils/test_utils.go b/packages/taiko-client/internal/utils/test_utils.go new file mode 100644 index 00000000000..a1ca5db35fe --- /dev/null +++ b/packages/taiko-client/internal/utils/test_utils.go @@ -0,0 +1,16 @@ +package utils + +import ( + "context" + "testing" + + "github.com/ethereum/go-ethereum/rpc" + "github.com/stretchr/testify/assert" +) + +// MineL1Block mines a block on the L1 chain. +func MineL1Block(t *testing.T, l1Client *rpc.Client) { + var blockID string + assert.Nil(t, l1Client.CallContext(context.Background(), &blockID, "evm_mine")) + assert.NotEmpty(t, blockID) +} diff --git a/packages/taiko-client/internal/utils/util_test.go b/packages/taiko-client/internal/utils/util_test.go new file mode 100644 index 00000000000..8ccafffc8fa --- /dev/null +++ b/packages/taiko-client/internal/utils/util_test.go @@ -0,0 +1,49 @@ +package utils_test + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/params" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +func TestEncodeDecodeBytes(t *testing.T) { + b := testutils.RandomBytes(1024) + + compressed, err := utils.Compress(b) + require.Nil(t, err) + require.NotEmpty(t, compressed) + + decompressed, err := utils.Decompress(compressed) + require.Nil(t, err) + + require.Equal(t, b, decompressed) +} + +func TestGWeiToWei(t *testing.T) { + wei, err := utils.GWeiToWei(1.0) + require.Nil(t, err) + + require.Equal(t, big.NewInt(params.GWei), wei) +} + +func TestEtherToWei(t *testing.T) { + wei, err := utils.EtherToWei(1.0) + require.Nil(t, err) + + require.Equal(t, big.NewInt(params.Ether), wei) +} + +func TestWeiToEther(t *testing.T) { + eth := utils.WeiToEther(big.NewInt(params.Ether)) + require.Equal(t, new(big.Float).SetUint64(1), eth) +} + +func TestWeiToGWei(t *testing.T) { + gwei := utils.WeiToGWei(big.NewInt(params.GWei)) + require.Equal(t, new(big.Float).SetUint64(1), gwei) +} diff --git a/packages/taiko-client/internal/utils/utils.go b/packages/taiko-client/internal/utils/utils.go new file mode 100644 index 00000000000..1eaea75dd87 --- /dev/null +++ b/packages/taiko-client/internal/utils/utils.go @@ -0,0 +1,162 @@ +package utils + +import ( + "bytes" + "compress/zlib" + "crypto/rand" + "errors" + "fmt" + "math" + + "io" + "math/big" + "os" + "strings" + + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" + "github.com/joho/godotenv" + "github.com/modern-go/reflect2" + "golang.org/x/exp/constraints" +) + +// LoadEnv loads all the test environment variables. +func LoadEnv() { + currentPath, err := os.Getwd() + if err != nil { + log.Debug("Failed to get current path", "error", err) + } + path := strings.Split(currentPath, "/taiko-client") + if len(path) == 0 { + log.Debug("Not a taiko-client repo") + } + if godotenv.Load(fmt.Sprintf("%s/taiko-client/integration_test/.env", path[0])) != nil { + log.Debug("Failed to load test env", "current path", currentPath, "error", err) + } +} + +// RandUint64 returns a random uint64 number. +func RandUint64(max *big.Int) uint64 { + if max == nil { + max = new(big.Int) + max.SetUint64(math.MaxUint64) + } + num, _ := rand.Int(rand.Reader, max) + + return num.Uint64() +} + +// RandUint32 returns a random uint32 number. +func RandUint32(max *big.Int) uint32 { + if max == nil { + max = new(big.Int) + max.SetUint64(math.MaxUint32) + } + num, _ := rand.Int(rand.Reader, max) + return uint32(num.Uint64()) +} + +// IsNil checks if the interface is empty. +func IsNil(i interface{}) bool { + return reflect2.IsNil(i) +} + +// Min return the minimum value of two integers. +func Min[T constraints.Integer](a, b T) T { + if a < b { + return a + } + return b +} + +// Max return the maximum value of two integers. +func Max[T constraints.Integer](a, b T) T { + if a > b { + return a + } + return b +} + +// Compress compresses the given txList bytes using zlib. +func Compress(txList []byte) ([]byte, error) { + var b bytes.Buffer + w := zlib.NewWriter(&b) + defer w.Close() + + if _, err := w.Write(txList); err != nil { + return nil, err + } + + if err := w.Close(); err != nil { + return nil, err + } + + return b.Bytes(), nil +} + +// Decompress decompresses the given txList bytes using zlib. +func Decompress(compressedTxList []byte) ([]byte, error) { + r, err := zlib.NewReader(bytes.NewBuffer(compressedTxList)) + if err != nil { + return nil, err + } + defer r.Close() + + b, err := io.ReadAll(r) + if err != nil { + if !errors.Is(err, io.EOF) && !errors.Is(err, io.ErrUnexpectedEOF) { + return nil, err + } + } + + return b, nil +} + +// GWeiToWei converts gwei value to wei value. +func GWeiToWei(gwei float64) (*big.Int, error) { + if math.IsNaN(gwei) || math.IsInf(gwei, 0) { + return nil, fmt.Errorf("invalid gwei value: %v", gwei) + } + + // convert float GWei value into integer Wei value + wei, _ := new(big.Float).Mul( + big.NewFloat(gwei), + big.NewFloat(params.GWei)). + Int(nil) + + if wei.Cmp(abi.MaxUint256) == 1 { + return nil, errors.New("gwei value larger than max uint256") + } + + return wei, nil +} + +// EtherToWei converts ether value to wei value. +func EtherToWei(ether float64) (*big.Int, error) { + if math.IsNaN(ether) || math.IsInf(ether, 0) { + return nil, fmt.Errorf("invalid ether value: %v", ether) + } + + // convert float GWei value into integer Wei value + wei, _ := new(big.Float).Mul( + big.NewFloat(ether), + big.NewFloat(params.Ether)). + Int(nil) + + if wei.Cmp(abi.MaxUint256) == 1 { + return nil, errors.New("ether value larger than max uint256") + } + + return wei, nil +} + +// WeiToEther converts wei value to ether value. +func WeiToEther(wei *big.Int) *big.Float { + return new(big.Float).Quo(new(big.Float).SetInt(wei), new(big.Float).SetInt(big.NewInt(params.Ether))) +} + +// WeiToGWei converts wei value to gwei value. +func WeiToGWei(wei *big.Int) *big.Float { + return new(big.Float).Quo(new(big.Float).SetInt(wei), new(big.Float).SetInt(big.NewInt(params.GWei))) +} diff --git a/packages/taiko-client/internal/version/version.go b/packages/taiko-client/internal/version/version.go new file mode 100644 index 00000000000..cc0463bea5e --- /dev/null +++ b/packages/taiko-client/internal/version/version.go @@ -0,0 +1,24 @@ +package version + +// Version info. +const Version = "0.18.0" // x-release-please-version + +var meta = "dev" + +// Git commit/date info, set via linker flags. +var ( + GitCommit = "" + GitDate = "" +) + +// CommitVersion returns a textual version string including Git commit/date information. +func CommitVersion() string { + vsn := Version + "-" + meta + if len(GitCommit) >= 8 { + vsn += "-" + GitCommit[:8] + } + if (meta != "stable") && (GitDate != "") { + vsn += "-" + GitDate + } + return vsn +} diff --git a/packages/taiko-client/pkg/chain_iterator/block_batch_iterator.go b/packages/taiko-client/pkg/chain_iterator/block_batch_iterator.go new file mode 100644 index 00000000000..20ee9136672 --- /dev/null +++ b/packages/taiko-client/pkg/chain_iterator/block_batch_iterator.go @@ -0,0 +1,283 @@ +package chainiterator + +import ( + "context" + "errors" + "fmt" + "io" + "math/big" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +const ( + DefaultBlocksReadPerEpoch = 1000 + DefaultRetryInterval = 12 * time.Second + DefaultBlockConfirmations = 0 +) + +var ( + errContinue = errors.New("continue") +) + +// OnBlocksFunc represents the callback function which will be called when a batch of blocks in chain are +// iterated. It returns true if it reorged, and false if not. +type OnBlocksFunc func( + ctx context.Context, + start, end *types.Header, + updateCurrentFunc UpdateCurrentFunc, + endIterFunc EndIterFunc, +) error + +// UpdateCurrentFunc updates the iterator.current cursor in the iterator. +type UpdateCurrentFunc func(*types.Header) + +// EndIterFunc ends the current iteration. +type EndIterFunc func() + +// BlockBatchIterator iterates the blocks in batches between the given start and end heights, +// with the awareness of reorganization. +type BlockBatchIterator struct { + ctx context.Context + client *rpc.EthClient + chainID *big.Int + blocksReadPerEpoch uint64 + startHeight uint64 + endHeight *uint64 + current *types.Header + onBlocks OnBlocksFunc + isEnd bool + reorgRewindDepth uint64 + retryInterval time.Duration + blockConfirmations *uint64 +} + +// BlockBatchIteratorConfig represents the configs of a block batch iterator. +type BlockBatchIteratorConfig struct { + Client *rpc.EthClient + MaxBlocksReadPerEpoch *uint64 + StartHeight *big.Int + EndHeight *big.Int + OnBlocks OnBlocksFunc + ReorgRewindDepth *uint64 + RetryInterval time.Duration + BlockConfirmations *uint64 +} + +// NewBlockBatchIterator creates a new block batch iterator instance. +func NewBlockBatchIterator(ctx context.Context, cfg *BlockBatchIteratorConfig) (*BlockBatchIterator, error) { + if cfg.Client == nil { + return nil, errors.New("invalid RPC client") + } + + if cfg.OnBlocks == nil { + return nil, errors.New("invalid callback") + } + + if cfg.StartHeight == nil { + return nil, errors.New("invalid start height") + } + + if cfg.EndHeight != nil && cfg.StartHeight.Cmp(cfg.EndHeight) > 0 { + return nil, fmt.Errorf("start height (%d) > end height (%d)", cfg.StartHeight, cfg.EndHeight) + } + + startHeader, err := cfg.Client.HeaderByNumber(ctx, cfg.StartHeight) + if err != nil { + return nil, fmt.Errorf("failed to get start header, height: %s, error: %w", cfg.StartHeight, err) + } + + if _, err = cfg.Client.HeaderByNumber(ctx, cfg.EndHeight); err != nil { + return nil, fmt.Errorf("failed to get end header, height: %s, error: %w", cfg.EndHeight, err) + } + + iterator := &BlockBatchIterator{ + ctx: ctx, + client: cfg.Client, + chainID: cfg.Client.ChainID, + startHeight: cfg.StartHeight.Uint64(), + onBlocks: cfg.OnBlocks, + current: startHeader, + blockConfirmations: cfg.BlockConfirmations, + } + + if cfg.MaxBlocksReadPerEpoch != nil { + iterator.blocksReadPerEpoch = *cfg.MaxBlocksReadPerEpoch + } else { + iterator.blocksReadPerEpoch = DefaultBlocksReadPerEpoch + } + + if cfg.RetryInterval == 0 { + iterator.retryInterval = DefaultRetryInterval + } else { + iterator.retryInterval = cfg.RetryInterval + } + + if cfg.EndHeight != nil { + endHeightUint64 := cfg.EndHeight.Uint64() + iterator.endHeight = &endHeightUint64 + } + + return iterator, nil +} + +// Iter iterates the given chain between the given start and end heights, +// will call the callback when a batch of blocks in chain are iterated. +func (i *BlockBatchIterator) Iter() error { + iterOp := func() error { + for { + if i.ctx.Err() != nil { + log.Warn( + "Block batch iterator closed", + "error", i.ctx.Err(), + "start", i.startHeight, + "end", i.endHeight, + "current", i.current.Number, + ) + break + } + if err := i.iter(); err != nil { + if errors.Is(err, io.EOF) { + break + } + if errors.Is(err, errContinue) { + continue + } + log.Error("Block batch iterator callback error", "error", err) + return err + } + } + return nil + } + + if err := backoff.Retry(iterOp, backoff.WithContext(backoff.NewConstantBackOff(i.retryInterval), i.ctx)); err != nil { + return err + } + + return i.ctx.Err() +} + +// iter is the internal implementation of Iter, which performs the iteration. +func (i *BlockBatchIterator) iter() (err error) { + if err := i.ensureCurrentNotReorged(); err != nil { + return fmt.Errorf("failed to check whether iterator.current cursor has been reorged: %w", err) + } + + var ( + endHeight uint64 + endHeader *types.Header + destHeight uint64 + isLastEpoch bool + blockConfirmations uint64 + ) + + if i.blockConfirmations == nil { + blockConfirmations = DefaultBlockConfirmations + } else { + blockConfirmations = *i.blockConfirmations + } + + if i.endHeight != nil { + destHeight = *i.endHeight + } else { + destHeight, err = i.client.BlockNumber(i.ctx) + if err != nil { + return err + } + if destHeight > blockConfirmations { + destHeight -= blockConfirmations + } else { + destHeight = 0 + } + } + + if i.current.Number.Uint64() >= destHeight { + return io.EOF + } + + endHeight = i.current.Number.Uint64() + i.blocksReadPerEpoch + + if endHeight >= destHeight { + endHeight = destHeight + isLastEpoch = true + } + + if endHeader, err = i.client.HeaderByNumber(i.ctx, new(big.Int).SetUint64(endHeight)); err != nil { + return err + } + + if err := i.onBlocks(i.ctx, i.current, endHeader, i.updateCurrent, i.end); err != nil { + return err + } + + if i.isEnd { + return io.EOF + } + + i.current = endHeader + + if !isLastEpoch && !i.isEnd { + return errContinue + } + + return io.EOF +} + +// updateCurrent updates the iterator's current cursor. +func (i *BlockBatchIterator) updateCurrent(current *types.Header) { + if current == nil { + log.Warn("Receive a nil header as iterator.current cursor") + return + } + + i.current = current +} + +// end ends the current iteration. +func (i *BlockBatchIterator) end() { + i.isEnd = true +} + +// ensureCurrentNotReorged checks if the iterator.current cursor was reorged, if was, will +// rewind back `ReorgRewindDepth` blocks. +// reorg is also detected on the iteration of the event later, by checking +// event.Raw.Removed, which will also call `i.rewindOnReorgDetected` to rewind back +func (i *BlockBatchIterator) ensureCurrentNotReorged() error { + current, err := i.client.HeaderByHash(i.ctx, i.current.Hash()) + if err != nil && !(err.Error() == ethereum.NotFound.Error()) { + return err + } + + // Not reorged + if current != nil { + return nil + } + + // reorged + return i.rewindOnReorgDetected() +} + +// rewindOnReorgDetected rewinds back `ReorgRewindDepth` blocks and sets i.current +// to a stable block, or 0 if it's less than `ReorgRewindDepth`. +func (i *BlockBatchIterator) rewindOnReorgDetected() error { + var newCurrentHeight uint64 + if i.current.Number.Uint64() <= i.reorgRewindDepth { + newCurrentHeight = 0 + } else { + newCurrentHeight = i.current.Number.Uint64() - i.reorgRewindDepth + } + + current, err := i.client.HeaderByNumber(i.ctx, new(big.Int).SetUint64(newCurrentHeight)) + if err != nil { + return err + } + + i.current = current + return nil +} diff --git a/packages/taiko-client/pkg/chain_iterator/block_batch_iterator_test.go b/packages/taiko-client/pkg/chain_iterator/block_batch_iterator_test.go new file mode 100644 index 00000000000..429505c4bd1 --- /dev/null +++ b/packages/taiko-client/pkg/chain_iterator/block_batch_iterator_test.go @@ -0,0 +1,268 @@ +package chainiterator + +import ( + "context" + "io" + "math/big" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +type BlockBatchIteratorTestSuite struct { + testutils.ClientTestSuite +} + +func (s *BlockBatchIteratorTestSuite) TestIter() { + var maxBlocksReadPerEpoch uint64 = 2 + + headHeight, err := s.RPCClient.L1.BlockNumber(context.Background()) + s.Nil(err) + s.Greater(headHeight, uint64(0)) + + lastEnd := common.Big0 + + iter, err := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + MaxBlocksReadPerEpoch: &maxBlocksReadPerEpoch, + StartHeight: common.Big0, + EndHeight: new(big.Int).SetUint64(headHeight), + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + _ EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + return nil + }, + }) + + s.Nil(err) + s.Nil(iter.Iter()) + s.Equal(headHeight, lastEnd.Uint64()) +} + +func (s *BlockBatchIteratorTestSuite) TestIterWithoutSpecifiedEndHeight() { + var maxBlocksReadPerEpoch uint64 = 2 + var blockConfirmations uint64 = 6 + + headHeight, err := s.RPCClient.L1.BlockNumber(context.Background()) + s.Nil(err) + s.Greater(headHeight, uint64(0)) + + lastEnd := common.Big0 + + iter, err := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + MaxBlocksReadPerEpoch: &maxBlocksReadPerEpoch, + StartHeight: common.Big0, + BlockConfirmations: &blockConfirmations, + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + _ EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + return nil + }, + }) + + s.Nil(err) + s.Nil(iter.Iter()) + s.GreaterOrEqual(lastEnd.Uint64(), headHeight-blockConfirmations) +} + +func (s *BlockBatchIteratorTestSuite) TestIterWithLessThanConfirmations() { + var maxBlocksReadPerEpoch uint64 = 2 + + headHeight, err := s.RPCClient.L1.BlockNumber(context.Background()) + s.Nil(err) + s.Greater(headHeight, uint64(0)) + + lastEnd := headHeight + + var blockConfirmations = headHeight + 3 + + iter, err := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + MaxBlocksReadPerEpoch: &maxBlocksReadPerEpoch, + StartHeight: new(big.Int).SetUint64(headHeight), + BlockConfirmations: &blockConfirmations, + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + _ EndIterFunc, + ) error { + s.Equal(lastEnd, start.Number.Uint64()) + lastEnd = end.Number.Uint64() + return nil + }, + }) + + s.Nil(err) + s.Equal(io.EOF, iter.iter()) + s.Equal(headHeight, lastEnd) +} + +func (s *BlockBatchIteratorTestSuite) TestIterEndFunc() { + var maxBlocksReadPerEpoch uint64 = 2 + + headHeight, err := s.RPCClient.L1.BlockNumber(context.Background()) + s.Nil(err) + s.Greater(headHeight, maxBlocksReadPerEpoch) + + lastEnd := common.Big0 + + iter, err := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + MaxBlocksReadPerEpoch: &maxBlocksReadPerEpoch, + StartHeight: common.Big0, + EndHeight: new(big.Int).SetUint64(headHeight), + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + endIterFunc EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + endIterFunc() + return nil + }, + }) + + s.Nil(err) + s.Nil(iter.Iter()) + s.Equal(lastEnd.Uint64(), maxBlocksReadPerEpoch) +} + +func (s *BlockBatchIteratorTestSuite) TestIterCtxCancel() { + lastEnd := common.Big0 + headHeight, err := s.RPCClient.L1.BlockNumber(context.Background()) + s.Nil(err) + ctx, cancel := context.WithCancel(context.Background()) + + itr, err := NewBlockBatchIterator(ctx, &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + MaxBlocksReadPerEpoch: nil, + RetryInterval: 5 * time.Second, + StartHeight: common.Big0, + EndHeight: new(big.Int).SetUint64(headHeight), + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + endIterFunc EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + endIterFunc() + return nil + }, + }) + + s.Nil(err) + cancel() + // should output a log.Warn and context cancel error + err8 := itr.Iter() + s.ErrorContains(err8, "context canceled") +} + +func (s *BlockBatchIteratorTestSuite) TestBlockBatchIteratorConfig() { + _, err := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: nil, + }) + s.ErrorContains(err, "invalid RPC client") + + _, err2 := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + OnBlocks: nil, + }) + s.ErrorContains(err2, "invalid callback") + + lastEnd := common.Big0 + _, err3 := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + endIterFunc EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + endIterFunc() + return nil + }, + StartHeight: nil, + }) + s.ErrorContains(err3, "invalid start height") + + _, err4 := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + endIterFunc EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + endIterFunc() + return nil + }, + StartHeight: common.Big2, + EndHeight: common.Big0, + }) + s.ErrorContains(err4, "start height (2) > end height (0)") + + _, err6 := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + endIterFunc EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + endIterFunc() + return nil + }, + StartHeight: big.NewInt(1000), // use very high number + EndHeight: big.NewInt(1000), + }) + s.ErrorContains(err6, "failed to get start header") + + _, err7 := NewBlockBatchIterator(context.Background(), &BlockBatchIteratorConfig{ + Client: s.RPCClient.L1, + OnBlocks: func( + _ context.Context, + start, end *types.Header, + _ UpdateCurrentFunc, + endIterFunc EndIterFunc, + ) error { + s.Equal(lastEnd.Uint64(), start.Number.Uint64()) + lastEnd = end.Number + endIterFunc() + return nil + }, + StartHeight: common.Big0, + EndHeight: big.NewInt(1000), // use very high number + }) + s.ErrorContains(err7, "failed to get end header") +} + +func TestBlockBatchIteratorTestSuite(t *testing.T) { + suite.Run(t, new(BlockBatchIteratorTestSuite)) +} diff --git a/packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go b/packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go new file mode 100644 index 00000000000..23b2cf73b9c --- /dev/null +++ b/packages/taiko-client/pkg/chain_iterator/event_iterator/block_proposed_iterator.go @@ -0,0 +1,144 @@ +package eventiterator + +import ( + "context" + "errors" + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + chainIterator "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/chain_iterator" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// EndBlockProposedEventIterFunc ends the current iteration. +type EndBlockProposedEventIterFunc func() + +// OnBlockProposedEvent represents the callback function which will be called when a TaikoL1.BlockProposed event is +// iterated. +type OnBlockProposedEvent func( + context.Context, + *bindings.TaikoL1ClientBlockProposed, + EndBlockProposedEventIterFunc, +) error + +// BlockProposedIterator iterates the emitted TaikoL1.BlockProposed events in the chain, +// with the awareness of reorganization. +type BlockProposedIterator struct { + ctx context.Context + taikoL1 *bindings.TaikoL1Client + blockBatchIterator *chainIterator.BlockBatchIterator + filterQuery []*big.Int + isEnd bool +} + +// BlockProposedIteratorConfig represents the configs of a BlockProposed event iterator. +type BlockProposedIteratorConfig struct { + Client *rpc.EthClient + TaikoL1 *bindings.TaikoL1Client + MaxBlocksReadPerEpoch *uint64 + StartHeight *big.Int + EndHeight *big.Int + FilterQuery []*big.Int + OnBlockProposedEvent OnBlockProposedEvent + BlockConfirmations *uint64 +} + +// NewBlockProposedIterator creates a new instance of BlockProposed event iterator. +func NewBlockProposedIterator(ctx context.Context, cfg *BlockProposedIteratorConfig) (*BlockProposedIterator, error) { + if cfg.OnBlockProposedEvent == nil { + return nil, errors.New("invalid callback") + } + + iterator := &BlockProposedIterator{ + ctx: ctx, + taikoL1: cfg.TaikoL1, + filterQuery: cfg.FilterQuery, + } + + // Initialize the inner block iterator. + blockIterator, err := chainIterator.NewBlockBatchIterator(ctx, &chainIterator.BlockBatchIteratorConfig{ + Client: cfg.Client, + MaxBlocksReadPerEpoch: cfg.MaxBlocksReadPerEpoch, + StartHeight: cfg.StartHeight, + EndHeight: cfg.EndHeight, + BlockConfirmations: cfg.BlockConfirmations, + OnBlocks: assembleBlockProposedIteratorCallback( + cfg.Client, + cfg.TaikoL1, + cfg.FilterQuery, + cfg.OnBlockProposedEvent, + iterator, + ), + }) + if err != nil { + return nil, err + } + + iterator.blockBatchIterator = blockIterator + + return iterator, nil +} + +// Iter iterates the given chain between the given start and end heights, +// will call the callback when a BlockProposed event is iterated. +func (i *BlockProposedIterator) Iter() error { + return i.blockBatchIterator.Iter() +} + +// end ends the current iteration. +func (i *BlockProposedIterator) end() { + i.isEnd = true +} + +// assembleBlockProposedIteratorCallback assembles the callback which will be used +// by a event iterator's inner block iterator. +func assembleBlockProposedIteratorCallback( + client *rpc.EthClient, + taikoL1Client *bindings.TaikoL1Client, + filterQuery []*big.Int, + callback OnBlockProposedEvent, + eventIter *BlockProposedIterator, +) chainIterator.OnBlocksFunc { + return func( + ctx context.Context, + start, end *types.Header, + updateCurrentFunc chainIterator.UpdateCurrentFunc, + endFunc chainIterator.EndIterFunc, + ) error { + endHeight := end.Number.Uint64() + iter, err := taikoL1Client.FilterBlockProposed( + &bind.FilterOpts{Start: start.Number.Uint64(), End: &endHeight, Context: ctx}, + filterQuery, + nil, + ) + if err != nil { + return err + } + defer iter.Close() + + for iter.Next() { + event := iter.Event + + if err := callback(ctx, event, eventIter.end); err != nil { + return err + } + + if eventIter.isEnd { + endFunc() + return nil + } + + current, err := client.HeaderByHash(ctx, event.Raw.BlockHash) + if err != nil { + return err + } + + updateCurrentFunc(current) + } + + return nil + } +} diff --git a/packages/taiko-client/pkg/error.go b/packages/taiko-client/pkg/error.go new file mode 100644 index 00000000000..676e6d608a8 --- /dev/null +++ b/packages/taiko-client/pkg/error.go @@ -0,0 +1,12 @@ +package pkg + +import ( + "errors" +) + +var ( + ErrBlobUsed = errors.New("blob is used") + ErrBlobUnused = errors.New("blob is not used") + ErrSidecarNotFound = errors.New("sidecar not found") + ErrBeaconNotFound = errors.New("beacon client not found") +) diff --git a/packages/taiko-client/pkg/flags/config.go b/packages/taiko-client/pkg/flags/config.go new file mode 100644 index 00000000000..da91bedde06 --- /dev/null +++ b/packages/taiko-client/pkg/flags/config.go @@ -0,0 +1,31 @@ +package flags + +import ( + "crypto/ecdsa" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" +) + +// InitTxmgrConfigsFromCli initializes the transaction manager configs from the command line flags. +func InitTxmgrConfigsFromCli(l1Endpoint string, privateKey *ecdsa.PrivateKey, c *cli.Context) *txmgr.CLIConfig { + return &txmgr.CLIConfig{ + L1RPCURL: l1Endpoint, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(privateKey)), + NumConfirmations: c.Uint64(flags.NumConfirmations.Name), + SafeAbortNonceTooLowCount: c.Uint64(flags.SafeAbortNonceTooLowCount.Name), + FeeLimitMultiplier: c.Uint64(flags.FeeLimitMultiplier.Name), + FeeLimitThresholdGwei: c.Float64(flags.FeeLimitThreshold.Name), + MinBaseFeeGwei: c.Float64(flags.MinBaseFee.Name), + MinTipCapGwei: c.Float64(flags.MinTipCap.Name), + ResubmissionTimeout: c.Duration(flags.ResubmissionTimeout.Name), + NetworkTimeout: c.Duration(flags.RPCTimeout.Name), + ReceiptQueryInterval: c.Duration(flags.ReceiptQueryInterval.Name), + TxSendTimeout: c.Duration(flags.TxSendTimeout.Name), + TxNotInMempoolTimeout: c.Duration(flags.TxNotInMempoolTimeout.Name), + } +} diff --git a/packages/taiko-client/pkg/jwt/jwt.go b/packages/taiko-client/pkg/jwt/jwt.go new file mode 100644 index 00000000000..33ba0dacc66 --- /dev/null +++ b/packages/taiko-client/pkg/jwt/jwt.go @@ -0,0 +1,39 @@ +package jwt + +import ( + "encoding/hex" + "errors" + "fmt" + "strings" + + "github.com/prysmaticlabs/prysm/v4/io/file" +) + +// Taken from: https://github.com/prysmaticlabs/prysm/blob/v2.1.4/cmd/beacon-chain/execution/options.go#L43 +// Parses a JWT secret from a file path. This secret is required when connecting to execution nodes +// over HTTP, and must be the same one used in Prysm and the execution node server Prysm is connecting to. +// The engine API specification here https://github.com/ethereum/execution-apis/blob/main/src/engine/authentication.md +// Explains how we should validate this secret and the format of the file a user can specify. +// +// The secret must be stored as a hex-encoded string within a file in the filesystem. +func ParseSecretFromFile(jwtSecretFile string) ([]byte, error) { + if jwtSecretFile == "" { + return nil, nil + } + enc, err := file.ReadFileAsBytes(jwtSecretFile) + if err != nil { + return nil, err + } + strData := strings.TrimSpace(string(enc)) + if len(strData) == 0 { + return nil, fmt.Errorf("provided JWT secret in file %s cannot be empty", jwtSecretFile) + } + secret, err := hex.DecodeString(strings.TrimPrefix(strData, "0x")) + if err != nil { + return nil, err + } + if len(secret) < 32 { + return nil, errors.New("provided JWT secret should be a hex string of at least 32 bytes") + } + return secret, nil +} diff --git a/packages/taiko-client/pkg/jwt/jwt_test.go b/packages/taiko-client/pkg/jwt/jwt_test.go new file mode 100644 index 00000000000..43a5dec2b86 --- /dev/null +++ b/packages/taiko-client/pkg/jwt/jwt_test.go @@ -0,0 +1,41 @@ +package jwt + +import ( + "os" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestParseSecretFromFile(t *testing.T) { + _, err := ParseSecretFromFile(os.Getenv("JWT_SECRET")) + require.Nil(t, err) + + secret, err := ParseSecretFromFile("") + require.Nil(t, err) + require.Nil(t, secret) + + // File not exists + _, err = ParseSecretFromFile("TestParseSecretFromFile") + require.NotNil(t, err) + + // Empty file + file, err := os.CreateTemp("", "TestParseSecretFromFile") + require.Nil(t, err) + defer file.Close() + defer os.Remove(file.Name()) + + _, err = ParseSecretFromFile(file.Name()) + require.ErrorContains(t, err, "cannot be empty") + + file2, err := os.CreateTemp("", "test") + require.Nil(t, err) + defer file2.Close() + defer os.Remove(file2.Name()) + + _, err2 := file2.WriteString("0x10020FCb72e2765065") + require.Nil(t, err2) + + _, err3 := ParseSecretFromFile(file2.Name()) + require.ErrorContains(t, err3, "at least 32 bytes") +} diff --git a/packages/taiko-client/pkg/rpc/beaconclient.go b/packages/taiko-client/pkg/rpc/beaconclient.go new file mode 100644 index 00000000000..06e3b5ac600 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/beaconclient.go @@ -0,0 +1,109 @@ +package rpc + +import ( + "context" + "encoding/json" + "fmt" + "strconv" + "time" + + "github.com/ethereum/go-ethereum/log" + "github.com/prysmaticlabs/prysm/v4/api/client" + "github.com/prysmaticlabs/prysm/v4/api/client/beacon" + "github.com/prysmaticlabs/prysm/v4/beacon-chain/rpc/eth/blob" +) + +var ( + // Request urls. + sidecarsRequestURL = "eth/v1/beacon/blob_sidecars/%d" + genesisRequestURL = "eth/v1/beacon/genesis" +) + +type ConfigSpec struct { + SecondsPerSlot string `json:"SECONDS_PER_SLOT"` +} + +type GenesisResponse struct { + Data struct { + GenesisTime string `json:"genesis_time"` + } `json:"data"` +} + +type BeaconClient struct { + *beacon.Client + + timeout time.Duration + genesisTime uint64 + secondsPerSlot uint64 +} + +// NewBeaconClient returns a new beacon client. +func NewBeaconClient(endpoint string, timeout time.Duration) (*BeaconClient, error) { + cli, err := beacon.NewClient(endpoint, client.WithTimeout(timeout)) + if err != nil { + return nil, err + } + + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + + // Get the genesis time. + var genesisDetail *GenesisResponse + resBytes, err := cli.Get(ctx, genesisRequestURL) + if err != nil { + return nil, err + } + + if err := json.Unmarshal(resBytes, &genesisDetail); err != nil { + return nil, err + } + + genesisTime, err := strconv.Atoi(genesisDetail.Data.GenesisTime) + if err != nil { + return nil, err + } + + log.Info("L1 genesis time", "time", genesisTime) + + // Get the seconds per slot. + spec, err := cli.GetConfigSpec(ctx) + if err != nil { + return nil, err + } + + secondsPerSlot, err := strconv.Atoi(spec.Data.(map[string]interface{})["SECONDS_PER_SLOT"].(string)) + if err != nil { + return nil, err + } + + log.Info("L1 seconds per slot", "seconds", secondsPerSlot) + + return &BeaconClient{cli, timeout, uint64(genesisTime), uint64(secondsPerSlot)}, nil +} + +// GetBlobs returns the sidecars for a given slot. +func (c *BeaconClient) GetBlobs(ctx context.Context, time uint64) ([]*blob.Sidecar, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + slot, err := c.timeToSlot(time) + if err != nil { + return nil, err + } + + var sidecars *blob.SidecarsResponse + resBytes, err := c.Get(ctxWithTimeout, fmt.Sprintf(sidecarsRequestURL, slot)) + if err != nil { + return nil, err + } + + return sidecars.Data, json.Unmarshal(resBytes, &sidecars) +} + +// timeToSlot returns the slots of the given timestamp. +func (c *BeaconClient) timeToSlot(timestamp uint64) (uint64, error) { + if timestamp < c.genesisTime { + return 0, fmt.Errorf("provided timestamp (%v) precedes genesis time (%v)", timestamp, c.genesisTime) + } + return (timestamp - c.genesisTime) / c.secondsPerSlot, nil +} diff --git a/packages/taiko-client/pkg/rpc/blob_datasource.go b/packages/taiko-client/pkg/rpc/blob_datasource.go new file mode 100644 index 00000000000..8757081637b --- /dev/null +++ b/packages/taiko-client/pkg/rpc/blob_datasource.go @@ -0,0 +1,111 @@ +package rpc + +import ( + "context" + "fmt" + "net/url" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + "github.com/go-resty/resty/v2" + "github.com/prysmaticlabs/prysm/v4/beacon-chain/rpc/eth/blob" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg" +) + +type BlobDataSource struct { + ctx context.Context + client *Client + blobServerEndpoint *url.URL +} + +type BlobData struct { + BlobHash string `json:"blob_hash"` + KzgCommitment string `json:"kzg_commitment"` + Blob string `json:"blob"` +} + +type BlobDataSeq struct { + Data []*BlobData `json:"data"` +} + +func NewBlobDataSource( + ctx context.Context, + client *Client, + blobServerEndpoint *url.URL, +) *BlobDataSource { + return &BlobDataSource{ + ctx: ctx, + client: client, + blobServerEndpoint: blobServerEndpoint, + } +} + +// GetBlobs get blob sidecar by meta +func (ds *BlobDataSource) GetBlobs( + ctx context.Context, + meta *bindings.TaikoDataBlockMetadata, +) ([]*blob.Sidecar, error) { + if !meta.BlobUsed { + return nil, pkg.ErrBlobUnused + } + + var ( + sidecars []*blob.Sidecar + err error + ) + if ds.client.L1Beacon == nil { + sidecars, err = nil, pkg.ErrBeaconNotFound + } else { + sidecars, err = ds.client.L1Beacon.GetBlobs(ctx, meta.Timestamp) + } + if err != nil { + log.Info("Failed to get blobs from beacon, try to use blob server.", "error", err.Error()) + if ds.blobServerEndpoint == nil { + log.Info("No blob server endpoint set") + return nil, err + } + blobs, err := ds.getBlobFromServer(ctx, meta.BlobHash) + if err != nil { + return nil, err + } + sidecars = make([]*blob.Sidecar, len(blobs.Data)) + for index, value := range blobs.Data { + sidecars[index] = &blob.Sidecar{ + KzgCommitment: value.KzgCommitment, + Blob: value.Blob, + } + } + } + return sidecars, nil +} + +// getBlobFromServer get blob data from server path `/getBlob`. +func (ds *BlobDataSource) getBlobFromServer(ctx context.Context, blobHash common.Hash) (*BlobDataSeq, error) { + var ( + route = "/getBlob" + param = map[string]string{"blobHash": blobHash.String()} + ) + requestURL, err := url.JoinPath(ds.blobServerEndpoint.String(), route) + if err != nil { + return nil, err + } + resp, err := resty.New().R(). + SetResult(BlobDataSeq{}). + SetQueryParams(param). + SetContext(ctx). + SetHeader("Content-Type", "application/json"). + SetHeader("Accept", "application/json"). + Get(requestURL) + if err != nil { + return nil, err + } + if !resp.IsSuccess() { + return nil, fmt.Errorf( + "unable to connect blob server endpoint, status code: %v", + resp.StatusCode(), + ) + } + return resp.Result().(*BlobDataSeq), nil +} diff --git a/packages/taiko-client/pkg/rpc/blob_tx.go b/packages/taiko-client/pkg/rpc/blob_tx.go new file mode 100644 index 00000000000..97c7f0119b0 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/blob_tx.go @@ -0,0 +1,137 @@ +package rpc + +import ( + "errors" + "math/big" + + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto/kzg4844" + "github.com/ethereum/go-ethereum/params" + "github.com/holiman/uint256" +) + +var ( + ErrBlobInvalid = errors.New("invalid blob encoding") +) + +// TransactBlobTx creates, signs and then sends blob transactions. +func (c *EthClient) TransactBlobTx( + opts *bind.TransactOpts, + contract common.Address, + input []byte, + sidecar *types.BlobTxSidecar, +) (*types.Transaction, error) { + // Sign the transaction and schedule it for execution + if opts.Signer == nil { + return nil, errors.New("no signer to authorize the transaction with") + } + // Create blob tx + blobTx, err := c.CreateBlobTx(opts, contract, input, sidecar) + if err != nil { + return nil, err + } + signedTx, err := opts.Signer(opts.From, types.NewTx(blobTx)) + if err != nil { + return nil, err + } + if opts.NoSend { + return signedTx, nil + } + if err := c.SendTransaction(opts.Context, signedTx); err != nil { + return nil, err + } + return signedTx, nil +} + +// CreateBlobTx creates a blob transaction by given parameters. +func (c *EthClient) CreateBlobTx( + opts *bind.TransactOpts, + contract common.Address, + input []byte, + sidecar *types.BlobTxSidecar, +) (*types.BlobTx, error) { + // Fetch the nonce for the account + var ( + nonce *hexutil.Uint64 + gas *hexutil.Uint64 + ) + if opts.Nonce != nil { + curNonce := hexutil.Uint64(opts.Nonce.Uint64()) + nonce = &curNonce + } + + if input == nil { + input = []byte{} + } + + if opts.GasLimit != 0 { + gasVal := hexutil.Uint64(opts.GasLimit) + gas = &gasVal + } + + rawTx, err := c.FillTransaction(opts.Context, &TransactionArgs{ + From: &opts.From, + To: &contract, + Gas: gas, + GasPrice: (*hexutil.Big)(opts.GasPrice), + MaxFeePerGas: (*hexutil.Big)(opts.GasFeeCap), + MaxPriorityFeePerGas: (*hexutil.Big)(opts.GasTipCap), + Value: (*hexutil.Big)(opts.Value), + Nonce: nonce, + Data: (*hexutil.Bytes)(&input), + AccessList: nil, + ChainID: nil, + BlobFeeCap: nil, + BlobHashes: sidecar.BlobHashes(), + }) + if err != nil { + return nil, err + } + + blobFeeCap := rawTx.BlobGasFeeCap() + if blobFeeCap == nil || blobFeeCap.Uint64() < params.BlobTxMinBlobGasprice { + blobFeeCap = new(big.Int).SetUint64(uint64(params.BlobTxMinBlobGasprice)) + } + + return &types.BlobTx{ + ChainID: uint256.MustFromBig(rawTx.ChainId()), + Nonce: rawTx.Nonce(), + GasTipCap: uint256.MustFromBig(rawTx.GasTipCap()), + GasFeeCap: uint256.MustFromBig(rawTx.GasFeeCap()), + Gas: rawTx.Gas(), + To: *rawTx.To(), + Value: uint256.MustFromBig(rawTx.Value()), + Data: rawTx.Data(), + AccessList: rawTx.AccessList(), + BlobFeeCap: uint256.MustFromBig(blobFeeCap), + BlobHashes: sidecar.BlobHashes(), + Sidecar: sidecar, + }, nil +} + +// MakeSidecar makes a sidecar which only includes one blob with the given data. +func MakeSidecar(data []byte) (*types.BlobTxSidecar, error) { + var blob eth.Blob + if err := blob.FromData(data); err != nil { + return nil, err + } + + sideCar := &types.BlobTxSidecar{Blobs: []kzg4844.Blob{*blob.KZGBlob()}} + for _, blob := range sideCar.Blobs { + commitment, err := kzg4844.BlobToCommitment(blob) + if err != nil { + return nil, err + } + proof, err := kzg4844.ComputeBlobProof(blob, commitment) + if err != nil { + return nil, err + } + sideCar.Commitments = append(sideCar.Commitments, commitment) + sideCar.Proofs = append(sideCar.Proofs, proof) + } + return sideCar, nil +} diff --git a/packages/taiko-client/pkg/rpc/blob_tx_test.go b/packages/taiko-client/pkg/rpc/blob_tx_test.go new file mode 100644 index 00000000000..9cbebe95d0f --- /dev/null +++ b/packages/taiko-client/pkg/rpc/blob_tx_test.go @@ -0,0 +1,74 @@ +package rpc + +import ( + "context" + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/assert" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +func TestSendingBlobTx(t *testing.T) { + t.SkipNow() + // Load environment variables. + utils.LoadEnv() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + url := os.Getenv("L1_NODE_WS_ENDPOINT") + l1Client, err := NewEthClient(ctx, url, time.Second*20) + assert.NoError(t, err) + + priv := os.Getenv("L1_PROPOSER_PRIVATE_KEY") + sk, err := crypto.ToECDSA(common.FromHex(priv)) + assert.NoError(t, err) + + opts, err := bind.NewKeyedTransactorWithChainID(sk, l1Client.ChainID) + assert.NoError(t, err) + opts.Context = ctx + //opts.NoSend = true + + balance, err := l1Client.BalanceAt(ctx, opts.From, nil) + assert.NoError(t, err) + t.Logf("address: %s, balance: %s", opts.From.String(), balance.String()) + + data, dErr := os.ReadFile("./tx_blob.go") + assert.NoError(t, dErr) + //data := []byte{'s'} + sideCar, sErr := MakeSidecar(data) + assert.NoError(t, sErr) + + tx, err := l1Client.TransactBlobTx(opts, common.Address{}, nil, sideCar) + assert.NoError(t, err) + + receipt, err := bind.WaitMined(ctx, l1Client, tx) + assert.NoError(t, err) + assert.Equal(t, true, receipt.Status == types.ReceiptStatusSuccessful) + + t.Log("blob hash: ", tx.BlobHashes()[0].String()) + t.Log("block number: ", receipt.BlockNumber.Uint64()) + t.Log("tx hash: ", receipt.TxHash.String()) +} + +func TestMakeSideCar(t *testing.T) { + origin, err := os.ReadFile("./blob_tx.go") + assert.NoError(t, err) + + sideCar, mErr := MakeSidecar(origin) + assert.NoError(t, mErr) + + blob := eth.Blob(sideCar.Blobs[0]) + origin1, dErr := blob.ToData() + assert.NoError(t, dErr) + assert.Equal(t, hexutil.Bytes(origin), origin1) +} diff --git a/packages/taiko-client/pkg/rpc/client.go b/packages/taiko-client/pkg/rpc/client.go new file mode 100644 index 00000000000..8a8f197c6b4 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/client.go @@ -0,0 +1,163 @@ +package rpc + +import ( + "context" + "os" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +const ( + defaultTimeout = 1 * time.Minute +) + +// Client contains all L1/L2 RPC clients that a driver needs. +type Client struct { + // Geth ethclient clients + L1 *EthClient + L2 *EthClient + L2CheckPoint *EthClient + // Geth Engine API clients + L2Engine *EngineClient + // Beacon clients + L1Beacon *BeaconClient + // Protocol contracts clients + TaikoL1 *bindings.TaikoL1Client + TaikoL2 *bindings.TaikoL2Client + TaikoToken *bindings.TaikoToken + GuardianProverMajority *bindings.GuardianProver + GuardianProverMinority *bindings.GuardianProver +} + +// ClientConfig contains all configs which will be used to initializing an +// RPC client. If not providing L2EngineEndpoint or JwtSecret, then the L2Engine client +// won't be initialized. +type ClientConfig struct { + L1Endpoint string + L2Endpoint string + L1BeaconEndpoint string + L2CheckPoint string + TaikoL1Address common.Address + TaikoL2Address common.Address + TaikoTokenAddress common.Address + GuardianProverMinorityAddress common.Address + GuardianProverMajorityAddress common.Address + L2EngineEndpoint string + JwtSecret string + Timeout time.Duration +} + +// NewClient initializes all RPC clients used by Taiko client software. +func NewClient(ctx context.Context, cfg *ClientConfig) (*Client, error) { + var ( + l1Client *EthClient + l2Client *EthClient + l1BeaconClient *BeaconClient + l2CheckPoint *EthClient + err error + ) + + // Keep retrying to connect to the RPC endpoints until success or context is cancelled. + if err := backoff.Retry(func() error { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + if l1Client, err = NewEthClient(ctxWithTimeout, cfg.L1Endpoint, cfg.Timeout); err != nil { + log.Error("Failed to connect to L1 endpoint, retrying", "endpoint", cfg.L1Endpoint, "err", err) + return err + } + + if l2Client, err = NewEthClient(ctxWithTimeout, cfg.L2Endpoint, cfg.Timeout); err != nil { + log.Error("Failed to connect to L2 endpoint, retrying", "endpoint", cfg.L2Endpoint, "err", err) + return err + } + + // NOTE: when running tests, we do not have a L1 beacon endpoint. + if cfg.L1BeaconEndpoint != "" && os.Getenv("RUN_TESTS") == "" { + if l1BeaconClient, err = NewBeaconClient(cfg.L1BeaconEndpoint, defaultTimeout); err != nil { + log.Error("Failed to connect to L1 beacon endpoint, retrying", "endpoint", cfg.L1BeaconEndpoint, "err", err) + return err + } + } + + if cfg.L2CheckPoint != "" { + l2CheckPoint, err = NewEthClient(ctxWithTimeout, cfg.L2CheckPoint, cfg.Timeout) + if err != nil { + log.Error("Failed to connect to L2 checkpoint endpoint, retrying", "endpoint", cfg.L2CheckPoint, "err", err) + return err + } + } + + return nil + }, backoff.WithContext(backoff.NewExponentialBackOff(), ctx)); err != nil { + return nil, err + } + + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + taikoL1, err := bindings.NewTaikoL1Client(cfg.TaikoL1Address, l1Client) + if err != nil { + return nil, err + } + + taikoL2, err := bindings.NewTaikoL2Client(cfg.TaikoL2Address, l2Client) + if err != nil { + return nil, err + } + + var ( + taikoToken *bindings.TaikoToken + guardianProverMajority *bindings.GuardianProver + guardianProverMinority *bindings.GuardianProver + ) + if cfg.TaikoTokenAddress.Hex() != ZeroAddress.Hex() { + if taikoToken, err = bindings.NewTaikoToken(cfg.TaikoTokenAddress, l1Client); err != nil { + return nil, err + } + } + if cfg.GuardianProverMinorityAddress.Hex() != ZeroAddress.Hex() { + if guardianProverMinority, err = bindings.NewGuardianProver(cfg.GuardianProverMinorityAddress, l1Client); err != nil { + return nil, err + } + } + if cfg.GuardianProverMajorityAddress.Hex() != ZeroAddress.Hex() { + if guardianProverMajority, err = bindings.NewGuardianProver(cfg.GuardianProverMajorityAddress, l1Client); err != nil { + return nil, err + } + } + + // If not providing L2EngineEndpoint or JwtSecret, then the L2Engine client + // won't be initialized. + var l2AuthClient *EngineClient + if len(cfg.L2EngineEndpoint) != 0 && len(cfg.JwtSecret) != 0 { + l2AuthClient, err = NewJWTEngineClient(cfg.L2EngineEndpoint, cfg.JwtSecret) + if err != nil { + return nil, err + } + } + + client := &Client{ + L1: l1Client, + L1Beacon: l1BeaconClient, + L2: l2Client, + L2CheckPoint: l2CheckPoint, + L2Engine: l2AuthClient, + TaikoL1: taikoL1, + TaikoL2: taikoL2, + TaikoToken: taikoToken, + GuardianProverMajority: guardianProverMajority, + GuardianProverMinority: guardianProverMinority, + } + + if err := client.ensureGenesisMatched(ctxWithTimeout); err != nil { + return nil, err + } + + return client, nil +} diff --git a/packages/taiko-client/pkg/rpc/client_test.go b/packages/taiko-client/pkg/rpc/client_test.go new file mode 100644 index 00000000000..46b625d2a45 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/client_test.go @@ -0,0 +1,46 @@ +package rpc + +import ( + "context" + "os" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/require" +) + +func newTestClient(t *testing.T) *Client { + client, err := NewClient(context.Background(), &ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: os.Getenv("JWT_SECRET"), + }) + + require.Nil(t, err) + require.NotNil(t, client) + + return client +} + +func newTestClientWithTimeout(t *testing.T) *Client { + client, err := NewClient(context.Background(), &ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: os.Getenv("JWT_SECRET"), + Timeout: 5 * time.Second, + }) + + require.Nil(t, err) + require.NotNil(t, client) + + return client +} diff --git a/packages/taiko-client/pkg/rpc/dial.go b/packages/taiko-client/pkg/rpc/dial.go new file mode 100644 index 00000000000..985ec0db5fb --- /dev/null +++ b/packages/taiko-client/pkg/rpc/dial.go @@ -0,0 +1,74 @@ +package rpc + +import ( + "context" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/rpc" +) + +// DialClientWithBackoff connects a ethereum RPC client at the given URL with +// a backoff strategy. Added a retry limit so it doesn't retry endlessly +func DialClientWithBackoff( + ctx context.Context, + url string, + retryInterval time.Duration, + maxRetrys uint64) (*ethclient.Client, error) { + var client *ethclient.Client + if err := backoff.Retry( + func() (err error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + client, err = ethclient.DialContext(ctxWithTimeout, url) + if err != nil { + log.Error("Dial ethclient error", "url", url, "error", err) + return err + } + + return nil + }, + backoff.WithMaxRetries(backoff.NewConstantBackOff(retryInterval), maxRetrys), + ); err != nil { + return nil, err + } + + return client, nil +} + +// DialEngineClientWithBackoff connects an ethereum engine RPC client at the +// given URL with a backoff strategy. Added a retry limit so it doesn't retry endlessly +func DialEngineClientWithBackoff( + ctx context.Context, + url string, + jwtSecret string, + retryInterval time.Duration, + maxRetry uint64, +) (*EngineClient, error) { + var engineClient *EngineClient + if err := backoff.Retry( + func() (err error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + jwtAuth := node.NewJWTAuth(StringToBytes32(jwtSecret)) + client, err := rpc.DialOptions(ctxWithTimeout, url, rpc.WithHTTPAuth(jwtAuth)) + if err != nil { + log.Error("Dial engine client error", "url", url, "error", err) + return err + } + + engineClient = &EngineClient{client} + return nil + }, + backoff.WithMaxRetries(backoff.NewConstantBackOff(retryInterval), maxRetry), + ); err != nil { + return nil, err + } + + return engineClient, nil +} diff --git a/packages/taiko-client/pkg/rpc/dial_test.go b/packages/taiko-client/pkg/rpc/dial_test.go new file mode 100644 index 00000000000..c07cfae08bb --- /dev/null +++ b/packages/taiko-client/pkg/rpc/dial_test.go @@ -0,0 +1,81 @@ +package rpc + +import ( + "context" + "os" + "testing" + "time" + + "github.com/ethereum/go-ethereum/beacon/engine" + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" +) + +func TestDialEngineClientWithBackoff(t *testing.T) { + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + + require.Nil(t, err) + require.NotEmpty(t, jwtSecret) + + client, err := DialEngineClientWithBackoff( + context.Background(), + os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + string(jwtSecret), + 12*time.Second, + 10, + ) + + require.Nil(t, err) + + var result engine.ExecutableData + err = client.CallContext(context.Background(), &result, "engine_getPayloadV1", engine.PayloadID{}) + + require.Equal(t, engine.UnsupportedFork.Error(), err.Error()) +} + +func TestDialClientWithBackoff(t *testing.T) { + client, err := DialClientWithBackoff( + context.Background(), + os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + 12*time.Second, + 10, + ) + require.Nil(t, err) + + genesis, err := client.HeaderByNumber(context.Background(), common.Big0) + require.Nil(t, err) + + require.Equal(t, common.Big0.Uint64(), genesis.Number.Uint64()) +} + +func TestDialClientWithBackoff_CtxError(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + _, err := DialClientWithBackoff( + ctx, + "invalid", + -1, + 10, + ) + require.NotNil(t, err) +} + +func TestDialEngineClientWithBackoff_CtxError(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + require.Nil(t, err) + require.NotEmpty(t, jwtSecret) + + _, err2 := DialEngineClientWithBackoff( + ctx, + "invalid", + string(jwtSecret), + -1, + 10, + ) + require.NotNil(t, err2) +} diff --git a/packages/taiko-client/pkg/rpc/engine.go b/packages/taiko-client/pkg/rpc/engine.go new file mode 100644 index 00000000000..e1ec3a5c841 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/engine.go @@ -0,0 +1,130 @@ +package rpc + +import ( + "context" + "errors" + "math/big" + + "github.com/ethereum/go-ethereum/beacon/engine" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/miner" + "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/rpc" +) + +// EngineClient represents a RPC client connecting to an Ethereum Engine API +// endpoint. +// ref: https://github.com/ethereum/execution-apis/blob/main/src/engine/shanghai.md +type EngineClient struct { + *rpc.Client +} + +func NewJWTEngineClient(url, jwtSecret string) (*EngineClient, error) { + var jwt = StringToBytes32(jwtSecret) + if jwt == (common.Hash{}) || url == "" { + return nil, errors.New("url is empty or jwt secret is illegal") + } + authClient, err := rpc.DialOptions(context.Background(), url, rpc.WithHTTPAuth(node.NewJWTAuth(jwt))) + if err != nil { + return nil, err + } + + return &EngineClient{ + Client: authClient, + }, nil +} + +// ForkchoiceUpdate updates the forkchoice on the execution client. +func (c *EngineClient) ForkchoiceUpdate( + ctx context.Context, + fc *engine.ForkchoiceStateV1, + attributes *engine.PayloadAttributes, +) (*engine.ForkChoiceResponse, error) { + timeoutCtx, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + + var result *engine.ForkChoiceResponse + if err := c.Client.CallContext(timeoutCtx, &result, "engine_forkchoiceUpdatedV2", fc, attributes); err != nil { + return nil, err + } + + return result, nil +} + +// NewPayload executes a built block on the execution engine. +func (c *EngineClient) NewPayload( + ctx context.Context, + payload *engine.ExecutableData, +) (*engine.PayloadStatusV1, error) { + timeoutCtx, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + + var result *engine.PayloadStatusV1 + if err := c.Client.CallContext(timeoutCtx, &result, "engine_newPayloadV2", payload); err != nil { + return nil, err + } + + return result, nil +} + +// GetPayload gets the execution payload associated with the payload ID. +func (c *EngineClient) GetPayload( + ctx context.Context, + payloadID *engine.PayloadID, +) (*engine.ExecutableData, error) { + timeoutCtx, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + + var result *engine.ExecutionPayloadEnvelope + if err := c.Client.CallContext(timeoutCtx, &result, "engine_getPayloadV2", payloadID); err != nil { + return nil, err + } + + return result.ExecutionPayload, nil +} + +// ExchangeTransitionConfiguration exchanges transition configs with the L2 execution engine. +func (c *EngineClient) ExchangeTransitionConfiguration( + ctx context.Context, + cfg *engine.TransitionConfigurationV1, +) (*engine.TransitionConfigurationV1, error) { + timeoutCtx, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + + var result *engine.TransitionConfigurationV1 + if err := c.Client.CallContext(timeoutCtx, &result, "engine_exchangeTransitionConfigurationV1", cfg); err != nil { + return nil, err + } + + return result, nil +} + +// TxPoolContent fetches the transaction pool content from the L2 execution engine. +func (c *EngineClient) TxPoolContent( + ctx context.Context, + beneficiary common.Address, + baseFee *big.Int, + blockMaxGasLimit uint64, + maxBytesPerTxList uint64, + locals []string, + maxTransactionsLists uint64, +) ([]*miner.PreBuiltTxList, error) { + timeoutCtx, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + + var result []*miner.PreBuiltTxList + if err := c.CallContext( + timeoutCtx, + &result, + "taikoAuth_txPoolContent", + beneficiary, + baseFee, + blockMaxGasLimit, + maxBytesPerTxList, + locals, + maxTransactionsLists, + ); err != nil { + return nil, err + } + return result, nil +} diff --git a/packages/taiko-client/pkg/rpc/engine_test.go b/packages/taiko-client/pkg/rpc/engine_test.go new file mode 100644 index 00000000000..53740899141 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/engine_test.go @@ -0,0 +1,41 @@ +package rpc + +import ( + "context" + "testing" + + "github.com/ethereum/go-ethereum/beacon/engine" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/stretchr/testify/require" +) + +func TestL2EngineForbidden(t *testing.T) { + c := newTestClient(t) + + _, err := c.L2Engine.ForkchoiceUpdate( + context.Background(), + &engine.ForkchoiceStateV1{}, + &engine.PayloadAttributes{}, + ) + require.ErrorContains(t, err, "Unauthorized") + + _, err = c.L2Engine.NewPayload( + context.Background(), + &engine.ExecutableData{}, + ) + require.ErrorContains(t, err, "Unauthorized") + + _, err = c.L2Engine.GetPayload( + context.Background(), + &engine.PayloadID{}, + ) + require.ErrorContains(t, err, "Unauthorized") + + _, err = c.L2Engine.ExchangeTransitionConfiguration(context.Background(), &engine.TransitionConfigurationV1{ + TerminalTotalDifficulty: (*hexutil.Big)(common.Big0), + TerminalBlockHash: common.Hash{}, + TerminalBlockNumber: 0, + }) + require.ErrorContains(t, err, "Unauthorized") +} diff --git a/packages/taiko-client/pkg/rpc/ethclient.go b/packages/taiko-client/pkg/rpc/ethclient.go new file mode 100644 index 00000000000..4b6c7b7e39e --- /dev/null +++ b/packages/taiko-client/pkg/rpc/ethclient.go @@ -0,0 +1,420 @@ +package rpc + +import ( + "context" + "math/big" + "time" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/ethclient/gethclient" + "github.com/ethereum/go-ethereum/rpc" +) + +type gethClient struct { + *gethclient.Client +} + +type ethClient struct { + *ethclient.Client +} + +// EthClient is a wrapper for go-ethereum eth client with a timeout attached. +type EthClient struct { + ChainID *big.Int + + *rpc.Client + *gethClient + *ethClient + + timeout time.Duration +} + +func NewEthClient(ctx context.Context, url string, timeout time.Duration) (*EthClient, error) { + var timeoutVal = defaultTimeout + if timeout != 0 { + timeoutVal = timeout + } + + client, err := rpc.DialContext(ctx, url) + if err != nil { + return nil, err + } + + ethClient := ðClient{ethclient.NewClient(client)} + // Get chainID. + chainID, err := ethClient.ChainID(ctx) + if err != nil { + return nil, err + } + + return &EthClient{ + ChainID: chainID, + Client: client, + gethClient: &gethClient{gethclient.New(client)}, + ethClient: ethClient, + timeout: timeoutVal, + }, nil +} + +// BlockByHash returns the given full block. +// +// Note that loading full blocks requires two requests. Use HeaderByHash +// if you don't need all transactions or uncle headers. +func (c *EthClient) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.BlockByHash(ctxWithTimeout, hash) +} + +// BlockByNumber returns a block from the current canonical chain. If number is nil, the +// latest known block is returned. +// +// Note that loading full blocks requires two requests. Use HeaderByNumber +// if you don't need all transactions or uncle headers. +func (c *EthClient) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.BlockByNumber(ctxWithTimeout, number) +} + +// BlockNumber returns the most recent block number +func (c *EthClient) BlockNumber(ctx context.Context) (uint64, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.BlockNumber(ctxWithTimeout) +} + +// PeerCount returns the number of p2p peers as reported by the net_peerCount method. +func (c *EthClient) PeerCount(ctx context.Context) (uint64, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.PeerCount(ctxWithTimeout) +} + +// HeaderByHash returns the block header with the given hash. +func (c *EthClient) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.HeaderByHash(ctxWithTimeout, hash) +} + +// HeaderByNumber returns a block header from the current canonical chain. If number is +// nil, the latest known header is returned. +func (c *EthClient) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.HeaderByNumber(ctxWithTimeout, number) +} + +// TransactionByHash returns the transaction with the given hash. +func (c *EthClient) TransactionByHash( + ctx context.Context, + hash common.Hash, +) (tx *types.Transaction, isPending bool, err error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.TransactionByHash(ctxWithTimeout, hash) +} + +// TransactionSender returns the sender address of the given transaction. The transaction +// must be known to the remote node and included in the blockchain at the given block and +// index. The sender is the one derived by the protocol at the time of inclusion. +// +// There is a fast-path for transactions retrieved by TransactionByHash and +// TransactionInBlock. Getting their sender address can be done without an RPC interaction. +func (c *EthClient) TransactionSender( + ctx context.Context, + tx *types.Transaction, + block common.Hash, + index uint, +) (common.Address, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.TransactionSender(ctxWithTimeout, tx, block, index) +} + +// TransactionCount returns the total number of transactions in the given block. +func (c *EthClient) TransactionCount(ctx context.Context, blockHash common.Hash) (uint, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.TransactionCount(ctxWithTimeout, blockHash) +} + +// TransactionInBlock returns a single transaction at index in the given block. +func (c *EthClient) TransactionInBlock( + ctx context.Context, + blockHash common.Hash, + index uint, +) (*types.Transaction, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.TransactionInBlock(ctxWithTimeout, blockHash, index) +} + +// SyncProgress retrieves the current progress of the sync algorithm. If there's +// no sync currently running, it returns nil. +func (c *EthClient) SyncProgress(ctx context.Context) (*ethereum.SyncProgress, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.SyncProgress(ctxWithTimeout) +} + +// NetworkID returns the network ID for this client. +func (c *EthClient) NetworkID(ctx context.Context) (*big.Int, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.NetworkID(ctxWithTimeout) +} + +// BalanceAt returns the wei balance of the given account. +// The block number can be nil, in which case the balance is taken from the latest known block. +func (c *EthClient) BalanceAt( + ctx context.Context, + account common.Address, + blockNumber *big.Int, +) (*big.Int, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.BalanceAt(ctxWithTimeout, account, blockNumber) +} + +// StorageAt returns the value of key in the contract storage of the given account. +// The block number can be nil, in which case the value is taken from the latest known block. +func (c *EthClient) StorageAt( + ctx context.Context, + account common.Address, + key common.Hash, + blockNumber *big.Int, +) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.StorageAt(ctxWithTimeout, account, key, blockNumber) +} + +// CodeAt returns the contract code of the given account. +// The block number can be nil, in which case the code is taken from the latest known block. +func (c *EthClient) CodeAt( + ctx context.Context, + account common.Address, + blockNumber *big.Int, +) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.CodeAt(ctxWithTimeout, account, blockNumber) +} + +// NonceAt returns the account nonce of the given account. +// The block number can be nil, in which case the nonce is taken from the latest known block. +func (c *EthClient) NonceAt( + ctx context.Context, + account common.Address, + blockNumber *big.Int, +) (uint64, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.NonceAt(ctxWithTimeout, account, blockNumber) +} + +// PendingBalanceAt returns the wei balance of the given account in the pending state. +func (c *EthClient) PendingBalanceAt(ctx context.Context, account common.Address) (*big.Int, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.PendingBalanceAt(ctxWithTimeout, account) +} + +// PendingStorageAt returns the value of key in the contract storage of the given account in the pending state. +func (c *EthClient) PendingStorageAt( + ctx context.Context, + account common.Address, + key common.Hash, +) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.PendingStorageAt(ctxWithTimeout, account, key) +} + +// PendingCodeAt returns the contract code of the given account in the pending state. +func (c *EthClient) PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.PendingCodeAt(ctxWithTimeout, account) +} + +// PendingNonceAt returns the account nonce of the given account in the pending state. +// This is the nonce that should be used for the next transaction. +func (c *EthClient) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.PendingNonceAt(ctxWithTimeout, account) +} + +// PendingTransactionCount returns the total number of transactions in the pending state. +func (c *EthClient) PendingTransactionCount(ctx context.Context) (uint, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.PendingTransactionCount(ctxWithTimeout) +} + +// CallContract executes a message call transaction, which is directly executed in the VM +// of the node, but never mined into the blockchain. +// +// blockNumber selects the block height at which the call runs. It can be nil, in which +// case the code is taken from the latest known block. Note that state from very old +// blocks might not be available. +func (c *EthClient) CallContract( + ctx context.Context, + msg ethereum.CallMsg, + blockNumber *big.Int, +) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.CallContract(ctxWithTimeout, msg, blockNumber) +} + +// CallContractAtHash is almost the same as CallContract except that it selects +// the block by block hash instead of block height. +func (c *EthClient) CallContractAtHash( + ctx context.Context, + msg ethereum.CallMsg, + blockHash common.Hash, +) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.CallContractAtHash(ctxWithTimeout, msg, blockHash) +} + +// PendingCallContract executes a message call transaction using the EVM. +// The state seen by the contract call is the pending state. +func (c *EthClient) PendingCallContract(ctx context.Context, msg ethereum.CallMsg) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.PendingCallContract(ctxWithTimeout, msg) +} + +// SuggestGasPrice retrieves the currently suggested gas price to allow a timely +// execution of a transaction. +func (c *EthClient) SuggestGasPrice(ctx context.Context) (*big.Int, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.SuggestGasPrice(ctxWithTimeout) +} + +// SuggestGasTipCap retrieves the currently suggested gas tip cap after 1559 to +// allow a timely execution of a transaction. +func (c *EthClient) SuggestGasTipCap(ctx context.Context) (*big.Int, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.SuggestGasTipCap(ctxWithTimeout) +} + +// FeeHistory retrieves the fee market history. +func (c *EthClient) FeeHistory( + ctx context.Context, + blockCount uint64, + lastBlock *big.Int, + rewardPercentiles []float64, +) (*ethereum.FeeHistory, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.FeeHistory(ctxWithTimeout, blockCount, lastBlock, rewardPercentiles) +} + +// EstimateGas tries to estimate the gas needed to execute a specific transaction based on +// the current pending state of the backend blockchain. There is no guarantee that this is +// the true gas limit requirement as other transactions may be added or removed by miners, +// but it should provide a basis for setting a reasonable default. +func (c *EthClient) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (uint64, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.EstimateGas(ctxWithTimeout, msg) +} + +// SendTransaction injects a signed transaction into the pending pool for execution. +// +// If the transaction was a contract creation use the TransactionReceipt method to get the +// contract address after the transaction has been mined. +func (c *EthClient) SendTransaction(ctx context.Context, tx *types.Transaction) error { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + return c.ethClient.SendTransaction(ctxWithTimeout, tx) +} + +// TransactionArgs represents the arguments to construct a new transaction +// or a message call. +type TransactionArgs struct { + From *common.Address `json:"from"` + To *common.Address `json:"to"` + Gas *hexutil.Uint64 `json:"gas"` + GasPrice *hexutil.Big `json:"gasPrice"` + MaxFeePerGas *hexutil.Big `json:"maxFeePerGas"` + MaxPriorityFeePerGas *hexutil.Big `json:"maxPriorityFeePerGas"` + Value *hexutil.Big `json:"value"` + Nonce *hexutil.Uint64 `json:"nonce"` + + // We accept "data" and "input" for backwards-compatibility reasons. + // "input" is the newer name and should be preferred by clients. + // Issue detail: https://github.com/ethereum/go-ethereum/issues/15628 + Data *hexutil.Bytes `json:"data"` + Input *hexutil.Bytes `json:"input"` + + // Introduced by AccessListTxType transaction. + AccessList *types.AccessList `json:"accessList,omitempty"` + ChainID *hexutil.Big `json:"chainId,omitempty"` + + // Introduced by EIP-4844. + BlobFeeCap *hexutil.Big `json:"maxFeePerBlobGas"` + BlobHashes []common.Hash `json:"blobVersionedHashes,omitempty"` +} + +// SignTransactionResult represents a RLP encoded signed transaction. +type SignTransactionResult struct { + Raw hexutil.Bytes `json:"raw"` + Tx *types.Transaction `json:"tx"` +} + +// FillTransaction fill transaction. +func (c *EthClient) FillTransaction(ctx context.Context, args *TransactionArgs) (*types.Transaction, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + var result SignTransactionResult + err := c.CallContext(ctxWithTimeout, &result, "eth_fillTransaction", *args) + if err != nil { + return nil, err + } + + return result.Tx, nil +} diff --git a/packages/taiko-client/pkg/rpc/ethclient_test.go b/packages/taiko-client/pkg/rpc/ethclient_test.go new file mode 100644 index 00000000000..3739482b63d --- /dev/null +++ b/packages/taiko-client/pkg/rpc/ethclient_test.go @@ -0,0 +1,170 @@ +package rpc + +import ( + "context" + "testing" + + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/require" +) + +func TestBlockByHash(t *testing.T) { + client := newTestClientWithTimeout(t) + + head, err := client.L1.HeaderByNumber(context.Background(), nil) + require.Nil(t, err) + + block, err := client.L1.BlockByHash(context.Background(), head.Hash()) + + require.Nil(t, err) + require.Equal(t, head.Hash(), block.Hash()) +} + +func TestBlockNumber(t *testing.T) { + client := newTestClientWithTimeout(t) + + head, err := client.L1.BlockNumber(context.Background()) + require.Nil(t, err) + require.Greater(t, head, uint64(0)) +} + +func TestPeerCount(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.PeerCount(context.Background()) + require.NotNil(t, err) +} + +func TestTransactionByHash(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, _, err := client.L1.TransactionByHash(context.Background(), common.Hash{}) + require.NotNil(t, err) +} + +func TestTransactionSender(t *testing.T) { + client := newTestClientWithTimeout(t) + + block, err := client.L1.BlockByNumber(context.Background(), nil) + require.Nil(t, err) + require.NotZero(t, block.Transactions().Len()) +} + +func TestTransactionCount(t *testing.T) { + client := newTestClientWithTimeout(t) + + block, err := client.L1.BlockByNumber(context.Background(), nil) + require.Nil(t, err) + require.NotZero(t, block.Transactions().Len()) +} + +func TestTransactionInBlock(t *testing.T) { + client := newTestClientWithTimeout(t) + + block, err := client.L1.BlockByNumber(context.Background(), nil) + require.Nil(t, err) + require.NotZero(t, block.Transactions().Len()) + + _, err = client.L1.TransactionInBlock(context.Background(), block.Hash(), 0) + require.Nil(t, err) +} + +func TestNetworkID(t *testing.T) { + client := newTestClientWithTimeout(t) + + networkID, err := client.L1.NetworkID(context.Background()) + require.Nil(t, err) + require.NotEqual(t, common.Big0.Uint64(), networkID.Uint64()) +} + +func TestStorageAt(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.StorageAt(context.Background(), common.Address{}, common.Hash{}, nil) + require.Nil(t, err) +} + +func TestCodeAt(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.CodeAt(context.Background(), common.Address{}, nil) + require.Nil(t, err) +} + +func TestNonceAt(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.NonceAt(context.Background(), common.Address{}, nil) + require.Nil(t, err) +} + +func TestPendingBalanceAt(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.PendingBalanceAt(context.Background(), common.Address{}) + require.Nil(t, err) +} + +func TestPendingStorageAt(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.PendingStorageAt(context.Background(), common.Address{}, common.Hash{}) + require.Nil(t, err) +} + +func TestPendingCodeAt(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.PendingCodeAt(context.Background(), common.Address{}) + require.Nil(t, err) +} + +func TestPendingTransactionCount(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.PendingTransactionCount(context.Background()) + require.Nil(t, err) +} + +func TestCallContractAtHash(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.CallContractAtHash(context.Background(), ethereum.CallMsg{}, common.Hash{}) + require.NotNil(t, err) +} + +func TestPendingCallContract(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.PendingCallContract(context.Background(), ethereum.CallMsg{}) + require.Nil(t, err) +} + +func TestSuggestGasPrice(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.SuggestGasPrice(context.Background()) + require.Nil(t, err) +} + +func TestSuggestGasTipCap(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.SuggestGasTipCap(context.Background()) + require.Nil(t, err) +} + +func TestFeeHistory(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.FeeHistory(context.Background(), 1, nil, []float64{}) + require.Nil(t, err) +} + +func TestEstimateGas(t *testing.T) { + client := newTestClientWithTimeout(t) + + _, err := client.L1.EstimateGas(context.Background(), ethereum.CallMsg{}) + require.Nil(t, err) +} diff --git a/packages/taiko-client/pkg/rpc/fallback.go b/packages/taiko-client/pkg/rpc/fallback.go new file mode 100644 index 00000000000..6237f2105a0 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/fallback.go @@ -0,0 +1,29 @@ +package rpc + +import ( + "errors" + "math/big" + "strings" +) + +// Taken from: +// https://github.com/ethereum-optimism/optimism-legacy/blob/develop/bss-core/drivers/max_priority_fee_fallback.go +var ( + //lint:ignore ST1005 allow `errMaxPriorityFeePerGasNotFound` to be capitalized. + errMaxPriorityFeePerGasNotFound = errors.New( + "method eth_maxPriorityFeePerGas not found", + ) + + // FallbackGasTipCap is the default fallback gasTipCap used when we are + // unable to query an L1 backend for a suggested gasTipCap. + FallbackGasTipCap = big.NewInt(1500000000) +) + +// IsMaxPriorityFeePerGasNotFoundError returns true if the provided error +// signals that the backend does not support the eth_maxPriorityFeePerGas +// method. In this case, the caller should fallback to using the constant above. +func IsMaxPriorityFeePerGasNotFoundError(err error) bool { + return strings.Contains( + err.Error(), errMaxPriorityFeePerGasNotFound.Error(), + ) +} diff --git a/packages/taiko-client/pkg/rpc/fallback_test.go b/packages/taiko-client/pkg/rpc/fallback_test.go new file mode 100644 index 00000000000..a7d05649dc7 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/fallback_test.go @@ -0,0 +1,13 @@ +package rpc + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestIsMaxPriorityFeePerGasNotFoundError(t *testing.T) { + require.False(t, IsMaxPriorityFeePerGasNotFoundError(errors.New("test"))) + require.True(t, IsMaxPriorityFeePerGasNotFoundError(errMaxPriorityFeePerGasNotFound)) +} diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go new file mode 100644 index 00000000000..831c49405e0 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -0,0 +1,764 @@ +package rpc + +import ( + "context" + "errors" + "fmt" + "math/big" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/miner" + "golang.org/x/sync/errgroup" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +var ( + // errSyncing is returned when the L2 execution engine is syncing. + errSyncing = errors.New("syncing") + errEmptyTiersList = errors.New("empty proof tiers list in protocol") + rpcPollingInterval = 3 * time.Second + defaultWaitTimeout = 3 * time.Minute +) + +// ensureGenesisMatched fetches the L2 genesis block from TaikoL1 contract, +// and checks whether the fetched genesis is same to the node local genesis. +func (c *Client) ensureGenesisMatched(ctx context.Context) error { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + stateVars, err := c.GetProtocolStateVariables(&bind.CallOpts{Context: ctxWithTimeout}) + if err != nil { + return err + } + + // Fetch the genesis `BlockVerified` event. + iter, err := c.TaikoL1.FilterBlockVerified( + &bind.FilterOpts{Start: stateVars.A.GenesisHeight, End: &stateVars.A.GenesisHeight, Context: ctxWithTimeout}, + []*big.Int{common.Big0}, + nil, + ) + if err != nil { + return err + } + + // Fetch the node's genesis block. + nodeGenesis, err := c.L2.HeaderByNumber(ctxWithTimeout, common.Big0) + if err != nil { + return err + } + + if iter.Next() { + l2GenesisHash := iter.Event.BlockHash + + log.Debug("Genesis hash", "node", nodeGenesis.Hash(), "TaikoL1", common.BytesToHash(l2GenesisHash[:])) + + // Node's genesis header and TaikoL1 contract's genesis header must match. + if common.BytesToHash(l2GenesisHash[:]) != nodeGenesis.Hash() { + return fmt.Errorf( + "genesis header hash mismatch, node: %s, TaikoL1 contract: %s", + nodeGenesis.Hash(), + common.BytesToHash(l2GenesisHash[:]), + ) + } + + return nil + } + + log.Warn("Genesis block not found in TaikoL1") + + return nil +} + +// WaitTillL2ExecutionEngineSynced keeps waiting until the L2 execution engine is fully synced. +func (c *Client) WaitTillL2ExecutionEngineSynced(ctx context.Context) error { + start := time.Now() + + return backoff.Retry( + func() error { + newCtx, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + progress, err := c.L2ExecutionEngineSyncProgress(newCtx) + if err != nil { + log.Error("Fetch L2 execution engine sync progress error", "error", err) + return err + } + + if progress.isSyncing() { + log.Info( + "L2 execution engine is syncing", + "currentBlockID", progress.CurrentBlockID, + "highestBlockID", progress.HighestBlockID, + "progress", progress.SyncProgress, + "time", time.Since(start), + ) + return errSyncing + } + + return nil + }, + backoff.WithContext(backoff.NewExponentialBackOff(), ctx), + ) +} + +// LatestL2KnownL1Header fetches the L2 execution engine's latest known L1 header, +// if we can't find the L1Origin data, we will use the L1 genesis header instead. +func (c *Client) LatestL2KnownL1Header(ctx context.Context) (*types.Header, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + // Try to fetch the latest known L1 header from the L2 execution engine. + headL1Origin, err := c.L2.HeadL1Origin(ctxWithTimeout) + if err != nil { + switch err.Error() { + case ethereum.NotFound.Error(): + return c.GetGenesisL1Header(ctxWithTimeout) + default: + return nil, err + } + } + + if headL1Origin == nil { + return c.GetGenesisL1Header(ctxWithTimeout) + } + + // Fetch the L1 header from the L1 chain. + header, err := c.L1.HeaderByHash(ctxWithTimeout, headL1Origin.L1BlockHash) + if err != nil { + switch err.Error() { + case ethereum.NotFound.Error(): + log.Warn("Latest L2 known L1 header not found, use genesis instead", "hash", headL1Origin.L1BlockHash) + return c.GetGenesisL1Header(ctxWithTimeout) + default: + return nil, err + } + } + + log.Info("Latest L2 known L1 header", "height", header.Number, "hash", header.Hash()) + + return header, nil +} + +// GetGenesisL1Header fetches the L1 header that including L2 genesis block. +func (c *Client) GetGenesisL1Header(ctx context.Context) (*types.Header, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + stateVars, err := c.GetProtocolStateVariables(&bind.CallOpts{Context: ctxWithTimeout}) + if err != nil { + return nil, err + } + + return c.L1.HeaderByNumber(ctxWithTimeout, new(big.Int).SetUint64(stateVars.A.GenesisHeight)) +} + +// L2ParentByBlockID fetches the block header from L2 execution engine with the largest block id that +// smaller than the given `blockId`. +func (c *Client) L2ParentByBlockID(ctx context.Context, blockID *big.Int) (*types.Header, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + var ( + parentHash common.Hash + parentBlockID = new(big.Int).Sub(blockID, common.Big1) + ) + + log.Debug("Get parent block by block ID", "parentBlockID", parentBlockID) + + if parentBlockID.Cmp(common.Big0) == 0 { + return c.L2.HeaderByNumber(ctxWithTimeout, common.Big0) + } + + l1Origin, err := c.L2.L1OriginByID(ctxWithTimeout, parentBlockID) + if err != nil { + if err.Error() != ethereum.NotFound.Error() { + return nil, err + } + + // In some cases, the L1Origin data is not found in the L2 execution engine, we will try to fetch the parent + // by the parent block ID. + log.Warn("L1Origin not found, try to fetch parent by ID", "blockID", parentBlockID) + + parent, err := c.L2.BlockByNumber(ctxWithTimeout, parentBlockID) + if err != nil { + return nil, err + } + + parentHash = parent.Hash() + } else { + parentHash = l1Origin.L2BlockHash + } + + log.Debug("Parent block L1 origin", "l1Origin", l1Origin, "parentBlockID", parentBlockID) + + return c.L2.HeaderByHash(ctxWithTimeout, parentHash) +} + +func (c *Client) WaitL2Header(ctx context.Context, blockID *big.Int) (*types.Header, error) { + var ( + ctxWithTimeout = ctx + cancel context.CancelFunc + header *types.Header + err error + ) + + ticker := time.NewTicker(rpcPollingInterval) + defer ticker.Stop() + + if _, ok := ctx.Deadline(); !ok { + ctxWithTimeout, cancel = context.WithTimeout(ctx, defaultWaitTimeout) + defer cancel() + } + + log.Debug("Start fetching block header from L2 execution engine", "blockID", blockID) + + for ; true; <-ticker.C { + if ctxWithTimeout.Err() != nil { + return nil, ctxWithTimeout.Err() + } + + header, err = c.L2.HeaderByNumber(ctxWithTimeout, blockID) + if err != nil { + log.Debug( + "Fetch block header from L2 execution engine not found, keep retrying", + "blockID", blockID, + "error", err, + ) + continue + } + + if header == nil { + continue + } + + return header, nil + } + + return nil, fmt.Errorf("failed to fetch block header from L2 execution engine, blockID: %d", blockID) +} + +// GetPoolContent fetches the transactions list from L2 execution engine's transactions pool with given +// upper limit. +func (c *Client) GetPoolContent( + ctx context.Context, + beneficiary common.Address, + blockMaxGasLimit uint32, + maxBytesPerTxList uint64, + locals []common.Address, + maxTransactionsLists uint64, +) ([]*miner.PreBuiltTxList, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + l1Head, err := c.L1.HeaderByNumber(ctx, nil) + if err != nil { + return nil, err + } + + l2Head, err := c.L2.HeaderByNumber(ctx, nil) + if err != nil { + return nil, err + } + + baseFeeInfo, err := c.TaikoL2.GetBasefee( + &bind.CallOpts{Context: ctx}, + l1Head.Number.Uint64(), + uint32(l2Head.GasUsed), + ) + if err != nil { + return nil, err + } + + log.Info("Current base fee", "fee", utils.WeiToGWei(baseFeeInfo.Basefee)) + + var localsArg []string + for _, local := range locals { + localsArg = append(localsArg, local.Hex()) + } + + return c.L2Engine.TxPoolContent( + ctxWithTimeout, + beneficiary, + baseFeeInfo.Basefee, + uint64(blockMaxGasLimit), + maxBytesPerTxList, + localsArg, + maxTransactionsLists, + ) +} + +// L2AccountNonce fetches the nonce of the given L2 account at a specified height. +func (c *Client) L2AccountNonce( + ctx context.Context, + account common.Address, + height *big.Int, +) (uint64, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + var result hexutil.Uint64 + err := c.L2.CallContext(ctxWithTimeout, &result, "eth_getTransactionCount", account, hexutil.EncodeBig(height)) + return uint64(result), err +} + +// L2SyncProgress represents the sync progress of a L2 execution engine, `ethereum.SyncProgress` is used to check +// the sync progress of verified blocks, and block IDs are used to check the sync progress of pending blocks. +type L2SyncProgress struct { + *ethereum.SyncProgress + CurrentBlockID *big.Int + HighestBlockID *big.Int +} + +// isSyncing returns true if the L2 execution engine is syncing with L1. +func (p *L2SyncProgress) isSyncing() bool { + if p.SyncProgress == nil { + return false + } + + if p.CurrentBlockID == nil || p.HighestBlockID == nil { + return true + } + + return p.CurrentBlockID.Cmp(p.HighestBlockID) < 0 +} + +// L2ExecutionEngineSyncProgress fetches the sync progress of the given L2 execution engine. +func (c *Client) L2ExecutionEngineSyncProgress(ctx context.Context) (*L2SyncProgress, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + var ( + progress = new(L2SyncProgress) + err error + ) + g, ctx := errgroup.WithContext(ctxWithTimeout) + + g.Go(func() error { + progress.SyncProgress, err = c.L2.SyncProgress(ctx) + return err + }) + g.Go(func() error { + stateVars, err := c.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + return err + } + progress.HighestBlockID = new(big.Int).SetUint64(stateVars.B.NumBlocks - 1) + return nil + }) + g.Go(func() error { + headL1Origin, err := c.L2.HeadL1Origin(ctx) + if err != nil { + switch err.Error() { + case ethereum.NotFound.Error(): + // There is only genesis block in the L2 execution engine, or it has not started + // syncing the pending blocks yet. + progress.CurrentBlockID = common.Big0 + return nil + default: + return err + } + } + progress.CurrentBlockID = headL1Origin.BlockID + return nil + }) + + if err := g.Wait(); err != nil { + return nil, err + } + + return progress, nil +} + +// GetProtocolStateVariables gets the protocol states from TaikoL1 contract. +func (c *Client) GetProtocolStateVariables(opts *bind.CallOpts) (*struct { + A bindings.TaikoDataSlotA + B bindings.TaikoDataSlotB +}, error) { + if opts == nil { + opts = &bind.CallOpts{} + } + + var ctx = context.Background() + if opts.Context != nil { + ctx = opts.Context + } + ctxWithTimeout, cancel := context.WithTimeout(ctx, defaultTimeout) + defer cancel() + opts.Context = ctxWithTimeout + + return GetProtocolStateVariables(c.TaikoL1, opts) +} + +// GetL2BlockInfo fetches the L2 block information from the protocol. +func (c *Client) GetL2BlockInfo(ctx context.Context, blockID *big.Int) (bindings.TaikoDataBlock, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + return c.TaikoL1.GetBlock(&bind.CallOpts{Context: ctxWithTimeout}, blockID.Uint64()) +} + +// GetTransition fetches the L2 block's corresponding transition state from the protocol. +func (c *Client) GetTransition( + ctx context.Context, + blockID *big.Int, + transactionID uint32, +) (bindings.TaikoDataTransitionState, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + return c.TaikoL1.GetTransition( + &bind.CallOpts{Context: ctxWithTimeout}, + blockID.Uint64(), + transactionID, + ) +} + +// ReorgCheckResult represents the information about whether the L1 block has been reorged +// and how to reset the L1 cursor. +type ReorgCheckResult struct { + IsReorged bool + L1CurrentToReset *types.Header + LastHandledBlockIDToReset *big.Int +} + +// CheckL1Reorg checks whether the L2 block's corresponding L1 block has been reorged or not. +// We will skip the reorg check if: +// 1. When the L2 chain has just finished a P2P sync, so there is no L1Origin information recorded in +// its local database, and we assume the last verified L2 block is old enough, so its corresponding +// L1 block should have also been finalized. +// +// Then we will check: +// 1. If the L2 block's corresponding L1 block which in L1Origin has been reorged +// 2. If the L1 information which in the given L2 block's anchor transaction has been reorged +// +// And if a reorg is detected, we return a new L1 block cursor which need to reset to. +func (c *Client) CheckL1Reorg(ctx context.Context, blockID *big.Int) (*ReorgCheckResult, error) { + var ( + result = new(ReorgCheckResult) + ctxWithTimeout, cancel = ctxWithTimeoutOrDefault(ctx, defaultTimeout) + ) + defer cancel() + + for { + // If we rollback to the genesis block, then there is no L1Origin information recorded in the L2 execution + // engine for that block, so we will query the protocol to use `GenesisHeight` value to reset the L1 cursor. + if blockID.Cmp(common.Big0) == 0 { + slotA, _, err := c.TaikoL1.GetStateVariables(&bind.CallOpts{Context: ctxWithTimeout}) + if err != nil { + return result, err + } + + if result.L1CurrentToReset, err = c.L1.HeaderByNumber( + ctxWithTimeout, + new(big.Int).SetUint64(slotA.GenesisHeight), + ); err != nil { + return nil, err + } + + return result, nil + } + + // 1. Check whether the L2 block's corresponding L1 block which in L1Origin has been reorged. + l1Origin, err := c.L2.L1OriginByID(ctxWithTimeout, blockID) + if err != nil { + // If the L2 EE is just synced through P2P, so there is no L1Origin information recorded in + // its local database, we skip this check. + if err.Error() == ethereum.NotFound.Error() { + log.Info("L1Origin not found, the L2 execution engine has just synced from P2P network", "blockID", blockID) + return result, nil + } + + return nil, err + } + + // Compare the L1 header hash in the L1Origin with the current L1 header hash in the L1 chain. + l1Header, err := c.L1.HeaderByNumber(ctxWithTimeout, l1Origin.L1BlockHeight) + if err != nil { + // We can not find the L1 header which in the L1Origin, which means that L1 block has been reorged. + if err.Error() == ethereum.NotFound.Error() { + result.IsReorged = true + blockID = new(big.Int).Sub(blockID, common.Big1) + continue + } + return nil, fmt.Errorf("failed to fetch L1 header (%d): %w", l1Origin.L1BlockHeight, err) + } + + if l1Header.Hash() != l1Origin.L1BlockHash { + log.Info( + "Reorg detected", + "blockID", blockID, + "l1Height", l1Origin.L1BlockHeight, + "l1HashOld", l1Origin.L1BlockHash, + "l1HashNew", l1Header.Hash(), + ) + blockID = new(big.Int).Sub(blockID, common.Big1) + result.IsReorged = true + continue + } + + // 2. Check whether the L1 information which in the given L2 block's anchor transaction has been reorged. + isSyncedL1SnippetInvalid, err := c.checkSyncedL1SnippetFromAnchor( + ctxWithTimeout, + blockID, + l1Origin.L1BlockHeight.Uint64(), + ) + if err != nil { + return nil, fmt.Errorf("failed to check L1 reorg from anchor transaction: %w", err) + } + if isSyncedL1SnippetInvalid { + blockID = new(big.Int).Sub(blockID, common.Big1) + result.IsReorged = true + continue + } + + result.L1CurrentToReset = l1Header + result.LastHandledBlockIDToReset = l1Origin.BlockID + break + } + + log.Debug( + "Check L1 reorg", + "isReorged", result.IsReorged, + "l1CurrentToResetNumber", result.L1CurrentToReset.Number, + "l1CurrentToResetHash", result.L1CurrentToReset.Hash(), + "blockIDToReset", result.LastHandledBlockIDToReset, + ) + + return result, nil +} + +// checkSyncedL1SnippetFromAnchor checks whether the L1 snippet synced from the anchor transaction is valid. +func (c *Client) checkSyncedL1SnippetFromAnchor( + ctx context.Context, + blockID *big.Int, + l1Height uint64, +) (bool, error) { + log.Info("Check synced L1 snippet from anchor", "blockID", blockID, "l1Height", l1Height) + block, err := c.L2.BlockByNumber(ctx, blockID) + if err != nil { + return false, err + } + parent, err := c.L2.BlockByHash(ctx, block.ParentHash()) + if err != nil { + return false, err + } + + l1BlockHash, l1StateRoot, l1HeightInAnchor, parentGasUsed, err := c.getSyncedL1SnippetFromAnchor( + block.Transactions()[0], + ) + if err != nil { + return false, err + } + + if l1HeightInAnchor+1 != l1Height { + log.Info( + "Reorg detected due to L1 height mismatch", + "blockID", blockID, + "l1HeightInAnchor", l1HeightInAnchor, + "l1Height", l1Height, + ) + return true, nil + } + + if parentGasUsed != uint32(parent.GasUsed()) { + log.Info( + "Reorg detected due to parent gas used mismatch", + "blockID", blockID, + "parentGasUsedInAnchor", parentGasUsed, + "parentGasUsed", parent.GasUsed(), + ) + return true, nil + } + + l1Header, err := c.L1.HeaderByNumber(ctx, new(big.Int).SetUint64(l1HeightInAnchor)) + if err != nil { + return false, err + } + + if l1Header.Hash() != l1BlockHash { + log.Info( + "Reorg detected due to L1 block hash mismatch", + "blockID", blockID, + "l1BlockHashInAnchor", l1BlockHash, + "l1BlockHash", l1Header.Hash(), + ) + return true, nil + } + + if l1Header.Root != l1StateRoot { + log.Info( + "Reorg detected due to L1 state root mismatch", + "blockID", blockID, + "l1StateRootInAnchor", l1StateRoot, + "l1StateRoot", l1Header.Root, + ) + return true, nil + } + + return false, nil +} + +// getSyncedL1SnippetFromAnchor parses the anchor transaction calldata, and returns the synced L1 snippet, +func (c *Client) getSyncedL1SnippetFromAnchor( + tx *types.Transaction, +) ( + l1BlockHash common.Hash, + l1StateRoot common.Hash, + l1Height uint64, + parentGasUsed uint32, + err error, +) { + method, err := encoding.TaikoL2ABI.MethodById(tx.Data()) + if err != nil { + return common.Hash{}, common.Hash{}, 0, 0, err + } + + if method.Name != "anchor" { + return common.Hash{}, common.Hash{}, 0, 0, fmt.Errorf("invalid method name for anchor transaction: %s", method.Name) + } + + args := map[string]interface{}{} + + if err := method.Inputs.UnpackIntoMap(args, tx.Data()[4:]); err != nil { + return common.Hash{}, common.Hash{}, 0, 0, err + } + + l1BlockHash, ok := args["_l1BlockHash"].([32]byte) + if !ok { + return common.Hash{}, + common.Hash{}, + 0, + 0, + errors.New("failed to parse l1BlockHash from anchor transaction calldata") + } + l1StateRoot, ok = args["_l1StateRoot"].([32]byte) + if !ok { + return common.Hash{}, + common.Hash{}, + 0, + 0, + errors.New("failed to parse l1StateRoot from anchor transaction calldata") + } + l1Height, ok = args["_l1BlockId"].(uint64) + if !ok { + return common.Hash{}, + common.Hash{}, + 0, + 0, + errors.New("failed to parse l1Height from anchor transaction calldata") + } + parentGasUsed, ok = args["_parentGasUsed"].(uint32) + if !ok { + return common.Hash{}, + common.Hash{}, + 0, + 0, + errors.New("failed to parse parentGasUsed from anchor transaction calldata") + } + + return l1BlockHash, l1StateRoot, l1Height, parentGasUsed, nil +} + +// TierProviderTierWithID wraps protocol ITierProviderTier struct with an ID. +type TierProviderTierWithID struct { + ID uint16 + bindings.ITierProviderTier +} + +// GetTiers fetches all protocol supported tiers. +func (c *Client) GetTiers(ctx context.Context) ([]*TierProviderTierWithID, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + tierProviderAddress, err := c.TaikoL1.Resolve0(&bind.CallOpts{Context: ctx}, StringToBytes32("tier_provider"), false) + if err != nil { + return nil, err + } + + tierProvider, err := bindings.NewTierProvider(tierProviderAddress, c.L1) + if err != nil { + return nil, err + } + + ids, err := tierProvider.GetTierIds(&bind.CallOpts{Context: ctxWithTimeout}) + if err != nil { + return nil, err + } + if len(ids) == 0 { + return nil, errEmptyTiersList + } + + var tiers []*TierProviderTierWithID + for _, id := range ids { + tier, err := tierProvider.GetTier(&bind.CallOpts{Context: ctxWithTimeout}, id) + if err != nil { + return nil, err + } + tiers = append(tiers, &TierProviderTierWithID{ID: id, ITierProviderTier: tier}) + } + + return tiers, nil +} + +// GetTaikoDataSlotBByNumber fetches the state variables by block number. +func (c *Client) GetTaikoDataSlotBByNumber(ctx context.Context, number uint64) (*bindings.TaikoDataSlotB, error) { + iter, err := c.TaikoL1.FilterStateVariablesUpdated( + &bind.FilterOpts{Context: ctx, Start: number, End: &number}, + ) + if err != nil { + return nil, err + } + + for iter.Next() { + return &iter.Event.SlotB, nil + } + + return nil, fmt.Errorf("failed to get state variables by block number %d", number) +} + +// GetGuardianProverAddress fetches the guardian prover address from the protocol. +func (c *Client) GetGuardianProverAddress(ctx context.Context) (common.Address, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + return c.TaikoL1.Resolve0(&bind.CallOpts{Context: ctxWithTimeout}, StringToBytes32("tier_guardian"), false) +} + +// WaitL1NewPendingTransaction waits until the L1 account has a new pending transaction. +func (c *Client) WaitL1NewPendingTransaction( + ctx context.Context, + address common.Address, + oldPendingNonce uint64, +) error { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + ticker := time.NewTicker(rpcPollingInterval) + defer ticker.Stop() + + for ; true; <-ticker.C { + if ctxWithTimeout.Err() != nil { + return ctxWithTimeout.Err() + } + + nonce, err := c.L1.PendingNonceAt(ctxWithTimeout, address) + if err != nil { + return err + } + + if nonce != oldPendingNonce { + break + } + } + + return nil +} diff --git a/packages/taiko-client/pkg/rpc/methods_test.go b/packages/taiko-client/pkg/rpc/methods_test.go new file mode 100644 index 00000000000..f501294b5ca --- /dev/null +++ b/packages/taiko-client/pkg/rpc/methods_test.go @@ -0,0 +1,126 @@ +package rpc + +import ( + "context" + "crypto/rand" + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +var ( + testAddress = common.HexToAddress("0x98f86166571FE624778203d87A8eD6fd84695B79") +) + +func TestL2AccountNonce(t *testing.T) { + client := newTestClientWithTimeout(t) + + nonce, err := client.L2AccountNonce(context.Background(), testAddress, common.Big0) + + require.Nil(t, err) + require.Zero(t, nonce) +} + +func TestGetGenesisL1Header(t *testing.T) { + client := newTestClient(t) + + header, err := client.GetGenesisL1Header(context.Background()) + + require.Nil(t, err) + require.NotZero(t, header.Number.Uint64()) +} + +func TestLatestL2KnownL1Header(t *testing.T) { + client := newTestClient(t) + + header, err := client.LatestL2KnownL1Header(context.Background()) + + require.Nil(t, err) + require.NotZero(t, header.Number.Uint64()) +} + +func TestL2ParentByBlockId(t *testing.T) { + client := newTestClient(t) + + header, err := client.L2ParentByBlockID(context.Background(), common.Big1) + require.Nil(t, err) + require.Zero(t, header.Number.Uint64()) + + _, err = client.L2ParentByBlockID(context.Background(), common.Big2) + require.NotNil(t, err) +} + +func TestL2ExecutionEngineSyncProgress(t *testing.T) { + client := newTestClient(t) + + progress, err := client.L2ExecutionEngineSyncProgress(context.Background()) + require.Nil(t, err) + require.NotNil(t, progress) +} + +func TestGetProtocolStateVariables(t *testing.T) { + client := newTestClient(t) + _, err := client.GetProtocolStateVariables(nil) + require.Nil(t, err) +} + +func TestWaitTillL2ExecutionEngineSyncedNewClient(t *testing.T) { + client := newTestClient(t) + err := client.WaitTillL2ExecutionEngineSynced(context.Background()) + require.Nil(t, err) +} + +func TestGetSyncedL1SnippetFromAnchor(t *testing.T) { + client := newTestClient(t) + + l1BlockHash := randomHash() + l1StateRoot := randomHash() + l1Height := randomHash().Big().Uint64() + parentGasUsed := uint32(randomHash().Big().Uint64()) + + testAddrPrivKey, err := crypto.ToECDSA(common.Hex2Bytes(encoding.GoldenTouchPrivKey)) + require.Nil(t, err) + + opts, err := bind.NewKeyedTransactorWithChainID(testAddrPrivKey, client.L2.ChainID) + require.Nil(t, err) + + opts.NoSend = true + opts.GasLimit = 1_000_000 + + tx, err := client.TaikoL2.Anchor(opts, l1BlockHash, l1StateRoot, l1Height, parentGasUsed) + require.Nil(t, err) + + syncedL1BlockHash, + syncedL1StateRoot, + syncedL1Height, + syncedParentGasUsed, + err := client.getSyncedL1SnippetFromAnchor(tx) + require.Nil(t, err) + require.Equal(t, l1BlockHash, syncedL1BlockHash) + require.Equal(t, l1StateRoot, syncedL1StateRoot) + require.Equal(t, l1Height, syncedL1Height) + require.Equal(t, parentGasUsed, syncedParentGasUsed) +} + +func TestWaitTillL2ExecutionEngineSyncedContextErr(t *testing.T) { + client := newTestClient(t) + ctx, cancel := context.WithCancel(context.Background()) + cancel() + + err := client.WaitTillL2ExecutionEngineSynced(ctx) + require.ErrorContains(t, err, "context canceled") +} + +// randomHash generates a random blob of data and returns it as a hash. +func randomHash() common.Hash { + var hash common.Hash + if n, err := rand.Read(hash[:]); n != common.HashLength || err != nil { + panic(err) + } + return hash +} diff --git a/packages/taiko-client/pkg/rpc/subscription.go b/packages/taiko-client/pkg/rpc/subscription.go new file mode 100644 index 00000000000..7d74c9035ad --- /dev/null +++ b/packages/taiko-client/pkg/rpc/subscription.go @@ -0,0 +1,129 @@ +package rpc + +import ( + "context" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +// SubscribeEvent creates a event subscription, will retry if the established subscription failed. +func SubscribeEvent( + eventName string, + handler func(ctx context.Context) (event.Subscription, error), +) event.Subscription { + return event.ResubscribeErr( + backoff.DefaultMaxInterval, + func(ctx context.Context, err error) (event.Subscription, error) { + if err != nil { + log.Warn("Failed to subscribe protocol event, try resubscribing", "event", eventName, "error", err) + } + + return handler(ctx) + }, + ) +} + +// SubscribeBlockVerified subscribes the protocol's BlockVerified events. +func SubscribeBlockVerified( + taikoL1 *bindings.TaikoL1Client, + ch chan *bindings.TaikoL1ClientBlockVerified, +) event.Subscription { + return SubscribeEvent("BlockVerified", func(ctx context.Context) (event.Subscription, error) { + sub, err := taikoL1.WatchBlockVerified(nil, ch, nil, nil) + if err != nil { + log.Error("Create TaikoL1.BlockVerified subscription error", "error", err) + return nil, err + } + + defer sub.Unsubscribe() + + return waitSubErr(ctx, sub) + }) +} + +// SubscribeBlockProposed subscribes the protocol's BlockProposed events. +func SubscribeBlockProposed( + taikoL1 *bindings.TaikoL1Client, + ch chan *bindings.TaikoL1ClientBlockProposed, +) event.Subscription { + return SubscribeEvent("BlockProposed", func(ctx context.Context) (event.Subscription, error) { + sub, err := taikoL1.WatchBlockProposed(nil, ch, nil, nil) + if err != nil { + log.Error("Create TaikoL1.BlockProposed subscription error", "error", err) + return nil, err + } + + defer sub.Unsubscribe() + + return waitSubErr(ctx, sub) + }) +} + +// SubscribeTransitionProved subscribes the protocol's TransitionProved events. +func SubscribeTransitionProved( + taikoL1 *bindings.TaikoL1Client, + ch chan *bindings.TaikoL1ClientTransitionProved, +) event.Subscription { + return SubscribeEvent("TransitionProved", func(ctx context.Context) (event.Subscription, error) { + sub, err := taikoL1.WatchTransitionProved(nil, ch, nil) + if err != nil { + log.Error("Create TaikoL1.TransitionProved subscription error", "error", err) + return nil, err + } + + defer sub.Unsubscribe() + + return waitSubErr(ctx, sub) + }) +} + +// SubscribeTransitionContested subscribes the protocol's TransitionContested events. +func SubscribeTransitionContested( + taikoL1 *bindings.TaikoL1Client, + ch chan *bindings.TaikoL1ClientTransitionContested, +) event.Subscription { + return SubscribeEvent("TransitionContested", func(ctx context.Context) (event.Subscription, error) { + sub, err := taikoL1.WatchTransitionContested(nil, ch, nil) + if err != nil { + log.Error("Create TaikoL1.TransitionContested subscription error", "error", err) + return nil, err + } + + defer sub.Unsubscribe() + + return waitSubErr(ctx, sub) + }) +} + +// SubscribeChainHead subscribes the new chain heads. +func SubscribeChainHead( + client *EthClient, + ch chan *types.Header, +) event.Subscription { + return SubscribeEvent("ChainHead", func(ctx context.Context) (event.Subscription, error) { + sub, err := client.SubscribeNewHead(ctx, ch) + if err != nil { + log.Error("Create chain head subscription error", "error", err) + return nil, err + } + + defer sub.Unsubscribe() + + return waitSubErr(ctx, sub) + }) +} + +// waitSubErr keeps waiting until the given subscription failed. +func waitSubErr(ctx context.Context, sub event.Subscription) (event.Subscription, error) { + select { + case err := <-sub.Err(): + return sub, err + case <-ctx.Done(): + return sub, ctx.Err() + } +} diff --git a/packages/taiko-client/pkg/rpc/subscription_test.go b/packages/taiko-client/pkg/rpc/subscription_test.go new file mode 100644 index 00000000000..2248a1d2357 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/subscription_test.go @@ -0,0 +1,53 @@ +package rpc + +import ( + "context" + "testing" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +func TestSubscribeEvent(t *testing.T) { + require.NotNil(t, SubscribeEvent("test", func(_ context.Context) (event.Subscription, error) { + return event.NewSubscription(func(_ <-chan struct{}) error { return nil }), nil + })) +} + +func TestSubscribeBlockVerified(t *testing.T) { + require.NotNil(t, SubscribeBlockVerified( + newTestClient(t).TaikoL1, + make(chan *bindings.TaikoL1ClientBlockVerified, 1024)), + ) +} + +func TestSubscribeBlockProposed(t *testing.T) { + require.NotNil(t, SubscribeBlockProposed( + newTestClient(t).TaikoL1, + make(chan *bindings.TaikoL1ClientBlockProposed, 1024)), + ) +} + +func TestSubscribeTransitionProved(t *testing.T) { + require.NotNil(t, SubscribeTransitionProved( + newTestClient(t).TaikoL1, + make(chan *bindings.TaikoL1ClientTransitionProved, 1024)), + ) +} + +func TestSubscribeTransitionContested(t *testing.T) { + require.NotNil(t, SubscribeTransitionContested( + newTestClient(t).TaikoL1, + make(chan *bindings.TaikoL1ClientTransitionContested, 1024)), + ) +} + +func TestSubscribeChainHead(t *testing.T) { + require.NotNil(t, SubscribeChainHead( + newTestClient(t).L1, + make(chan *types.Header, 1024)), + ) +} diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go new file mode 100644 index 00000000000..cd73c581b71 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -0,0 +1,346 @@ +package rpc + +import ( + "context" + "math/big" + "strconv" + "strings" + "time" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/txpool" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/params" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +var ( + ZeroAddress common.Address + BlobBytes = params.BlobTxBytesPerFieldElement * params.BlobTxFieldElementsPerBlob + BlockMaxTxListBytes uint64 = (params.BlobTxBytesPerFieldElement - 1) * params.BlobTxFieldElementsPerBlob +) + +// GetProtocolStateVariables gets the protocol states from TaikoL1 contract. +func GetProtocolStateVariables( + taikoL1Client *bindings.TaikoL1Client, + opts *bind.CallOpts, +) (*struct { + A bindings.TaikoDataSlotA + B bindings.TaikoDataSlotB +}, error) { + slotA, slotB, err := taikoL1Client.GetStateVariables(opts) + if err != nil { + return nil, err + } + return &struct { + A bindings.TaikoDataSlotA + B bindings.TaikoDataSlotB + }{slotA, slotB}, nil +} + +// CheckProverBalance checks if the prover has the necessary allowance and +// balance for a prover to pay the liveness bond. +func CheckProverBalance( + ctx context.Context, + rpc *Client, + prover common.Address, + address common.Address, + bond *big.Int, +) (bool, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + // Check allowance on taiko token contract + allowance, err := rpc.TaikoToken.Allowance(&bind.CallOpts{Context: ctxWithTimeout}, prover, address) + if err != nil { + return false, err + } + + log.Info( + "Prover allowance for TaikoL1 contract", + "allowance", utils.WeiToEther(allowance), + "address", prover.Hex(), + "bond", utils.WeiToEther(bond), + ) + + // Check prover's taiko token balance + balance, err := rpc.TaikoToken.BalanceOf(&bind.CallOpts{Context: ctxWithTimeout}, prover) + if err != nil { + return false, err + } + + log.Info( + "Prover's wallet taiko token balance", + "balance", utils.WeiToEther(balance), + "address", prover.Hex(), + "bond", utils.WeiToEther(bond), + ) + + if bond.Cmp(allowance) > 0 || bond.Cmp(balance) > 0 { + log.Info( + "Assigned prover does not have required on-chain token balance or allowance", + "providedProver", prover.Hex(), + "taikoTokenBalance", utils.WeiToEther(balance), + "allowance", utils.WeiToEther(allowance), + "bond", utils.WeiToEther(bond), + ) + return false, nil + } + + return true, nil +} + +// BlockProofStatus represents the proving status of the given L2 block. +type BlockProofStatus struct { + IsSubmitted bool + Invalid bool + CurrentTransitionState *bindings.TaikoDataTransitionState + ParentHeader *types.Header +} + +// GetBlockProofStatus checks whether the L2 block still needs a new proof or a new contest. +// Here are the possible status: +// 1. No proof on chain at all. +// 2. A valid proof has been submitted. +// 3. An invalid proof has been submitted, and there is no valid contest. +// 4. An invalid proof has been submitted, and there is a valid contest. +func GetBlockProofStatus( + ctx context.Context, + cli *Client, + id *big.Int, + proverAddress common.Address, +) (*BlockProofStatus, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + // Get the local L2 parent header. + var ( + parent *types.Header + err error + ) + if id.Cmp(common.Big1) == 0 { + header, err := cli.L2.HeaderByNumber(ctxWithTimeout, common.Big0) + if err != nil { + return nil, err + } + + parent = header + } else { + if parent, err = cli.L2.HeaderByNumber(ctxWithTimeout, new(big.Int).Sub(id, common.Big1)); err != nil { + return nil, err + } + } + + // Get the transition state from TaikoL1 contract. + transition, err := cli.TaikoL1.GetTransition0( + &bind.CallOpts{Context: ctxWithTimeout}, + id.Uint64(), + parent.Hash(), + ) + if err != nil { + if !strings.Contains(encoding.TryParsingCustomError(err).Error(), "L1_TRANSITION_NOT_FOUND") { + return nil, encoding.TryParsingCustomError(err) + } + + // Status 1, no proof on chain at all. + return &BlockProofStatus{IsSubmitted: false, ParentHeader: parent}, nil + } + + header, err := cli.WaitL2Header(ctxWithTimeout, id) + if err != nil { + return nil, err + } + + if header.Hash() != transition.BlockHash || transition.StateRoot != header.Root { + log.Info( + "Different block hash or state root detected, try submitting a contest", + "localBlockHash", header.Hash(), + "protocolTransitionBlockHash", common.BytesToHash(transition.BlockHash[:]), + "localStateRoot", header.Root, + "protocolTransitionStateRoot", common.BytesToHash(transition.StateRoot[:]), + ) + return &BlockProofStatus{ + IsSubmitted: true, + Invalid: true, + CurrentTransitionState: &transition, + ParentHeader: parent, + }, nil + } + + if proverAddress == transition.Prover { + log.Info( + "📬 Block's proof has already been submitted by current prover", + "blockID", id, + "parent", parent.Hash().Hex(), + "hash", common.Bytes2Hex(transition.BlockHash[:]), + "stateRoot", common.Bytes2Hex(transition.StateRoot[:]), + "timestamp", transition.Timestamp, + "contester", transition.Contester, + ) + return &BlockProofStatus{ + IsSubmitted: true, + Invalid: transition.Contester != ZeroAddress, + ParentHeader: parent, + CurrentTransitionState: &transition, + }, nil + } + + log.Info( + "📬 Block's proof has already been submitted by another prover", + "blockID", id, + "prover", transition.Prover, + "parent", parent.Hash().Hex(), + "hash", common.Bytes2Hex(transition.BlockHash[:]), + "stateRoot", common.Bytes2Hex(transition.StateRoot[:]), + "timestamp", transition.Timestamp, + "contester", transition.Contester, + ) + + return &BlockProofStatus{ + IsSubmitted: true, + Invalid: transition.Contester != ZeroAddress, + ParentHeader: parent, + CurrentTransitionState: &transition, + }, nil +} + +type AccountPoolContent map[string]map[string]map[string]*types.Transaction +type AccountPoolContentFrom map[string]map[string]*types.Transaction + +// Content GetPendingTxs fetches the pending transactions from tx pool. +func Content(ctx context.Context, client *EthClient) (AccountPoolContent, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + var result AccountPoolContent + return result, client.CallContext(ctxWithTimeout, &result, "txpool_content") +} + +// ContentFrom fetches a given account's transactions list from a node's transactions pool. +func ContentFrom( + ctx context.Context, + rawRPC *EthClient, + address common.Address, +) (AccountPoolContentFrom, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + var result AccountPoolContentFrom + return result, rawRPC.CallContext( + ctxWithTimeout, + &result, + "txpool_contentFrom", + address, + ) +} + +// IncreaseGasTipCap tries to increase the given transaction's gasTipCap. +func IncreaseGasTipCap( + ctx context.Context, + cli *Client, + opts *bind.TransactOpts, + address common.Address, + txReplacementTipMultiplier *big.Int, + maxGasTipCap *big.Int, +) (*bind.TransactOpts, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + log.Info("Try replacing a transaction with same nonce", "sender", address, "nonce", opts.Nonce) + + originalTx, err := GetPendingTxByNonce(ctxWithTimeout, cli.L1, address, opts.Nonce.Uint64()) + if err != nil || originalTx == nil { + log.Warn( + "Original transaction not found", + "sender", address, + "nonce", opts.Nonce, + "error", err, + ) + + opts.GasTipCap = new(big.Int).Mul(opts.GasTipCap, txReplacementTipMultiplier) + } else { + log.Info( + "Original transaction to replace", + "sender", address, + "nonce", opts.Nonce, + "gasTipCap", originalTx.GasTipCap(), + "gasFeeCap", originalTx.GasFeeCap(), + ) + + opts.GasTipCap = new(big.Int).Mul(originalTx.GasTipCap(), txReplacementTipMultiplier) + } + + if maxGasTipCap != nil && opts.GasTipCap.Cmp(maxGasTipCap) > 0 { + log.Info( + "New gasTipCap exceeds limit, keep waiting", + "multiplier", txReplacementTipMultiplier, + "newGasTipCap", opts.GasTipCap, + "maxTipCap", maxGasTipCap, + ) + return nil, txpool.ErrReplaceUnderpriced + } + + return opts, nil +} + +// GetPendingTxByNonce tries to retrieve a pending transaction with a given nonce in a node's mempool. +func GetPendingTxByNonce( + ctx context.Context, + cli *EthClient, + address common.Address, + nonce uint64, +) (*types.Transaction, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + content, err := ContentFrom(ctxWithTimeout, cli, address) + if err != nil { + return nil, err + } + + for _, txMap := range content { + for txNonce, tx := range txMap { + if txNonce == strconv.Itoa(int(nonce)) { + return tx, nil + } + } + } + + return nil, nil +} + +// SetHead makes a `debug_setHead` RPC call to set the chain's head, should only be used +// for testing purpose. +func SetHead(ctx context.Context, client *EthClient, headNum *big.Int) error { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout) + defer cancel() + + return client.SetHead(ctxWithTimeout, headNum) +} + +// StringToBytes32 converts the given string to [32]byte. +func StringToBytes32(str string) [32]byte { + var b [32]byte + copy(b[:], []byte(str)) + + return b +} + +// ctxWithTimeoutOrDefault sets a context timeout if the deadline has not passed or is not set, +// and otherwise returns the context as passed in. cancel func is always set to an empty function +// so is safe to defer the cancel. +func ctxWithTimeoutOrDefault(ctx context.Context, defaultTimeout time.Duration) (context.Context, context.CancelFunc) { + if utils.IsNil(ctx) { + return context.WithTimeout(context.Background(), defaultTimeout) + } + if _, ok := ctx.Deadline(); !ok { + return context.WithTimeout(ctx, defaultTimeout) + } + + return ctx, func() {} +} diff --git a/packages/taiko-client/pkg/rpc/utils_test.go b/packages/taiko-client/pkg/rpc/utils_test.go new file mode 100644 index 00000000000..bc5d84245b1 --- /dev/null +++ b/packages/taiko-client/pkg/rpc/utils_test.go @@ -0,0 +1,59 @@ +package rpc + +import ( + "context" + "math/big" + "os" + "strconv" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" + "github.com/stretchr/testify/require" +) + +func TestSetHead(t *testing.T) { + require.Nil(t, SetHead(context.Background(), newTestClient(t).L2, common.Big0)) +} + +func TestStringToBytes32(t *testing.T) { + require.Equal(t, [32]byte{}, StringToBytes32("")) + require.Equal(t, [32]byte{0x61, 0x62, 0x63}, StringToBytes32("abc")) +} + +func TestL1ContentFrom(t *testing.T) { + client := newTestClient(t) + l2Head, err := client.L2.HeaderByNumber(context.Background(), nil) + require.Nil(t, err) + + baseFeeInfo, err := client.TaikoL2.GetBasefee(nil, 0, uint32(l2Head.GasUsed)) + require.Nil(t, err) + + testAddrPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + require.Nil(t, err) + + testAddr := crypto.PubkeyToAddress(testAddrPrivKey.PublicKey) + + nonce, err := client.L2.PendingNonceAt(context.Background(), testAddr) + require.Nil(t, err) + + tx := types.NewTransaction( + nonce, + testAddr, + common.Big1, + 100000, + new(big.Int).SetUint64(uint64(10*params.GWei)+baseFeeInfo.Basefee.Uint64()), + []byte{}, + ) + signedTx, err := types.SignTx(tx, types.LatestSignerForChainID(client.L2.ChainID), testAddrPrivKey) + require.Nil(t, err) + require.Nil(t, client.L2.SendTransaction(context.Background(), signedTx)) + + content, err := ContentFrom(context.Background(), client.L2, testAddr) + require.Nil(t, err) + + require.NotZero(t, len(content["pending"])) + require.Equal(t, signedTx.Nonce(), content["pending"][strconv.Itoa(int(signedTx.Nonce()))].Nonce()) +} diff --git a/packages/taiko-client/proposer/config.go b/packages/taiko-client/proposer/config.go new file mode 100644 index 00000000000..50eee5da2b3 --- /dev/null +++ b/packages/taiko-client/proposer/config.go @@ -0,0 +1,136 @@ +package proposer + +import ( + "crypto/ecdsa" + "fmt" + "math/big" + "net/url" + "strings" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + + pkgFlags "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/flags" +) + +// Config contains all configurations to initialize a Taiko proposer. +type Config struct { + *rpc.ClientConfig + AssignmentHookAddress common.Address + L1ProposerPrivKey *ecdsa.PrivateKey + L2SuggestedFeeRecipient common.Address + ExtraData string + ProposeInterval time.Duration + LocalAddresses []common.Address + LocalAddressesOnly bool + MinGasUsed uint64 + MinTxListBytes uint64 + MinProposingInternal time.Duration + MaxProposedTxListsPerEpoch uint64 + ProposeBlockTxGasLimit uint64 + ProverEndpoints []*url.URL + OptimisticTierFee *big.Int + SgxTierFee *big.Int + TierFeePriceBump *big.Int + MaxTierFeePriceBumps uint64 + IncludeParentMetaHash bool + BlobAllowed bool + TxmgrConfigs *txmgr.CLIConfig + L1BlockBuilderTip *big.Int +} + +// NewConfigFromCliContext initializes a Config instance from +// command line flags. +func NewConfigFromCliContext(c *cli.Context) (*Config, error) { + jwtSecret, err := jwt.ParseSecretFromFile(c.String(flags.JWTSecret.Name)) + if err != nil { + return nil, fmt.Errorf("invalid JWT secret file: %w", err) + } + + l1ProposerPrivKey, err := crypto.ToECDSA( + common.Hex2Bytes(c.String(flags.L1ProposerPrivKey.Name)), + ) + if err != nil { + return nil, fmt.Errorf("invalid L1 proposer private key: %w", err) + } + + l2SuggestedFeeRecipient := c.String(flags.L2SuggestedFeeRecipient.Name) + if !common.IsHexAddress(l2SuggestedFeeRecipient) { + return nil, fmt.Errorf("invalid L2 suggested fee recipient address: %s", l2SuggestedFeeRecipient) + } + + var localAddresses []common.Address + if c.IsSet(flags.TxPoolLocals.Name) { + for _, account := range strings.Split(c.String(flags.TxPoolLocals.Name), ",") { + if trimmed := strings.TrimSpace(account); !common.IsHexAddress(trimmed) { + return nil, fmt.Errorf("invalid account in --txpool.locals: %s", trimmed) + } + localAddresses = append(localAddresses, common.HexToAddress(account)) + } + } + + var proverEndpoints []*url.URL + for _, e := range strings.Split(c.String(flags.ProverEndpoints.Name), ",") { + endpoint, err := url.Parse(e) + if err != nil { + return nil, err + } + proverEndpoints = append(proverEndpoints, endpoint) + } + + optimisticTierFee, err := utils.GWeiToWei(c.Float64(flags.OptimisticTierFee.Name)) + if err != nil { + return nil, err + } + + sgxTierFee, err := utils.GWeiToWei(c.Float64(flags.SgxTierFee.Name)) + if err != nil { + return nil, err + } + + return &Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: c.String(flags.L1WSEndpoint.Name), + L2Endpoint: c.String(flags.L2HTTPEndpoint.Name), + TaikoL1Address: common.HexToAddress(c.String(flags.TaikoL1Address.Name)), + TaikoL2Address: common.HexToAddress(c.String(flags.TaikoL2Address.Name)), + L2EngineEndpoint: c.String(flags.L2AuthEndpoint.Name), + JwtSecret: string(jwtSecret), + TaikoTokenAddress: common.HexToAddress(c.String(flags.TaikoTokenAddress.Name)), + Timeout: c.Duration(flags.RPCTimeout.Name), + }, + AssignmentHookAddress: common.HexToAddress(c.String(flags.AssignmentHookAddress.Name)), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(l2SuggestedFeeRecipient), + ExtraData: c.String(flags.ExtraData.Name), + ProposeInterval: c.Duration(flags.ProposeInterval.Name), + LocalAddresses: localAddresses, + LocalAddressesOnly: c.Bool(flags.TxPoolLocalsOnly.Name), + MinGasUsed: c.Uint64(flags.MinGasUsed.Name), + MinTxListBytes: c.Uint64(flags.MinTxListBytes.Name), + MinProposingInternal: c.Duration(flags.MinProposingInternal.Name), + MaxProposedTxListsPerEpoch: c.Uint64(flags.MaxProposedTxListsPerEpoch.Name), + ProposeBlockTxGasLimit: c.Uint64(flags.TxGasLimit.Name), + ProverEndpoints: proverEndpoints, + OptimisticTierFee: optimisticTierFee, + SgxTierFee: sgxTierFee, + TierFeePriceBump: new(big.Int).SetUint64(c.Uint64(flags.TierFeePriceBump.Name)), + MaxTierFeePriceBumps: c.Uint64(flags.MaxTierFeePriceBumps.Name), + IncludeParentMetaHash: c.Bool(flags.ProposeBlockIncludeParentMetaHash.Name), + BlobAllowed: c.Bool(flags.BlobAllowed.Name), + L1BlockBuilderTip: new(big.Int).SetUint64(c.Uint64(flags.L1BlockBuilderTip.Name)), + TxmgrConfigs: pkgFlags.InitTxmgrConfigsFromCli( + c.String(flags.L1WSEndpoint.Name), + l1ProposerPrivKey, + c, + ), + }, nil +} diff --git a/packages/taiko-client/proposer/config_test.go b/packages/taiko-client/proposer/config_test.go new file mode 100644 index 00000000000..47707e55d56 --- /dev/null +++ b/packages/taiko-client/proposer/config_test.go @@ -0,0 +1,154 @@ +package proposer + +import ( + "context" + "fmt" + "os" + "strings" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +var ( + l1Endpoint = os.Getenv("L1_NODE_WS_ENDPOINT") + l2Endpoint = os.Getenv("L2_EXECUTION_ENGINE_HTTP_ENDPOINT") + taikoL1 = os.Getenv("TAIKO_L1_ADDRESS") + taikoL2 = os.Getenv("TAIKO_L2_ADDRESS") + taikoToken = os.Getenv("TAIKO_TOKEN_ADDRESS") + proverEndpoints = "http://localhost:9876,http://localhost:1234" + tierFee = 100.0 + proposeInterval = "10s" + rpcTimeout = "5s" +) + +func (s *ProposerTestSuite) TestNewConfigFromCliContext() { + goldenTouchAddress, err := s.RPCClient.TaikoL2.GOLDENTOUCHADDRESS(nil) + s.Nil(err) + + app := s.SetupApp() + + app.Action = func(cliCtx *cli.Context) error { + c, err := NewConfigFromCliContext(cliCtx) + s.Nil(err) + s.Equal(l1Endpoint, c.L1Endpoint) + s.Equal(l2Endpoint, c.L2Endpoint) + s.Equal(taikoL1, c.TaikoL1Address.String()) + s.Equal(taikoL2, c.TaikoL2Address.String()) + s.Equal(taikoToken, c.TaikoTokenAddress.String()) + s.Equal(goldenTouchAddress, crypto.PubkeyToAddress(c.L1ProposerPrivKey.PublicKey)) + s.Equal(goldenTouchAddress, c.L2SuggestedFeeRecipient) + s.Equal(float64(10), c.ProposeInterval.Seconds()) + s.Equal(1, len(c.LocalAddresses)) + s.Equal(goldenTouchAddress, c.LocalAddresses[0]) + s.Equal(5*time.Second, c.Timeout) + tierFeeGWei, err := utils.GWeiToWei(tierFee) + s.Nil(err) + s.Equal(tierFeeGWei.Uint64(), c.OptimisticTierFee.Uint64()) + s.Equal(tierFeeGWei.Uint64(), c.SgxTierFee.Uint64()) + s.Equal(uint64(15), c.TierFeePriceBump.Uint64()) + s.Equal(uint64(5), c.MaxTierFeePriceBumps) + s.Equal(true, c.IncludeParentMetaHash) + + for i, e := range strings.Split(proverEndpoints, ",") { + s.Equal(c.ProverEndpoints[i].String(), e) + } + + s.Nil(new(Proposer).InitFromCli(context.Background(), cliCtx)) + return nil + } + + s.Nil(app.Run([]string{ + "TestNewConfigFromCliContext", + "--" + flags.L1WSEndpoint.Name, l1Endpoint, + "--" + flags.L2HTTPEndpoint.Name, l2Endpoint, + "--" + flags.TaikoL1Address.Name, taikoL1, + "--" + flags.TaikoL2Address.Name, taikoL2, + "--" + flags.TaikoTokenAddress.Name, taikoToken, + "--" + flags.L1ProposerPrivKey.Name, encoding.GoldenTouchPrivKey, + "--" + flags.L2SuggestedFeeRecipient.Name, goldenTouchAddress.Hex(), + "--" + flags.ProposeInterval.Name, proposeInterval, + "--" + flags.TxPoolLocals.Name, goldenTouchAddress.Hex(), + "--" + flags.RPCTimeout.Name, rpcTimeout, + "--" + flags.TxGasLimit.Name, "100000", + "--" + flags.ProverEndpoints.Name, proverEndpoints, + "--" + flags.OptimisticTierFee.Name, fmt.Sprint(tierFee), + "--" + flags.SgxTierFee.Name, fmt.Sprint(tierFee), + "--" + flags.TierFeePriceBump.Name, "15", + "--" + flags.MaxTierFeePriceBumps.Name, "5", + "--" + flags.ProposeBlockIncludeParentMetaHash.Name, "true", + })) +} + +func (s *ProposerTestSuite) TestNewConfigFromCliContextPrivKeyErr() { + app := s.SetupApp() + + s.ErrorContains(app.Run([]string{ + "TestNewConfigFromCliContextPrivKeyErr", + "--" + flags.L1ProposerPrivKey.Name, string(common.FromHex("0x")), + }), "invalid L1 proposer private key") +} + +func (s *ProposerTestSuite) TestNewConfigFromCliContextL2RecipErr() { + app := s.SetupApp() + + s.ErrorContains(app.Run([]string{ + "TestNewConfigFromCliContextL2RecipErr", + "--" + flags.L1ProposerPrivKey.Name, encoding.GoldenTouchPrivKey, + "--" + flags.ProposeInterval.Name, proposeInterval, + "--" + flags.MinProposingInternal.Name, proposeInterval, + "--" + flags.L2SuggestedFeeRecipient.Name, "notAnAddress", + }), "invalid L2 suggested fee recipient address") +} + +func (s *ProposerTestSuite) TestNewConfigFromCliContextTxPoolLocalsErr() { + goldenTouchAddress, err := s.RPCClient.TaikoL2.GOLDENTOUCHADDRESS(nil) + s.Nil(err) + + app := s.SetupApp() + + s.ErrorContains(app.Run([]string{ + "TestNewConfigFromCliContextTxPoolLocalsErr", + "--" + flags.L1ProposerPrivKey.Name, encoding.GoldenTouchPrivKey, + "--" + flags.ProposeInterval.Name, proposeInterval, + "--" + flags.MinProposingInternal.Name, proposeInterval, + "--" + flags.L2SuggestedFeeRecipient.Name, goldenTouchAddress.Hex(), + "--" + flags.TxPoolLocals.Name, "notAnAddress", + }), "invalid account in --txpool.locals") +} + +func (s *ProposerTestSuite) SetupApp() *cli.App { + app := cli.NewApp() + app.Flags = []cli.Flag{ + &cli.StringFlag{Name: flags.L1WSEndpoint.Name}, + &cli.StringFlag{Name: flags.L2HTTPEndpoint.Name}, + &cli.StringFlag{Name: flags.TaikoL1Address.Name}, + &cli.StringFlag{Name: flags.TaikoL2Address.Name}, + &cli.StringFlag{Name: flags.TaikoTokenAddress.Name}, + &cli.StringFlag{Name: flags.L1ProposerPrivKey.Name}, + &cli.StringFlag{Name: flags.L2SuggestedFeeRecipient.Name}, + &cli.DurationFlag{Name: flags.MinProposingInternal.Name}, + &cli.DurationFlag{Name: flags.ProposeInterval.Name}, + &cli.StringFlag{Name: flags.TxPoolLocals.Name}, + &cli.StringFlag{Name: flags.ProverEndpoints.Name}, + &cli.Uint64Flag{Name: flags.OptimisticTierFee.Name}, + &cli.Uint64Flag{Name: flags.SgxTierFee.Name}, + &cli.DurationFlag{Name: flags.RPCTimeout.Name}, + &cli.Uint64Flag{Name: flags.TierFeePriceBump.Name}, + &cli.Uint64Flag{Name: flags.MaxTierFeePriceBumps.Name}, + &cli.BoolFlag{Name: flags.ProposeBlockIncludeParentMetaHash.Name}, + &cli.StringFlag{Name: flags.AssignmentHookAddress.Name}, + } + app.Flags = append(app.Flags, flags.TxmgrFlags...) + app.Action = func(ctx *cli.Context) error { + _, err := NewConfigFromCliContext(ctx) + return err + } + return app +} diff --git a/packages/taiko-client/proposer/proposer.go b/packages/taiko-client/proposer/proposer.go new file mode 100644 index 00000000000..fde28b0f43f --- /dev/null +++ b/packages/taiko-client/proposer/proposer.go @@ -0,0 +1,426 @@ +package proposer + +import ( + "bytes" + "context" + "fmt" + "math/rand" + "sync" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" + "github.com/urfave/cli/v2" + "golang.org/x/sync/errgroup" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + selector "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/prover_selector" + builder "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/transaction_builder" +) + +var ( + proverAssignmentTimeout = 30 * time.Minute + requestProverServerTimeout = 12 * time.Second +) + +// Proposer keep proposing new transactions from L2 execution engine's tx pool at a fixed interval. +type Proposer struct { + // configurations + *Config + + // RPC clients + rpc *rpc.Client + + // Private keys and account addresses + proposerAddress common.Address + + proposingTimer *time.Timer + + tiers []*rpc.TierProviderTierWithID + tierFees []encoding.TierFee + + // Prover selector + proverSelector selector.ProverSelector + + // Transaction builder + txBuilder builder.ProposeBlockTransactionBuilder + + // Protocol configurations + protocolConfigs *bindings.TaikoDataConfig + + lastProposedAt time.Time + + txmgr *txmgr.SimpleTxManager + + ctx context.Context + wg sync.WaitGroup +} + +// InitFromCli New initializes the given proposer instance based on the command line flags. +func (p *Proposer) InitFromCli(ctx context.Context, c *cli.Context) error { + cfg, err := NewConfigFromCliContext(c) + if err != nil { + return err + } + + return p.InitFromConfig(ctx, cfg) +} + +// InitFromConfig initializes the proposer instance based on the given configurations. +func (p *Proposer) InitFromConfig(ctx context.Context, cfg *Config) (err error) { + p.proposerAddress = crypto.PubkeyToAddress(cfg.L1ProposerPrivKey.PublicKey) + p.ctx = ctx + p.Config = cfg + p.lastProposedAt = time.Now() + + // RPC clients + if p.rpc, err = rpc.NewClient(p.ctx, cfg.ClientConfig); err != nil { + return fmt.Errorf("initialize rpc clients error: %w", err) + } + + // Protocol configs + protocolConfigs, err := p.rpc.TaikoL1.GetConfig(&bind.CallOpts{Context: ctx}) + if err != nil { + return fmt.Errorf("failed to get protocol configs: %w", err) + } + p.protocolConfigs = &protocolConfigs + + log.Info("Protocol configs", "configs", p.protocolConfigs) + + if p.tiers, err = p.rpc.GetTiers(ctx); err != nil { + return err + } + if err := p.initTierFees(); err != nil { + return err + } + + if p.txmgr, err = txmgr.NewSimpleTxManager( + "proposer", + log.Root(), + &metrics.TxMgrMetrics, + *cfg.TxmgrConfigs, + ); err != nil { + return err + } + + if p.proverSelector, err = selector.NewETHFeeEOASelector( + &protocolConfigs, + p.rpc, + p.proposerAddress, + cfg.TaikoL1Address, + cfg.AssignmentHookAddress, + p.tierFees, + cfg.TierFeePriceBump, + cfg.ProverEndpoints, + cfg.MaxTierFeePriceBumps, + proverAssignmentTimeout, + requestProverServerTimeout, + ); err != nil { + return err + } + + if cfg.BlobAllowed { + p.txBuilder = builder.NewBlobTransactionBuilder( + p.rpc, + p.L1ProposerPrivKey, + p.proverSelector, + p.Config.L1BlockBuilderTip, + cfg.TaikoL1Address, + cfg.L2SuggestedFeeRecipient, + cfg.AssignmentHookAddress, + cfg.ProposeBlockTxGasLimit, + cfg.ExtraData, + ) + } else { + p.txBuilder = builder.NewCalldataTransactionBuilder( + p.rpc, + p.L1ProposerPrivKey, + p.proverSelector, + p.Config.L1BlockBuilderTip, + cfg.L2SuggestedFeeRecipient, + cfg.TaikoL1Address, + cfg.AssignmentHookAddress, + cfg.ProposeBlockTxGasLimit, + cfg.ExtraData, + ) + } + + return nil +} + +// Start starts the proposer's main loop. +func (p *Proposer) Start() error { + p.wg.Add(1) + go p.eventLoop() + return nil +} + +// eventLoop starts the main loop of Taiko proposer. +func (p *Proposer) eventLoop() { + defer func() { + p.proposingTimer.Stop() + p.wg.Done() + }() + + for { + p.updateProposingTicker() + + select { + case <-p.ctx.Done(): + return + // proposing interval timer has been reached + case <-p.proposingTimer.C: + metrics.ProposerProposeEpochCounter.Add(1) + + // Attempt a proposing operation + if err := p.ProposeOp(p.ctx); err != nil { + log.Error("Proposing operation error", "error", err) + continue + } + } + } +} + +// Close closes the proposer instance. +func (p *Proposer) Close(_ context.Context) { + p.wg.Wait() +} + +// fetchPoolContent fetches the transaction pool content from L2 execution engine. +func (p *Proposer) fetchPoolContent(filterPoolContent bool) ([]types.Transactions, error) { + // Fetch the pool content. + preBuiltTxList, err := p.rpc.GetPoolContent( + p.ctx, + p.proposerAddress, + p.protocolConfigs.BlockMaxGasLimit, + rpc.BlockMaxTxListBytes, + p.LocalAddresses, + p.MaxProposedTxListsPerEpoch, + ) + if err != nil { + return nil, fmt.Errorf("failed to fetch transaction pool content: %w", err) + } + + txLists := []types.Transactions{} + for i, txs := range preBuiltTxList { + // Filter the pool content if the filterPoolContent flag is set. + if txs.EstimatedGasUsed < p.MinGasUsed && txs.BytesLength < p.MinTxListBytes && filterPoolContent { + log.Info( + "Pool content skipped", + "index", i, + "estimatedGasUsed", txs.EstimatedGasUsed, + "minGasUsed", p.MinGasUsed, + "bytesLength", txs.BytesLength, + "minBytesLength", p.MinTxListBytes, + ) + break + } + txLists = append(txLists, txs.TxList) + } + // If the pool content is empty and the checkPoolContent flag is not set, return an empty list. + if !filterPoolContent && len(txLists) == 0 { + log.Info( + "Pool content is empty, proposing an empty block", + "lastProposedAt", p.lastProposedAt, + "minProposingInternal", p.MinProposingInternal, + ) + txLists = append(txLists, types.Transactions{}) + } + + // If LocalAddressesOnly is set, filter the transactions by the local addresses. + if p.LocalAddressesOnly { + var ( + localTxsLists []types.Transactions + signer = types.LatestSignerForChainID(p.rpc.L2.ChainID) + ) + for _, txs := range txLists { + var filtered types.Transactions + for _, tx := range txs { + sender, err := types.Sender(signer, tx) + if err != nil { + return nil, err + } + + for _, localAddress := range p.LocalAddresses { + if sender == localAddress { + filtered = append(filtered, tx) + } + } + } + + if filtered.Len() != 0 { + localTxsLists = append(localTxsLists, filtered) + } + } + txLists = localTxsLists + } + + log.Info("Transactions lists count", "count", len(txLists)) + + return txLists, nil +} + +// ProposeOp performs a proposing operation, fetching transactions +// from L2 execution engine's tx pool, splitting them by proposing constraints, +// and then proposing them to TaikoL1 contract. +func (p *Proposer) ProposeOp(ctx context.Context) error { + // Check if it's time to propose unfiltered pool content. + filterPoolContent := time.Now().Before(p.lastProposedAt.Add(p.MinProposingInternal)) + + // Wait until L2 execution engine is synced at first. + if err := p.rpc.WaitTillL2ExecutionEngineSynced(ctx); err != nil { + return fmt.Errorf("failed to wait until L2 execution engine synced: %w", err) + } + + log.Info( + "Start fetching L2 execution engine's transaction pool content", + "filterPoolContent", filterPoolContent, + "lastProposedAt", p.lastProposedAt, + ) + + txLists, err := p.fetchPoolContent(filterPoolContent) + if err != nil { + return err + } + + // If the pool content is empty, return. + if len(txLists) == 0 { + return nil + } + + g, gCtx := errgroup.WithContext(ctx) + // Propose all L2 transactions lists. + for _, txs := range txLists[:utils.Min(p.MaxProposedTxListsPerEpoch, uint64(len(txLists)))] { + nonce, err := p.rpc.L1.PendingNonceAt(ctx, p.proposerAddress) + if err != nil { + log.Error("Failed to get proposer nonce", "error", err) + break + } + + log.Info("Proposer current pending nonce", "nonce", nonce) + + g.Go(func() error { + txListBytes, err := rlp.EncodeToBytes(txs) + if err != nil { + return fmt.Errorf("failed to encode transactions: %w", err) + } + if err := p.ProposeTxList(gCtx, txListBytes, uint(txs.Len())); err != nil { + return err + } + p.lastProposedAt = time.Now() + return nil + }) + + if err := p.rpc.WaitL1NewPendingTransaction(ctx, p.proposerAddress, nonce); err != nil { + log.Error("Failed to wait for new pending transaction", "error", err) + } + } + if err := g.Wait(); err != nil { + return err + } + + return nil +} + +// ProposeTxList proposes the given transactions list to TaikoL1 smart contract. +func (p *Proposer) ProposeTxList( + ctx context.Context, + txListBytes []byte, + txNum uint, +) error { + compressedTxListBytes, err := utils.Compress(txListBytes) + if err != nil { + return err + } + + txCandidate, err := p.txBuilder.Build( + ctx, + p.tierFees, + p.IncludeParentMetaHash, + compressedTxListBytes, + ) + if err != nil { + log.Warn("Failed to build TaikoL1.proposeBlock transaction", "error", encoding.TryParsingCustomError(err)) + return err + } + + receipt, err := p.txmgr.Send(ctx, *txCandidate) + if err != nil { + log.Warn("Failed to send TaikoL1.proposeBlock transaction", "error", encoding.TryParsingCustomError(err)) + return err + } + + if receipt.Status != types.ReceiptStatusSuccessful { + return fmt.Errorf("failed to propose block: %s", receipt.TxHash.Hex()) + } + + log.Info("📝 Propose transactions succeeded", "txs", txNum) + + metrics.ProposerProposedTxListsCounter.Add(1) + metrics.ProposerProposedTxsCounter.Add(float64(txNum)) + + return nil +} + +// updateProposingTicker updates the internal proposing timer. +func (p *Proposer) updateProposingTicker() { + if p.proposingTimer != nil { + p.proposingTimer.Stop() + } + + var duration time.Duration + if p.ProposeInterval != 0 { + duration = p.ProposeInterval + } else { + // Random number between 12 - 120 + randomSeconds := rand.Intn(120-11) + 12 // nolint: gosec + duration = time.Duration(randomSeconds) * time.Second + } + + p.proposingTimer = time.NewTimer(duration) +} + +// Name returns the application name. +func (p *Proposer) Name() string { + return "proposer" +} + +// initTierFees initializes the proving fees for every proof tier configured in the protocol for the proposer. +func (p *Proposer) initTierFees() error { + for _, tier := range p.tiers { + log.Info( + "Protocol tier", + "id", tier.ID, + "name", string(bytes.TrimRight(tier.VerifierName[:], "\x00")), + "validityBond", utils.WeiToEther(tier.ValidityBond), + "contestBond", utils.WeiToEther(tier.ContestBond), + "provingWindow", tier.ProvingWindow, + "cooldownWindow", tier.CooldownWindow, + ) + + switch tier.ID { + case encoding.TierOptimisticID: + p.tierFees = append(p.tierFees, encoding.TierFee{Tier: tier.ID, Fee: p.OptimisticTierFee}) + case encoding.TierSgxID: + p.tierFees = append(p.tierFees, encoding.TierFee{Tier: tier.ID, Fee: p.SgxTierFee}) + case encoding.TierGuardianMinorityID: + p.tierFees = append(p.tierFees, encoding.TierFee{Tier: tier.ID, Fee: common.Big0}) + case encoding.TierGuardianMajorityID: + // Guardian prover should not charge any fee. + p.tierFees = append(p.tierFees, encoding.TierFee{Tier: tier.ID, Fee: common.Big0}) + default: + return fmt.Errorf("unknown tier: %d", tier.ID) + } + } + + return nil +} diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go new file mode 100644 index 00000000000..45b85752cd0 --- /dev/null +++ b/packages/taiko-client/proposer/proposer_test.go @@ -0,0 +1,284 @@ +package proposer + +import ( + "context" + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/miner" + "github.com/ethereum/go-ethereum/rlp" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/blob" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + builder "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/transaction_builder" +) + +type ProposerTestSuite struct { + testutils.ClientTestSuite + s *blob.Syncer + p *Proposer + cancel context.CancelFunc +} + +func (s *ProposerTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + state2, err := state.New(context.Background(), s.RPCClient) + s.Nil(err) + + syncer, err := blob.NewSyncer( + context.Background(), + s.RPCClient, + state2, + beaconsync.NewSyncProgressTracker(s.RPCClient.L2, 1*time.Hour), + 0, + nil, + ) + s.Nil(err) + s.s = syncer + + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + p := new(Proposer) + + ctx, cancel := context.WithCancel(context.Background()) + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) + + s.Nil(p.InitFromConfig(ctx, &Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_HTTP_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: string(jwtSecret), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + }, + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), + MinProposingInternal: 0, + ProposeInterval: 1024 * time.Hour, + MaxProposedTxListsPerEpoch: 1, + ProverEndpoints: s.ProverEndpoints, + OptimisticTierFee: common.Big256, + SgxTierFee: common.Big256, + TierFeePriceBump: common.Big2, + MaxTierFeePriceBumps: 3, + ExtraData: "test", + L1BlockBuilderTip: common.Big0, + BlobAllowed: true, + ProposeBlockTxGasLimit: 10_000_000, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProposerPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + + s.p = p + s.cancel = cancel +} + +func (s *ProposerTestSuite) TestProposeTxLists() { + p := s.p + ctx := p.ctx + cfg := s.p.Config + + txBuilder := builder.NewBlobTransactionBuilder( + p.rpc, + p.L1ProposerPrivKey, + p.proverSelector, + p.Config.L1BlockBuilderTip, + cfg.TaikoL1Address, + cfg.L2SuggestedFeeRecipient, + cfg.AssignmentHookAddress, + cfg.ProposeBlockTxGasLimit, + cfg.ExtraData, + ) + + emptyTxListBytes, err := rlp.EncodeToBytes(types.Transactions{}) + s.Nil(err) + txListsBytes := [][]byte{emptyTxListBytes} + txCandidates := make([]txmgr.TxCandidate, len(txListsBytes)) + for i, txListBytes := range txListsBytes { + compressedTxListBytes, err := utils.Compress(txListBytes) + if err != nil { + log.Warn("Failed to compress transactions list", "index", i, "error", err) + break + } + + candidate, err := txBuilder.Build( + p.ctx, + p.tierFees, + p.IncludeParentMetaHash, + compressedTxListBytes, + ) + if err != nil { + log.Warn("Failed to build TaikoL1.proposeBlock transaction", "error", err) + break + } + + // trigger the error + candidate.GasLimit = 10_000_000 + + txCandidates[i] = *candidate + } + + for _, txCandidate := range txCandidates { + receipt, err := p.txmgr.Send(ctx, txCandidate) + s.Nil(err) + s.Nil(encoding.TryParsingCustomErrorFromReceipt(ctx, p.rpc.L1, p.proposerAddress, receipt)) + } +} + +func (s *ProposerTestSuite) TestProposeOpNoEmptyBlock() { + defer s.Nil(s.s.ProcessL1Blocks(context.Background())) + + p := s.p + + batchSize := 100 + + var err error + for i := 0; i < batchSize; i++ { + to := common.BytesToAddress(testutils.RandomBytes(32)) + _, err = testutils.SendDynamicFeeTx(s.RPCClient.L2, s.TestAddrPrivKey, &to, nil, nil) + s.Nil(err) + } + + var preBuiltTxList []*miner.PreBuiltTxList + for i := 0; i < 3 && len(preBuiltTxList) == 0; i++ { + preBuiltTxList, err = s.RPCClient.GetPoolContent( + context.Background(), + p.proposerAddress, + p.protocolConfigs.BlockMaxGasLimit, + rpc.BlockMaxTxListBytes, + p.LocalAddresses, + p.MaxProposedTxListsPerEpoch, + ) + time.Sleep(time.Second) + } + s.Nil(err) + s.Equal(true, len(preBuiltTxList) > 0) + + var ( + blockMinGasLimit uint64 = math.MaxUint64 + blockMinTxListBytes uint64 = math.MaxUint64 + ) + for _, txs := range preBuiltTxList { + if txs.EstimatedGasUsed <= blockMinGasLimit { + blockMinGasLimit = txs.EstimatedGasUsed + } else { + break + } + if txs.BytesLength <= blockMinTxListBytes { + blockMinTxListBytes = txs.BytesLength + } else { + break + } + } + + // Start proposer + p.LocalAddressesOnly = false + p.MinGasUsed = blockMinGasLimit + p.MinTxListBytes = blockMinTxListBytes + p.ProposeInterval = time.Second + p.MinProposingInternal = time.Minute + s.Nil(p.ProposeOp(context.Background())) +} + +func (s *ProposerTestSuite) TestName() { + s.Equal("proposer", s.p.Name()) +} + +func (s *ProposerTestSuite) TestProposeOp() { + // Propose txs in L2 execution engine's mempool + sink := make(chan *bindings.TaikoL1ClientBlockProposed) + + sub, err := s.p.rpc.TaikoL1.WatchBlockProposed(nil, sink, nil, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + to := common.BytesToAddress(testutils.RandomBytes(32)) + _, err = testutils.SendDynamicFeeTx(s.p.rpc.L2, s.TestAddrPrivKey, &to, common.Big1, nil) + s.Nil(err) + + s.Nil(s.p.ProposeOp(context.Background())) + + event := <-sink + + s.Equal(event.Meta.Coinbase, s.p.L2SuggestedFeeRecipient) + + _, isPending, err := s.p.rpc.L1.TransactionByHash(context.Background(), event.Raw.TxHash) + s.Nil(err) + s.False(isPending) + + receipt, err := s.p.rpc.L1.TransactionReceipt(context.Background(), event.Raw.TxHash) + s.Nil(err) + s.Equal(types.ReceiptStatusSuccessful, receipt.Status) +} + +func (s *ProposerTestSuite) TestProposeEmptyBlockOp() { + s.p.MinProposingInternal = 1 * time.Second + s.p.lastProposedAt = time.Now().Add(-10 * time.Second) + s.Nil(s.p.ProposeOp(context.Background())) +} + +func (s *ProposerTestSuite) TestAssignProverSuccessFirstRound() { + s.SetL1Automine(false) + defer s.SetL1Automine(true) + + _, _, fee, err := s.p.proverSelector.AssignProver(context.Background(), s.p.tierFees, testutils.RandomHash()) + + s.Nil(err) + s.Equal(fee.Uint64(), s.p.OptimisticTierFee.Uint64()) +} + +func (s *ProposerTestSuite) TestUpdateProposingTicker() { + s.p.ProposeInterval = 1 * time.Hour + s.NotPanics(s.p.updateProposingTicker) + + s.p.ProposeInterval = 0 + s.NotPanics(s.p.updateProposingTicker) +} + +func (s *ProposerTestSuite) TestStartClose() { + s.Nil(s.p.Start()) + s.cancel() + s.NotPanics(func() { s.p.Close(s.p.ctx) }) +} + +func TestProposerTestSuite(t *testing.T) { + suite.Run(t, new(ProposerTestSuite)) +} diff --git a/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go new file mode 100644 index 00000000000..4c7abd39452 --- /dev/null +++ b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector.go @@ -0,0 +1,283 @@ +package selector + +import ( + "context" + "errors" + "fmt" + "math/big" + "math/rand" + "net/url" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/go-resty/resty/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/server" +) + +var ( + httpScheme = "http" + httpsScheme = "https" + errEmptyProverEndpoints = errors.New("empty prover endpoints") + errUnableToFindProver = errors.New("unable to find prover") +) + +// ETHFeeEOASelector is a prover selector implementation which use ETHs as prover fee and +// all provers selected must be EOA accounts. +type ETHFeeEOASelector struct { + protocolConfigs *bindings.TaikoDataConfig + rpc *rpc.Client + proposerAddress common.Address + taikoL1Address common.Address + assignmentHookAddress common.Address + tiersFee []encoding.TierFee + tierFeePriceBump *big.Int + proverEndpoints []*url.URL + maxTierFeePriceBumpIterations uint64 + proposalExpiry time.Duration + requestTimeout time.Duration +} + +// NewETHFeeEOASelector creates a new ETHFeeEOASelector instance. +func NewETHFeeEOASelector( + protocolConfigs *bindings.TaikoDataConfig, + rpc *rpc.Client, + proposerAddress common.Address, + taikoL1Address common.Address, + assignmentHookAddress common.Address, + tiersFee []encoding.TierFee, + tierFeePriceBump *big.Int, + proverEndpoints []*url.URL, + maxTierFeePriceBumpIterations uint64, + proposalExpiry time.Duration, + requestTimeout time.Duration, +) (*ETHFeeEOASelector, error) { + if len(proverEndpoints) == 0 { + return nil, errEmptyProverEndpoints + } + + for _, endpoint := range proverEndpoints { + if endpoint.Scheme != httpScheme && endpoint.Scheme != httpsScheme { + return nil, fmt.Errorf("invalid prover endpoint %s", endpoint) + } + } + + return ÐFeeEOASelector{ + protocolConfigs, + rpc, + proposerAddress, + taikoL1Address, + assignmentHookAddress, + tiersFee, + tierFeePriceBump, + proverEndpoints, + maxTierFeePriceBumpIterations, + proposalExpiry, + requestTimeout, + }, nil +} + +// ProverEndpoints returns all registered prover endpoints. +func (s *ETHFeeEOASelector) ProverEndpoints() []*url.URL { return s.proverEndpoints } + +// AssignProver tries to pick a prover through the registered prover endpoints. +func (s *ETHFeeEOASelector) AssignProver( + ctx context.Context, + tierFees []encoding.TierFee, + txListHash common.Hash, +) (*encoding.ProverAssignment, common.Address, *big.Int, error) { + var ( + expiry = uint64(time.Now().Add(s.proposalExpiry).Unix()) + fees = make([]encoding.TierFee, len(tierFees)) + big100 = new(big.Int).SetUint64(uint64(100)) + maxProverFee = common.Big0 + ) + + // Deep copy the tierFees slice. + for i, fee := range tierFees { + fees[i] = encoding.TierFee{Tier: fee.Tier, Fee: new(big.Int).Set(fee.Fee)} + } + + // Iterate over each configured endpoint, and see if someone wants to accept this block. + // If it is denied, we continue on to the next endpoint. + // If we do not find a prover, we can increase the fee up to a point, or give up. + for i := 0; i < int(s.maxTierFeePriceBumpIterations); i++ { + // Bump tier fee on each failed loop. + cumulativeBumpPercent := new(big.Int).Mul(s.tierFeePriceBump, new(big.Int).SetUint64(uint64(i))) + for idx := range fees { + if i > 0 { + fee := new(big.Int).Mul(fees[idx].Fee, cumulativeBumpPercent) + fees[idx].Fee = fees[idx].Fee.Add(fees[idx].Fee, fee.Div(fee, big100)) + } + if fees[idx].Fee.Cmp(maxProverFee) > 0 { + maxProverFee = fees[idx].Fee + } + } + + // Try to assign a prover from all given endpoints. + for _, endpoint := range s.shuffleProverEndpoints() { + encodedAssignment, proverAddress, err := assignProver( + ctx, + s.protocolConfigs.ChainId, + endpoint, + expiry, + s.proposerAddress, + fees, + s.taikoL1Address, + s.assignmentHookAddress, + txListHash, + s.requestTimeout, + ) + if err != nil { + log.Warn("Failed to assign prover", "endpoint", endpoint, "error", err) + continue + } + + ok, err := rpc.CheckProverBalance( + ctx, + s.rpc, + proverAddress, + s.assignmentHookAddress, + s.protocolConfigs.LivenessBond, + ) + if err != nil { + log.Warn("Failed to check prover balance", "endpoint", endpoint, "error", err) + continue + } + if !ok { + continue + } + + return encodedAssignment, proverAddress, maxProverFee, nil + } + } + + return nil, common.Address{}, nil, errUnableToFindProver +} + +// shuffleProverEndpoints shuffles the current selector's prover endpoints. +func (s *ETHFeeEOASelector) shuffleProverEndpoints() []*url.URL { + // Clone the slice to avoid modifying the original proverEndpoints + shuffledEndpoints := make([]*url.URL, len(s.proverEndpoints)) + copy(shuffledEndpoints, s.proverEndpoints) + + rand.Shuffle(len(shuffledEndpoints), func(i, j int) { + shuffledEndpoints[i], shuffledEndpoints[j] = shuffledEndpoints[j], shuffledEndpoints[i] + }) + return shuffledEndpoints +} + +// assignProver tries to assign a proof generation task to the given prover by HTTP API. +func assignProver( + ctx context.Context, + chainID uint64, + endpoint *url.URL, + expiry uint64, + proposerAddress common.Address, + tierFees []encoding.TierFee, + taikoL1Address common.Address, + assignmentHookAddress common.Address, + txListHash common.Hash, + timeout time.Duration, +) (*encoding.ProverAssignment, common.Address, error) { + log.Info( + "Attempting to assign prover", + "endpoint", endpoint, + "expiry", expiry, + "txListHash", txListHash, + "tierFees", tierFees, + ) + + // Send the HTTP request + var ( + client = resty.New() + reqBody = &server.CreateAssignmentRequestBody{ + Proposer: proposerAddress, + FeeToken: rpc.ZeroAddress, + TierFees: tierFees, + Expiry: expiry, + BlobHash: txListHash, + } + result = server.ProposeBlockResponse{} + ) + requestURL, err := url.JoinPath(endpoint.String(), "/assignment") + if err != nil { + return nil, common.Address{}, err + } + + ctxTimeout, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + + resp, err := client.R(). + SetContext(ctxTimeout). + SetHeader("Content-Type", "application/json"). + SetHeader("Accept", "application/json"). + SetBody(reqBody). + SetResult(&result). + Post(requestURL) + if err != nil { + return nil, common.Address{}, err + } + if !resp.IsSuccess() { + return nil, common.Address{}, fmt.Errorf("unsuccessful response %d", resp.StatusCode()) + } + + // Ensure prover in response is the same as the one recovered + // from the signature + payload, err := encoding.EncodeProverAssignmentPayload( + chainID, + taikoL1Address, + assignmentHookAddress, + proposerAddress, + result.Prover, + txListHash, + common.Address{}, + expiry, + result.MaxBlockID, + result.MaxProposedIn, + tierFees, + ) + if err != nil { + return nil, common.Address{}, err + } + + pubKey, err := crypto.SigToPub(crypto.Keccak256Hash(payload).Bytes(), result.SignedPayload) + if err != nil { + return nil, common.Address{}, err + } + + if crypto.PubkeyToAddress(*pubKey).Hex() != result.Prover.Hex() { + return nil, common.Address{}, fmt.Errorf( + "assigned prover signature did not recover to provided prover address %s != %s", + crypto.PubkeyToAddress(*pubKey).Hex(), + result.Prover.Hex(), + ) + } + + log.Info( + "Prover assigned", + "address", result.Prover, + "endpoint", endpoint, + "tierFees", tierFees, + "maxBlockID", result.MaxBlockID, + "expiry", expiry, + ) + + // Convert signature to one solidity can recover by adding 27 to 65th byte + result.SignedPayload[64] = uint8(uint(result.SignedPayload[64])) + 27 + + return &encoding.ProverAssignment{ + FeeToken: common.Address{}, + TierFees: tierFees, + Expiry: reqBody.Expiry, + MaxBlockId: result.MaxBlockID, + MaxProposedIn: result.MaxProposedIn, + MetaHash: [32]byte{}, + Signature: result.SignedPayload, + }, result.Prover, nil +} diff --git a/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go new file mode 100644 index 00000000000..c20d05bb85b --- /dev/null +++ b/packages/taiko-client/proposer/prover_selector/eth_fee_eoa_selector_test.go @@ -0,0 +1,69 @@ +package selector + +import ( + "context" + "net/url" + "os" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +type ProverSelectorTestSuite struct { + testutils.ClientTestSuite + s *ETHFeeEOASelector + proverAddress common.Address +} + +func (s *ProverSelectorTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + s.proverAddress = crypto.PubkeyToAddress(l1ProverPrivKey.PublicKey) + + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + protocolConfigs, err := s.RPCClient.TaikoL1.GetConfig(nil) + s.Nil(err) + + s.s, err = NewETHFeeEOASelector( + &protocolConfigs, + s.RPCClient, + crypto.PubkeyToAddress(l1ProposerPrivKey.PublicKey), + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + []encoding.TierFee{}, + common.Big2, + []*url.URL{s.ProverEndpoints[0]}, + 32, + 1*time.Minute, + 1*time.Minute, + ) + s.Nil(err) +} + +func (s *ProverSelectorTestSuite) TestProverEndpoints() { + s.Equal(1, len(s.s.ProverEndpoints())) +} + +func (s *ProverSelectorTestSuite) TestProverAssignProver() { + sig, _, fee, err := s.s.AssignProver(context.Background(), []encoding.TierFee{ + {Tier: encoding.TierOptimisticID, Fee: common.Big256}, + {Tier: encoding.TierSgxID, Fee: common.Big256}, + }, testutils.RandomHash()) + s.NotEmpty(sig) + s.Equal(fee.Cmp(common.Big32), 1) + s.Nil(err) +} + +func TestProverSelectorTestSuite(t *testing.T) { + suite.Run(t, new(ProverSelectorTestSuite)) +} diff --git a/packages/taiko-client/proposer/prover_selector/interface.go b/packages/taiko-client/proposer/prover_selector/interface.go new file mode 100644 index 00000000000..a0b55801fa7 --- /dev/null +++ b/packages/taiko-client/proposer/prover_selector/interface.go @@ -0,0 +1,20 @@ +package selector + +import ( + "context" + "math/big" + "net/url" + + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +type ProverSelector interface { + AssignProver( + ctx context.Context, + tierFees []encoding.TierFee, + txListHash common.Hash, + ) (assignment *encoding.ProverAssignment, assignedProver common.Address, fee *big.Int, err error) + ProverEndpoints() []*url.URL +} diff --git a/packages/taiko-client/proposer/transaction_builder/blob.go b/packages/taiko-client/proposer/transaction_builder/blob.go new file mode 100644 index 00000000000..cd6a4230f61 --- /dev/null +++ b/packages/taiko-client/proposer/transaction_builder/blob.go @@ -0,0 +1,142 @@ +package builder + +import ( + "context" + "crypto/ecdsa" + "crypto/sha256" + "math/big" + + "github.com/ethereum-optimism/optimism/op-service/eth" + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/crypto/kzg4844" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + selector "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/prover_selector" +) + +// BlobTransactionBuilder is responsible for building a TaikoL1.proposeBlock transaction with txList +// bytes saved in blob. +type BlobTransactionBuilder struct { + rpc *rpc.Client + proposerPrivateKey *ecdsa.PrivateKey + proverSelector selector.ProverSelector + l1BlockBuilderTip *big.Int + taikoL1Address common.Address + l2SuggestedFeeRecipient common.Address + assignmentHookAddress common.Address + gasLimit uint64 + extraData string +} + +// NewBlobTransactionBuilder creates a new BlobTransactionBuilder instance based on giving configurations. +func NewBlobTransactionBuilder( + rpc *rpc.Client, + proposerPrivateKey *ecdsa.PrivateKey, + proverSelector selector.ProverSelector, + l1BlockBuilderTip *big.Int, + taikoL1Address common.Address, + l2SuggestedFeeRecipient common.Address, + assignmentHookAddress common.Address, + gasLimit uint64, + extraData string, +) *BlobTransactionBuilder { + return &BlobTransactionBuilder{ + rpc, + proposerPrivateKey, + proverSelector, + l1BlockBuilderTip, + taikoL1Address, + l2SuggestedFeeRecipient, + assignmentHookAddress, + gasLimit, + extraData, + } +} + +// Build implements the ProposeBlockTransactionBuilder interface. +func (b *BlobTransactionBuilder) Build( + ctx context.Context, + tierFees []encoding.TierFee, + includeParentMetaHash bool, + txListBytes []byte, +) (*txmgr.TxCandidate, error) { + // Make a sidecar then calculate the blob hash. + sideCar, err := rpc.MakeSidecar(txListBytes) + if err != nil { + return nil, err + } + + var blob = ð.Blob{} + if err := blob.FromData(txListBytes); err != nil { + return nil, err + } + + // Try to assign a prover. + assignment, assignedProver, maxFee, err := b.proverSelector.AssignProver( + ctx, + tierFees, + sideCar.BlobHashes()[0], + ) + if err != nil { + return nil, err + } + + // If the current proposer wants to include the parent meta hash, then fetch it from the protocol. + var parentMetaHash = [32]byte{} + if includeParentMetaHash { + if parentMetaHash, err = getParentMetaHash(ctx, b.rpc); err != nil { + return nil, err + } + } + + // Initially just use the AssignmentHook default. + hookInputData, err := encoding.EncodeAssignmentHookInput(&encoding.AssignmentHookInput{ + Assignment: assignment, + Tip: b.l1BlockBuilderTip, + }) + if err != nil { + return nil, err + } + + commitment, err := blob.ComputeKZGCommitment() + if err != nil { + return nil, err + } + blobHash := kzg4844.CalcBlobHashV1(sha256.New(), &commitment) + + signature, err := crypto.Sign(blobHash[:], b.proposerPrivateKey) + if err != nil { + return nil, err + } + signature[64] = uint8(uint(signature[64])) + 27 + + // ABI encode the TaikoL1.proposeBlock parameters. + encodedParams, err := encoding.EncodeBlockParams(&encoding.BlockParams{ + AssignedProver: assignedProver, + ExtraData: rpc.StringToBytes32(b.extraData), + Coinbase: b.l2SuggestedFeeRecipient, + ParentMetaHash: parentMetaHash, + HookCalls: []encoding.HookCall{{Hook: b.assignmentHookAddress, Data: hookInputData}}, + Signature: signature, + }) + if err != nil { + return nil, err + } + + // Send the transaction to the L1 node. + data, err := encoding.TaikoL1ABI.Pack("proposeBlock", encodedParams, []byte{}) + if err != nil { + return nil, err + } + + return &txmgr.TxCandidate{ + TxData: data, + Blobs: []*eth.Blob{blob}, + To: &b.taikoL1Address, + GasLimit: b.gasLimit, + Value: maxFee, + }, nil +} diff --git a/packages/taiko-client/proposer/transaction_builder/calldata.go b/packages/taiko-client/proposer/transaction_builder/calldata.go new file mode 100644 index 00000000000..a701e5da021 --- /dev/null +++ b/packages/taiko-client/proposer/transaction_builder/calldata.go @@ -0,0 +1,122 @@ +package builder + +import ( + "context" + "crypto/ecdsa" + "math/big" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + selector "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/prover_selector" +) + +// CalldataTransactionBuilder is responsible for building a TaikoL1.proposeBlock transaction with txList +// bytes saved in calldata. +type CalldataTransactionBuilder struct { + rpc *rpc.Client + proposerPrivateKey *ecdsa.PrivateKey + proverSelector selector.ProverSelector + l1BlockBuilderTip *big.Int + l2SuggestedFeeRecipient common.Address + taikoL1Address common.Address + assignmentHookAddress common.Address + gasLimit uint64 + extraData string +} + +// NewCalldataTransactionBuilder creates a new CalldataTransactionBuilder instance based on giving configurations. +func NewCalldataTransactionBuilder( + rpc *rpc.Client, + proposerPrivateKey *ecdsa.PrivateKey, + proverSelector selector.ProverSelector, + l1BlockBuilderTip *big.Int, + l2SuggestedFeeRecipient common.Address, + taikoL1Address common.Address, + assignmentHookAddress common.Address, + gasLimit uint64, + extraData string, +) *CalldataTransactionBuilder { + return &CalldataTransactionBuilder{ + rpc, + proposerPrivateKey, + proverSelector, + l1BlockBuilderTip, + l2SuggestedFeeRecipient, + taikoL1Address, + assignmentHookAddress, + gasLimit, + extraData, + } +} + +// Build implements the ProposeBlockTransactionBuilder interface. +func (b *CalldataTransactionBuilder) Build( + ctx context.Context, + tierFees []encoding.TierFee, + includeParentMetaHash bool, + txListBytes []byte, +) (*txmgr.TxCandidate, error) { + // Try to assign a prover. + assignment, assignedProver, maxFee, err := b.proverSelector.AssignProver( + ctx, + tierFees, + crypto.Keccak256Hash(txListBytes), + ) + if err != nil { + return nil, err + } + + // If the current proposer wants to include the parent meta hash, then fetch it from the protocol. + var parentMetaHash = [32]byte{} + if includeParentMetaHash { + if parentMetaHash, err = getParentMetaHash(ctx, b.rpc); err != nil { + return nil, err + } + } + + // Initially just use the AssignmentHook default. + hookInputData, err := encoding.EncodeAssignmentHookInput(&encoding.AssignmentHookInput{ + Assignment: assignment, + Tip: b.l1BlockBuilderTip, + }) + if err != nil { + return nil, err + } + + signature, err := crypto.Sign(crypto.Keccak256(txListBytes), b.proposerPrivateKey) + if err != nil { + return nil, err + } + signature[64] = uint8(uint(signature[64])) + 27 + + // ABI encode the TaikoL1.proposeBlock parameters. + encodedParams, err := encoding.EncodeBlockParams(&encoding.BlockParams{ + AssignedProver: assignedProver, + Coinbase: b.l2SuggestedFeeRecipient, + ExtraData: rpc.StringToBytes32(b.extraData), + ParentMetaHash: parentMetaHash, + HookCalls: []encoding.HookCall{{Hook: b.assignmentHookAddress, Data: hookInputData}}, + Signature: signature, + }) + if err != nil { + return nil, err + } + + // Send the transaction to the L1 node. + data, err := encoding.TaikoL1ABI.Pack("proposeBlock", encodedParams, txListBytes) + if err != nil { + return nil, err + } + + return &txmgr.TxCandidate{ + TxData: data, + Blobs: nil, + To: &b.taikoL1Address, + GasLimit: b.gasLimit, + Value: maxFee, + }, nil +} diff --git a/packages/taiko-client/proposer/transaction_builder/calldata_test.go b/packages/taiko-client/proposer/transaction_builder/calldata_test.go new file mode 100644 index 00000000000..b2f280b8466 --- /dev/null +++ b/packages/taiko-client/proposer/transaction_builder/calldata_test.go @@ -0,0 +1,19 @@ +package builder + +import ( + "context" + + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +func (s *TransactionBuilderTestSuite) TestBuildCalldata() { + tx, err := s.calldataTxBuilder.Build(context.Background(), []encoding.TierFee{ + {Tier: encoding.TierOptimisticID, Fee: common.Big256}, + {Tier: encoding.TierSgxID, Fee: common.Big256}, + {Tier: encoding.TierSgxAndZkVMID, Fee: common.Big257}, + }, false, []byte{1}) + s.Nil(err) + s.Nil(tx.Blobs) +} diff --git a/packages/taiko-client/proposer/transaction_builder/common.go b/packages/taiko-client/proposer/transaction_builder/common.go new file mode 100644 index 00000000000..e3898d1100f --- /dev/null +++ b/packages/taiko-client/proposer/transaction_builder/common.go @@ -0,0 +1,26 @@ +package builder + +import ( + "context" + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// getParentMetaHash returns the meta hash of the parent block of the latest proposed block in protocol. +func getParentMetaHash(ctx context.Context, rpc *rpc.Client) (common.Hash, error) { + state, err := rpc.TaikoL1.State(&bind.CallOpts{Context: ctx}) + if err != nil { + return common.Hash{}, err + } + + parent, err := rpc.GetL2BlockInfo(ctx, new(big.Int).SetUint64(state.SlotB.NumBlocks-1)) + if err != nil { + return common.Hash{}, err + } + + return parent.MetaHash, nil +} diff --git a/packages/taiko-client/proposer/transaction_builder/common_test.go b/packages/taiko-client/proposer/transaction_builder/common_test.go new file mode 100644 index 00000000000..81c11280580 --- /dev/null +++ b/packages/taiko-client/proposer/transaction_builder/common_test.go @@ -0,0 +1,80 @@ +package builder + +import ( + "context" + "net/url" + "os" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + selector "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/prover_selector" +) + +type TransactionBuilderTestSuite struct { + testutils.ClientTestSuite + calldataTxBuilder *CalldataTransactionBuilder + blobTxBuiler *BlobTransactionBuilder +} + +func (s *TransactionBuilderTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + protocolConfigs, err := s.RPCClient.TaikoL1.GetConfig(nil) + s.Nil(err) + + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + proverSelector, err := selector.NewETHFeeEOASelector( + &protocolConfigs, + s.RPCClient, + crypto.PubkeyToAddress(l1ProposerPrivKey.PublicKey), + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + []encoding.TierFee{}, + common.Big2, + []*url.URL{s.ProverEndpoints[0]}, + 32, + 1*time.Minute, + 1*time.Minute, + ) + s.Nil(err) + s.calldataTxBuilder = NewCalldataTransactionBuilder( + s.RPCClient, + l1ProposerPrivKey, + proverSelector, + common.Big0, + common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + 0, + "test", + ) + s.blobTxBuiler = NewBlobTransactionBuilder( + s.RPCClient, + l1ProposerPrivKey, + proverSelector, + common.Big0, + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + 10_000_000, + "test", + ) +} + +func (s *TransactionBuilderTestSuite) TestGetParentMetaHash() { + metahash, err := getParentMetaHash(context.Background(), s.RPCClient) + s.Nil(err) + s.NotEmpty(metahash) +} + +func TestTransactionBuilderTestSuite(t *testing.T) { + suite.Run(t, new(TransactionBuilderTestSuite)) +} diff --git a/packages/taiko-client/proposer/transaction_builder/interface.go b/packages/taiko-client/proposer/transaction_builder/interface.go new file mode 100644 index 00000000000..c1cac45aa6f --- /dev/null +++ b/packages/taiko-client/proposer/transaction_builder/interface.go @@ -0,0 +1,19 @@ +package builder + +import ( + "context" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +// ProposeBlockTransactionBuilder is an interface for building a TaikoL1.proposeBlock transaction. +type ProposeBlockTransactionBuilder interface { + Build( + ctx context.Context, + tierFees []encoding.TierFee, + includeParentMetaHash bool, + txListBytes []byte, + ) (*txmgr.TxCandidate, error) +} diff --git a/packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator.go b/packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator.go new file mode 100644 index 00000000000..b54c8de23bb --- /dev/null +++ b/packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator.go @@ -0,0 +1,77 @@ +package anchortxvalidator + +import ( + "context" + "errors" + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// AnchorTxValidator is responsible for validating the anchor transaction (TaikoL2.anchor) in +// each L2 block, which is always the first transaction. +type AnchorTxValidator struct { + taikoL2Address common.Address + goldenTouchAddress common.Address + chainID *big.Int + rpc *rpc.Client +} + +// New creates a new AnchorTxValidator instance. +func New(taikoL2Address common.Address, chainID *big.Int, rpc *rpc.Client) (*AnchorTxValidator, error) { + goldenTouchAddress, err := rpc.TaikoL2.GOLDENTOUCHADDRESS(nil) + if err != nil { + return nil, err + } + + return &AnchorTxValidator{taikoL2Address, goldenTouchAddress, chainID, rpc}, nil +} + +// ValidateAnchorTx checks whether the given transaction is a valid `TaikoL2.anchor` transaction. +func (v *AnchorTxValidator) ValidateAnchorTx(tx *types.Transaction) error { + if tx.To() == nil || *tx.To() != v.taikoL2Address { + return fmt.Errorf("invalid TaikoL2.anchor transaction to: %s, want: %s", tx.To(), v.taikoL2Address) + } + + sender, err := types.LatestSignerForChainID(v.chainID).Sender(tx) + if err != nil { + return fmt.Errorf("failed to get TaikoL2.anchor transaction sender: %w", err) + } + + if sender != v.goldenTouchAddress { + return fmt.Errorf("invalid TaikoL2.anchor transaction sender: %s", sender) + } + + method, err := encoding.TaikoL2ABI.MethodById(tx.Data()) + if err != nil || method.Name != "anchor" { + return fmt.Errorf("invalid TaikoL2.anchor transaction selector, error: %w", err) + } + + return nil +} + +// GetAndValidateAnchorTxReceipt gets and validates the `TaikoL2.anchor` transaction's receipt. +func (v *AnchorTxValidator) GetAndValidateAnchorTxReceipt( + ctx context.Context, + tx *types.Transaction, +) (*types.Receipt, error) { + receipt, err := v.rpc.L2.TransactionReceipt(ctx, tx.Hash()) + if err != nil { + return nil, fmt.Errorf("failed to get TaikoL2.anchor transaction receipt, error: %w", err) + } + + if receipt.Status != types.ReceiptStatusSuccessful { + return nil, fmt.Errorf("invalid TaikoL2.anchor transaction receipt status: %d", receipt.Status) + } + + if len(receipt.Logs) == 0 { + return nil, errors.New("no event found in TaikoL2.anchor transaction receipt") + } + + return receipt, nil +} diff --git a/packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator_test.go b/packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator_test.go new file mode 100644 index 00000000000..10e1f920a75 --- /dev/null +++ b/packages/taiko-client/prover/anchor_tx_validator/anchor_tx_validator_test.go @@ -0,0 +1,85 @@ +package anchortxvalidator + +import ( + "context" + "os" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +type AnchorTxValidatorTestSuite struct { + testutils.ClientTestSuite + v *AnchorTxValidator +} + +func (s *AnchorTxValidatorTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + validator, err := New(common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), s.RPCClient.L2.ChainID, s.RPCClient) + s.Nil(err) + s.v = validator +} + +func (s *AnchorTxValidatorTestSuite) TestValidateAnchorTx() { + wrongPrivKey, err := crypto.HexToECDSA("2bdd21761a483f71054e14f5b827213567971c676928d9a1808cbfa4b7501200") + s.Nil(err) + + // 0x92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce38 + goldenTouchPriKey, err := crypto.HexToECDSA(encoding.GoldenTouchPrivKey) + s.Nil(err) + + // invalid To + tx := types.NewTransaction( + 0, + common.BytesToAddress(testutils.RandomBytes(1024)), common.Big0, 0, common.Big0, []byte{}, + ) + s.ErrorContains(s.v.ValidateAnchorTx(tx), "invalid TaikoL2.anchor transaction to") + + // invalid sender + dynamicFeeTxTx := &types.DynamicFeeTx{ + ChainID: s.v.rpc.L2.ChainID, + Nonce: 0, + GasTipCap: common.Big1, + GasFeeCap: common.Big1, + Gas: 1, + To: &s.v.taikoL2Address, + Value: common.Big0, + Data: []byte{}, + AccessList: types.AccessList{}, + } + + signer := types.LatestSignerForChainID(s.v.rpc.L2.ChainID) + tx = types.MustSignNewTx(wrongPrivKey, signer, dynamicFeeTxTx) + + s.ErrorContains( + s.v.ValidateAnchorTx(tx), "invalid TaikoL2.anchor transaction sender", + ) + + // invalid method selector + tx = types.MustSignNewTx(goldenTouchPriKey, signer, dynamicFeeTxTx) + s.ErrorContains(s.v.ValidateAnchorTx(tx), "invalid TaikoL2.anchor transaction selector") +} + +func (s *AnchorTxValidatorTestSuite) TestGetAndValidateAnchorTxReceipt() { + tx := types.NewTransaction( + 100, + common.BytesToAddress(testutils.RandomBytes(32)), + common.Big1, + 100000, + common.Big1, + []byte{}, + ) + _, err := s.v.GetAndValidateAnchorTxReceipt(context.Background(), tx) + s.NotNil(err) +} + +func TestAnchorTxValidatorTestSuite(t *testing.T) { + suite.Run(t, new(AnchorTxValidatorTestSuite)) +} diff --git a/packages/taiko-client/prover/config.go b/packages/taiko-client/prover/config.go new file mode 100644 index 00000000000..57e20963d80 --- /dev/null +++ b/packages/taiko-client/prover/config.go @@ -0,0 +1,210 @@ +package prover + +import ( + "crypto/ecdsa" + "errors" + "fmt" + "math/big" + "net/url" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + + pkgFlags "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/flags" +) + +// Config contains the configurations to initialize a Taiko prover. +type Config struct { + L1WsEndpoint string + L1HttpEndpoint string + L1BeaconEndpoint string + L2WsEndpoint string + L2HttpEndpoint string + TaikoL1Address common.Address + TaikoL2Address common.Address + TaikoTokenAddress common.Address + AssignmentHookAddress common.Address + L1ProverPrivKey *ecdsa.PrivateKey + StartingBlockID *big.Int + Dummy bool + GuardianProverMinorityAddress common.Address + GuardianProverMajorityAddress common.Address + GuardianProofSubmissionDelay time.Duration + Graffiti string + BackOffMaxRetries uint64 + BackOffRetryInterval time.Duration + ProveUnassignedBlocks bool + ContesterMode bool + EnableLivenessBondProof bool + RPCTimeout time.Duration + ProveBlockGasLimit uint64 + HTTPServerPort uint64 + Capacity uint64 + MinOptimisticTierFee *big.Int + MinSgxTierFee *big.Int + MinSgxAndZkVMTierFee *big.Int + MinEthBalance *big.Int + MinTaikoTokenBalance *big.Int + MaxExpiry time.Duration + MaxProposedIn uint64 + MaxBlockSlippage uint64 + Allowance *big.Int + GuardianProverHealthCheckServerEndpoint *url.URL + RaikoHostEndpoint string + RaikoL1Endpoint string + RaikoL1BeaconEndpoint string + RaikoL2Endpoint string + L1NodeVersion string + L2NodeVersion string + BlockConfirmations uint64 + TxmgrConfigs *txmgr.CLIConfig +} + +// NewConfigFromCliContext creates a new config instance from command line flags. +func NewConfigFromCliContext(c *cli.Context) (*Config, error) { + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(c.String(flags.L1ProverPrivKey.Name))) + if err != nil { + return nil, fmt.Errorf("invalid L1 prover private key: %w", err) + } + + if !c.IsSet(flags.L1BeaconEndpoint.Name) { + return nil, errors.New("empty L1 beacon endpoint") + } + + var startingBlockID *big.Int + if c.IsSet(flags.StartingBlockID.Name) { + startingBlockID = new(big.Int).SetUint64(c.Uint64(flags.StartingBlockID.Name)) + } + + var allowance = common.Big0 + if c.IsSet(flags.Allowance.Name) { + amt, err := utils.EtherToWei(c.Float64(flags.Allowance.Name)) + if err != nil { + return nil, fmt.Errorf("invalid setting allowance config value: %v", c.Float64(flags.Allowance.Name)) + } + + allowance = amt + } + + var guardianProverHealthCheckServerEndpoint *url.URL + if c.IsSet(flags.GuardianProverHealthCheckServerEndpoint.Name) { + if guardianProverHealthCheckServerEndpoint, err = url.Parse( + c.String(flags.GuardianProverHealthCheckServerEndpoint.Name), + ); err != nil { + return nil, err + } + } + + // If we are running a guardian prover, we need to prove unassigned blocks and run in contester mode by default. + if c.IsSet(flags.GuardianProverMajority.Name) { + if err := c.Set(flags.ProveUnassignedBlocks.Name, "true"); err != nil { + return nil, err + } + if err := c.Set(flags.ContesterMode.Name, "true"); err != nil { + return nil, err + } + + // L1 and L2 node version flags are required only if guardian prover + if !c.IsSet(flags.L1NodeVersion.Name) { + return nil, errors.New("--prover.l1NodeVersion flag is required if guardian prover is set") + } + if !c.IsSet(flags.L2NodeVersion.Name) { + return nil, errors.New("--prover.l2NodeVersion flag is required if guardian prover is set") + } + } + var ( + raikoL1Endpoint = c.String(flags.RaikoL1Endpoint.Name) + raikoL1BeaconEndpoint = c.String(flags.RaikoL1BeaconEndpoint.Name) + raikoL2Endpoint = c.String(flags.RaikoL2Endpoint.Name) + ) + if raikoL1Endpoint == "" { + raikoL1Endpoint = c.String(flags.L1HTTPEndpoint.Name) + } + if raikoL1BeaconEndpoint == "" { + raikoL1BeaconEndpoint = c.String(flags.L1BeaconEndpoint.Name) + } + if raikoL2Endpoint == "" { + raikoL2Endpoint = c.String(flags.L2HTTPEndpoint.Name) + } + + minOptimisticTierFee, err := utils.GWeiToWei(c.Float64(flags.MinOptimisticTierFee.Name)) + if err != nil { + return nil, err + } + + minSgxTierFee, err := utils.GWeiToWei(c.Float64(flags.MinSgxTierFee.Name)) + if err != nil { + return nil, err + } + + minSgxAndZkVMTierFee, err := utils.GWeiToWei(c.Float64(flags.MinSgxAndZkVMTierFee.Name)) + if err != nil { + return nil, err + } + + minEthBalance, err := utils.EtherToWei(c.Float64(flags.MinEthBalance.Name)) + if err != nil { + return nil, err + } + + minTaikoTokenBalance, err := utils.EtherToWei(c.Float64(flags.MinTaikoTokenBalance.Name)) + if err != nil { + return nil, err + } + + return &Config{ + L1WsEndpoint: c.String(flags.L1WSEndpoint.Name), + L1HttpEndpoint: c.String(flags.L1HTTPEndpoint.Name), + L1BeaconEndpoint: c.String(flags.L1BeaconEndpoint.Name), + L2WsEndpoint: c.String(flags.L2WSEndpoint.Name), + L2HttpEndpoint: c.String(flags.L2HTTPEndpoint.Name), + TaikoL1Address: common.HexToAddress(c.String(flags.TaikoL1Address.Name)), + TaikoL2Address: common.HexToAddress(c.String(flags.TaikoL2Address.Name)), + TaikoTokenAddress: common.HexToAddress(c.String(flags.TaikoTokenAddress.Name)), + AssignmentHookAddress: common.HexToAddress(c.String(flags.AssignmentHookAddress.Name)), + L1ProverPrivKey: l1ProverPrivKey, + RaikoHostEndpoint: c.String(flags.RaikoHostEndpoint.Name), + RaikoL1Endpoint: raikoL1Endpoint, + RaikoL1BeaconEndpoint: raikoL1BeaconEndpoint, + RaikoL2Endpoint: raikoL2Endpoint, + StartingBlockID: startingBlockID, + Dummy: c.Bool(flags.Dummy.Name), + GuardianProverMinorityAddress: common.HexToAddress(c.String(flags.GuardianProverMinority.Name)), + GuardianProverMajorityAddress: common.HexToAddress(c.String(flags.GuardianProverMajority.Name)), + GuardianProofSubmissionDelay: c.Duration(flags.GuardianProofSubmissionDelay.Name), + GuardianProverHealthCheckServerEndpoint: guardianProverHealthCheckServerEndpoint, + Graffiti: c.String(flags.Graffiti.Name), + BackOffMaxRetries: c.Uint64(flags.BackOffMaxRetries.Name), + BackOffRetryInterval: c.Duration(flags.BackOffRetryInterval.Name), + ProveUnassignedBlocks: c.Bool(flags.ProveUnassignedBlocks.Name), + ContesterMode: c.Bool(flags.ContesterMode.Name), + EnableLivenessBondProof: c.Bool(flags.EnableLivenessBondProof.Name), + RPCTimeout: c.Duration(flags.RPCTimeout.Name), + ProveBlockGasLimit: c.Uint64(flags.TxGasLimit.Name), + Capacity: c.Uint64(flags.ProverCapacity.Name), + HTTPServerPort: c.Uint64(flags.ProverHTTPServerPort.Name), + MinOptimisticTierFee: minOptimisticTierFee, + MinSgxTierFee: minSgxTierFee, + MinSgxAndZkVMTierFee: minSgxAndZkVMTierFee, + MinEthBalance: minEthBalance, + MinTaikoTokenBalance: minTaikoTokenBalance, + MaxExpiry: c.Duration(flags.MaxExpiry.Name), + MaxBlockSlippage: c.Uint64(flags.MaxAcceptableBlockSlippage.Name), + MaxProposedIn: c.Uint64(flags.MaxProposedIn.Name), + Allowance: allowance, + L1NodeVersion: c.String(flags.L1NodeVersion.Name), + L2NodeVersion: c.String(flags.L2NodeVersion.Name), + BlockConfirmations: c.Uint64(flags.BlockConfirmations.Name), + TxmgrConfigs: pkgFlags.InitTxmgrConfigsFromCli( + c.String(flags.L1HTTPEndpoint.Name), + l1ProverPrivKey, + c, + ), + }, nil +} diff --git a/packages/taiko-client/prover/config_test.go b/packages/taiko-client/prover/config_test.go new file mode 100644 index 00000000000..f9e284dd06c --- /dev/null +++ b/packages/taiko-client/prover/config_test.go @@ -0,0 +1,145 @@ +package prover + +import ( + "context" + "fmt" + "os" + "time" + + "github.com/ethereum/go-ethereum/crypto" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" +) + +var ( + l1WsEndpoint = os.Getenv("L1_NODE_WS_ENDPOINT") + l1HttpEndpoint = os.Getenv("L1_NODE_HTTP_ENDPOINT") + l1BeaconEndpoint = os.Getenv("L1_NODE_HTTP_ENDPOINT") + l2WsEndpoint = os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT") + l2HttpEndpoint = os.Getenv("L2_EXECUTION_ENGINE_HTTP_ENDPOINT") + l1NodeVersion = "1.0.0" + l2NodeVersion = "0.1.0" + taikoL1 = os.Getenv("TAIKO_L1_ADDRESS") + taikoL2 = os.Getenv("TAIKO_L2_ADDRESS") + allowance = 10.0 + rpcTimeout = 5 * time.Second + minTierFee = 1024.0 +) + +func (s *ProverTestSuite) TestNewConfigFromCliContextGuardianProver() { + app := s.SetupApp() + app.Action = func(ctx *cli.Context) error { + c, err := NewConfigFromCliContext(ctx) + s.Nil(err) + s.Equal(l1WsEndpoint, c.L1WsEndpoint) + s.Equal(l1HttpEndpoint, c.L1HttpEndpoint) + s.Equal(l1BeaconEndpoint, c.L1BeaconEndpoint) + s.Equal(l2WsEndpoint, c.L2WsEndpoint) + s.Equal(l2HttpEndpoint, c.L2HttpEndpoint) + s.Equal(taikoL1, c.TaikoL1Address.String()) + s.Equal(taikoL2, c.TaikoL2Address.String()) + s.Equal( + crypto.PubkeyToAddress(s.p.cfg.L1ProverPrivKey.PublicKey), + crypto.PubkeyToAddress(c.L1ProverPrivKey.PublicKey), + ) + s.True(c.Dummy) + s.Equal("", c.Graffiti) + s.True(c.ProveUnassignedBlocks) + s.True(c.ContesterMode) + s.Equal(rpcTimeout, c.RPCTimeout) + s.Equal(uint64(8), c.Capacity) + tierFeeGWei, err := utils.GWeiToWei(minTierFee) + s.Nil(err) + s.Equal(tierFeeGWei.Uint64(), c.MinOptimisticTierFee.Uint64()) + s.Equal(tierFeeGWei.Uint64(), c.MinSgxTierFee.Uint64()) + s.Equal(c.L1NodeVersion, l1NodeVersion) + s.Equal(c.L2NodeVersion, l2NodeVersion) + s.Nil(new(Prover).InitFromCli(context.Background(), ctx)) + s.True(c.ProveUnassignedBlocks) + s.Equal(uint64(100), c.MaxProposedIn) + s.Equal(os.Getenv("ASSIGNMENT_HOOK_ADDRESS"), c.AssignmentHookAddress.String()) + allowanceWithDecimal, err := utils.EtherToWei(allowance) + s.Nil(err) + s.Equal(allowanceWithDecimal.Uint64(), c.Allowance.Uint64()) + + return err + } + + s.Nil(app.Run([]string{ + "TestNewConfigFromCliContextGuardianProver", + "--" + flags.L1WSEndpoint.Name, l1WsEndpoint, + "--" + flags.L1HTTPEndpoint.Name, l1HttpEndpoint, + "--" + flags.L1BeaconEndpoint.Name, l1BeaconEndpoint, + "--" + flags.L2WSEndpoint.Name, l2WsEndpoint, + "--" + flags.L2HTTPEndpoint.Name, l2HttpEndpoint, + "--" + flags.TaikoL1Address.Name, taikoL1, + "--" + flags.TaikoL2Address.Name, taikoL2, + "--" + flags.L1ProverPrivKey.Name, os.Getenv("L1_PROVER_PRIVATE_KEY"), + "--" + flags.StartingBlockID.Name, "0", + "--" + flags.RPCTimeout.Name, "5s", + "--" + flags.TxGasLimit.Name, "100000", + "--" + flags.Dummy.Name, + "--" + flags.MinOptimisticTierFee.Name, fmt.Sprint(minTierFee), + "--" + flags.MinSgxTierFee.Name, fmt.Sprint(minTierFee), + "--" + flags.ProverCapacity.Name, "8", + "--" + flags.GuardianProverMajority.Name, os.Getenv("GUARDIAN_PROVER_CONTRACT_ADDRESS"), + "--" + flags.GuardianProverMinority.Name, os.Getenv("GUARDIAN_PROVER_MINORITY_ADDRESS"), + "--" + flags.AssignmentHookAddress.Name, os.Getenv("ASSIGNMENT_HOOK_ADDRESS"), + "--" + flags.Graffiti.Name, "", + "--" + flags.ProveUnassignedBlocks.Name, + "--" + flags.MaxProposedIn.Name, "100", + "--" + flags.Allowance.Name, fmt.Sprint(allowance), + "--" + flags.L1NodeVersion.Name, l1NodeVersion, + "--" + flags.L2NodeVersion.Name, l2NodeVersion, + "--" + flags.RaikoHostEndpoint.Name, "https://dummy.raiko.xyz", + })) +} + +func (s *ProverTestSuite) TestNewConfigFromCliContextProverKeyError() { + app := s.SetupApp() + + s.ErrorContains(app.Run([]string{ + "TestNewConfigFromCliContext", + "--" + flags.L1ProverPrivKey.Name, "0x", + }), "invalid L1 prover private key") +} + +func (s *ProverTestSuite) SetupApp() *cli.App { + app := cli.NewApp() + app.Flags = []cli.Flag{ + &cli.StringFlag{Name: flags.L1WSEndpoint.Name}, + &cli.StringFlag{Name: flags.L1HTTPEndpoint.Name}, + &cli.StringFlag{Name: flags.L1BeaconEndpoint.Name}, + &cli.StringFlag{Name: flags.L2WSEndpoint.Name}, + &cli.StringFlag{Name: flags.L2HTTPEndpoint.Name}, + &cli.StringFlag{Name: flags.TaikoL1Address.Name}, + &cli.StringFlag{Name: flags.TaikoL2Address.Name}, + &cli.StringFlag{Name: flags.L1ProverPrivKey.Name}, + &cli.Uint64Flag{Name: flags.StartingBlockID.Name}, + &cli.BoolFlag{Name: flags.Dummy.Name}, + &cli.StringFlag{Name: flags.GuardianProverMajority.Name}, + &cli.StringFlag{Name: flags.GuardianProverMinority.Name}, + &cli.StringFlag{Name: flags.Graffiti.Name}, + &cli.BoolFlag{Name: flags.ProveUnassignedBlocks.Name}, + &cli.DurationFlag{Name: flags.RPCTimeout.Name}, + &cli.Uint64Flag{Name: flags.ProverCapacity.Name}, + &cli.Uint64Flag{Name: flags.MinOptimisticTierFee.Name}, + &cli.Uint64Flag{Name: flags.MinSgxTierFee.Name}, + &cli.Uint64Flag{Name: flags.MaxProposedIn.Name}, + &cli.StringFlag{Name: flags.AssignmentHookAddress.Name}, + &cli.StringFlag{Name: flags.Allowance.Name}, + &cli.StringFlag{Name: flags.ContesterMode.Name}, + &cli.StringFlag{Name: flags.L1NodeVersion.Name}, + &cli.StringFlag{Name: flags.L2NodeVersion.Name}, + &cli.StringFlag{Name: flags.RaikoHostEndpoint.Name}, + } + app.Flags = append(app.Flags, flags.TxmgrFlags...) + app.Action = func(ctx *cli.Context) error { + _, err := NewConfigFromCliContext(ctx) + s.NotNil(err) + return err + } + return app +} diff --git a/packages/taiko-client/prover/event_handler/assignment_expired.go b/packages/taiko-client/prover/event_handler/assignment_expired.go new file mode 100644 index 00000000000..fbd8c5e04a0 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/assignment_expired.go @@ -0,0 +1,83 @@ +package handler + +import ( + "context" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +// AssignmentExpiredEventHandler is responsible for handling the expiration of proof assignments. +type AssignmentExpiredEventHandler struct { + rpc *rpc.Client + proverAddress common.Address + proofSubmissionCh chan<- *proofProducer.ProofRequestBody + proofContestCh chan<- *proofProducer.ContestRequestBody + contesterMode bool +} + +// NewAssignmentExpiredEventHandler creates a new AssignmentExpiredEventHandler instance. +func NewAssignmentExpiredEventHandler( + rpc *rpc.Client, + proverAddress common.Address, + proofSubmissionCh chan *proofProducer.ProofRequestBody, + proofContestCh chan *proofProducer.ContestRequestBody, + contesterMode bool, +) *AssignmentExpiredEventHandler { + return &AssignmentExpiredEventHandler{rpc, proverAddress, proofSubmissionCh, proofContestCh, contesterMode} +} + +// Handle implements the AssignmentExpiredHandler interface. +func (h *AssignmentExpiredEventHandler) Handle( + ctx context.Context, + e *bindings.TaikoL1ClientBlockProposed, +) error { + log.Info( + "Proof assignment window is expired", + "blockID", e.BlockId, + "assignedProver", e.AssignedProver, + "minTier", e.Meta.MinTier, + ) + + // Check if we still need to generate a new proof for that block. + proofStatus, err := rpc.GetBlockProofStatus(ctx, h.rpc, e.BlockId, h.proverAddress) + if err != nil { + return err + } + if !proofStatus.IsSubmitted { + go func() { + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{Tier: e.Meta.MinTier, Event: e} + }() + return nil + } + // If there is already a proof submitted and there is no need to contest + // it, we skip proving this block here. + if !proofStatus.Invalid || !h.contesterMode { + return nil + } + + // If there is no contester, we submit a contest to protocol. + go func() { + if proofStatus.CurrentTransitionState.Contester == rpc.ZeroAddress { + h.proofContestCh <- &proofProducer.ContestRequestBody{ + BlockID: e.BlockId, + ProposedIn: new(big.Int).SetUint64(e.Raw.BlockNumber), + ParentHash: proofStatus.ParentHeader.Hash(), + Meta: &e.Meta, + Tier: proofStatus.CurrentTransitionState.Tier, + } + } else { + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{ + Tier: proofStatus.CurrentTransitionState.Tier + 1, + Event: e, + } + } + }() + + return nil +} diff --git a/packages/taiko-client/prover/event_handler/block_proposed.go b/packages/taiko-client/prover/event_handler/block_proposed.go new file mode 100644 index 00000000000..6a0136585a0 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/block_proposed.go @@ -0,0 +1,415 @@ +package handler + +import ( + "context" + "crypto/rand" + "errors" + "fmt" + "math/big" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + eventIterator "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/chain_iterator/event_iterator" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + guardianProverHeartbeater "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/guardian_prover_heartbeater" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + state "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/shared_state" +) + +var ( + errL1Reorged = errors.New("L1 reorged") + proofExpirationDelay = 6 * 12 * time.Second // 6 ethereum blocks + submissionDelayRandomBumpRange float64 = 20 +) + +// BlockProposedEventHandler is responsible for handling the BlockProposed event as a prover. +type BlockProposedEventHandler struct { + sharedState *state.SharedState + proverAddress common.Address + genesisHeightL1 uint64 + rpc *rpc.Client + proofGenerationCh chan<- *proofProducer.ProofWithHeader + assignmentExpiredCh chan<- *bindings.TaikoL1ClientBlockProposed + proofSubmissionCh chan<- *proofProducer.ProofRequestBody + proofContestCh chan<- *proofProducer.ContestRequestBody + backOffRetryInterval time.Duration + backOffMaxRetrys uint64 + contesterMode bool + proveUnassignedBlocks bool + // Guardian prover related. + isGuardian bool + submissionDelay time.Duration +} + +// NewBlockProposedEventHandlerOps is the options for creating a new BlockProposedEventHandler. +type NewBlockProposedEventHandlerOps struct { + SharedState *state.SharedState + ProverAddress common.Address + GenesisHeightL1 uint64 + RPC *rpc.Client + ProofGenerationCh chan *proofProducer.ProofWithHeader + AssignmentExpiredCh chan *bindings.TaikoL1ClientBlockProposed + ProofSubmissionCh chan *proofProducer.ProofRequestBody + ProofContestCh chan *proofProducer.ContestRequestBody + BackOffRetryInterval time.Duration + BackOffMaxRetrys uint64 + ContesterMode bool + ProveUnassignedBlocks bool + SubmissionDelay time.Duration +} + +// NewBlockProposedEventHandler creates a new BlockProposedEventHandler instance. +func NewBlockProposedEventHandler(opts *NewBlockProposedEventHandlerOps) *BlockProposedEventHandler { + return &BlockProposedEventHandler{ + opts.SharedState, + opts.ProverAddress, + opts.GenesisHeightL1, + opts.RPC, + opts.ProofGenerationCh, + opts.AssignmentExpiredCh, + opts.ProofSubmissionCh, + opts.ProofContestCh, + opts.BackOffRetryInterval, + opts.BackOffMaxRetrys, + opts.ContesterMode, + opts.ProveUnassignedBlocks, + false, + opts.SubmissionDelay, + } +} + +// Handle implements the BlockProposedHandler interface. +func (h *BlockProposedEventHandler) Handle( + ctx context.Context, + e *bindings.TaikoL1ClientBlockProposed, + end eventIterator.EndBlockProposedEventIterFunc, +) error { + // If there are newly generated proofs, we need to submit them as soon as possible, + // to avoid proof submission timeout. + if len(h.proofGenerationCh) > 0 { + log.Info("onBlockProposed callback early return", "proofGenerationChannelLength", len(h.proofGenerationCh)) + end() + return nil + } + + // Wait for the corresponding L2 block being mined in node. + if _, err := h.rpc.WaitL2Header(ctx, e.BlockId); err != nil { + return fmt.Errorf("failed to wait L2 header (eventID %d): %w", e.BlockId, err) + } + + // Check if the L1 chain has reorged at first. + if err := h.checkL1Reorg(ctx, e); err != nil { + if err.Error() == errL1Reorged.Error() { + end() + return nil + } + + return err + } + + // If the current block is handled, just skip it. + if e.BlockId.Uint64() <= h.sharedState.GetLastHandledBlockID() { + return nil + } + + log.Info( + "New BlockProposed event", + "l1Height", e.Raw.BlockNumber, + "l1Hash", e.Raw.BlockHash, + "blockID", e.BlockId, + "removed", e.Raw.Removed, + "assignedProver", e.AssignedProver, + "blobHash", common.Bytes2Hex(e.Meta.BlobHash[:]), + "livenessBond", utils.WeiToEther(e.LivenessBond), + "minTier", e.Meta.MinTier, + "blobUsed", e.Meta.BlobUsed, + ) + metrics.ProverReceivedProposedBlockGauge.Set(float64(e.BlockId.Uint64())) + + // Move l1Current cursor. + newL1Current, err := h.rpc.L1.HeaderByHash(ctx, e.Raw.BlockHash) + if err != nil { + return err + } + h.sharedState.SetL1Current(newL1Current) + h.sharedState.SetLastHandledBlockID(e.BlockId.Uint64()) + + // Try generating a proof for the proposed block with the given backoff policy. + go func() { + if err := backoff.Retry( + func() error { + if err := h.checkExpirationAndSubmitProof(ctx, e); err != nil { + log.Error( + "Failed to check proof status and submit proof", + "error", err, + "blockID", e.BlockId, + "minTier", e.Meta.MinTier, + "maxRetrys", h.backOffMaxRetrys, + ) + return err + } + return nil + }, + backoff.WithContext( + backoff.WithMaxRetries(backoff.NewConstantBackOff(h.backOffRetryInterval), h.backOffMaxRetrys), + ctx, + ), + ); err != nil { + log.Error("Handle new BlockProposed event error", "error", err) + } + }() + + return nil +} + +// checkL1Reorg checks whether the L1 chain has been reorged. +func (h *BlockProposedEventHandler) checkL1Reorg( + ctx context.Context, + e *bindings.TaikoL1ClientBlockProposed, +) error { + // Check whether the L2 EE's anchored L1 info, to see if the L1 chain has been reorged. + reorgCheckResult, err := h.rpc.CheckL1Reorg( + ctx, + new(big.Int).Sub(e.BlockId, common.Big1), + ) + if err != nil { + return fmt.Errorf("failed to check whether L1 chain was reorged from L2EE (eventID %d): %w", e.BlockId, err) + } + + if reorgCheckResult.IsReorged { + log.Info( + "Reset L1Current cursor due to reorg", + "l1CurrentHeightOld", h.sharedState.GetL1Current().Number, + "l1CurrentHeightNew", reorgCheckResult.L1CurrentToReset.Number, + "lastHandledBlockIDOld", h.sharedState.GetLastHandledBlockID(), + "lastHandledBlockIDNew", reorgCheckResult.LastHandledBlockIDToReset, + ) + h.sharedState.SetL1Current(reorgCheckResult.L1CurrentToReset) + if reorgCheckResult.LastHandledBlockIDToReset == nil { + h.sharedState.SetLastHandledBlockID(0) + } else { + h.sharedState.SetLastHandledBlockID(reorgCheckResult.LastHandledBlockIDToReset.Uint64()) + } + return errL1Reorged + } + + lastL1OriginHeader, err := h.rpc.L1.HeaderByNumber(ctx, new(big.Int).SetUint64(e.Meta.L1Height)) + if err != nil { + return fmt.Errorf("failed to get L1 header, height %d: %w", e.Meta.L1Height, err) + } + + if lastL1OriginHeader.Hash() != e.Meta.L1Hash { + log.Warn( + "L1 block hash mismatch due to L1 reorg", + "height", e.Meta.L1Height, + "lastL1OriginHeader", lastL1OriginHeader.Hash(), + "l1HashInEvent", e.Meta.L1Hash, + ) + + return fmt.Errorf( + "L1 block hash mismatch due to L1 reorg: %s != %s", + lastL1OriginHeader.Hash(), + e.Meta.L1Hash, + ) + } + + return nil +} + +// getRandomBumpedSubmissionDelay returns a random bumped submission delay. +func (h *BlockProposedEventHandler) getRandomBumpedSubmissionDelay(expiredAt time.Time) (time.Duration, error) { + if h.submissionDelay == 0 { + return h.submissionDelay, nil + } + + randomBump, err := rand.Int( + rand.Reader, + new(big.Int).SetUint64(uint64(h.submissionDelay.Seconds()*submissionDelayRandomBumpRange/100)), + ) + if err != nil { + return 0, err + } + + delay := time.Duration(h.submissionDelay.Seconds()+float64(randomBump.Uint64())) * time.Second + + if time.Since(expiredAt) >= delay { + return 0, nil + } + + return delay - time.Since(expiredAt), nil +} + +// checkExpirationAndSubmitProof checks whether the proposed block's proving window is expired, +// and submits a new proof if necessary. +func (h *BlockProposedEventHandler) checkExpirationAndSubmitProof( + ctx context.Context, + e *bindings.TaikoL1ClientBlockProposed, +) error { + // Check whether the block has been verified. + isVerified, err := isBlockVerified(ctx, h.rpc, e.BlockId) + if err != nil { + return fmt.Errorf("failed to check if the current L2 block is verified: %w", err) + } + if isVerified { + log.Info("📋 Block has been verified", "blockID", e.BlockId) + return nil + } + + // Check whether the block's proof is still needed. + proofStatus, err := rpc.GetBlockProofStatus( + ctx, + h.rpc, + e.BlockId, + h.proverAddress, + ) + if err != nil { + return fmt.Errorf("failed to check whether the L2 block needs a new proof: %w", err) + } + + // If there is already a proof submitted on chain. + if proofStatus.IsSubmitted { + // If there is no need to contest the submitted proof, we skip proving this block here. + if !proofStatus.Invalid { + log.Info( + "A valid proof has been submitted, skip proving", + "blockID", e.BlockId, + "parent", proofStatus.ParentHeader.Hash(), + ) + return nil + } + + // If there is an invalid proof, but current prover is not in contest mode, we skip proving this block. + if !h.contesterMode { + log.Info( + "An invalid proof has been submitted, but current prover is not in contest mode, skip proving", + "blockID", e.BlockId, + "parent", proofStatus.ParentHeader.Hash(), + ) + return nil + } + + // The proof submitted to protocol is invalid. + h.proofContestCh <- &proofProducer.ContestRequestBody{ + BlockID: e.BlockId, + ProposedIn: new(big.Int).SetUint64(e.Raw.BlockNumber), + ParentHash: proofStatus.ParentHeader.Hash(), + Meta: &e.Meta, + Tier: e.Meta.MinTier, + } + return nil + } + + windowExpired, expiredAt, timeToExpire, err := isProvingWindowExpired(e, h.sharedState.GetTiers()) + if err != nil { + return fmt.Errorf("failed to check if the proving window is expired: %w", err) + } + + // If the proving window is not expired, we need to check if the current prover is the assigned prover, + // if no and the current prover wants to prove unassigned blocks, then we should wait for its expiration. + if !windowExpired && e.AssignedProver != h.proverAddress { + log.Info( + "Proposed block is not provable by current prover at the moment", + "blockID", e.BlockId, + "prover", e.AssignedProver, + "timeToExpire", timeToExpire, + ) + + if h.proveUnassignedBlocks { + log.Info( + "Add proposed block to wait for proof window expiration", + "blockID", e.BlockId, + "assignProver", e.AssignedProver, + "timeToExpire", timeToExpire, + ) + time.AfterFunc( + // Add another 60 seconds, to ensure one more L1 block will be mined before the proof submission + timeToExpire+proofExpirationDelay, + func() { h.assignmentExpiredCh <- e }, + ) + } + + return nil + } + + // The current prover is the assigned prover, or the proving window is expired, + // try to submit a proof for this proposed block. + tier := e.Meta.MinTier + + // Get a random bumped submission delay, if necessary. + submissionDelay, err := h.getRandomBumpedSubmissionDelay(expiredAt) + if err != nil { + return err + } + + if h.isGuardian { + tier = encoding.TierGuardianMinorityID + } + + log.Info( + "Proposed block is provable", + "blockID", e.BlockId, + "assignProver", e.AssignedProver, + "minTier", e.Meta.MinTier, + "submissionDelay", submissionDelay, + "tier", tier, + ) + + metrics.ProverProofsAssigned.Add(1) + + time.AfterFunc(submissionDelay, func() { + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{Tier: tier, Event: e} + }) + + return nil +} + +// ========================= Guardian Prover ========================= + +// NewBlockProposedGuardianEventHandlerOps is the options for creating a new BlockProposedEventHandler. +type NewBlockProposedGuardianEventHandlerOps struct { + *NewBlockProposedEventHandlerOps + GuardianProverHeartbeater guardianProverHeartbeater.BlockSenderHeartbeater +} + +// BlockProposedGuaridanEventHandler is responsible for handling the BlockProposed event as a guardian prover. +type BlockProposedGuaridanEventHandler struct { + *BlockProposedEventHandler + GuardianProverHeartbeater guardianProverHeartbeater.BlockSenderHeartbeater +} + +// NewBlockProposedEventGuardianHandler creates a new BlockProposedEventHandler instance. +func NewBlockProposedEventGuardianHandler( + opts *NewBlockProposedGuardianEventHandlerOps, +) *BlockProposedGuaridanEventHandler { + blockProposedEventHandler := NewBlockProposedEventHandler(opts.NewBlockProposedEventHandlerOps) + blockProposedEventHandler.isGuardian = true + + return &BlockProposedGuaridanEventHandler{ + BlockProposedEventHandler: blockProposedEventHandler, + GuardianProverHeartbeater: opts.GuardianProverHeartbeater, + } +} + +// Handle implements the BlockProposedHandler interface. +func (h *BlockProposedGuaridanEventHandler) Handle( + ctx context.Context, + event *bindings.TaikoL1ClientBlockProposed, + end eventIterator.EndBlockProposedEventIterFunc, +) error { + // If we are operating as a guardian prover, + // we should sign all seen proposed blocks as soon as possible. + go func() { + if err := h.GuardianProverHeartbeater.SignAndSendBlock(ctx, event.BlockId); err != nil { + log.Error("Guardian prover unable to sign block", "blockID", event.BlockId, "error", err) + } + }() + + return h.BlockProposedEventHandler.Handle(ctx, event, end) +} diff --git a/packages/taiko-client/prover/event_handler/block_proposed_test.go b/packages/taiko-client/prover/event_handler/block_proposed_test.go new file mode 100644 index 00000000000..2d3b9806525 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/block_proposed_test.go @@ -0,0 +1,66 @@ +package handler + +import ( + "context" + "time" + + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + state "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/shared_state" +) + +func (s *EventHandlerTestSuite) TestBlockProposedHandle() { + opts := &NewBlockProposedEventHandlerOps{ + SharedState: &state.SharedState{}, + ProverAddress: common.Address{}, + GenesisHeightL1: 0, + RPC: s.RPCClient, + ProofGenerationCh: make(chan *proofProducer.ProofWithHeader), + AssignmentExpiredCh: make(chan *bindings.TaikoL1ClientBlockProposed), + ProofSubmissionCh: make(chan *proofProducer.ProofRequestBody), + ProofContestCh: make(chan *proofProducer.ContestRequestBody), + BackOffRetryInterval: 1 * time.Minute, + BackOffMaxRetrys: 5, + ContesterMode: true, + ProveUnassignedBlocks: true, + } + handler := NewBlockProposedEventHandler(opts) + e := s.ProposeAndInsertValidBlock(s.proposer, s.blobSyncer) + err := handler.Handle(context.Background(), e, func() {}) + s.Nil(err) +} + +func (s *EventHandlerTestSuite) TestGetRandomBumpedSubmissionDelay() { + opts := &NewBlockProposedEventHandlerOps{ + SharedState: &state.SharedState{}, + ProverAddress: common.Address{}, + GenesisHeightL1: 0, + RPC: s.RPCClient, + ProofGenerationCh: make(chan *proofProducer.ProofWithHeader), + AssignmentExpiredCh: make(chan *bindings.TaikoL1ClientBlockProposed), + ProofSubmissionCh: make(chan *proofProducer.ProofRequestBody), + ProofContestCh: make(chan *proofProducer.ContestRequestBody), + BackOffRetryInterval: 1 * time.Minute, + BackOffMaxRetrys: 5, + ContesterMode: true, + ProveUnassignedBlocks: true, + } + handler1 := NewBlockProposedEventHandler(opts) + + delay, err := handler1.getRandomBumpedSubmissionDelay(time.Now()) + s.Nil(err) + s.Zero(delay) + + opts.SubmissionDelay = 1 * time.Hour + handler2 := NewBlockProposedEventHandler(opts) + delay, err = handler2.getRandomBumpedSubmissionDelay(time.Now()) + s.Nil(err) + s.NotZero(delay) + s.Greater(delay.Seconds(), opts.SubmissionDelay.Seconds()) + s.Less( + delay.Seconds(), + opts.SubmissionDelay.Seconds()*(1+(submissionDelayRandomBumpRange/100)), + ) +} diff --git a/packages/taiko-client/prover/event_handler/block_verified.go b/packages/taiko-client/prover/event_handler/block_verified.go new file mode 100644 index 00000000000..41be0253928 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/block_verified.go @@ -0,0 +1,36 @@ +package handler + +import ( + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" +) + +// BlockVerifiedEventHandler is responsible for handling the BlockVerified event. +type BlockVerifiedEventHandler struct { + guardianProverAddress common.Address +} + +// NewBlockVerifiedEventHandler creates a new BlockVerifiedEventHandler instance. +func NewBlockVerifiedEventHandler(guardianProverAddress common.Address) *BlockVerifiedEventHandler { + return &BlockVerifiedEventHandler{guardianProverAddress: guardianProverAddress} +} + +// Handle handles the BlockVerified event. +func (h *BlockVerifiedEventHandler) Handle(e *bindings.TaikoL1ClientBlockVerified) { + metrics.ProverLatestVerifiedIDGauge.Set(float64(e.BlockId.Uint64())) + + if e.Prover == h.guardianProverAddress { + metrics.ProverProvenByGuardianGauge.Set(1) + } + + log.Info( + "New verified block", + "blockID", e.BlockId, + "hash", common.BytesToHash(e.BlockHash[:]), + "stateRoot", common.BytesToHash(e.StateRoot[:]), + "prover", e.Prover, + ) +} diff --git a/packages/taiko-client/prover/event_handler/block_verified_test.go b/packages/taiko-client/prover/event_handler/block_verified_test.go new file mode 100644 index 00000000000..90e9831d530 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/block_verified_test.go @@ -0,0 +1,22 @@ +package handler + +import ( + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +func (s *EventHandlerTestSuite) TestBlockVerifiedHandle() { + handler := &BlockVerifiedEventHandler{} + id := testutils.RandomHash().Big().Uint64() + s.NotPanics(func() { + handler.Handle(&bindings.TaikoL1ClientBlockVerified{ + BlockId: testutils.RandomHash().Big(), + Raw: types.Log{ + BlockHash: testutils.RandomHash(), + BlockNumber: id, + }, + }) + }) +} diff --git a/packages/taiko-client/prover/event_handler/interface.go b/packages/taiko-client/prover/event_handler/interface.go new file mode 100644 index 00000000000..6181859a18d --- /dev/null +++ b/packages/taiko-client/prover/event_handler/interface.go @@ -0,0 +1,36 @@ +package handler + +import ( + "context" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + eventIterator "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/chain_iterator/event_iterator" +) + +// BlockProposedHandler is the interface for handling `TaikoL1.BlockProposed` events. +type BlockProposedHandler interface { + Handle(ctx context.Context, + event *bindings.TaikoL1ClientBlockProposed, + end eventIterator.EndBlockProposedEventIterFunc, + ) error +} + +// TransitionContestedHandler is the interface for handling `TaikoL1.TransitionContested` events. +type TransitionContestedHandler interface { + Handle(ctx context.Context, event *bindings.TaikoL1ClientTransitionContested) error +} + +// TransitionProvedHandler is the interface for handling `TaikoL1.TransitionProved` events. +type TransitionProvedHandler interface { + Handle(ctx context.Context, event *bindings.TaikoL1ClientTransitionProved) error +} + +// BlockVerifiedHandler is the interface for handling `TaikoL1.BlockVerified` events. +type BlockVerifiedHandler interface { + Handle(e *bindings.TaikoL1ClientBlockVerified) +} + +// AssignmentExpiredHandler is the interface for handling the proof assignment expiration. +type AssignmentExpiredHandler interface { + Handle(ctx context.Context, event *bindings.TaikoL1ClientBlockProposed) error +} diff --git a/packages/taiko-client/prover/event_handler/transition_contested.go b/packages/taiko-client/prover/event_handler/transition_contested.go new file mode 100644 index 00000000000..53ef97f047f --- /dev/null +++ b/packages/taiko-client/prover/event_handler/transition_contested.go @@ -0,0 +1,111 @@ +package handler + +import ( + "context" + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +// TransitionContestedEventHandler is responsible for handling the TransitionContested event. +type TransitionContestedEventHandler struct { + rpc *rpc.Client + proofSubmissionCh chan<- *proofProducer.ProofRequestBody + contesterMode bool +} + +// NewTransitionContestedEventHandler creates a new TransitionContestedEventHandler instance. +func NewTransitionContestedEventHandler( + rpc *rpc.Client, + proofSubmissionCh chan *proofProducer.ProofRequestBody, + contesterMode bool, +) *TransitionContestedEventHandler { + return &TransitionContestedEventHandler{rpc, proofSubmissionCh, contesterMode} +} + +// Handle implements the TransitionContestedHandler interface. +func (h *TransitionContestedEventHandler) Handle( + ctx context.Context, + e *bindings.TaikoL1ClientTransitionContested, +) error { + log.Info( + "🗡 Transition contested", + "blockID", e.BlockId, + "parentHash", common.Bytes2Hex(e.Tran.ParentHash[:]), + "hash", common.Bytes2Hex(e.Tran.BlockHash[:]), + "stateRoot", common.BytesToHash(e.Tran.StateRoot[:]), + "contester", e.Contester, + "bond", utils.WeiToEther(e.ContestBond), + ) + + // If this prover is not in contester mode, we simply output a log and return. + if !h.contesterMode { + return nil + } + + contestedTransition, err := h.rpc.TaikoL1.GetTransition0( + &bind.CallOpts{Context: ctx}, + e.BlockId.Uint64(), + e.Tran.ParentHash, + ) + if err != nil { + return err + } + + // Compare the contested transition to the block in local L2 canonical chain. + isValid, err := isValidProof( + ctx, + h.rpc, + e.BlockId, + e.Tran.ParentHash, + contestedTransition.BlockHash, + contestedTransition.StateRoot, + ) + if err != nil { + return err + } + if isValid { + log.Info( + "Contested transition is valid to local canonical chain, ignore the contest", + "blockID", e.BlockId, + "parentHash", common.Bytes2Hex(e.Tran.ParentHash[:]), + "hash", common.Bytes2Hex(contestedTransition.BlockHash[:]), + "stateRoot", common.BytesToHash(contestedTransition.StateRoot[:]), + "contester", e.Contester, + "bond", utils.WeiToEther(e.ContestBond), + ) + return nil + } + + // If the proof is invalid, we contest it. + blockInfo, err := h.rpc.GetL2BlockInfo(ctx, e.BlockId) + if err != nil { + return err + } + + blockProposedEvent, err := getBlockProposedEventFromBlockID( + ctx, + h.rpc, + e.BlockId, + new(big.Int).SetUint64(blockInfo.ProposedIn), + ) + if err != nil { + return err + } + + go func() { + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{ + Tier: e.Tier + 1, // We need to send a higher tier proof to resolve the current contest. + Event: blockProposedEvent, + } + }() + + return nil +} diff --git a/packages/taiko-client/prover/event_handler/transition_proved.go b/packages/taiko-client/prover/event_handler/transition_proved.go new file mode 100644 index 00000000000..c94610a19d0 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/transition_proved.go @@ -0,0 +1,92 @@ +package handler + +import ( + "context" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +// TransitionProvedEventHandler is responsible for handling the TransitionProved event. +type TransitionProvedEventHandler struct { + rpc *rpc.Client + proofContestCh chan<- *proofProducer.ContestRequestBody + contesterMode bool +} + +// NewTransitionProvedEventHandler creates a new TransitionProvedEventHandler instance. +func NewTransitionProvedEventHandler( + rpc *rpc.Client, + proofContestCh chan *proofProducer.ContestRequestBody, + contesterMode bool, +) *TransitionProvedEventHandler { + return &TransitionProvedEventHandler{rpc, proofContestCh, contesterMode} +} + +// Handle implements the TransitionProvedHandler interface. +func (h *TransitionProvedEventHandler) Handle( + ctx context.Context, + e *bindings.TaikoL1ClientTransitionProved, +) error { + metrics.ProverReceivedProvenBlockGauge.Set(float64(e.BlockId.Uint64())) + + // If this prover is in contest mode, we check the validity of this proof and if it's invalid, + // contest it with a higher tier proof. + if !h.contesterMode { + return nil + } + + isValid, err := isValidProof( + ctx, + h.rpc, + e.BlockId, + e.Tran.ParentHash, + e.Tran.BlockHash, + e.Tran.StateRoot, + ) + if err != nil { + return err + } + // If the proof is valid, we simply return. + if isValid { + return nil + } + + // If the proof is invalid, we contest it. + blockInfo, err := h.rpc.GetL2BlockInfo(ctx, e.BlockId) + if err != nil { + return err + } + + meta, err := getMetadataFromBlockID(ctx, h.rpc, e.BlockId, new(big.Int).SetUint64(blockInfo.ProposedIn)) + if err != nil { + return err + } + + log.Info( + "Attempting to contest a proven transition", + "blockID", e.BlockId, + "l1Height", blockInfo.ProposedIn, + "tier", e.Tier, + "parentHash", common.Bytes2Hex(e.Tran.ParentHash[:]), + "blockHash", common.Bytes2Hex(e.Tran.BlockHash[:]), + "stateRoot", common.Bytes2Hex(e.Tran.StateRoot[:]), + ) + + go func() { + h.proofContestCh <- &proofProducer.ContestRequestBody{ + BlockID: e.BlockId, + ProposedIn: new(big.Int).SetUint64(blockInfo.ProposedIn), + ParentHash: e.Tran.ParentHash, + Meta: meta, + Tier: e.Tier, + } + }() + return nil +} diff --git a/packages/taiko-client/prover/event_handler/transition_proved_test.go b/packages/taiko-client/prover/event_handler/transition_proved_test.go new file mode 100644 index 00000000000..b6afa75ec2a --- /dev/null +++ b/packages/taiko-client/prover/event_handler/transition_proved_test.go @@ -0,0 +1,133 @@ +package handler + +import ( + "context" + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/blob" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +type EventHandlerTestSuite struct { + testutils.ClientTestSuite + d *driver.Driver + proposer *proposer.Proposer + blobSyncer *blob.Syncer +} + +func (s *EventHandlerTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + // Init driver + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) + + d := new(driver.Driver) + s.Nil(d.InitFromConfig(context.Background(), &driver.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + JwtSecret: string(jwtSecret), + }, + })) + s.d = d + + // Init calldata syncer + testState, err := state.New(context.Background(), s.RPCClient) + s.Nil(err) + s.Nil(testState.ResetL1Current(context.Background(), common.Big0)) + + tracker := beaconsync.NewSyncProgressTracker(s.RPCClient.L2, 30*time.Second) + s.blobSyncer, err = blob.NewSyncer( + context.Background(), + s.RPCClient, + testState, + tracker, + 0, + nil, + ) + s.Nil(err) + + // Init proposer + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + prop := new(proposer.Proposer) + + s.Nil(prop.InitFromConfig(context.Background(), &proposer.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: string(jwtSecret), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + }, + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), + ProposeInterval: 1024 * time.Hour, + MaxProposedTxListsPerEpoch: 1, + ProverEndpoints: s.ProverEndpoints, + OptimisticTierFee: common.Big256, + SgxTierFee: common.Big256, + MaxTierFeePriceBumps: 3, + TierFeePriceBump: common.Big2, + L1BlockBuilderTip: common.Big0, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 1, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProposerPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + + s.proposer = prop +} + +func (s *EventHandlerTestSuite) TestTransitionProvedHandle() { + handler := NewTransitionProvedEventHandler( + s.RPCClient, + make(chan *proofProducer.ContestRequestBody), + true, + ) + e := s.ProposeAndInsertValidBlock(s.proposer, s.blobSyncer) + err := handler.Handle(context.Background(), &bindings.TaikoL1ClientTransitionProved{ + BlockId: e.BlockId, + Tier: e.Meta.MinTier, + }) + s.Nil(err) +} + +func TestTransitionProvedEventHandlerTestSuite(t *testing.T) { + suite.Run(t, new(EventHandlerTestSuite)) +} diff --git a/packages/taiko-client/prover/event_handler/util.go b/packages/taiko-client/prover/event_handler/util.go new file mode 100644 index 00000000000..c21ad7f1e66 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/util.go @@ -0,0 +1,148 @@ +package handler + +import ( + "context" + "errors" + "fmt" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + eventIterator "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/chain_iterator/event_iterator" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +var ( + errTierNotFound = errors.New("tier not found") +) + +// isBlockVerified checks whether the given L2 block has been verified. +func isBlockVerified(ctx context.Context, rpc *rpc.Client, id *big.Int) (bool, error) { + stateVars, err := rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + return false, err + } + + return id.Uint64() <= stateVars.B.LastVerifiedBlockId, nil +} + +// isValidProof checks if the given proof is a valid one, comparing to current L2 node canonical chain. +func isValidProof( + ctx context.Context, + rpc *rpc.Client, + blockID *big.Int, + parentHash common.Hash, + blockHash common.Hash, + stateRoot common.Hash, +) (bool, error) { + parent, err := rpc.L2ParentByBlockID(ctx, blockID) + if err != nil { + return false, err + } + + l2Header, err := rpc.L2.HeaderByNumber(ctx, blockID) + if err != nil { + return false, err + } + + return parent.Hash() == parentHash && + l2Header.Hash() == blockHash && + l2Header.Root == stateRoot, nil +} + +// getProvingWindow returns the provingWindow of the given proposed block. +func getProvingWindow( + e *bindings.TaikoL1ClientBlockProposed, + tiers []*rpc.TierProviderTierWithID, +) (time.Duration, error) { + for _, t := range tiers { + if e.Meta.MinTier == t.ID { + return time.Duration(t.ProvingWindow) * time.Minute, nil + } + } + + return 0, errTierNotFound +} + +// getBlockProposedEventFromBlockID fetches the BlockProposed event by the given block id. +func getBlockProposedEventFromBlockID( + ctx context.Context, + rpc *rpc.Client, + id *big.Int, + proposedIn *big.Int, +) (e *bindings.TaikoL1ClientBlockProposed, err error) { + callback := func( + _ context.Context, + event *bindings.TaikoL1ClientBlockProposed, + _ eventIterator.EndBlockProposedEventIterFunc, + ) error { + // Only filter for exact blockID we want. + if event.BlockId.Cmp(id) != 0 { + return nil + } + + e = event + + return nil + } + + iter, err := eventIterator.NewBlockProposedIterator(ctx, &eventIterator.BlockProposedIteratorConfig{ + Client: rpc.L1, + TaikoL1: rpc.TaikoL1, + StartHeight: new(big.Int).Sub(proposedIn, common.Big1), + EndHeight: proposedIn, + OnBlockProposedEvent: callback, + }) + if err != nil { + log.Error("Failed to start event iterator", "event", "BlockProposed", "error", err) + return nil, err + } + + if err := iter.Iter(); err != nil { + return nil, err + } + + if e == nil { + return nil, fmt.Errorf("failed to find BlockProposed event for block %d", id) + } + + return e, nil +} + +// getMetadataFromBlockID fetches the block meta from the onchain event by the given block id. +func getMetadataFromBlockID( + ctx context.Context, + rpc *rpc.Client, + id *big.Int, + proposedIn *big.Int, +) (*bindings.TaikoDataBlockMetadata, error) { + e, err := getBlockProposedEventFromBlockID(ctx, rpc, id, proposedIn) + if err != nil { + return nil, err + } + return &e.Meta, nil +} + +// isProvingWindowExpired returns true as the first return parameter if the assigned prover +// proving window of the given proposed block is expired, and the second return parameter is the time +// remaining til proving window is expired. +func isProvingWindowExpired( + e *bindings.TaikoL1ClientBlockProposed, + tiers []*rpc.TierProviderTierWithID, +) (bool, time.Time, time.Duration, error) { + provingWindow, err := getProvingWindow(e, tiers) + if err != nil { + return false, time.Time{}, 0, fmt.Errorf("failed to get proving window: %w", err) + } + + var ( + now = uint64(time.Now().Unix()) + expiredAt = e.Meta.Timestamp + uint64(provingWindow.Seconds()) + ) + + return now > expiredAt, time.Unix(int64(expiredAt), 0), time.Duration(expiredAt-now) * time.Second, nil +} diff --git a/packages/taiko-client/prover/event_handler/util_test.go b/packages/taiko-client/prover/event_handler/util_test.go new file mode 100644 index 00000000000..95c103ec243 --- /dev/null +++ b/packages/taiko-client/prover/event_handler/util_test.go @@ -0,0 +1,52 @@ +package handler + +import ( + "context" + "math/big" + "testing" + + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +type ProverEventHandlerTestSuite struct { + testutils.ClientTestSuite +} + +func (s *ProverEventHandlerTestSuite) TestGetProvingWindowNotFound() { + _, err := getProvingWindow(&bindings.TaikoL1ClientBlockProposed{ + Meta: bindings.TaikoDataBlockMetadata{ + MinTier: encoding.TierGuardianMajorityID + 1, + }, + }, []*rpc.TierProviderTierWithID{}) + s.ErrorIs(err, errTierNotFound) +} + +func (s *ProverEventHandlerTestSuite) TestIsBlockVerified() { + _, slotB, err := s.RPCClient.TaikoL1.GetStateVariables(nil) + s.Nil(err) + + verified, err := isBlockVerified( + context.Background(), + s.RPCClient, + new(big.Int).SetUint64(slotB.LastVerifiedBlockId), + ) + s.Nil(err) + s.True(verified) + + verified, err = isBlockVerified( + context.Background(), + s.RPCClient, + new(big.Int).SetUint64(slotB.LastVerifiedBlockId+1), + ) + s.Nil(err) + s.False(verified) +} + +func TestProverEventHandlerTestSuite(t *testing.T) { + suite.Run(t, new(ProverEventHandlerTestSuite)) +} diff --git a/packages/taiko-client/prover/guardian.go b/packages/taiko-client/prover/guardian.go new file mode 100644 index 00000000000..c23b33e7802 --- /dev/null +++ b/packages/taiko-client/prover/guardian.go @@ -0,0 +1,58 @@ +package prover + +import ( + "context" + "time" + + "github.com/ethereum/go-ethereum/log" + "golang.org/x/sync/errgroup" +) + +var ( + heartbeatInterval = 12 * time.Second +) + +// guardianProverHeartbeatLoop keeps sending heartbeats to the guardian prover health check server +// on an interval. +func (p *Prover) guardianProverHeartbeatLoop(ctx context.Context) { + p.wg.Add(1) + defer p.wg.Done() + + ticker := time.NewTicker(heartbeatInterval) + defer ticker.Stop() + + for { + select { + case <-p.ctx.Done(): + return + case <-ticker.C: + var ( + latestL1Block uint64 + latestL2Block uint64 + err error + g = new(errgroup.Group) + ) + + g.Go(func() error { + latestL1Block, err = p.rpc.L1.BlockNumber(ctx) + return err + }) + g.Go(func() error { + latestL2Block, err = p.rpc.L2.BlockNumber(ctx) + return err + }) + if err := g.Wait(); err != nil { + log.Error("Failed to get latest L1/L2 block number", "error", err) + continue + } + + if err := p.guardianProverHeartbeater.SendHeartbeat( + ctx, + latestL1Block, + latestL2Block, + ); err != nil { + log.Error("Failed to send guardian prover heartbeat", "error", err) + } + } + } +} diff --git a/packages/taiko-client/prover/guardian_prover_heartbeater/guardian_prover.go b/packages/taiko-client/prover/guardian_prover_heartbeater/guardian_prover.go new file mode 100644 index 00000000000..8bea914faad --- /dev/null +++ b/packages/taiko-client/prover/guardian_prover_heartbeater/guardian_prover.go @@ -0,0 +1,252 @@ +package guardianproverheartbeater + +import ( + "context" + "crypto/ecdsa" + "fmt" + "math/big" + "net/url" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/go-resty/resty/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// healthCheckReq is the request body sent to the health check server when a heartbeat is sent. +type healthCheckReq struct { + ProverAddress string `json:"prover"` + HeartBeatSignature []byte `json:"heartBeatSignature"` + LatestL1Block uint64 `json:"latestL1Block"` + LatestL2Block uint64 `json:"latestL2Block"` +} + +// signedBlockReq is the request body sent to the health check server when a block is signed. +type signedBlockReq struct { + BlockID uint64 `json:"blockID"` + BlockHash string `json:"blockHash"` + Signature []byte `json:"signature"` + Prover common.Address `json:"proverAddress"` +} + +// startupReq is the request body send to the health check server when the guardian prover starts up. +type startupReq struct { + ProverAddress string `json:"prover"` + GuardianVersion string `json:"guardianVersion"` + L1NodeVersion string `json:"l1NodeVersion"` + L2NodeVersion string `json:"l2NodeVersion"` + Revision string `json:"revision"` + Signature []byte `json:"signature"` +} + +// GuardianProverHeartBeater is responsible for signing and sending known blocks to the health check server. +type GuardianProverHeartBeater struct { + privateKey *ecdsa.PrivateKey + healthCheckServerEndpoint *url.URL + rpc *rpc.Client + proverAddress common.Address +} + +// New creates a new GuardianProverBlockSender instance. +func New( + privateKey *ecdsa.PrivateKey, + healthCheckServerEndpoint *url.URL, + rpc *rpc.Client, + proverAddress common.Address, +) *GuardianProverHeartBeater { + return &GuardianProverHeartBeater{ + privateKey: privateKey, + healthCheckServerEndpoint: healthCheckServerEndpoint, + rpc: rpc, + proverAddress: proverAddress, + } +} + +// post sends the given POST request to the health check server. +func (s *GuardianProverHeartBeater) post(ctx context.Context, route string, req interface{}) error { + resp, err := resty.New().R(). + SetContext(ctx). + SetHeader("Content-Type", "application/json"). + SetHeader("Accept", "application/json"). + SetBody(req). + Post(fmt.Sprintf("%v/%v", s.healthCheckServerEndpoint.String(), route)) + if err != nil { + return err + } + + if !resp.IsSuccess() { + return fmt.Errorf( + "unable to contact health check server endpoint, status code: %v", + resp.StatusCode(), + ) + } + + return nil +} + +// SignAndSendBlock signs the given block and sends it to the health check server. +func (s *GuardianProverHeartBeater) SignAndSendBlock(ctx context.Context, blockID *big.Int) error { + signed, header, err := s.signBlock(ctx, blockID) + if err != nil { + return nil + } + + if signed == nil { + return nil + } + + if err := s.sendSignedBlockReq(ctx, signed, header.Hash(), blockID); err != nil { + return err + } + + return nil +} + +// SendStartupMessage sends the startup message to the health check server. +func (s *GuardianProverHeartBeater) SendStartupMessage( + ctx context.Context, + revision string, + version string, + l1NodeVersion string, + l2NodeVersion string, +) error { + if s.healthCheckServerEndpoint == nil { + log.Warn("No health check server endpoint set, returning early") + return nil + } + + sig, err := crypto.Sign( + crypto.Keccak256Hash( + s.proverAddress.Bytes(), + []byte(revision), + []byte(version), + []byte(l1NodeVersion), + []byte(l2NodeVersion), + ).Bytes(), + s.privateKey) + if err != nil { + return err + } + + if err := s.post(ctx, "startup", &startupReq{ + Revision: revision, + GuardianVersion: version, + L1NodeVersion: l1NodeVersion, + L2NodeVersion: l2NodeVersion, + ProverAddress: s.proverAddress.Hex(), + Signature: sig, + }); err != nil { + return err + } + + log.Info( + "Guardian prover successfully sent the startup message", + "l1NodeVersion", l1NodeVersion, + "l2NodeVersion", l2NodeVersion, + ) + + return nil +} + +// sendSignedBlockReq is the actual method that sends the signed block to the health check server. +func (s *GuardianProverHeartBeater) sendSignedBlockReq( + ctx context.Context, + signed []byte, + hash common.Hash, + blockID *big.Int, +) error { + if s.healthCheckServerEndpoint == nil { + log.Info("No health check server endpoint set, returning early") + return nil + } + + req := &signedBlockReq{ + BlockID: blockID.Uint64(), + BlockHash: hash.Hex(), + Signature: signed, + Prover: s.proverAddress, + } + + if err := s.post(ctx, "signedBlock", req); err != nil { + return err + } + + log.Info("Guardian prover successfully signed block", "blockID", blockID.Uint64()) + + return nil +} + +// signBlock signs the given block and returns the signature and header. +func (s *GuardianProverHeartBeater) signBlock(ctx context.Context, blockID *big.Int) ([]byte, *types.Header, error) { + log.Info("Guardian prover signing block", "blockID", blockID.Uint64()) + + head, err := s.rpc.L2.BlockNumber(ctx) + if err != nil { + return nil, nil, err + } + + for head < blockID.Uint64() { + log.Info( + "Guardian prover block signing waiting for chain", + "latestBlock", head, + "eventBlockID", blockID.Uint64(), + ) + + if _, err := s.rpc.WaitL2Header(ctx, blockID); err != nil { + return nil, nil, err + } + + head, err = s.rpc.L2.BlockNumber(ctx) + if err != nil { + return nil, nil, err + } + } + + header, err := s.rpc.L2.HeaderByNumber(ctx, blockID) + if err != nil { + return nil, nil, err + } + + log.Info( + "Guardian prover block signing caught up", + "latestBlock", head, + "eventBlockID", blockID.Uint64(), + ) + + signed, err := crypto.Sign(header.Hash().Bytes(), s.privateKey) + if err != nil { + return nil, nil, err + } + + return signed, header, nil +} + +// SendHeartbeat sends a heartbeat to the health check server. +func (s *GuardianProverHeartBeater) SendHeartbeat( + ctx context.Context, + latestL1Block uint64, + latestL2Block uint64, +) error { + sig, err := crypto.Sign(crypto.Keccak256Hash([]byte("HEART_BEAT")).Bytes(), s.privateKey) + if err != nil { + return err + } + + req := &healthCheckReq{ + HeartBeatSignature: sig, + ProverAddress: s.proverAddress.Hex(), + LatestL1Block: latestL1Block, + LatestL2Block: latestL2Block, + } + + if err := s.post(ctx, "healthCheck", req); err != nil { + return err + } + + log.Info("Successfully sent heartbeat", "signature", common.Bytes2Hex(sig)) + + return nil +} diff --git a/packages/taiko-client/prover/guardian_prover_heartbeater/interface.go b/packages/taiko-client/prover/guardian_prover_heartbeater/interface.go new file mode 100644 index 00000000000..2f16670cf79 --- /dev/null +++ b/packages/taiko-client/prover/guardian_prover_heartbeater/interface.go @@ -0,0 +1,30 @@ +package guardianproverheartbeater + +import ( + "context" + "math/big" +) + +// BlockSigner defines an interface that communicates with a central Guardian Prover server, sending signed blocks. +type BlockSigner interface { + SignAndSendBlock(ctx context.Context, blockID *big.Int) error + SendStartupMessage( + ctx context.Context, + revision string, + version string, + l1NodeVersion string, + l2NodeVersion string, + ) error +} + +// Heartbeater defines an interface that communicates with a central Guardian Prover server, sending heartbeats. +type Heartbeater interface { + SendHeartbeat(ctx context.Context, latestL1Block uint64, latestL2Block uint64) error +} + +// BlockSenderHeartbeater defines an interface that communicates with a central Guardian Prover server, +// sending heartbeats and signed blocks (and in the future, contested blocks). +type BlockSenderHeartbeater interface { + BlockSigner + Heartbeater +} diff --git a/packages/taiko-client/prover/init.go b/packages/taiko-client/prover/init.go new file mode 100644 index 00000000000..9f046fbbcd1 --- /dev/null +++ b/packages/taiko-client/prover/init.go @@ -0,0 +1,269 @@ +package prover + +import ( + "context" + "fmt" + "math/big" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + handler "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/event_handler" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + proofSubmitter "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" +) + +// setApprovalAmount will set the allowance on the TaikoToken contract for the +// configured proverAddress as owner and the contract as spender, +// if `--prover.allowance` flag is provided for allowance. +func (p *Prover) setApprovalAmount(ctx context.Context, contract common.Address) error { + // Skip setting approval amount if `--prover.allowance` flag is not set. + if p.cfg.Allowance == nil || p.cfg.Allowance.Cmp(common.Big0) != 1 { + log.Info("Skipping setting approval, `--prover.allowance` flag not set") + return nil + } + + // Check the existing allowance for the contract. + allowance, err := p.rpc.TaikoToken.Allowance( + &bind.CallOpts{Context: ctx}, + p.ProverAddress(), + contract, + ) + if err != nil { + return err + } + + log.Info("Existing allowance for the contract", "allowance", utils.WeiToEther(allowance), "contract", contract) + + // If the existing allowance is greater or equal to the configured allowance, skip setting allowance. + if allowance.Cmp(p.cfg.Allowance) >= 0 { + log.Info( + "Skipping setting allowance, allowance already greater or equal", + "allowance", utils.WeiToEther(allowance), + "approvalAmount", p.cfg.Allowance, + "contract", contract, + ) + return nil + } + + log.Info("Approving the contract for taiko token", "allowance", p.cfg.Allowance, "contract", contract) + data, err := encoding.TaikoTokenABI.Pack("approve", contract, p.cfg.Allowance) + if err != nil { + return err + } + + receipt, err := p.txmgr.Send(ctx, txmgr.TxCandidate{ + TxData: data, + To: &p.cfg.TaikoTokenAddress, + }) + if err != nil { + return err + } + if receipt.Status != types.ReceiptStatusSuccessful { + return fmt.Errorf("failed to approve allowance for contract (%s): %s", contract, receipt.TxHash.Hex()) + } + + log.Info( + "Approved the contract for taiko token", + "txHash", receipt.TxHash.Hex(), + "contract", contract, + ) + + // Check the new allowance for the contract. + if allowance, err = p.rpc.TaikoToken.Allowance( + &bind.CallOpts{Context: ctx}, + p.ProverAddress(), + contract, + ); err != nil { + return err + } + + log.Info("New allowance for the contract", "allowance", utils.WeiToEther(allowance), "contract", contract) + + return nil +} + +// initProofSubmitters initializes the proof submitters from the given tiers in protocol. +func (p *Prover) initProofSubmitters( + txmgr *txmgr.SimpleTxManager, + txBuilder *transaction.ProveBlockTxBuilder, +) error { + for _, tier := range p.sharedState.GetTiers() { + var ( + producer proofProducer.ProofProducer + submitter proofSubmitter.Submitter + err error + ) + switch tier.ID { + case encoding.TierOptimisticID: + producer = &proofProducer.OptimisticProofProducer{} + case encoding.TierSgxID: + producer = &proofProducer.SGXProofProducer{ + RaikoHostEndpoint: p.cfg.RaikoHostEndpoint, + L1Endpoint: p.cfg.RaikoL1Endpoint, + L1BeaconEndpoint: p.cfg.RaikoL1BeaconEndpoint, + L2Endpoint: p.cfg.RaikoL2Endpoint, + ProofType: proofProducer.ProofTypeSgx, + Dummy: p.cfg.Dummy, + } + case encoding.TierGuardianMinorityID: + producer = proofProducer.NewGuardianProofProducer(&proofProducer.SGXProofProducer{ + RaikoHostEndpoint: p.cfg.RaikoHostEndpoint, + L1Endpoint: p.cfg.RaikoL1Endpoint, + L1BeaconEndpoint: p.cfg.RaikoL1BeaconEndpoint, + L2Endpoint: p.cfg.RaikoL2Endpoint, + ProofType: proofProducer.ProofTypeCPU, + Dummy: p.cfg.Dummy, + }, encoding.TierGuardianMinorityID, p.cfg.EnableLivenessBondProof) + case encoding.TierGuardianMajorityID: + producer = proofProducer.NewGuardianProofProducer(&proofProducer.SGXProofProducer{ + RaikoHostEndpoint: p.cfg.RaikoHostEndpoint, + L1Endpoint: p.cfg.RaikoL1Endpoint, + L1BeaconEndpoint: p.cfg.RaikoL1BeaconEndpoint, + L2Endpoint: p.cfg.RaikoL2Endpoint, + ProofType: proofProducer.ProofTypeCPU, + Dummy: p.cfg.Dummy, + }, encoding.TierGuardianMajorityID, p.cfg.EnableLivenessBondProof) + default: + return fmt.Errorf("unsupported tier: %d", tier.ID) + } + + if submitter, err = proofSubmitter.NewProofSubmitter( + p.rpc, + producer, + p.proofGenerationCh, + p.cfg.TaikoL2Address, + p.cfg.Graffiti, + p.cfg.ProveBlockGasLimit, + txmgr, + txBuilder, + ); err != nil { + return err + } + + p.proofSubmitters = append(p.proofSubmitters, submitter) + } + + return nil +} + +// initL1Current initializes prover's L1Current cursor. +func (p *Prover) initL1Current(startingBlockID *big.Int) error { + if err := p.rpc.WaitTillL2ExecutionEngineSynced(p.ctx); err != nil { + return err + } + + stateVars, err := p.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: p.ctx}) + if err != nil { + return err + } + p.genesisHeightL1 = stateVars.A.GenesisHeight + + if startingBlockID == nil { + if stateVars.B.LastVerifiedBlockId == 0 { + genesisL1Header, err := p.rpc.L1.HeaderByNumber(p.ctx, new(big.Int).SetUint64(stateVars.A.GenesisHeight)) + if err != nil { + return err + } + + p.sharedState.SetL1Current(genesisL1Header) + return nil + } + + startingBlockID = new(big.Int).SetUint64(stateVars.B.LastVerifiedBlockId) + } + + log.Info("Init L1Current cursor", "startingBlockID", startingBlockID) + + latestVerifiedHeaderL1Origin, err := p.rpc.L2.L1OriginByID(p.ctx, startingBlockID) + if err != nil { + if err.Error() == ethereum.NotFound.Error() { + log.Warn( + "Failed to find L1Origin for blockID, use latest L1 head instead", + "blockID", startingBlockID, + ) + l1Head, err := p.rpc.L1.HeaderByNumber(p.ctx, nil) + if err != nil { + return err + } + + p.sharedState.SetL1Current(l1Head) + return nil + } + return err + } + + l1Current, err := p.rpc.L1.HeaderByHash(p.ctx, latestVerifiedHeaderL1Origin.L1BlockHash) + if err != nil { + return err + } + p.sharedState.SetL1Current(l1Current) + + return nil +} + +// initEventHandlers initialize all event handlers which will be used by the current prover. +func (p *Prover) initEventHandlers() error { + // ------- BlockProposed ------- + opts := &handler.NewBlockProposedEventHandlerOps{ + SharedState: p.sharedState, + ProverAddress: p.ProverAddress(), + GenesisHeightL1: p.genesisHeightL1, + RPC: p.rpc, + ProofGenerationCh: p.proofGenerationCh, + AssignmentExpiredCh: p.assignmentExpiredCh, + ProofSubmissionCh: p.proofSubmissionCh, + ProofContestCh: p.proofContestCh, + BackOffRetryInterval: p.cfg.BackOffRetryInterval, + BackOffMaxRetrys: p.cfg.BackOffMaxRetries, + ContesterMode: p.cfg.ContesterMode, + ProveUnassignedBlocks: p.cfg.ProveUnassignedBlocks, + } + if p.IsGuardianProver() { + opts.SubmissionDelay = p.cfg.GuardianProofSubmissionDelay + p.blockProposedHandler = handler.NewBlockProposedEventGuardianHandler( + &handler.NewBlockProposedGuardianEventHandlerOps{ + NewBlockProposedEventHandlerOps: opts, + GuardianProverHeartbeater: p.guardianProverHeartbeater, + }, + ) + } else { + p.blockProposedHandler = handler.NewBlockProposedEventHandler(opts) + } + // ------- TransitionProved ------- + p.transitionProvedHandler = handler.NewTransitionProvedEventHandler( + p.rpc, + p.proofContestCh, + p.cfg.ContesterMode, + ) + // ------- TransitionContested ------- + p.transitionContestedHandler = handler.NewTransitionContestedEventHandler( + p.rpc, + p.proofSubmissionCh, + p.cfg.ContesterMode, + ) + // ------- AssignmentExpired ------- + p.assignmentExpiredHandler = handler.NewAssignmentExpiredEventHandler( + p.rpc, + p.ProverAddress(), + p.proofSubmissionCh, + p.proofContestCh, + p.cfg.ContesterMode, + ) + + // ------- BlockVerified ------- + guardianProverAddress, err := p.rpc.GetGuardianProverAddress(p.ctx) + if err != nil { + return err + } + p.blockVerifiedHandler = handler.NewBlockVerifiedEventHandler(guardianProverAddress) + + return nil +} diff --git a/packages/taiko-client/prover/init_test.go b/packages/taiko-client/prover/init_test.go new file mode 100644 index 00000000000..25c4e320b3f --- /dev/null +++ b/packages/taiko-client/prover/init_test.go @@ -0,0 +1,44 @@ +package prover + +import ( + "context" + "math/big" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +func (s *ProverTestSuite) TestSetApprovalAmount() { + data, err := encoding.TaikoTokenABI.Pack( + "approve", + s.p.cfg.AssignmentHookAddress, + common.Big0, + ) + s.Nil(err) + + _, err = s.p.txmgr.Send(context.Background(), txmgr.TxCandidate{ + TxData: data, + To: &s.p.cfg.TaikoTokenAddress, + }) + s.Nil(err) + + allowance, err := s.p.rpc.TaikoToken.Allowance(nil, s.p.ProverAddress(), s.p.cfg.AssignmentHookAddress) + s.Nil(err) + + s.Equal(0, allowance.Cmp(common.Big0)) + + // Max that can be approved + amt, ok := new(big.Int).SetString("58764887351446156758749765621197442946723800609510499661540524634076971270144", 10) + s.True(ok) + + s.p.cfg.Allowance = amt + + s.Nil(s.p.setApprovalAmount(context.Background(), s.p.cfg.AssignmentHookAddress)) + + allowance, err = s.p.rpc.TaikoToken.Allowance(nil, s.p.ProverAddress(), s.p.cfg.AssignmentHookAddress) + s.Nil(err) + + s.Equal(0, amt.Cmp(allowance)) +} diff --git a/packages/taiko-client/prover/proof_producer/dummy_producer.go b/packages/taiko-client/prover/proof_producer/dummy_producer.go new file mode 100644 index 00000000000..0481aa47e5b --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/dummy_producer.go @@ -0,0 +1,31 @@ +package producer + +import ( + "bytes" + "math/big" + + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +// DummyProofProducer always returns a dummy proof. +type DummyProofProducer struct{} + +// RequestProof returns a dummy proof to the result channel. +func (o *DummyProofProducer) RequestProof( + opts *ProofRequestOptions, + blockID *big.Int, + meta *bindings.TaikoDataBlockMetadata, + header *types.Header, + tier uint16, +) (*ProofWithHeader, error) { + return &ProofWithHeader{ + BlockID: blockID, + Meta: meta, + Header: header, + Proof: bytes.Repeat([]byte{0xff}, 100), + Opts: opts, + Tier: tier, + }, nil +} diff --git a/packages/taiko-client/prover/proof_producer/dummy_producer_test.go b/packages/taiko-client/prover/proof_producer/dummy_producer_test.go new file mode 100644 index 00000000000..2b270071acf --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/dummy_producer_test.go @@ -0,0 +1,50 @@ +package producer + +import ( + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +func TestDummyProducerRequestProof(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.BytesToAddress(randHash().Bytes()), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + producer = DummyProofProducer{} + tier uint16 = 1024 + blockID = common.Big32 + ) + res, err := producer.RequestProof( + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + tier, + ) + require.Nil(t, err) + + require.Equal(t, res.BlockID, blockID) + require.Equal(t, res.Header, header) + require.Equal(t, tier, res.Tier) + require.NotEmpty(t, res.Proof) +} diff --git a/packages/taiko-client/prover/proof_producer/guardian_producer.go b/packages/taiko-client/prover/proof_producer/guardian_producer.go new file mode 100644 index 00000000000..86dc956b8c3 --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/guardian_producer.go @@ -0,0 +1,73 @@ +package producer + +import ( + "context" + "math/big" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +// GuardianProofProducer always returns an optimistic (dummy) proof. +type GuardianProofProducer struct { + returnLivenessBond bool + tier uint16 + *SGXProofProducer +} + +func NewGuardianProofProducer( + sgxProofProducer *SGXProofProducer, + tier uint16, + returnLivenessBond bool, +) *GuardianProofProducer { + return &GuardianProofProducer{ + SGXProofProducer: sgxProofProducer, + returnLivenessBond: returnLivenessBond, + tier: tier, + } +} + +// RequestProof implements the ProofProducer interface. +func (g *GuardianProofProducer) RequestProof( + ctx context.Context, + opts *ProofRequestOptions, + blockID *big.Int, + meta *bindings.TaikoDataBlockMetadata, + header *types.Header, +) (*ProofWithHeader, error) { + log.Info( + "Request guardian proof", + "blockID", blockID, + "coinbase", meta.Coinbase, + "height", header.Number, + "hash", header.Hash(), + ) + + if g.returnLivenessBond { + return &ProofWithHeader{ + BlockID: blockID, + Meta: meta, + Header: header, + Proof: crypto.Keccak256([]byte("RETURN_LIVENESS_BOND")), + Opts: opts, + Tier: g.tier, + }, nil + } + + // Each guardian prover should check the block hash with raiko at first, + // before submitting the guardian proof, if raiko can return a proof without + // any error, which means the block hash is valid. + if _, err := g.SGXProofProducer.RequestProof(ctx, opts, blockID, meta, header); err != nil { + return nil, err + } + + return g.DummyProofProducer.RequestProof(opts, blockID, meta, header, g.Tier()) +} + +// Tier implements the ProofProducer interface. +func (g *GuardianProofProducer) Tier() uint16 { + return g.tier +} diff --git a/packages/taiko-client/prover/proof_producer/guardian_producer_test.go b/packages/taiko-client/prover/proof_producer/guardian_producer_test.go new file mode 100644 index 00000000000..a2738671ce6 --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/guardian_producer_test.go @@ -0,0 +1,165 @@ +package producer + +import ( + "context" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +func TestGuardianProducerRequestProof(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.BytesToAddress(randHash().Bytes()), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + producer = NewGuardianProofProducer(&SGXProofProducer{Dummy: true}, encoding.TierGuardianMajorityID, false) + blockID = common.Big32 + ) + res, err := producer.RequestProof( + context.Background(), + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + ) + require.Nil(t, err) + + require.Equal(t, res.BlockID, blockID) + require.Equal(t, res.Header, header) + require.Equal(t, res.Tier, encoding.TierGuardianMajorityID) + require.NotEmpty(t, res.Proof) +} + +func TestGuardianProducerRequestProofReturnLivenessBond(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.BytesToAddress(randHash().Bytes()), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + producer = NewGuardianProofProducer(&SGXProofProducer{Dummy: true}, encoding.TierGuardianMajorityID, true) + blockID = common.Big32 + ) + res, err := producer.RequestProof( + context.Background(), + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + ) + require.Nil(t, err) + + require.Equal(t, res.BlockID, blockID) + require.Equal(t, res.Header, header) + require.Equal(t, res.Tier, encoding.TierGuardianMajorityID) + require.NotEmpty(t, res.Proof) + require.Equal(t, res.Proof, crypto.Keccak256([]byte("RETURN_LIVENESS_BOND"))) +} + +func TestMinorityRequestProof(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.BytesToAddress(randHash().Bytes()), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + producer = NewGuardianProofProducer(&SGXProofProducer{Dummy: true}, encoding.TierGuardianMinorityID, false) + blockID = common.Big32 + ) + res, err := producer.RequestProof( + context.Background(), + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + ) + require.Nil(t, err) + + require.Equal(t, res.BlockID, blockID) + require.Equal(t, res.Header, header) + require.Equal(t, res.Tier, encoding.TierGuardianMinorityID) + require.NotEmpty(t, res.Proof) +} + +func TestRequestMinorityProofReturnLivenessBond(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.BytesToAddress(randHash().Bytes()), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + producer = NewGuardianProofProducer(&SGXProofProducer{Dummy: true}, encoding.TierGuardianMinorityID, true) + blockID = common.Big32 + ) + res, err := producer.RequestProof( + context.Background(), + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + ) + require.Nil(t, err) + + require.Equal(t, res.BlockID, blockID) + require.Equal(t, res.Header, header) + require.Equal(t, res.Tier, encoding.TierGuardianMinorityID) + require.NotEmpty(t, res.Proof) + require.Equal(t, res.Proof, crypto.Keccak256([]byte("RETURN_LIVENESS_BOND"))) +} diff --git a/packages/taiko-client/prover/proof_producer/optimistic_producer.go b/packages/taiko-client/prover/proof_producer/optimistic_producer.go new file mode 100644 index 00000000000..f9c5971419c --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/optimistic_producer.go @@ -0,0 +1,39 @@ +package producer + +import ( + "context" + "math/big" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +// OptimisticProofProducer always returns an optimistic (dummy) proof. +type OptimisticProofProducer struct{ DummyProofProducer } + +// RequestProof implements the ProofProducer interface. +func (o *OptimisticProofProducer) RequestProof( + _ context.Context, + opts *ProofRequestOptions, + blockID *big.Int, + meta *bindings.TaikoDataBlockMetadata, + header *types.Header, +) (*ProofWithHeader, error) { + log.Info( + "Request optimistic proof", + "blockID", blockID, + "coinbase", meta.Coinbase, + "height", header.Number, + "hash", header.Hash(), + ) + + return o.DummyProofProducer.RequestProof(opts, blockID, meta, header, o.Tier()) +} + +// Tier implements the ProofProducer interface. +func (o *OptimisticProofProducer) Tier() uint16 { + return encoding.TierOptimisticID +} diff --git a/packages/taiko-client/prover/proof_producer/optimistic_producer_test.go b/packages/taiko-client/prover/proof_producer/optimistic_producer_test.go new file mode 100644 index 00000000000..416dac4e46d --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/optimistic_producer_test.go @@ -0,0 +1,93 @@ +package producer + +import ( + "context" + "crypto/rand" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +func TestOptimisticRequestProof(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.BytesToAddress(randHash().Bytes()), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + producer = &OptimisticProofProducer{} + blockID = common.Big32 + ) + res, err := producer.RequestProof( + context.Background(), + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + ) + require.Nil(t, err) + + require.Equal(t, res.BlockID, blockID) + require.Equal(t, res.Header, header) + require.Equal(t, res.Tier, encoding.TierOptimisticID) + require.NotEmpty(t, res.Proof) +} + +func TestProofCancel(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.HexToAddress("0x0000777735367b36bC9B61C50022d9D0700dB4Ec"), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + optimisticProofProducer = &OptimisticProofProducer{} + blockID = common.Big32 + ) + _, err := optimisticProofProducer.RequestProof( + context.Background(), + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + ) + require.Nil(t, err) +} + +func randHash() common.Hash { + b := make([]byte, 32) + if _, err := rand.Read(b); err != nil { + log.Crit("Failed to generate random bytes", err) + } + return common.BytesToHash(b) +} diff --git a/packages/taiko-client/prover/proof_producer/proof_producer.go b/packages/taiko-client/prover/proof_producer/proof_producer.go new file mode 100644 index 00000000000..0f1462e9cb0 --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/proof_producer.go @@ -0,0 +1,69 @@ +package producer + +import ( + "context" + "errors" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +var ( + proofPollingInterval = 10 * time.Second + errProofGenerating = errors.New("proof is generating") +) + +// ProofRequestBody represents a request body to generate a proof. +type ProofRequestBody struct { + Tier uint16 + Event *bindings.TaikoL1ClientBlockProposed +} + +// ContestRequestBody represents a request body to generate a proof for contesting. +type ContestRequestBody struct { + BlockID *big.Int + ProposedIn *big.Int + ParentHash common.Hash + Meta *bindings.TaikoDataBlockMetadata + Tier uint16 +} + +// ProofRequestOptions contains all options that need to be passed to a backend proof producer service. +type ProofRequestOptions struct { + BlockID *big.Int + ProverAddress common.Address + ProposeBlockTxHash common.Hash + TaikoL2 common.Address + MetaHash common.Hash + BlockHash common.Hash + ParentHash common.Hash + StateRoot common.Hash + EventL1Hash common.Hash + Graffiti string + GasUsed uint64 + ParentGasUsed uint64 +} + +type ProofWithHeader struct { + BlockID *big.Int + Meta *bindings.TaikoDataBlockMetadata + Header *types.Header + Proof []byte + Opts *ProofRequestOptions + Tier uint16 +} + +type ProofProducer interface { + RequestProof( + ctx context.Context, + opts *ProofRequestOptions, + blockID *big.Int, + meta *bindings.TaikoDataBlockMetadata, + header *types.Header, + ) (*ProofWithHeader, error) + Tier() uint16 +} diff --git a/packages/taiko-client/prover/proof_producer/sgx_producer.go b/packages/taiko-client/prover/proof_producer/sgx_producer.go new file mode 100644 index 00000000000..37d68ba8a17 --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/sgx_producer.go @@ -0,0 +1,220 @@ +package producer + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "fmt" + "io" + "math/big" + "net/http" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" +) + +const ( + ProofTypeSgx = "sgx" + ProofTypeCPU = "native" +) + +// SGXProofProducer generates a SGX proof for the given block. +type SGXProofProducer struct { + RaikoHostEndpoint string // a proverd RPC endpoint + L1Endpoint string // a L1 node RPC endpoint + L1BeaconEndpoint string // a L1 beacon node RPC endpoint + L2Endpoint string // a L2 execution engine's RPC endpoint + ProofType string // Proof type + Dummy bool + DummyProofProducer +} + +// SGXRequestProofBody represents the JSON body for requesting the proof. +type SGXRequestProofBody struct { + JsonRPC string `json:"jsonrpc"` //nolint:revive,stylecheck + ID *big.Int `json:"id"` + Method string `json:"method"` + Params []*SGXRequestProofBodyParam `json:"params"` +} + +// SGXRequestProofBodyParam represents the JSON body of RequestProofBody's `param` field. +type SGXRequestProofBodyParam struct { + Type string `json:"proof_type"` + Block *big.Int `json:"block_number"` + L2RPC string `json:"rpc"` + L1RPC string `json:"l1_rpc"` + L1BeaconRPC string `json:"beacon_rpc"` + Prover string `json:"prover"` + Graffiti string `json:"graffiti"` + ProofParam *ProofParam `json:"sgx"` +} + +// ProofParam represents the JSON body of SGXRequestProofBodyParam's `sgx` field. +type ProofParam struct { + Setup bool `json:"setup"` + Bootstrap bool `json:"bootstrap"` + Prove bool `json:"prove"` +} + +// SGXRequestProofBodyResponse represents the JSON body of the response of the proof requests. +type SGXRequestProofBodyResponse struct { + JsonRPC string `json:"jsonrpc"` //nolint:revive,stylecheck + ID *big.Int `json:"id"` + Result *RaikoHostOutput `json:"result"` + Error *struct { + Code *big.Int `json:"code"` + Message string `json:"message"` + } `json:"error,omitempty"` +} + +// RaikoHostOutput represents the JSON body of SGXRequestProofBodyResponse's `result` field. +type RaikoHostOutput struct { + Proof string `json:"proof"` +} + +// RequestProof implements the ProofProducer interface. +func (s *SGXProofProducer) RequestProof( + ctx context.Context, + opts *ProofRequestOptions, + blockID *big.Int, + meta *bindings.TaikoDataBlockMetadata, + header *types.Header, +) (*ProofWithHeader, error) { + log.Info( + "Request proof from raiko-host service", + "blockID", blockID, + "coinbase", meta.Coinbase, + "height", header.Number, + "hash", header.Hash(), + ) + + if s.Dummy { + return s.DummyProofProducer.RequestProof(opts, blockID, meta, header, s.Tier()) + } + + proof, err := s.callProverDaemon(ctx, opts) + if err != nil { + return nil, err + } + + metrics.ProverSgxProofGeneratedCounter.Add(1) + + return &ProofWithHeader{ + BlockID: blockID, + Header: header, + Meta: meta, + Proof: proof, + Opts: opts, + Tier: s.Tier(), + }, nil +} + +// callProverDaemon keeps polling the proverd service to get the requested proof. +func (s *SGXProofProducer) callProverDaemon(ctx context.Context, opts *ProofRequestOptions) ([]byte, error) { + var ( + proof []byte + start = time.Now() + ) + if err := backoff.Retry(func() error { + if ctx.Err() != nil { + return nil + } + output, err := s.requestProof(opts) + if err != nil { + log.Error("Failed to request proof", "height", opts.BlockID, "error", err, "endpoint", s.RaikoHostEndpoint) + return err + } + + if output == nil { + log.Info( + "Proof generating", + "height", opts.BlockID, + "time", time.Since(start), + "producer", "SGXProofProducer", + ) + return errProofGenerating + } + + log.Debug("Proof generation output", "output", output) + + proof = common.Hex2Bytes(output.Proof[2:]) + log.Info( + "Proof generated", + "height", opts.BlockID, + "time", time.Since(start), + "producer", "SGXProofProducer", + ) + return nil + }, backoff.WithContext(backoff.NewConstantBackOff(proofPollingInterval), ctx)); err != nil { + return nil, err + } + + return proof, nil +} + +// requestProof sends a RPC request to proverd to try to get the requested proof. +func (s *SGXProofProducer) requestProof(opts *ProofRequestOptions) (*RaikoHostOutput, error) { + reqBody := SGXRequestProofBody{ + JsonRPC: "2.0", + ID: common.Big1, + Method: "proof", + Params: []*SGXRequestProofBodyParam{{ + Type: s.ProofType, + Block: opts.BlockID, + L2RPC: s.L2Endpoint, + L1RPC: s.L1Endpoint, + L1BeaconRPC: s.L1BeaconEndpoint, + Prover: opts.ProverAddress.Hex()[2:], + Graffiti: opts.Graffiti, + ProofParam: &ProofParam{ + Setup: false, + Bootstrap: false, + Prove: true, + }, + }}, + } + + jsonValue, err := json.Marshal(reqBody) + if err != nil { + return nil, err + } + + res, err := http.Post(s.RaikoHostEndpoint, "application/json", bytes.NewBuffer(jsonValue)) + if err != nil { + return nil, err + } + + defer res.Body.Close() + if res.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to request proof, id: %d, statusCode: %d", opts.BlockID, res.StatusCode) + } + + resBytes, err := io.ReadAll(res.Body) + if err != nil { + return nil, err + } + + var output SGXRequestProofBodyResponse + if err := json.Unmarshal(resBytes, &output); err != nil { + return nil, err + } + + if output.Error != nil { + return nil, errors.New(output.Error.Message) + } + + return output.Result, nil +} + +// Tier implements the ProofProducer interface. +func (s *SGXProofProducer) Tier() uint16 { + return encoding.TierSgxID +} diff --git a/packages/taiko-client/prover/proof_producer/sgx_producer_test.go b/packages/taiko-client/prover/proof_producer/sgx_producer_test.go new file mode 100644 index 00000000000..de2f743c03e --- /dev/null +++ b/packages/taiko-client/prover/proof_producer/sgx_producer_test.go @@ -0,0 +1,51 @@ +package producer + +import ( + "context" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/require" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +func TestSGXProducerRequestProof(t *testing.T) { + header := &types.Header{ + ParentHash: randHash(), + UncleHash: randHash(), + Coinbase: common.BytesToAddress(randHash().Bytes()), + Root: randHash(), + TxHash: randHash(), + ReceiptHash: randHash(), + Difficulty: common.Big0, + Number: common.Big256, + GasLimit: 1024, + GasUsed: 1024, + Time: uint64(time.Now().Unix()), + Extra: randHash().Bytes(), + MixDigest: randHash(), + Nonce: types.BlockNonce{}, + } + + var ( + producer = &SGXProofProducer{Dummy: true} + blockID = common.Big32 + ) + res, err := producer.RequestProof( + context.Background(), + &ProofRequestOptions{}, + blockID, + &bindings.TaikoDataBlockMetadata{}, + header, + ) + require.Nil(t, err) + + require.Equal(t, res.BlockID, blockID) + require.Equal(t, res.Header, header) + require.Equal(t, res.Tier, encoding.TierSgxID) + require.NotEmpty(t, res.Proof) +} diff --git a/packages/taiko-client/prover/proof_submitter/interface.go b/packages/taiko-client/prover/proof_submitter/interface.go new file mode 100644 index 00000000000..439c23be698 --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/interface.go @@ -0,0 +1,31 @@ +package submitter + +import ( + "context" + "math/big" + + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +// Submitter is the interface for submitting proofs of the L2 blocks. +type Submitter interface { + RequestProof(ctx context.Context, event *bindings.TaikoL1ClientBlockProposed) error + SubmitProof(ctx context.Context, proofWithHeader *proofProducer.ProofWithHeader) error + Producer() proofProducer.ProofProducer + Tier() uint16 +} + +// Contester is the interface for contesting proofs of the L2 blocks. +type Contester interface { + SubmitContest( + ctx context.Context, + blockID *big.Int, + proposedIn *big.Int, + parentHash common.Hash, + meta *bindings.TaikoDataBlockMetadata, + tier uint16, + ) error +} diff --git a/packages/taiko-client/prover/proof_submitter/proof_contester.go b/packages/taiko-client/prover/proof_submitter/proof_contester.go new file mode 100644 index 00000000000..401f2824ae5 --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/proof_contester.go @@ -0,0 +1,124 @@ +package submitter + +import ( + "context" + "math/big" + "strings" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" +) + +var _ Contester = (*ProofContester)(nil) + +// ProofContester is responsible for contesting wrong L2 transitions. +type ProofContester struct { + rpc *rpc.Client + txBuilder *transaction.ProveBlockTxBuilder + sender *transaction.Sender + graffiti [32]byte +} + +// NewProofContester creates a new ProofContester instance. +func NewProofContester( + rpcClient *rpc.Client, + gasLimit uint64, + txmgr *txmgr.SimpleTxManager, + graffiti string, + builder *transaction.ProveBlockTxBuilder, +) *ProofContester { + return &ProofContester{ + rpc: rpcClient, + txBuilder: builder, + sender: transaction.NewSender(rpcClient, txmgr, gasLimit), + graffiti: rpc.StringToBytes32(graffiti), + } +} + +// SubmitContest submits a TaikoL1.proveBlock transaction to contest a L2 block transition. +func (c *ProofContester) SubmitContest( + ctx context.Context, + blockID *big.Int, + proposedIn *big.Int, + parentHash common.Hash, + meta *bindings.TaikoDataBlockMetadata, + tier uint16, +) error { + // Ensure the transition has not been contested yet. + transition, err := c.rpc.TaikoL1.GetTransition0( + &bind.CallOpts{Context: ctx}, + blockID.Uint64(), + parentHash, + ) + if err != nil { + if !strings.Contains(encoding.TryParsingCustomError(err).Error(), "L1_") { + log.Warn( + "Failed to get transition", + "blockID", blockID, + "parentHash", parentHash, + "error", encoding.TryParsingCustomError(err), + ) + return nil + } + return err + } + // If the transition has already been contested, return early. + if transition.Contester != (common.Address{}) { + log.Info( + "Transaction has already been contested", + "blockID", blockID, + "parentHash", parentHash, + "contester", transition.Contester, + ) + return nil + } + + // Send the contest transaction. + header, err := c.rpc.L2.HeaderByNumber(ctx, blockID) + if err != nil { + return err + } + + l1HeaderProposedIn, err := c.rpc.L1.HeaderByNumber(ctx, proposedIn) + if err != nil { + return err + } + + return c.sender.Send( + ctx, + &proofProducer.ProofWithHeader{ + BlockID: blockID, + Meta: meta, + Header: header, + Proof: []byte{}, + Opts: &proofProducer.ProofRequestOptions{ + EventL1Hash: l1HeaderProposedIn.Hash(), + StateRoot: header.Root, + }, + Tier: tier, + }, + c.txBuilder.Build( + blockID, + meta, + &bindings.TaikoDataTransition{ + ParentHash: header.ParentHash, + BlockHash: header.Hash(), + StateRoot: header.Root, + Graffiti: c.graffiti, + }, + &bindings.TaikoDataTierProof{ + Tier: transition.Tier, + Data: []byte{}, + }, + tier, + ), + ) +} diff --git a/packages/taiko-client/prover/proof_submitter/proof_contester_test.go b/packages/taiko-client/prover/proof_submitter/proof_contester_test.go new file mode 100644 index 00000000000..79ba21f3f6c --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/proof_contester_test.go @@ -0,0 +1,24 @@ +package submitter + +import ( + "context" + + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" +) + +func (s *ProofSubmitterTestSuite) TestSubmitContestNoTransition() { + s.NotNil( + s.contester.SubmitContest( + context.Background(), + common.Big256, + common.Big1, + testutils.RandomHash(), + &bindings.TaikoDataBlockMetadata{}, + encoding.TierOptimisticID, + ), + ) +} diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter.go b/packages/taiko-client/prover/proof_submitter/proof_submitter.go new file mode 100644 index 00000000000..f9dc69220c7 --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter.go @@ -0,0 +1,196 @@ +package submitter + +import ( + "context" + "errors" + "fmt" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + validator "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/anchor_tx_validator" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" +) + +var _ Submitter = (*ProofSubmitter)(nil) + +// ProofSubmitter is responsible requesting proofs for the given L2 +// blocks, and submitting the generated proofs to the TaikoL1 smart contract. +type ProofSubmitter struct { + rpc *rpc.Client + proofProducer proofProducer.ProofProducer + resultCh chan *proofProducer.ProofWithHeader + anchorValidator *validator.AnchorTxValidator + txBuilder *transaction.ProveBlockTxBuilder + sender *transaction.Sender + proverAddress common.Address + taikoL2Address common.Address + graffiti [32]byte +} + +// NewProofSubmitter creates a new ProofSubmitter instance. +func NewProofSubmitter( + rpcClient *rpc.Client, + proofProducer proofProducer.ProofProducer, + resultCh chan *proofProducer.ProofWithHeader, + taikoL2Address common.Address, + graffiti string, + gasLimit uint64, + txmgr *txmgr.SimpleTxManager, + builder *transaction.ProveBlockTxBuilder, +) (*ProofSubmitter, error) { + anchorValidator, err := validator.New(taikoL2Address, rpcClient.L2.ChainID, rpcClient) + if err != nil { + return nil, err + } + + return &ProofSubmitter{ + rpc: rpcClient, + proofProducer: proofProducer, + resultCh: resultCh, + anchorValidator: anchorValidator, + txBuilder: builder, + sender: transaction.NewSender(rpcClient, txmgr, gasLimit), + proverAddress: txmgr.From(), + taikoL2Address: taikoL2Address, + graffiti: rpc.StringToBytes32(graffiti), + }, nil +} + +// RequestProof implements the Submitter interface. +func (s *ProofSubmitter) RequestProof(ctx context.Context, event *bindings.TaikoL1ClientBlockProposed) error { + header, err := s.rpc.WaitL2Header(ctx, event.BlockId) + if err != nil { + return fmt.Errorf("failed to fetch l2 Header, blockID: %d, error: %w", event.BlockId, err) + } + + if header.TxHash == types.EmptyTxsHash { + return errors.New("no transaction in block") + } + + parent, err := s.rpc.L2.BlockByHash(ctx, header.ParentHash) + if err != nil { + return fmt.Errorf("failed to get the L2 parent block by hash (%s): %w", header.ParentHash, err) + } + + blockInfo, err := s.rpc.GetL2BlockInfo(ctx, event.BlockId) + if err != nil { + return err + } + + // Request proof. + opts := &proofProducer.ProofRequestOptions{ + BlockID: header.Number, + ProverAddress: s.proverAddress, + ProposeBlockTxHash: event.Raw.TxHash, + TaikoL2: s.taikoL2Address, + MetaHash: blockInfo.MetaHash, + BlockHash: header.Hash(), + ParentHash: header.ParentHash, + StateRoot: header.Root, + EventL1Hash: event.Raw.BlockHash, + Graffiti: common.Bytes2Hex(s.graffiti[:]), + GasUsed: header.GasUsed, + ParentGasUsed: parent.GasUsed(), + } + + // Send the generated proof. + result, err := s.proofProducer.RequestProof( + ctx, + opts, + event.BlockId, + &event.Meta, + header, + ) + if err != nil { + return fmt.Errorf("failed to request proof (id: %d): %w", event.BlockId, err) + } + s.resultCh <- result + + metrics.ProverQueuedProofCounter.Add(1) + + return nil +} + +// SubmitProof implements the Submitter interface. +func (s *ProofSubmitter) SubmitProof( + ctx context.Context, + proofWithHeader *proofProducer.ProofWithHeader, +) (err error) { + log.Info( + "NewProofSubmitter block proof", + "blockID", proofWithHeader.BlockID, + "coinbase", proofWithHeader.Meta.Coinbase, + "parentHash", proofWithHeader.Header.ParentHash, + "hash", proofWithHeader.Opts.BlockHash, + "stateRoot", proofWithHeader.Opts.StateRoot, + "proof", common.Bytes2Hex(proofWithHeader.Proof), + "tier", proofWithHeader.Tier, + ) + + metrics.ProverReceivedProofCounter.Add(1) + + // Get the corresponding L2 block. + block, err := s.rpc.L2.BlockByHash(ctx, proofWithHeader.Header.Hash()) + if err != nil { + return fmt.Errorf("failed to get L2 block with given hash %s: %w", proofWithHeader.Header.Hash(), err) + } + + if block.Transactions().Len() == 0 { + return fmt.Errorf("invalid block without anchor transaction, blockID %s", proofWithHeader.BlockID) + } + + // Validate TaikoL2.anchor transaction inside the L2 block. + anchorTx := block.Transactions()[0] + if err = s.anchorValidator.ValidateAnchorTx(anchorTx); err != nil { + return fmt.Errorf("invalid anchor transaction: %w", err) + } + + // Build the TaikoL1.proveBlock transaction and send it to the L1 node. + if err = s.sender.Send( + ctx, + proofWithHeader, + s.txBuilder.Build( + proofWithHeader.BlockID, + proofWithHeader.Meta, + &bindings.TaikoDataTransition{ + ParentHash: proofWithHeader.Header.ParentHash, + BlockHash: proofWithHeader.Opts.BlockHash, + StateRoot: proofWithHeader.Opts.StateRoot, + Graffiti: s.graffiti, + }, + &bindings.TaikoDataTierProof{ + Tier: proofWithHeader.Tier, + Data: proofWithHeader.Proof, + }, + proofWithHeader.Tier, + ), + ); err != nil { + if err.Error() == transaction.ErrUnretryableSubmission.Error() { + return nil + } + metrics.ProverSubmissionErrorCounter.Add(1) + return err + } + + metrics.ProverSentProofCounter.Add(1) + metrics.ProverLatestProvenBlockIDGauge.Set(float64(proofWithHeader.BlockID.Uint64())) + + return nil +} + +// Producer returns the inner proof producer. +func (s *ProofSubmitter) Producer() proofProducer.ProofProducer { + return s.proofProducer +} + +// Tier returns the proof tier of the current proof submitter. +func (s *ProofSubmitter) Tier() uint16 { + return s.proofProducer.Tier() +} diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go new file mode 100644 index 00000000000..13c8c84101a --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go @@ -0,0 +1,213 @@ +package submitter + +import ( + "bytes" + "context" + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum-optimism/optimism/op-service/txmgr/metrics" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/blob" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" + producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" +) + +type ProofSubmitterTestSuite struct { + testutils.ClientTestSuite + submitter *ProofSubmitter + contester *ProofContester + blobSyncer *blob.Syncer + proposer *proposer.Proposer + proofCh chan *producer.ProofWithHeader +} + +func (s *ProofSubmitterTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + s.proofCh = make(chan *producer.ProofWithHeader, 1024) + + builder := transaction.NewProveBlockTxBuilder( + s.RPCClient, + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + common.HexToAddress(os.Getenv("GUARDIAN_PROVER_CONTRACT_ADDRESS")), + common.HexToAddress(os.Getenv("GUARDIAN_PROVER_MINORITY_ADDRESS")), + ) + + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + + txMgr, err := txmgr.NewSimpleTxManager( + "proofSubmitterTestSuite", + log.Root(), + new(metrics.NoopTxMetrics), + txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProverPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + ) + s.Nil(err) + + s.submitter, err = NewProofSubmitter( + s.RPCClient, + &producer.OptimisticProofProducer{}, + s.proofCh, + common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + "test", + 0, + txMgr, + builder, + ) + s.Nil(err) + s.contester = NewProofContester( + s.RPCClient, + 0, + txMgr, + "test", + builder, + ) + + // Init calldata syncer + testState, err := state.New(context.Background(), s.RPCClient) + s.Nil(err) + s.Nil(testState.ResetL1Current(context.Background(), common.Big0)) + + tracker := beaconsync.NewSyncProgressTracker(s.RPCClient.L2, 30*time.Second) + + s.blobSyncer, err = blob.NewSyncer( + context.Background(), + s.RPCClient, + testState, + tracker, + 0, + nil, + ) + s.Nil(err) + + // Init proposer + prop := new(proposer.Proposer) + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + s.Nil(prop.InitFromConfig(context.Background(), &proposer.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + }, + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), + ProposeInterval: 1024 * time.Hour, + MaxProposedTxListsPerEpoch: 1, + ProverEndpoints: s.ProverEndpoints, + OptimisticTierFee: common.Big256, + SgxTierFee: common.Big256, + MaxTierFeePriceBumps: 3, + TierFeePriceBump: common.Big2, + L1BlockBuilderTip: common.Big0, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProposerPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + + s.proposer = prop +} + +func (s *ProofSubmitterTestSuite) TestProofSubmitterRequestProofDeadlineExceeded() { + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + s.ErrorContains( + s.submitter.RequestProof( + ctx, &bindings.TaikoL1ClientBlockProposed{BlockId: common.Big256}), "context deadline exceeded", + ) +} + +func (s *ProofSubmitterTestSuite) TestProofSubmitterSubmitProofMetadataNotFound() { + s.Error( + s.submitter.SubmitProof( + context.Background(), &producer.ProofWithHeader{ + BlockID: common.Big256, + Meta: &bindings.TaikoDataBlockMetadata{}, + Header: &types.Header{}, + Opts: &producer.ProofRequestOptions{}, + Proof: bytes.Repeat([]byte{0xff}, 100), + }, + ), + ) +} + +func (s *ProofSubmitterTestSuite) TestSubmitProofs() { + events := s.ProposeAndInsertEmptyBlocks(s.proposer, s.blobSyncer) + + for _, e := range events { + s.Nil(s.submitter.RequestProof(context.Background(), e)) + proofWithHeader := <-s.proofCh + s.Nil(s.submitter.SubmitProof(context.Background(), proofWithHeader)) + } +} + +func (s *ProofSubmitterTestSuite) TestGuardianSubmitProofs() { + events := s.ProposeAndInsertEmptyBlocks(s.proposer, s.blobSyncer) + + for _, e := range events { + s.Nil(s.submitter.RequestProof(context.Background(), e)) + proofWithHeader := <-s.proofCh + proofWithHeader.Tier = encoding.TierGuardianMajorityID + s.Nil(s.submitter.SubmitProof(context.Background(), proofWithHeader)) + } +} + +func (s *ProofSubmitterTestSuite) TestProofSubmitterRequestProofCancelled() { + ctx, cancel := context.WithCancel(context.Background()) + go func() { time.AfterFunc(2*time.Second, func() { cancel() }) }() + + s.ErrorContains( + s.submitter.RequestProof( + ctx, &bindings.TaikoL1ClientBlockProposed{BlockId: common.Big256}), "context canceled", + ) +} + +func TestProofSubmitterTestSuite(t *testing.T) { + suite.Run(t, new(ProofSubmitterTestSuite)) +} diff --git a/packages/taiko-client/prover/proof_submitter/transaction/builder.go b/packages/taiko-client/prover/proof_submitter/transaction/builder.go new file mode 100644 index 00000000000..b61289cc71c --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/transaction/builder.go @@ -0,0 +1,104 @@ +package transaction + +import ( + "errors" + "fmt" + "math/big" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +var ( + ErrUnretryableSubmission = errors.New("unretryable submission error") + ZeroAddress common.Address +) + +// TxBuilder will build a transaction with the given nonce. +type TxBuilder func(txOpts *bind.TransactOpts) (*txmgr.TxCandidate, error) + +// ProveBlockTxBuilder is responsible for building ProveBlock transactions. +type ProveBlockTxBuilder struct { + rpc *rpc.Client + taikoL1Address common.Address + guardianProverMajorityAddress common.Address + guardianProverMinorityAddress common.Address +} + +// NewProveBlockTxBuilder creates a new ProveBlockTxBuilder instance. +func NewProveBlockTxBuilder( + rpc *rpc.Client, + taikoL1Address common.Address, + guardianProverMajorityAddress common.Address, + guardianProverMinorityAddress common.Address, +) *ProveBlockTxBuilder { + return &ProveBlockTxBuilder{rpc, taikoL1Address, guardianProverMajorityAddress, guardianProverMinorityAddress} +} + +// Build creates a new TaikoL1.ProveBlock transaction with the given nonce. +func (a *ProveBlockTxBuilder) Build( + blockID *big.Int, + meta *bindings.TaikoDataBlockMetadata, + transition *bindings.TaikoDataTransition, + tierProof *bindings.TaikoDataTierProof, + tier uint16, +) TxBuilder { + return func(txOpts *bind.TransactOpts) (*txmgr.TxCandidate, error) { + var ( + data []byte + to common.Address + err error + guardian = tier >= encoding.TierGuardianMinorityID + ) + + log.Info( + "Build proof submission transaction", + "blockID", blockID, + "gasLimit", txOpts.GasLimit, + "guardian", guardian, + ) + + if !guardian { + to = a.taikoL1Address + + input, err := encoding.EncodeProveBlockInput(meta, transition, tierProof) + if err != nil { + return nil, err + } + if data, err = encoding.TaikoL1ABI.Pack("proveBlock", blockID.Uint64(), input); err != nil { + if isSubmitProofTxErrorRetryable(err, blockID) { + return nil, err + } + return nil, ErrUnretryableSubmission + } + } else { + if tier > encoding.TierGuardianMinorityID { + to = a.guardianProverMajorityAddress + } else if tier == encoding.TierGuardianMinorityID && a.guardianProverMinorityAddress != ZeroAddress { + to = a.guardianProverMinorityAddress + } else { + return nil, fmt.Errorf("tier %d need set guardianProverMinorityAddress", tier) + } + if data, err = encoding.GuardianProverABI.Pack("approve", *meta, *transition, *tierProof); err != nil { + if isSubmitProofTxErrorRetryable(err, blockID) { + return nil, err + } + return nil, ErrUnretryableSubmission + } + } + + return &txmgr.TxCandidate{ + TxData: data, + To: &to, + Blobs: nil, + GasLimit: txOpts.GasLimit, + Value: txOpts.Value, + }, nil + } +} diff --git a/packages/taiko-client/prover/proof_submitter/transaction/builder_test.go b/packages/taiko-client/prover/proof_submitter/transaction/builder_test.go new file mode 100644 index 00000000000..221a05caee8 --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/transaction/builder_test.go @@ -0,0 +1,19 @@ +package transaction + +import ( + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" +) + +func (s *TransactionTestSuite) TestBuildTxs() { + _, err := s.builder.Build( + common.Big256, + &bindings.TaikoDataBlockMetadata{}, + &bindings.TaikoDataTransition{}, + &bindings.TaikoDataTierProof{}, + 1, + )(&bind.TransactOpts{Nonce: common.Big0, GasLimit: 0, GasTipCap: common.Big0}) + s.Nil(err) +} diff --git a/packages/taiko-client/prover/proof_submitter/transaction/sender.go b/packages/taiko-client/prover/proof_submitter/transaction/sender.go new file mode 100644 index 00000000000..e961d037bb9 --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/transaction/sender.go @@ -0,0 +1,163 @@ +package transaction + +import ( + "context" + "fmt" + "math/big" + "strings" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/log" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +// Sender is responsible for sending proof submission transactions with a backoff policy. +type Sender struct { + rpc *rpc.Client + txmgr *txmgr.SimpleTxManager + gasLimit uint64 +} + +// NewSender creates a new Sener instance. +func NewSender( + cli *rpc.Client, + txmgr *txmgr.SimpleTxManager, + gasLimit uint64, +) *Sender { + return &Sender{ + rpc: cli, + txmgr: txmgr, + gasLimit: gasLimit, + } +} + +// Send sends the given proof to the TaikoL1 smart contract with a backoff policy. +func (s *Sender) Send( + ctx context.Context, + proofWithHeader *producer.ProofWithHeader, + buildTx TxBuilder, +) error { + // Check if the proof has already been submitted. + proofStatus, err := rpc.GetBlockProofStatus(ctx, s.rpc, proofWithHeader.BlockID, proofWithHeader.Opts.ProverAddress) + if err != nil { + return err + } + if proofStatus.IsSubmitted && !proofStatus.Invalid { + return fmt.Errorf("a valid proof for block %d is already submitted", proofWithHeader.BlockID) + } + + // Check if this proof is still needed to be submitted. + ok, err := s.validateProof(ctx, proofWithHeader) + if err != nil || !ok { + return err + } + + // Assemble the TaikoL1.proveBlock transaction. + txCandidate, err := buildTx(&bind.TransactOpts{GasLimit: s.gasLimit}) + if err != nil { + return err + } + + // Send the transaction. + receipt, err := s.txmgr.Send(ctx, *txCandidate) + if err != nil { + return err + } + + if receipt.Status != types.ReceiptStatusSuccessful { + log.Error( + "Failed to submit proof", + "blockID", proofWithHeader.BlockID, + "tier", proofWithHeader.Tier, + "txHash", receipt.TxHash, + "error", encoding.TryParsingCustomErrorFromReceipt(ctx, s.rpc.L1, s.txmgr.From(), receipt), + ) + metrics.ProverSubmissionRevertedCounter.Add(1) + return ErrUnretryableSubmission + } + + log.Info( + "💰 Your block proof was accepted", + "blockID", proofWithHeader.BlockID, + "parentHash", proofWithHeader.Header.ParentHash, + "hash", proofWithHeader.Header.Hash(), + "stateRoot", proofWithHeader.Opts.StateRoot, + "txHash", receipt.TxHash, + "tier", proofWithHeader.Tier, + "isContest", len(proofWithHeader.Proof) == 0, + ) + + metrics.ProverSubmissionAcceptedCounter.Add(1) + + return nil +} + +// validateProof checks if the proof's corresponding L1 block is still in the canonical chain and if the +// latest verified head is not ahead of this block proof. +func (s *Sender) validateProof(ctx context.Context, proofWithHeader *producer.ProofWithHeader) (bool, error) { + // 1. Check if the corresponding L1 block is still in the canonical chain. + l1Header, err := s.rpc.L1.HeaderByNumber(ctx, new(big.Int).SetUint64(proofWithHeader.Meta.L1Height+1)) + if err != nil { + log.Warn( + "Failed to fetch L1 block", + "blockID", proofWithHeader.BlockID, + "l1Height", proofWithHeader.Meta.L1Height+1, + "error", err, + ) + return false, err + } + if l1Header.Hash() != proofWithHeader.Opts.EventL1Hash { + log.Warn( + "Reorg detected, skip the current proof submission", + "blockID", proofWithHeader.BlockID, + "l1Height", proofWithHeader.Meta.L1Height+1, + "l1HashOld", proofWithHeader.Opts.EventL1Hash, + "l1HashNew", l1Header.Hash(), + ) + return false, nil + } + + // 2. Check if latest verified head is ahead of this block proof. + stateVars, err := s.rpc.GetProtocolStateVariables(&bind.CallOpts{Context: ctx}) + if err != nil { + log.Warn( + "Failed to fetch state variables", + "blockID", proofWithHeader.BlockID, + "error", err, + ) + return false, err + } + latestVerifiedID := stateVars.B.LastVerifiedBlockId + if new(big.Int).SetUint64(latestVerifiedID).Cmp(proofWithHeader.BlockID) >= 0 { + log.Info( + "Block is already verified, skip current proof submission", + "blockID", proofWithHeader.BlockID.Uint64(), + "latestVerifiedID", latestVerifiedID, + ) + return false, nil + } + + return true, nil +} + +// isSubmitProofTxErrorRetryable checks whether the error returned by a proof submission transaction +// is retryable. +func isSubmitProofTxErrorRetryable(err error, blockID *big.Int) bool { + if !strings.HasPrefix(err.Error(), "L1_") { + return true + } + + if strings.HasPrefix(err.Error(), "L1_NOT_ASSIGNED_PROVER") || + strings.HasPrefix(err.Error(), "L1_INVALID_PAUSE_STATUS") { + return true + } + + log.Warn("🤷 Unretryable proof submission error", "error", err, "blockID", blockID) + return false +} diff --git a/packages/taiko-client/prover/proof_submitter/transaction/sender_test.go b/packages/taiko-client/prover/proof_submitter/transaction/sender_test.go new file mode 100644 index 00000000000..814a008064a --- /dev/null +++ b/packages/taiko-client/prover/proof_submitter/transaction/sender_test.go @@ -0,0 +1,101 @@ +package transaction + +import ( + "context" + "errors" + "math/big" + "os" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum-optimism/optimism/op-service/txmgr/metrics" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +var ( + testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + testAddr = crypto.PubkeyToAddress(testKey.PublicKey) +) + +type TransactionTestSuite struct { + testutils.ClientTestSuite + sender *Sender + builder *ProveBlockTxBuilder +} + +func (s *TransactionTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + s.builder = NewProveBlockTxBuilder( + s.RPCClient, + common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + common.HexToAddress(os.Getenv("GUARDIAN_PROVER_CONTRACT_ADDRESS")), + common.HexToAddress(os.Getenv("GUARDIAN_PROVER_MINORITY_ADDRESS")), + ) + + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + + txmgr, err := txmgr.NewSimpleTxManager( + "transactionTestSuite", + log.Root(), + new(metrics.NoopTxMetrics), + txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProverPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + ) + s.Nil(err) + + s.sender = NewSender(s.RPCClient, txmgr, 0) +} + +func (s *TransactionTestSuite) TestIsSubmitProofTxErrorRetryable() { + s.True(isSubmitProofTxErrorRetryable(errors.New(testAddr.String()), common.Big0)) + s.False(isSubmitProofTxErrorRetryable(errors.New("L1_NOT_SPECIAL_PROVER"), common.Big0)) + s.False(isSubmitProofTxErrorRetryable(errors.New("L1_DUP_PROVERS"), common.Big0)) + s.False(isSubmitProofTxErrorRetryable(errors.New("L1_"+testAddr.String()), common.Big0)) +} + +func (s *TransactionTestSuite) TestSendTxWithBackoff() { + l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil) + s.Nil(err) + l1HeadChild, err := s.RPCClient.L1.HeaderByNumber(context.Background(), new(big.Int).Sub(l1Head.Number, common.Big1)) + s.Nil(err) + meta := &bindings.TaikoDataBlockMetadata{L1Height: l1HeadChild.Number.Uint64(), L1Hash: l1HeadChild.Hash()} + s.NotNil(s.sender.Send( + context.Background(), + &producer.ProofWithHeader{ + Meta: meta, + BlockID: common.Big1, + Header: &types.Header{}, + Opts: &producer.ProofRequestOptions{EventL1Hash: l1Head.Hash()}, + }, + func(*bind.TransactOpts) (*txmgr.TxCandidate, error) { return nil, errors.New("L1_TEST") }, + )) +} + +func TestTxSenderTestSuite(t *testing.T) { + suite.Run(t, new(TransactionTestSuite)) +} diff --git a/packages/taiko-client/prover/prover.go b/packages/taiko-client/prover/prover.go new file mode 100644 index 00000000000..9da418561d3 --- /dev/null +++ b/packages/taiko-client/prover/prover.go @@ -0,0 +1,491 @@ +package prover + +import ( + "context" + "errors" + "fmt" + "math/big" + "net/http" + "strings" + "sync" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/log" + "github.com/urfave/cli/v2" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/version" + eventIterator "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/chain_iterator/event_iterator" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + handler "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/event_handler" + guardianProverHeartbeater "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/guardian_prover_heartbeater" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + proofSubmitter "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/server" + state "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/shared_state" +) + +// Prover keeps trying to prove newly proposed blocks. +type Prover struct { + // Configurations + cfg *Config + backoff backoff.BackOffContext + + // Clients + rpc *rpc.Client + + // Guardian prover related + server *server.ProverServer + guardianProverHeartbeater guardianProverHeartbeater.BlockSenderHeartbeater + + // Contract configurations + protocolConfig *bindings.TaikoDataConfig + + // States + sharedState *state.SharedState + genesisHeightL1 uint64 + + // Event handlers + blockProposedHandler handler.BlockProposedHandler + blockVerifiedHandler handler.BlockVerifiedHandler + transitionContestedHandler handler.TransitionContestedHandler + transitionProvedHandler handler.TransitionProvedHandler + assignmentExpiredHandler handler.AssignmentExpiredHandler + + // Proof submitters + proofSubmitters []proofSubmitter.Submitter + proofContester proofSubmitter.Contester + + assignmentExpiredCh chan *bindings.TaikoL1ClientBlockProposed + proveNotify chan struct{} + + // Proof related channels + proofSubmissionCh chan *proofProducer.ProofRequestBody + proofContestCh chan *proofProducer.ContestRequestBody + proofGenerationCh chan *proofProducer.ProofWithHeader + + // Transactions manager + txmgr *txmgr.SimpleTxManager + + ctx context.Context + wg sync.WaitGroup +} + +// InitFromCli initializes the given prover instance based on the command line flags. +func (p *Prover) InitFromCli(ctx context.Context, c *cli.Context) error { + cfg, err := NewConfigFromCliContext(c) + if err != nil { + return err + } + + return InitFromConfig(ctx, p, cfg) +} + +// InitFromConfig initializes the prover instance based on the given configurations. +func InitFromConfig(ctx context.Context, p *Prover, cfg *Config) (err error) { + p.cfg = cfg + p.ctx = ctx + // Initialize state which will be shared by event handlers. + p.sharedState = state.New() + p.backoff = backoff.WithContext( + backoff.WithMaxRetries( + backoff.NewConstantBackOff(p.cfg.BackOffRetryInterval), + p.cfg.BackOffMaxRetries, + ), + p.ctx, + ) + + // Clients + if p.rpc, err = rpc.NewClient(p.ctx, &rpc.ClientConfig{ + L1Endpoint: cfg.L1WsEndpoint, + L2Endpoint: cfg.L2WsEndpoint, + TaikoL1Address: cfg.TaikoL1Address, + TaikoL2Address: cfg.TaikoL2Address, + TaikoTokenAddress: cfg.TaikoTokenAddress, + GuardianProverMinorityAddress: cfg.GuardianProverMinorityAddress, + GuardianProverMajorityAddress: cfg.GuardianProverMajorityAddress, + Timeout: cfg.RPCTimeout, + }); err != nil { + return err + } + + // Configs + protocolConfigs, err := p.rpc.TaikoL1.GetConfig(&bind.CallOpts{Context: ctx}) + if err != nil { + return fmt.Errorf("failed to get protocol configs: %w", err) + } + p.protocolConfig = &protocolConfigs + + log.Info("Protocol configs", "configs", p.protocolConfig) + + chBufferSize := p.protocolConfig.BlockMaxProposals + p.proofGenerationCh = make(chan *proofProducer.ProofWithHeader, chBufferSize) + p.assignmentExpiredCh = make(chan *bindings.TaikoL1ClientBlockProposed, chBufferSize) + p.proofSubmissionCh = make(chan *proofProducer.ProofRequestBody, p.cfg.Capacity) + p.proofContestCh = make(chan *proofProducer.ContestRequestBody, p.cfg.Capacity) + p.proveNotify = make(chan struct{}, 1) + + if err := p.initL1Current(cfg.StartingBlockID); err != nil { + return fmt.Errorf("initialize L1 current cursor error: %w", err) + } + + // Protocol proof tiers + tiers, err := p.rpc.GetTiers(ctx) + if err != nil { + return err + } + p.sharedState.SetTiers(tiers) + + txBuilder := transaction.NewProveBlockTxBuilder( + p.rpc, p.cfg.TaikoL1Address, + p.cfg.GuardianProverMajorityAddress, + p.cfg.GuardianProverMinorityAddress, + ) + + if p.txmgr, err = txmgr.NewSimpleTxManager( + "prover", + log.Root(), + &metrics.TxMgrMetrics, + *cfg.TxmgrConfigs, + ); err != nil { + return err + } + + // Proof submitters + if err := p.initProofSubmitters(p.txmgr, txBuilder); err != nil { + return err + } + + // Proof contester + p.proofContester = proofSubmitter.NewProofContester( + p.rpc, + p.cfg.ProveBlockGasLimit, + p.txmgr, + p.cfg.Graffiti, + txBuilder, + ) + + // Prover server + if p.server, err = server.New(&server.NewProverServerOpts{ + ProverPrivateKey: p.cfg.L1ProverPrivKey, + MinOptimisticTierFee: p.cfg.MinOptimisticTierFee, + MinSgxTierFee: p.cfg.MinSgxTierFee, + MinSgxAndZkVMTierFee: p.cfg.MinSgxAndZkVMTierFee, + MinEthBalance: p.cfg.MinEthBalance, + MinTaikoTokenBalance: p.cfg.MinTaikoTokenBalance, + MaxExpiry: p.cfg.MaxExpiry, + MaxBlockSlippage: p.cfg.MaxBlockSlippage, + TaikoL1Address: p.cfg.TaikoL1Address, + AssignmentHookAddress: p.cfg.AssignmentHookAddress, + RPC: p.rpc, + ProtocolConfigs: &protocolConfigs, + LivenessBond: protocolConfigs.LivenessBond, + }); err != nil { + return err + } + + // Guardian prover heartbeat sender + if p.IsGuardianProver() && p.cfg.GuardianProverHealthCheckServerEndpoint != nil { + // Check guardian prover contract address is correct. + if _, err := p.rpc.GuardianProverMajority.MinGuardians(&bind.CallOpts{Context: ctx}); err != nil { + return fmt.Errorf("failed to get MinGuardians from majority guardian prover contract: %w", err) + } + + if p.rpc.GuardianProverMinority != nil { + if _, err := p.rpc.GuardianProverMinority.MinGuardians(&bind.CallOpts{Context: ctx}); err != nil { + return fmt.Errorf("failed to get MinGuardians from minority guardian prover contract: %w", err) + } + } + + p.guardianProverHeartbeater = guardianProverHeartbeater.New( + p.cfg.L1ProverPrivKey, + p.cfg.GuardianProverHealthCheckServerEndpoint, + p.rpc, + p.ProverAddress(), + ) + } + + // Initialize event handlers. + if err := p.initEventHandlers(); err != nil { + return err + } + + return nil +} + +// Start starts the main loop of the L2 block prover. +func (p *Prover) Start() error { + // 1. Set approval amount for the contracts. + for _, contract := range []common.Address{p.cfg.TaikoL1Address, p.cfg.AssignmentHookAddress} { + if err := p.setApprovalAmount(p.ctx, contract); err != nil { + log.Crit("Failed to set approval amount", "contract", contract, "error", err) + } + } + + // 2. Start the prover server. + go func() { + if err := p.server.Start(fmt.Sprintf(":%v", p.cfg.HTTPServerPort)); !errors.Is(err, http.ErrServerClosed) { + log.Crit("Failed to start http server", "error", err) + } + }() + + // 3. Start the guardian prover heartbeat sender if the current prover is a guardian prover. + if p.IsGuardianProver() && p.cfg.GuardianProverHealthCheckServerEndpoint != nil { + // Send the startup message to the guardian prover health check server. + if err := p.guardianProverHeartbeater.SendStartupMessage( + p.ctx, + version.CommitVersion(), + version.CommitVersion(), + p.cfg.L1NodeVersion, + p.cfg.L2NodeVersion, + ); err != nil { + log.Error("Failed to send guardian prover startup message", "error", err) + } + + // Start the guardian prover heartbeat loop. + go p.guardianProverHeartbeatLoop(p.ctx) + } + + // 4. Start the main event loop of the prover. + go p.eventLoop() + + return nil +} + +// eventLoop starts the main loop of Taiko prover. +func (p *Prover) eventLoop() { + p.wg.Add(1) + defer p.wg.Done() + + // reqProving requests performing a proving operation, won't block + // if we are already proving. + reqProving := func() { + select { + case p.proveNotify <- struct{}{}: + default: + } + } + // Call reqProving() right away to catch up with the latest state. + reqProving() + + // If there is too many (TaikoData.Config.blockMaxProposals) pending blocks in TaikoL1 contract, there will be no new + // BlockProposed event temporarily, so except the BlockProposed subscription, we need another trigger to start + // fetching the proposed blocks. + forceProvingTicker := time.NewTicker(15 * time.Second) + defer forceProvingTicker.Stop() + + // Channels + chBufferSize := p.protocolConfig.BlockMaxProposals + blockProposedCh := make(chan *bindings.TaikoL1ClientBlockProposed, chBufferSize) + blockVerifiedCh := make(chan *bindings.TaikoL1ClientBlockVerified, chBufferSize) + transitionProvedCh := make(chan *bindings.TaikoL1ClientTransitionProved, chBufferSize) + transitionContestedCh := make(chan *bindings.TaikoL1ClientTransitionContested, chBufferSize) + // Subscriptions + blockProposedSub := rpc.SubscribeBlockProposed(p.rpc.TaikoL1, blockProposedCh) + blockVerifiedSub := rpc.SubscribeBlockVerified(p.rpc.TaikoL1, blockVerifiedCh) + transitionProvedSub := rpc.SubscribeTransitionProved(p.rpc.TaikoL1, transitionProvedCh) + transitionContestedSub := rpc.SubscribeTransitionContested(p.rpc.TaikoL1, transitionContestedCh) + defer func() { + blockProposedSub.Unsubscribe() + blockVerifiedSub.Unsubscribe() + transitionProvedSub.Unsubscribe() + transitionContestedSub.Unsubscribe() + }() + + for { + select { + case <-p.ctx.Done(): + return + case req := <-p.proofContestCh: + p.withRetry(func() error { return p.contestProofOp(req) }) + case proofWithHeader := <-p.proofGenerationCh: + p.withRetry(func() error { return p.submitProofOp(proofWithHeader) }) + case req := <-p.proofSubmissionCh: + p.withRetry(func() error { return p.requestProofOp(req.Event, req.Tier) }) + case <-p.proveNotify: + if err := p.proveOp(); err != nil { + log.Error("Prove new blocks error", "error", err) + } + case e := <-blockVerifiedCh: + p.blockVerifiedHandler.Handle(e) + case e := <-transitionProvedCh: + p.withRetry(func() error { return p.transitionProvedHandler.Handle(p.ctx, e) }) + case e := <-transitionContestedCh: + p.withRetry(func() error { return p.transitionContestedHandler.Handle(p.ctx, e) }) + case e := <-p.assignmentExpiredCh: + p.withRetry(func() error { return p.assignmentExpiredHandler.Handle(p.ctx, e) }) + case <-blockProposedCh: + reqProving() + case <-forceProvingTicker.C: + reqProving() + } + } +} + +// Close closes the prover instance. +func (p *Prover) Close(ctx context.Context) { + if err := p.server.Shutdown(ctx); err != nil { + log.Error("Failed to shut down prover server", "error", err) + } + p.wg.Wait() +} + +// proveOp iterates through BlockProposed events. +func (p *Prover) proveOp() error { + iter, err := eventIterator.NewBlockProposedIterator(p.ctx, &eventIterator.BlockProposedIteratorConfig{ + Client: p.rpc.L1, + TaikoL1: p.rpc.TaikoL1, + StartHeight: new(big.Int).SetUint64(p.sharedState.GetL1Current().Number.Uint64()), + OnBlockProposedEvent: p.blockProposedHandler.Handle, + BlockConfirmations: &p.cfg.BlockConfirmations, + }) + if err != nil { + log.Error("Failed to start event iterator", "event", "BlockProposed", "error", err) + return err + } + + return iter.Iter() +} + +// contestProofOp performs a proof contest operation. +func (p *Prover) contestProofOp(req *proofProducer.ContestRequestBody) error { + if err := p.proofContester.SubmitContest( + p.ctx, + req.BlockID, + req.ProposedIn, + req.ParentHash, + req.Meta, + req.Tier, + ); err != nil { + if strings.Contains(err.Error(), vm.ErrExecutionReverted.Error()) { + log.Error( + "Proof contest submission reverted", + "blockID", req.BlockID, + "minTier", req.Meta.MinTier, + "error", err, + ) + return nil + } + log.Error( + "Request new proof contest error", + "blockID", req.BlockID, + "minTier", req.Meta.MinTier, + "error", err, + ) + return err + } + + return nil +} + +// requestProofOp requests a new proof generation operation. +func (p *Prover) requestProofOp(e *bindings.TaikoL1ClientBlockProposed, minTier uint16) error { + if p.IsGuardianProver() { + if minTier > encoding.TierGuardianMinorityID { + minTier = encoding.TierGuardianMajorityID + } else { + minTier = encoding.TierGuardianMinorityID + } + } + if submitter := p.selectSubmitter(minTier); submitter != nil { + if err := submitter.RequestProof(p.ctx, e); err != nil { + log.Error("Request new proof error", "blockID", e.BlockId, "minTier", e.Meta.MinTier, "error", err) + return err + } + + return nil + } + + log.Error("Failed to find proof submitter", "blockID", e.BlockId, "minTier", minTier) + return nil +} + +// submitProofOp performs a proof submission operation. +func (p *Prover) submitProofOp(proofWithHeader *proofProducer.ProofWithHeader) error { + submitter := p.getSubmitterByTier(proofWithHeader.Tier) + if submitter == nil { + return nil + } + + if err := submitter.SubmitProof(p.ctx, proofWithHeader); err != nil { + if strings.Contains(err.Error(), vm.ErrExecutionReverted.Error()) { + log.Error( + "Proof submission reverted", + "blockID", proofWithHeader.BlockID, + "minTier", proofWithHeader.Meta.MinTier, + "error", err, + ) + return nil + } + log.Error( + "Submit proof error", + "blockID", proofWithHeader.BlockID, + "minTier", proofWithHeader.Meta.MinTier, + "error", err, + ) + return err + } + + return nil +} + +// Name returns the application name. +func (p *Prover) Name() string { + return "prover" +} + +// selectSubmitter returns the proof submitter with the given minTier. +func (p *Prover) selectSubmitter(minTier uint16) proofSubmitter.Submitter { + for _, s := range p.proofSubmitters { + if s.Tier() >= minTier { + log.Debug("Proof submitter selected", "tier", s.Tier(), "minTier", minTier) + return s + } + } + + log.Warn("No proof producer / submitter found for the given minTier", "minTier", minTier) + + return nil +} + +// getSubmitterByTier returns the proof submitter with the given tier. +func (p *Prover) getSubmitterByTier(tier uint16) proofSubmitter.Submitter { + for _, s := range p.proofSubmitters { + if s.Tier() == tier { + return s + } + } + + log.Warn("No proof producer / submitter found for the given tier", "tier", tier) + + return nil +} + +// IsGuardianProver returns true if the current prover is a guardian prover. +func (p *Prover) IsGuardianProver() bool { + return p.cfg.GuardianProverMajorityAddress != common.Address{} +} + +// ProverAddress returns the current prover account address. +func (p *Prover) ProverAddress() common.Address { + return p.txmgr.From() +} + +// withRetry retries the given function with prover backoff policy. +func (p *Prover) withRetry(f func() error) { + p.wg.Add(1) + go func() { + defer p.wg.Done() + if err := backoff.Retry(f, p.backoff); err != nil { + log.Error("Operation failed", "error", err) + } + }() +} diff --git a/packages/taiko-client/prover/prover_test.go b/packages/taiko-client/prover/prover_test.go new file mode 100644 index 00000000000..fa9858dd307 --- /dev/null +++ b/packages/taiko-client/prover/prover_test.go @@ -0,0 +1,553 @@ +package prover + +import ( + "context" + "crypto/ecdsa" + "math/big" + "net/url" + "os" + "strconv" + "testing" + "time" + + "github.com/ethereum-optimism/optimism/op-service/txmgr" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/driver" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer" + guardianProverHeartbeater "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/guardian_prover_heartbeater" + producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" +) + +type ProverTestSuite struct { + testutils.ClientTestSuite + p *Prover + cancel context.CancelFunc + d *driver.Driver + proposer *proposer.Proposer +} + +func (s *ProverTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + + // Init prover + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + + ctx, cancel := context.WithCancel(context.Background()) + proverServerURL := s.initProver(ctx, l1ProverPrivKey) + s.cancel = cancel + + // Init driver + jwtSecret, err := jwt.ParseSecretFromFile(os.Getenv("JWT_SECRET")) + s.Nil(err) + s.NotEmpty(jwtSecret) + + d := new(driver.Driver) + s.Nil(d.InitFromConfig(context.Background(), &driver.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + JwtSecret: string(jwtSecret), + }, + })) + s.d = d + + // Init proposer + l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) + s.Nil(err) + + prop := new(proposer.Proposer) + + s.Nil(prop.InitFromConfig(context.Background(), &proposer.Config{ + ClientConfig: &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: string(jwtSecret), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + }, + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProposerPrivKey: l1ProposerPrivKey, + L2SuggestedFeeRecipient: common.HexToAddress(os.Getenv("L2_SUGGESTED_FEE_RECIPIENT")), + ProposeInterval: 1024 * time.Hour, + MaxProposedTxListsPerEpoch: 1, + ProverEndpoints: []*url.URL{proverServerURL}, + OptimisticTierFee: common.Big256, + SgxTierFee: common.Big256, + MaxTierFeePriceBumps: 3, + TierFeePriceBump: common.Big2, + L1BlockBuilderTip: common.Big0, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProposerPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + + s.proposer = prop +} + +func (s *ProverTestSuite) TestName() { + s.Equal("prover", s.p.Name()) +} + +func (s *ProverTestSuite) TestInitError() { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + + p := new(Prover) + + s.NotNil(InitFromConfig(ctx, p, &Config{ + L1WsEndpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L1HttpEndpoint: os.Getenv("L1_NODE_HTTP_ENDPOINT"), + L2WsEndpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2HttpEndpoint: os.Getenv("L2_EXECUTION_ENGINE_HTTP_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_CONTRACT_ADDRESS")), + L1ProverPrivKey: l1ProverPrivKey, + Dummy: true, + ProveUnassignedBlocks: true, + RPCTimeout: 10 * time.Minute, + BackOffRetryInterval: 3 * time.Second, + BackOffMaxRetries: 12, + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProverPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) +} + +func (s *ProverTestSuite) TestOnBlockProposed() { + // Init prover + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + s.p.cfg.L1ProverPrivKey = l1ProverPrivKey + // Valid block + e := s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + s.Nil(s.p.blockProposedHandler.Handle(context.Background(), e, func() {})) + req := <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + s.Nil(s.p.selectSubmitter(e.Meta.MinTier).SubmitProof(context.Background(), <-s.p.proofGenerationCh)) + + // Empty blocks + for _, e = range s.ProposeAndInsertEmptyBlocks( + s.proposer, + s.d.ChainSyncer().BlobSyncer(), + ) { + s.Nil(s.p.blockProposedHandler.Handle(context.Background(), e, func() {})) + req := <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + s.Nil(s.p.selectSubmitter(e.Meta.MinTier).SubmitProof(context.Background(), <-s.p.proofGenerationCh)) + } +} + +func (s *ProverTestSuite) TestOnBlockVerifiedEmptyBlockHash() { + s.NotPanics(func() { + s.p.blockVerifiedHandler.Handle(&bindings.TaikoL1ClientBlockVerified{ + BlockId: common.Big1, + BlockHash: common.Hash{}, + }) + }) +} + +func (s *ProverTestSuite) TestSubmitProofOp() { + s.NotPanics(func() { + s.p.withRetry(func() error { + return s.p.submitProofOp(&producer.ProofWithHeader{ + BlockID: common.Big1, + Meta: &bindings.TaikoDataBlockMetadata{}, + Header: &types.Header{}, + Proof: []byte{}, + Tier: encoding.TierOptimisticID, + Opts: &producer.ProofRequestOptions{}, + }) + }) + }) + s.NotPanics(func() { + s.p.withRetry(func() error { + return s.p.submitProofOp(&producer.ProofWithHeader{ + BlockID: common.Big1, + Meta: &bindings.TaikoDataBlockMetadata{}, + Header: &types.Header{}, + Proof: []byte{}, + Tier: encoding.TierOptimisticID, + Opts: &producer.ProofRequestOptions{}, + }) + }) + }) +} + +func (s *ProverTestSuite) TestOnBlockVerified() { + id := testutils.RandomHash().Big().Uint64() + s.NotPanics(func() { + s.p.blockVerifiedHandler.Handle(&bindings.TaikoL1ClientBlockVerified{ + BlockId: testutils.RandomHash().Big(), + Raw: types.Log{ + BlockHash: testutils.RandomHash(), + BlockNumber: id, + }, + }) + }) +} + +func (s *ProverTestSuite) TestContestWrongBlocks() { + s.T().Skip() + s.p.cfg.ContesterMode = false + s.Nil(s.p.initEventHandlers()) + e := s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + s.Nil(s.p.transitionProvedHandler.Handle(context.Background(), &bindings.TaikoL1ClientTransitionProved{ + BlockId: e.BlockId, + Tier: e.Meta.MinTier, + })) + s.p.cfg.ContesterMode = true + s.Nil(s.p.initEventHandlers()) + + // Submit a wrong proof at first. + sink := make(chan *bindings.TaikoL1ClientTransitionProved) + header, err := s.p.rpc.L2.HeaderByNumber(context.Background(), e.BlockId) + s.Nil(err) + + sub, err := s.p.rpc.TaikoL1.WatchTransitionProved(nil, sink, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + s.Nil(s.p.proveOp()) + req := <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + proofWithHeader := <-s.p.proofGenerationCh + proofWithHeader.Opts.BlockHash = testutils.RandomHash() + s.Nil(s.p.selectSubmitter(e.Meta.MinTier).SubmitProof(context.Background(), proofWithHeader)) + + event := <-sink + s.Equal(header.Number.Uint64(), event.BlockId.Uint64()) + s.Equal(common.BytesToHash(proofWithHeader.Opts.BlockHash[:]), common.BytesToHash(event.Tran.BlockHash[:])) + s.NotEqual(header.Hash(), common.BytesToHash(event.Tran.BlockHash[:])) + s.Equal(header.ParentHash, common.BytesToHash(event.Tran.ParentHash[:])) + + // Contest the transition. + contestedSink := make(chan *bindings.TaikoL1ClientTransitionContested) + contestedSub, err := s.p.rpc.TaikoL1.WatchTransitionContested(nil, contestedSink, nil) + s.Nil(err) + defer func() { + contestedSub.Unsubscribe() + close(contestedSink) + }() + + contesterKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_CONTRACT_OWNER_PRIVATE_KEY"))) + s.Nil(err) + s.NotNil(s.initProver( + context.Background(), + contesterKey, + )) + s.p.cfg.ContesterMode = true + s.Nil(s.p.initEventHandlers()) + + s.Greater(header.Number.Uint64(), uint64(0)) + s.Nil(s.p.transitionProvedHandler.Handle(context.Background(), event)) + contestReq := <-s.p.proofContestCh + s.Nil(s.p.contestProofOp(contestReq)) + + contestedEvent := <-contestedSink + s.Equal(header.Number.Uint64(), contestedEvent.BlockId.Uint64()) + s.Equal(header.Hash(), common.BytesToHash(contestedEvent.Tran.BlockHash[:])) + s.Equal(header.ParentHash, common.BytesToHash(contestedEvent.Tran.ParentHash[:])) + + s.Nil(s.p.transitionContestedHandler.Handle(context.Background(), contestedEvent)) + + s.p.cfg.GuardianProverMajorityAddress = common.HexToAddress(os.Getenv("GUARDIAN_PROVER_CONTRACT_ADDRESS")) + s.True(s.p.IsGuardianProver()) + + txBuilder := transaction.NewProveBlockTxBuilder( + s.p.rpc, + s.p.cfg.TaikoL1Address, + s.p.cfg.GuardianProverMajorityAddress, + s.p.cfg.GuardianProverMinorityAddress, + ) + s.p.proofSubmitters = nil + s.Nil(s.p.initProofSubmitters(s.p.txmgr, txBuilder)) + + s.p.rpc.GuardianProverMajority, err = bindings.NewGuardianProver(s.p.cfg.GuardianProverMajorityAddress, s.p.rpc.L1) + s.Nil(err) + + approvedSink := make(chan *bindings.GuardianProverGuardianApproval) + approvedSub, err := s.p.rpc.GuardianProverMajority.WatchGuardianApproval( + nil, approvedSink, []common.Address{}, [](*big.Int){}, []([32]byte){}, + ) + s.Nil(err) + defer func() { + approvedSub.Unsubscribe() + close(approvedSink) + }() + req = <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + s.Nil(s.p.selectSubmitter(encoding.TierGuardianMajorityID).SubmitProof(context.Background(), <-s.p.proofGenerationCh)) + approvedEvent := <-approvedSink + + s.Equal(header.Number.Uint64(), approvedEvent.BlockId.Uint64()) +} + +func (s *ProverTestSuite) TestProveExpiredUnassignedBlock() { + e := s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + sink := make(chan *bindings.TaikoL1ClientTransitionProved) + + header, err := s.p.rpc.L2.HeaderByNumber(context.Background(), e.BlockId) + s.Nil(err) + + sub, err := s.p.rpc.TaikoL1.WatchTransitionProved(nil, sink, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + e.AssignedProver = common.BytesToAddress(testutils.RandomHash().Bytes()) + s.p.cfg.GuardianProverMajorityAddress = common.Address{} + s.Nil(s.p.assignmentExpiredHandler.Handle(context.Background(), e)) + req := <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + s.Nil(s.p.selectSubmitter(e.Meta.MinTier).SubmitProof(context.Background(), <-s.p.proofGenerationCh)) + + event := <-sink + s.Equal(header.Number.Uint64(), event.BlockId.Uint64()) + s.Equal(header.Hash(), common.BytesToHash(event.Tran.BlockHash[:])) + s.Equal(header.ParentHash, common.BytesToHash(event.Tran.ParentHash[:])) +} + +func (s *ProverTestSuite) TestSelectSubmitter() { + submitter := s.p.selectSubmitter(encoding.TierGuardianMajorityID - 1) + s.NotNil(submitter) + s.Equal(encoding.TierGuardianMajorityID, submitter.Tier()) +} + +func (s *ProverTestSuite) TestSelectSubmitterNotFound() { + submitter := s.p.selectSubmitter(encoding.TierGuardianMajorityID + 1) + s.Nil(submitter) +} + +func (s *ProverTestSuite) TestGetSubmitterByTier() { + submitter := s.p.getSubmitterByTier(encoding.TierGuardianMajorityID) + s.NotNil(submitter) + s.Equal(encoding.TierGuardianMajorityID, submitter.Tier()) + s.Nil(s.p.getSubmitterByTier(encoding.TierGuardianMajorityID + 1)) +} + +func (s *ProverTestSuite) TestProveOp() { + e := s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + sink := make(chan *bindings.TaikoL1ClientTransitionProved) + + header, err := s.p.rpc.L2.HeaderByNumber(context.Background(), e.BlockId) + s.Nil(err) + + sub, err := s.p.rpc.TaikoL1.WatchTransitionProved(nil, sink, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + s.Nil(s.p.proveOp()) + req := <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + s.Nil(s.p.selectSubmitter(e.Meta.MinTier).SubmitProof(context.Background(), <-s.p.proofGenerationCh)) + + event := <-sink + s.Equal(header.Number.Uint64(), event.BlockId.Uint64()) + s.Equal(header.Hash(), common.BytesToHash(event.Tran.BlockHash[:])) + s.Equal(header.ParentHash, common.BytesToHash(event.Tran.ParentHash[:])) +} + +func (s *ProverTestSuite) TestGetBlockProofStatus() { + parent, err := s.p.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + e := s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + + // No proof submitted + status, err := rpc.GetBlockProofStatus(context.Background(), s.p.rpc, e.BlockId, s.p.ProverAddress()) + s.Nil(err) + s.False(status.IsSubmitted) + + // Valid proof submitted + sink := make(chan *bindings.TaikoL1ClientTransitionProved) + + sub, err := s.p.rpc.TaikoL1.WatchTransitionProved(nil, sink, nil) + s.Nil(err) + defer func() { + sub.Unsubscribe() + close(sink) + }() + + s.Nil(s.p.proveOp()) + req := <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + s.Nil(s.p.selectSubmitter(e.Meta.MinTier).SubmitProof(context.Background(), <-s.p.proofGenerationCh)) + + status, err = rpc.GetBlockProofStatus(context.Background(), s.p.rpc, e.BlockId, s.p.ProverAddress()) + s.Nil(err) + + s.True(status.IsSubmitted) + s.False(status.Invalid) + s.Equal(parent.Hash(), status.ParentHeader.Hash()) + s.Equal(s.p.ProverAddress(), status.CurrentTransitionState.Prover) + + // Invalid proof submitted + parent, err = s.p.rpc.L2.HeaderByNumber(context.Background(), nil) + s.Nil(err) + + e = s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) + + status, err = rpc.GetBlockProofStatus(context.Background(), s.p.rpc, e.BlockId, s.p.ProverAddress()) + s.Nil(err) + s.False(status.IsSubmitted) + + s.Nil(s.p.proveOp()) + req = <-s.p.proofSubmissionCh + s.Nil(s.p.requestProofOp(req.Event, req.Tier)) + + proofWithHeader := <-s.p.proofGenerationCh + proofWithHeader.Opts.BlockHash = testutils.RandomHash() + s.Nil(s.p.selectSubmitter(e.Meta.MinTier).SubmitProof(context.Background(), proofWithHeader)) + + status, err = rpc.GetBlockProofStatus(context.Background(), s.p.rpc, e.BlockId, s.p.ProverAddress()) + s.Nil(err) + s.True(status.IsSubmitted) + s.True(status.Invalid) + s.Equal(parent.Hash(), status.ParentHeader.Hash()) + s.Equal(s.p.ProverAddress(), status.CurrentTransitionState.Prover) + s.Equal(proofWithHeader.Opts.BlockHash, common.BytesToHash(status.CurrentTransitionState.BlockHash[:])) +} + +func (s *ProverTestSuite) TestSetApprovalAlreadySetHigher() { + originalAllowance, err := s.p.rpc.TaikoToken.Allowance(&bind.CallOpts{}, s.p.ProverAddress(), s.p.cfg.TaikoL1Address) + s.Nil(err) + + amt := common.Big1 + s.p.cfg.Allowance = amt + + s.Nil(s.p.setApprovalAmount(context.Background(), s.p.cfg.TaikoL1Address)) + + allowance, err := s.p.rpc.TaikoToken.Allowance(&bind.CallOpts{}, s.p.ProverAddress(), s.p.cfg.TaikoL1Address) + s.Nil(err) + + s.Equal(0, allowance.Cmp(originalAllowance)) +} + +func (s *ProverTestSuite) TearDownTest() { + if s.p.ctx.Err() == nil { + s.cancel() + } +} + +func TestProverTestSuite(t *testing.T) { + suite.Run(t, new(ProverTestSuite)) +} + +func (s *ProverTestSuite) initProver( + ctx context.Context, + key *ecdsa.PrivateKey, +) *url.URL { + proverServerURL := testutils.LocalRandomProverEndpoint() + port, err := strconv.Atoi(proverServerURL.Port()) + s.Nil(err) + + decimal, err := s.RPCClient.TaikoToken.Decimals(nil) + s.Nil(err) + + p := new(Prover) + s.Nil(InitFromConfig(ctx, p, &Config{ + L1WsEndpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L1HttpEndpoint: os.Getenv("L1_NODE_HTTP_ENDPOINT"), + L2WsEndpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + L2HttpEndpoint: os.Getenv("L2_EXECUTION_ENGINE_HTTP_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + L1ProverPrivKey: key, + Dummy: true, + ProveUnassignedBlocks: true, + Capacity: 1024, + MinOptimisticTierFee: common.Big1, + MinSgxTierFee: common.Big1, + HTTPServerPort: uint64(port), + Allowance: new(big.Int).Exp(big.NewInt(1_000_000_100), new(big.Int).SetUint64(uint64(decimal)), nil), + RPCTimeout: 3 * time.Second, + BackOffRetryInterval: 3 * time.Second, + BackOffMaxRetries: 12, + L1NodeVersion: "1.0.0", + L2NodeVersion: "0.1.0", + TxmgrConfigs: &txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(key)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + })) + p.server = s.NewTestProverServer( + key, + proverServerURL, + ) + + p.guardianProverHeartbeater = guardianProverHeartbeater.New( + key, + p.cfg.GuardianProverHealthCheckServerEndpoint, + p.rpc, + p.ProverAddress(), + ) + s.p = p + + return proverServerURL +} diff --git a/packages/taiko-client/prover/server/api.go b/packages/taiko-client/prover/server/api.go new file mode 100644 index 00000000000..b914b9fb77f --- /dev/null +++ b/packages/taiko-client/prover/server/api.go @@ -0,0 +1,289 @@ +package server + +import ( + "context" + "math/big" + "net/http" + "time" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/labstack/echo/v4" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +const ( + rpcTimeout = 1 * time.Minute +) + +// @title Taiko Prover Server API +// @version 1.0 +// @termsOfService http://swagger.io/terms/ + +// @contact.name API Support +// @contact.url https://community.taiko.xyz/ +// @contact.email info@taiko.xyz + +// @license.name MIT +// @license.url https://github.com/taikoxyz/taiko-mono/packages/taiko-client/blob/main/LICENSE.md + +// CreateAssignmentRequestBody represents a request body when handling assignment creation request. +type CreateAssignmentRequestBody struct { + Proposer common.Address `json:"proposer"` + FeeToken common.Address `json:"feeToken"` + TierFees []encoding.TierFee `json:"tierFees"` + Expiry uint64 `json:"expiry"` + BlobHash common.Hash `json:"blobHash"` +} + +// Status represents the current prover server status. +type Status struct { + MinOptimisticTierFee uint64 `json:"minOptimisticTierFee"` + MinSgxTierFee uint64 `json:"minSgxTierFee"` + MinSgxAndZkVMTierFee uint64 `json:"minSgxAndZkVMTierFee"` + MaxExpiry uint64 `json:"maxExpiry"` + Prover string `json:"prover"` +} + +// GetStatus handles a query to the current prover server status. +// +// @Summary Get current prover server status +// @ID get-status +// @Accept json +// @Produce json +// @Success 200 {object} Status +// @Router /status [get] +func (s *ProverServer) GetStatus(c echo.Context) error { + return c.JSON(http.StatusOK, &Status{ + MinOptimisticTierFee: s.minOptimisticTierFee.Uint64(), + MinSgxTierFee: s.minSgxTierFee.Uint64(), + MinSgxAndZkVMTierFee: s.minSgxAndZkVMTierFee.Uint64(), + MaxExpiry: uint64(s.maxExpiry.Seconds()), + Prover: s.proverAddress.Hex(), + }) +} + +// ProposeBlockResponse represents the JSON response which will be returned by +// the ProposeBlock request handler. +type ProposeBlockResponse struct { + SignedPayload []byte `json:"signedPayload"` + Prover common.Address `json:"prover"` + MaxBlockID uint64 `json:"maxBlockID"` + MaxProposedIn uint64 `json:"maxProposedIn"` +} + +// CreateAssignment handles a block proof assignment request, decides if this prover wants to +// handle this block, and if so, returns a signed payload the proposer +// can submit onchain. +// +// @Summary Try to accept a block proof assignment +// @Param body body server.CreateAssignmentRequestBody true "assignment request body" +// @Accept json +// @Produce json +// @Success 200 {object} ProposeBlockResponse +// @Failure 422 {string} string "empty blob hash" +// @Failure 422 {string} string "only receive ETH" +// @Failure 422 {string} string "insufficient prover balance" +// @Failure 422 {string} string "proof fee too low" +// @Failure 422 {string} string "expiry too long" +// @Failure 422 {string} string "prover does not have capacity" +// @Router /assignment [post] +func (s *ProverServer) CreateAssignment(c echo.Context) error { + req := new(CreateAssignmentRequestBody) + if err := c.Bind(req); err != nil { + return c.JSON(http.StatusUnprocessableEntity, err) + } + + log.Info( + "Proof assignment request body", + "feeToken", req.FeeToken, + "expiry", req.Expiry, + "tierFees", req.TierFees, + "blobHash", req.BlobHash, + "currentUsedCapacity", len(s.proofSubmissionCh), + ) + + // 1. Check if the request body is valid. + if req.BlobHash == (common.Hash{}) { + log.Warn("Empty blob hash", "prover", s.proverAddress) + return echo.NewHTTPError(http.StatusUnprocessableEntity, "empty blob hash") + } + if req.FeeToken != (common.Address{}) { + log.Warn("Only receive ETH", "prover", s.proverAddress) + return echo.NewHTTPError(http.StatusUnprocessableEntity, "only receive ETH") + } + + // 2. Check if the prover has the required minimum on-chain ETH and Taiko token balance. + ok, err := s.checkMinEthAndToken(c.Request().Context()) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err) + } + + if !ok { + return echo.NewHTTPError(http.StatusUnprocessableEntity, "insufficient prover balance") + } + + // 3. Check if the prover's token balance is enough to cover the bonds. + if ok, err = rpc.CheckProverBalance( + c.Request().Context(), + s.rpc, + s.proverAddress, + s.assignmentHookAddress, + s.livenessBond, + ); err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err) + } + if !ok { + log.Warn( + "Insufficient prover token balance, please get more tokens or wait for verification of the blocks you proved", + "prover", s.proverAddress, + ) + return echo.NewHTTPError(http.StatusUnprocessableEntity, "insufficient prover balance") + } + + // 4. Check if the proof fee meets prover's minimum requirement for each tier. + for _, tier := range req.TierFees { + if tier.Tier == encoding.TierGuardianMajorityID { + continue + } + + if tier.Tier == encoding.TierGuardianMinorityID { + continue + } + + var minTierFee *big.Int + switch tier.Tier { + case encoding.TierOptimisticID: + minTierFee = s.minOptimisticTierFee + case encoding.TierSgxID: + minTierFee = s.minSgxTierFee + case encoding.TierSgxAndZkVMID: + minTierFee = s.minSgxAndZkVMTierFee + default: + log.Warn("Unknown tier", "tier", tier.Tier, "fee", tier.Fee, "proposerIP", c.RealIP()) + return echo.NewHTTPError(http.StatusUnprocessableEntity, "unknown tier") + } + + if tier.Fee.Cmp(minTierFee) < 0 { + log.Warn( + "Proof fee too low", + "tier", tier.Tier, + "fee", tier.Fee, + "minTierFee", minTierFee, + "proposerIP", c.RealIP(), + ) + return echo.NewHTTPError(http.StatusUnprocessableEntity, "proof fee too low") + } + } + + // 5. Check if the expiry is too long. + if req.Expiry > uint64(time.Now().Add(s.maxExpiry).Unix()) { + log.Warn( + "Expiry too long", + "requestExpiry", req.Expiry, + "srvMaxExpiry", s.maxExpiry, + "proposerIP", c.RealIP(), + ) + return echo.NewHTTPError(http.StatusUnprocessableEntity, "expiry too long") + } + + // 6. Check if the prover has any capacity now. + if s.proofSubmissionCh != nil && len(s.proofSubmissionCh) == cap(s.proofSubmissionCh) { + log.Warn("Prover does not have capacity", "capacity", cap(s.proofSubmissionCh)) + return echo.NewHTTPError(http.StatusUnprocessableEntity, "prover does not have capacity") + } + + // 7. Encode and sign the prover assignment payload. + l1Head, err := s.rpc.L1.BlockNumber(c.Request().Context()) + if err != nil { + log.Error("Failed to get L1 block head", "error", err) + return echo.NewHTTPError(http.StatusUnprocessableEntity, err) + } + encoded, err := encoding.EncodeProverAssignmentPayload( + s.protocolConfigs.ChainId, + s.taikoL1Address, + s.assignmentHookAddress, + req.Proposer, + s.proverAddress, + req.BlobHash, + req.FeeToken, + req.Expiry, + l1Head+s.maxSlippage, + s.maxProposedIn, + req.TierFees, + ) + if err != nil { + log.Error("Failed to encode proverAssignment payload data", "error", err) + return echo.NewHTTPError(http.StatusUnprocessableEntity, err) + } + + signed, err := crypto.Sign(crypto.Keccak256Hash(encoded).Bytes(), s.proverPrivateKey) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err) + } + + // 8. Return the signed payload. + return c.JSON(http.StatusOK, &ProposeBlockResponse{ + SignedPayload: signed, + Prover: s.proverAddress, + MaxBlockID: l1Head + s.maxSlippage, + MaxProposedIn: s.maxProposedIn, + }) +} + +// checkMinEthAndToken checks if the prover has the required minimum on-chain ETH and Taiko token balance. +func (s *ProverServer) checkMinEthAndToken(ctx context.Context) (bool, error) { + ctx, cancel := context.WithTimeout(ctx, rpcTimeout) + defer cancel() + + // 1. Check prover's ETH balance. + ethBalance, err := s.rpc.L1.BalanceAt(ctx, s.proverAddress, nil) + if err != nil { + return false, err + } + + log.Info( + "Prover's ETH balance", + "balance", utils.WeiToEther(ethBalance), + "address", s.proverAddress.Hex(), + ) + + if ethBalance.Cmp(s.minEthBalance) <= 0 { + log.Warn( + "Prover does not have required minimum on-chain ETH balance", + "providedProver", s.proverAddress.Hex(), + "ethBalance", utils.WeiToEther(ethBalance), + "minEthBalance", utils.WeiToEther(s.minEthBalance), + ) + return false, nil + } + + // 2. Check prover's Taiko token balance. + balance, err := s.rpc.TaikoToken.BalanceOf(&bind.CallOpts{Context: ctx}, s.proverAddress) + if err != nil { + return false, err + } + + log.Info( + "Prover's Taiko token balance", + "balance", utils.WeiToEther(balance), + "address", s.proverAddress.Hex(), + ) + + if balance.Cmp(s.minTaikoTokenBalance) <= 0 { + log.Warn( + "Prover does not have required on-chain Taiko token balance", + "providedProver", s.proverAddress.Hex(), + "taikoTokenBalance", utils.WeiToEther(balance), + "minTaikoTokenBalance", utils.WeiToEther(s.minTaikoTokenBalance), + ) + return false, nil + } + + return true, nil +} diff --git a/packages/taiko-client/prover/server/api_test.go b/packages/taiko-client/prover/server/api_test.go new file mode 100644 index 00000000000..7f72c1a2f00 --- /dev/null +++ b/packages/taiko-client/prover/server/api_test.go @@ -0,0 +1,50 @@ +package server + +import ( + "encoding/json" + "io" + "net/http" + "strings" + "time" + + "github.com/ethereum/go-ethereum/common" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" +) + +func (s *ProverServerTestSuite) TestGetStatusSuccess() { + res := s.sendReq("/status") + s.Equal(http.StatusOK, res.StatusCode) + + status := new(Status) + + defer res.Body.Close() + b, err := io.ReadAll(res.Body) + s.Nil(err) + s.Nil(json.Unmarshal(b, &status)) + + s.Equal(s.s.minOptimisticTierFee.Uint64(), status.MinOptimisticTierFee) + s.Equal(s.s.minSgxTierFee.Uint64(), status.MinSgxTierFee) + s.Equal(uint64(s.s.maxExpiry.Seconds()), status.MaxExpiry) + s.NotEmpty(status.Prover) +} + +func (s *ProverServerTestSuite) TestProposeBlockSuccess() { + data, err := json.Marshal(CreateAssignmentRequestBody{ + FeeToken: (common.Address{}), + TierFees: []encoding.TierFee{ + {Tier: encoding.TierOptimisticID, Fee: common.Big256}, + {Tier: encoding.TierSgxID, Fee: common.Big256}, + }, + Expiry: uint64(time.Now().Add(time.Minute).Unix()), + BlobHash: common.BigToHash(common.Big1), + }) + s.Nil(err) + res, err := http.Post(s.testServer.URL+"/assignment", "application/json", strings.NewReader(string(data))) + s.Nil(err) + s.Equal(http.StatusOK, res.StatusCode) + defer res.Body.Close() + b, err := io.ReadAll(res.Body) + s.Nil(err) + s.Contains(string(b), "signedPayload") +} diff --git a/packages/taiko-client/prover/server/server.go b/packages/taiko-client/prover/server/server.go new file mode 100644 index 00000000000..88b33ea5275 --- /dev/null +++ b/packages/taiko-client/prover/server/server.go @@ -0,0 +1,146 @@ +package server + +import ( + "context" + "crypto/ecdsa" + "math/big" + "net/http" + "os" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/labstack/echo/v4" + "github.com/labstack/echo/v4/middleware" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +// @title Taiko Prover Server API +// @version 1.0 +// @termsOfService http://swagger.io/terms/ + +// @contact.name API Support +// @contact.url https://community.taiko.xyz/ +// @contact.email info@taiko.xyz + +// @license.name MIT +// @license.url https://github.com/taikoxyz/taiko-mono/packages/taiko-client/blob/main/LICENSE.md + +// ProverServer represents a prover server instance. +type ProverServer struct { + echo *echo.Echo + proverPrivateKey *ecdsa.PrivateKey + proverAddress common.Address + minOptimisticTierFee *big.Int + minSgxTierFee *big.Int + minSgxAndZkVMTierFee *big.Int + minEthBalance *big.Int + minTaikoTokenBalance *big.Int + maxExpiry time.Duration + maxSlippage uint64 + maxProposedIn uint64 + taikoL1Address common.Address + assignmentHookAddress common.Address + proofSubmissionCh chan<- proofProducer.ProofRequestBody + rpc *rpc.Client + protocolConfigs *bindings.TaikoDataConfig + livenessBond *big.Int +} + +// NewProverServerOpts contains all configurations for creating a prover server instance. +type NewProverServerOpts struct { + ProverPrivateKey *ecdsa.PrivateKey + MinOptimisticTierFee *big.Int + MinSgxTierFee *big.Int + MinSgxAndZkVMTierFee *big.Int + MinEthBalance *big.Int + MinTaikoTokenBalance *big.Int + MaxExpiry time.Duration + MaxBlockSlippage uint64 + MaxProposedIn uint64 + TaikoL1Address common.Address + AssignmentHookAddress common.Address + ProofSubmissionCh chan<- proofProducer.ProofRequestBody + RPC *rpc.Client + ProtocolConfigs *bindings.TaikoDataConfig + LivenessBond *big.Int +} + +// New creates a new prover server instance. +func New(opts *NewProverServerOpts) (*ProverServer, error) { + srv := &ProverServer{ + proverPrivateKey: opts.ProverPrivateKey, + proverAddress: crypto.PubkeyToAddress(opts.ProverPrivateKey.PublicKey), + echo: echo.New(), + minOptimisticTierFee: opts.MinOptimisticTierFee, + minSgxTierFee: opts.MinSgxTierFee, + minSgxAndZkVMTierFee: opts.MinSgxAndZkVMTierFee, + minEthBalance: opts.MinEthBalance, + minTaikoTokenBalance: opts.MinTaikoTokenBalance, + maxExpiry: opts.MaxExpiry, + maxProposedIn: opts.MaxProposedIn, + maxSlippage: opts.MaxBlockSlippage, + taikoL1Address: opts.TaikoL1Address, + assignmentHookAddress: opts.AssignmentHookAddress, + proofSubmissionCh: opts.ProofSubmissionCh, + rpc: opts.RPC, + protocolConfigs: opts.ProtocolConfigs, + livenessBond: opts.LivenessBond, + } + + srv.echo.HideBanner = true + srv.configureMiddleware() + srv.configureRoutes() + + return srv, nil +} + +// Start starts the HTTP server. +func (s *ProverServer) Start(address string) error { + return s.echo.Start(address) +} + +// Shutdown shuts down the HTTP server. +func (s *ProverServer) Shutdown(ctx context.Context) error { + return s.echo.Shutdown(ctx) +} + +// Health endpoints for probes. +func (s *ProverServer) Health(c echo.Context) error { + return c.NoContent(http.StatusOK) +} + +// LogSkipper implements the `middleware.Skipper` interface. +func LogSkipper(c echo.Context) bool { + switch c.Request().URL.Path { + case "/healthz": + return true + default: + return true + } +} + +// configureMiddleware configures the server middlewares. +func (s *ProverServer) configureMiddleware() { + s.echo.Use(middleware.RequestID()) + + s.echo.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{ + Skipper: LogSkipper, + Format: `{"time":"${time_rfc3339_nano}","level":"INFO","message":{"id":"${id}","remote_ip":"${remote_ip}",` + + `"host":"${host}","method":"${method}","uri":"${uri}","user_agent":"${user_agent}",` + + `"response_status":${status},"error":"${error}","latency":${latency},"latency_human":"${latency_human}",` + + `"bytes_in":${bytes_in},"bytes_out":${bytes_out}}}` + "\n", + Output: os.Stdout, + })) +} + +// configureRoutes contains all routes which will be used by prover server. +func (s *ProverServer) configureRoutes() { + s.echo.GET("/", s.Health) + s.echo.GET("/healthz", s.Health) + s.echo.GET("/status", s.GetStatus) + s.echo.POST("/assignment", s.CreateAssignment) +} diff --git a/packages/taiko-client/prover/server/server_test.go b/packages/taiko-client/prover/server/server_test.go new file mode 100644 index 00000000000..5f3d143064b --- /dev/null +++ b/packages/taiko-client/prover/server/server_test.go @@ -0,0 +1,127 @@ +package server + +import ( + "context" + "fmt" + "net/http" + "net/http/httptest" + "net/url" + "os" + "testing" + "time" + + "github.com/cenkalti/backoff/v4" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/go-resty/resty/v2" + "github.com/phayes/freeport" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" + proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" +) + +type ProverServerTestSuite struct { + suite.Suite + s *ProverServer + testServer *httptest.Server +} + +func (s *ProverServerTestSuite) SetupTest() { + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + + rpcClient, err := rpc.NewClient(context.Background(), &rpc.ClientConfig{ + L1Endpoint: os.Getenv("L1_NODE_WS_ENDPOINT"), + L2Endpoint: os.Getenv("L2_EXECUTION_ENGINE_WS_ENDPOINT"), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + TaikoL2Address: common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + TaikoTokenAddress: common.HexToAddress(os.Getenv("TAIKO_TOKEN_ADDRESS")), + L2EngineEndpoint: os.Getenv("L2_EXECUTION_ENGINE_AUTH_ENDPOINT"), + JwtSecret: os.Getenv("JWT_SECRET"), + Timeout: 5 * time.Second, + }) + s.Nil(err) + + configs, err := rpcClient.TaikoL1.GetConfig(nil) + s.Nil(err) + + p, err := New(&NewProverServerOpts{ + ProverPrivateKey: l1ProverPrivKey, + MinOptimisticTierFee: common.Big1, + MinSgxTierFee: common.Big1, + MinSgxAndZkVMTierFee: common.Big1, + MinEthBalance: common.Big1, + MinTaikoTokenBalance: common.Big1, + MaxExpiry: time.Hour, + ProofSubmissionCh: make(chan<- proofProducer.ProofRequestBody, 1024), + TaikoL1Address: common.HexToAddress(os.Getenv("TAIKO_L1_ADDRESS")), + AssignmentHookAddress: common.HexToAddress(os.Getenv("ASSIGNMENT_HOOK_ADDRESS")), + RPC: rpcClient, + ProtocolConfigs: &configs, + LivenessBond: common.Big0, + }) + s.Nil(err) + + p.echo.HideBanner = true + p.configureMiddleware() + p.configureRoutes() + s.s = p + s.testServer = httptest.NewServer(p.echo) +} + +func (s *ProverServerTestSuite) TestHealth() { + resp := s.sendReq("/healthz") + defer resp.Body.Close() + s.Equal(http.StatusOK, resp.StatusCode) +} + +func (s *ProverServerTestSuite) TestRoot() { + resp := s.sendReq("/") + defer resp.Body.Close() + s.Equal(http.StatusOK, resp.StatusCode) +} + +func (s *ProverServerTestSuite) TestStartShutdown() { + port, err := freeport.GetFreePort() + s.Nil(err) + + url, err := url.Parse(fmt.Sprintf("http://localhost:%v", port)) + s.Nil(err) + + go func() { + if err := s.s.Start(fmt.Sprintf(":%v", port)); err != nil { + log.Error("Failed to start prover server", "error", err) + } + }() + + // Wait till the server fully started. + s.Nil(backoff.Retry(func() error { + res, err := resty.New().R().Get(url.String() + "/healthz") + if err != nil { + return err + } + if !res.IsSuccess() { + return fmt.Errorf("invalid response status code: %d", res.StatusCode()) + } + + return nil + }, backoff.NewExponentialBackOff())) + + s.Nil(s.s.Shutdown(context.Background())) +} + +func (s *ProverServerTestSuite) TearDownTest() { + s.testServer.Close() +} + +func TestProverServerTestSuite(t *testing.T) { + suite.Run(t, new(ProverServerTestSuite)) +} + +func (s *ProverServerTestSuite) sendReq(path string) *http.Response { + res, err := http.Get(s.testServer.URL + path) + s.Nil(err) + return res +} diff --git a/packages/taiko-client/prover/shared_state/state.go b/packages/taiko-client/prover/shared_state/state.go new file mode 100644 index 00000000000..9df25abeb3d --- /dev/null +++ b/packages/taiko-client/prover/shared_state/state.go @@ -0,0 +1,54 @@ +package state + +import ( + "sync/atomic" + + "github.com/ethereum/go-ethereum/core/types" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +// SharedState represents the internal state of a prover. +type SharedState struct { + lastHandledBlockID atomic.Uint64 + l1Current atomic.Value + tiers []*rpc.TierProviderTierWithID +} + +// New creates a new prover shared state instance. +func New() *SharedState { + return &SharedState{} +} + +// GetLastHandledBlockID returns the last handled block ID. +func (s *SharedState) GetLastHandledBlockID() uint64 { + return s.lastHandledBlockID.Load() +} + +// SetLastHandledBlockID sets the last handled block ID. +func (s *SharedState) SetLastHandledBlockID(blockID uint64) { + s.lastHandledBlockID.Store(blockID) +} + +// GetL1Current returns the current L1 header cursor. +func (s *SharedState) GetL1Current() *types.Header { + if val := s.l1Current.Load(); val != nil { + return val.(*types.Header) + } + return nil +} + +// SetL1Current sets the current L1 header cursor. +func (s *SharedState) SetL1Current(header *types.Header) { + s.l1Current.Store(header) +} + +// GetTiers returns the current proof tiers. +func (s *SharedState) GetTiers() []*rpc.TierProviderTierWithID { + return s.tiers +} + +// SetTiers sets the current proof tiers. +func (s *SharedState) SetTiers(tiers []*rpc.TierProviderTierWithID) { + s.tiers = tiers +} diff --git a/packages/taiko-client/prover/shared_state/state_test.go b/packages/taiko-client/prover/shared_state/state_test.go new file mode 100644 index 00000000000..cff0394ebf7 --- /dev/null +++ b/packages/taiko-client/prover/shared_state/state_test.go @@ -0,0 +1,44 @@ +package state + +import ( + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/suite" + + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" +) + +type ProverSharedStateTestSuite struct { + suite.Suite + state *SharedState +} + +func (s *ProverSharedStateTestSuite) SetupTest() { + s.state = New() +} + +func (s *ProverSharedStateTestSuite) TestLastHandledBlockID() { + newLastHandledBlockID := uint64(1024) + s.NotEqual(newLastHandledBlockID, s.state.GetLastHandledBlockID()) + s.state.SetLastHandledBlockID(newLastHandledBlockID) + s.Equal(newLastHandledBlockID, s.state.GetLastHandledBlockID()) +} + +func (s *ProverSharedStateTestSuite) TestL1Current() { + newL1Current := &types.Header{Number: common.Big256} + s.NotEqual(newL1Current, s.state.GetL1Current()) + s.state.SetL1Current(newL1Current) + s.Equal(newL1Current.Hash(), s.state.GetL1Current().Hash()) +} + +func (s *ProverSharedStateTestSuite) TestTiers() { + s.Empty(s.state.GetTiers()) + s.state.SetTiers([]*rpc.TierProviderTierWithID{{ID: 1}}) + s.Equal(1, len(s.state.GetTiers())) +} + +func TestProverSharedStateTestSuite(t *testing.T) { + suite.Run(t, new(ProverSharedStateTestSuite)) +} diff --git a/packages/taiko-client/scripts/common.sh b/packages/taiko-client/scripts/common.sh new file mode 100644 index 00000000000..79a317cfd2d --- /dev/null +++ b/packages/taiko-client/scripts/common.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +RED='\033[1;31m' +NC='\033[0m' # No Color + +COMPOSE="docker compose -f internal/docker/nodes/docker-compose.yml" + +print_error() { + local msg="$1" + echo -e "${RED}$msg${NC}" +} + +check_env() { + local name="$1" + local value="${!name}" + + if [ -z "$value" ]; then + print_error "$name not set in env" + exit 1 + fi +} + +check_command() { + if ! command -v "$1" &> /dev/null; then + print_error "$1 could not be found" + exit + fi +} + +compose_down() { + local services=("$@") + echo + echo "stopping services..." + $COMPOSE down "${services[@]}" #--remove-orphans + echo "done" +} + +compose_up() { + local services=("$@") + echo + echo "launching services..." + $COMPOSE up --quiet-pull "${services[@]}" -d --wait + echo "done" +} diff --git a/packages/taiko-client/scripts/gen_bindings.sh b/packages/taiko-client/scripts/gen_bindings.sh new file mode 100755 index 00000000000..87a788438e8 --- /dev/null +++ b/packages/taiko-client/scripts/gen_bindings.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Generate go contract bindings. +# ref: https://geth.ethereum.org/docs/dapp/native-bindings + +set -eou pipefail + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" + +echo "" +echo "TAIKO_GETH_DIR: ${TAIKO_GETH_DIR}" +echo "" + +cd ${TAIKO_GETH_DIR} && + make all && + cd - + +cd ../protocol && + pnpm clean && + pnpm compile && + cd - + +ABIGEN_BIN=$TAIKO_GETH_DIR/build/bin/abigen + +echo "" +echo "Start generating go contract bindings..." +echo "" + +cat ../protocol/out/TaikoL1.sol/TaikoL1.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type TaikoL1Client --pkg bindings --out $DIR/../bindings/gen_taiko_l1.go + +cat ../protocol/out/LibProving.sol/LibProving.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type LibProving --pkg bindings --out $DIR/../bindings/gen_lib_proving.go + +cat ../protocol/out/LibProposing.sol/LibProposing.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type LibProposing --pkg bindings --out $DIR/../bindings/gen_lib_proposing.go + +cat ../protocol/out/LibUtils.sol/LibUtils.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type LibUtils --pkg bindings --out $DIR/../bindings/gen_lib_utils.go + +cat ../protocol/out/LibVerifying.sol/LibVerifying.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type LibVerifying --pkg bindings --out $DIR/../bindings/gen_lib_verifying.go + +cat ../protocol/out/TaikoL2.sol/TaikoL2.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type TaikoL2Client --pkg bindings --out $DIR/../bindings/gen_taiko_l2.go + +cat ../protocol/out/TaikoToken.sol/TaikoToken.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type TaikoToken --pkg bindings --out $DIR/../bindings/gen_taiko_token.go + +cat ../protocol/out/AddressManager.sol/AddressManager.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type AddressManager --pkg bindings --out $DIR/../bindings/gen_address_manager.go + +cat ../protocol/out/GuardianProver.sol/GuardianProver.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type GuardianProver --pkg bindings --out $DIR/../bindings/gen_guardian_prover.go + +cat ../protocol/out/AssignmentHook.sol/AssignmentHook.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type AssignmentHook --pkg bindings --out $DIR/../bindings/gen_assignment_hook.go + +cat ../protocol/out/DevnetTierProvider.sol/DevnetTierProvider.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type TierProvider --pkg bindings --out $DIR/../bindings/gen_tier_provider.go + +cat ../protocol/out/SgxVerifier.sol/SgxVerifier.json | + jq .abi | + ${ABIGEN_BIN} --abi - --type SgxVerifier --pkg bindings --out $DIR/../bindings/gen_sgx_verifier.go + +git -C ../../ log --format="%H" -n 1 >./bindings/.githead + +echo "🍻 Go contract bindings generated!" diff --git a/packages/taiko-client/scripts/gen_swagger_json.sh b/packages/taiko-client/scripts/gen_swagger_json.sh new file mode 100755 index 00000000000..59dce311dbd --- /dev/null +++ b/packages/taiko-client/scripts/gen_swagger_json.sh @@ -0,0 +1,3 @@ +#/bin/sh + +swag init -g api.go -d prover/server --pd diff --git a/release-please-config.json b/release-please-config.json index 143fa2bd7be..3735439ba89 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -11,6 +11,7 @@ "packages/protocol": {}, "packages/relayer": {}, "packages/taikoon": {}, + "packages/taiko-client": {}, "packages/supplementary-contracts": {} }, "separate-pull-requests": true From d76c091de8428531dd3e4ba0bfff934028a3fe9a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 00:29:32 -0400 Subject: [PATCH 017/100] chore(deps): bump github.com/pressly/goose/v3 from 3.19.2 to 3.20.0 (#16877) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 +++--- go.sum | 79 ++++++++-------------------------------------------------- 2 files changed, 14 insertions(+), 73 deletions(-) diff --git a/go.mod b/go.mod index dd7bd67a057..2a1c49aa54f 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 - github.com/pressly/goose/v3 v3.19.2 + github.com/pressly/goose/v3 v3.20.0 github.com/prometheus/client_golang v1.19.0 github.com/prysmaticlabs/prysm/v4 v4.2.0 github.com/rabbitmq/amqp091-go v1.9.0 @@ -36,7 +36,7 @@ require ( github.com/swaggo/swag v1.16.3 github.com/testcontainers/testcontainers-go v0.30.0 github.com/urfave/cli/v2 v2.27.2 - golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 + golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 golang.org/x/sync v0.7.0 gopkg.in/go-playground/assert.v1 v1.2.1 gopkg.in/yaml.v3 v3.0.1 @@ -117,7 +117,7 @@ require ( github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.13.0 // indirect - github.com/go-sql-driver/mysql v1.8.0 // indirect + github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gofrs/flock v0.8.1 // indirect @@ -281,7 +281,7 @@ require ( golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.17.0 // indirect + golang.org/x/tools v0.19.0 // indirect google.golang.org/api v0.44.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect diff --git a/go.sum b/go.sum index 20db6e3dbd5..3c63fa2fc53 100644 --- a/go.sum +++ b/go.sum @@ -60,10 +60,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ClickHouse/ch-go v0.58.2 h1:jSm2szHbT9MCAB1rJ3WuCJqmGLi5UTjlNu+f530UTS0= -github.com/ClickHouse/ch-go v0.58.2/go.mod h1:Ap/0bEmiLa14gYjCiRkYGbXvbe8vwdrfTYWhsuQ99aw= -github.com/ClickHouse/clickhouse-go/v2 v2.17.1 h1:ZCmAYWpu75IyEi7+Yrs/uaAjiCGY5wfW5kXo64exkX4= -github.com/ClickHouse/clickhouse-go/v2 v2.17.1/go.mod h1:rkGTvFDTLqLIm0ma+13xmcCfr/08Gvs7KmFt1tgiWHQ= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= @@ -74,8 +70,6 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= @@ -106,8 +100,6 @@ github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer5 github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/aristanetworks/fsnotify v1.4.2/go.mod h1:D/rtu7LpjYM8tRJphJ0hUBYpjai8SfX+aSNsWDTq/Ks= @@ -220,8 +212,6 @@ github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaD github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= -github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= -github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -275,8 +265,6 @@ github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczC github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg= -github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE= github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= @@ -293,10 +281,6 @@ github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elastic/go-sysinfo v1.11.2 h1:mcm4OSYVMyws6+n2HIVMGkln5HOpo5Ie1ZmbbNn0jg4= -github.com/elastic/go-sysinfo v1.11.2/go.mod h1:GKqR8bbMK/1ITnez9NIsIfXQr25aLhRJa7AfT8HpBFQ= -github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0= -github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= @@ -350,10 +334,6 @@ github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw= -github.com/go-faster/city v1.0.1/go.mod h1:jKcUJId49qdW3L1qKHH/3wPeUstCVpVSXTM6vO3VcTw= -github.com/go-faster/errors v0.6.1 h1:nNIPOBkprlKzkThvS/0YaX8Zs9KewLCOSFQS5BU06FI= -github.com/go-faster/errors v0.6.1/go.mod h1:5MGV2/2T9yvlrbhe9pD9LO5Z/2zCSq2T8j+Jpi2LAyY= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= @@ -407,8 +387,8 @@ github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPr github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/go-sql-driver/mysql v1.8.0 h1:UtktXaU2Nb64z/pLiGIxY4431SJ4/dR5cjMmlVHgnT4= -github.com/go-sql-driver/mysql v1.8.0/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= @@ -526,8 +506,6 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -602,8 +580,6 @@ github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHL github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -634,13 +610,9 @@ github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4= -github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= -github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= @@ -737,8 +709,6 @@ github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQsc github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= -github.com/libsql/sqlite-antlr4-parser v0.0.0-20230802215326-5cb5bb604475 h1:6PfEMwfInASh9hkN83aR0j4W/eKaAZt/AURtXAXlas0= -github.com/libsql/sqlite-antlr4-parser v0.0.0-20230802215326-5cb5bb604475/go.mod h1:20nXSmcf0nAscrzqsXeC2/tA3KkV2eCiJqYuyAgl+ss= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= @@ -926,8 +896,6 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= -github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -940,14 +908,10 @@ github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTm github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4aNE4= -github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= -github.com/paulmach/orb v0.10.0 h1:guVYVqzxHE/CQ1KpfGO077TR0ATHSNjp4s6XGLn3W9s= -github.com/paulmach/orb v0.10.0/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= @@ -956,10 +920,7 @@ github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1H github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.4.1+incompatible h1:mFe7ttWaflA46Mhqh+jUfjp2qTbPYxLB2/OyBppH9dg= github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= -github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= @@ -976,8 +937,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/pressly/goose/v3 v3.19.2 h1:z1yuD41jS4iaqLkyjkzGkKBz4rgyz/BYtCyMMGHlgzQ= -github.com/pressly/goose/v3 v3.19.2/go.mod h1:BHkf3LzSBmO8E5FTMPupUYIpMTIh/ZuQVy+YTfhZLD4= +github.com/pressly/goose/v3 v3.20.0 h1:uPJdOxF/Ipj7ABVNOAMJXSxwFXZGwMGHNqjC8e61VA0= +github.com/pressly/goose/v3 v3.20.0/go.mod h1:BRfF2GcG4FTG12QfdBVy3q1yveaf4ckL9vWwEcIO3lA= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -1065,8 +1026,6 @@ github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdh github.com/schollz/progressbar/v3 v3.3.4 h1:nMinx+JaEm/zJz4cEyClQeAw5rsYSB5th3xv+5lV6Vg= github.com/schollz/progressbar/v3 v3.3.4/go.mod h1:Rp5lZwpgtYmlvmGo1FyDwXMqagyRBQYSDwzlP9QDu84= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= -github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= @@ -1181,8 +1140,6 @@ github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9f github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279 h1:+LynomhWB+14Plp/bOONEAZCtvCZk4leRbTvNzNVkL0= github.com/trailofbits/go-mutexasserts v0.0.0-20230328101604-8cdbc5f3d279/go.mod h1:GA3+Mq3kt3tYAfM0WZCu7ofy+GW9PuGysHfhr+6JX7s= -github.com/tursodatabase/libsql-client-go v0.0.0-20240220085343-4ae0eb9d0898 h1:1MvEhzI5pvP27e9Dzz861mxk9WzXZLSJwzOU67cKTbU= -github.com/tursodatabase/libsql-client-go v0.0.0-20240220085343-4ae0eb9d0898/go.mod h1:9bKuHS7eZh/0mJndbUOrCx8Ej3PlsRDszj4L7oVYMPQ= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= @@ -1204,8 +1161,6 @@ github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQ github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/vertica/vertica-sql-go v1.3.3 h1:fL+FKEAEy5ONmsvya2WH5T8bhkvY27y/Ik3ReR2T+Qw= -github.com/vertica/vertica-sql-go v1.3.3/go.mod h1:jnn2GFuv+O2Jcjktb7zyc4Utlbu9YVqpHH/lx63+1M4= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/wealdtech/go-bytesutil v1.1.1 h1:ocEg3Ke2GkZ4vQw5lp46rmO+pfqCCTgq35gqOy8JKVc= @@ -1214,21 +1169,11 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= -github.com/ydb-platform/ydb-go-genproto v0.0.0-20240126124512-dbb0e1720dbf h1:ckwNHVo4bv2tqNkgx3W3HANh3ta1j6TR5qw08J1A7Tw= -github.com/ydb-platform/ydb-go-genproto v0.0.0-20240126124512-dbb0e1720dbf/go.mod h1:Er+FePu1dNUieD+XTMDduGpQuCPssK5Q4BjF+IIXJ3I= -github.com/ydb-platform/ydb-go-sdk/v3 v3.55.1 h1:Ebo6J5AMXgJ3A438ECYotA0aK7ETqjQx9WoZvVxzKBE= -github.com/ydb-platform/ydb-go-sdk/v3 v3.55.1/go.mod h1:udNPW8eupyH/EZocecFmaSNJacKKYjzQa7cVgX5U2nc= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1335,8 +1280,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 h1:hNQpMuAJe5CtcUqCXaWga3FHu+kQvCqcsoVaQgSV60o= -golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1650,8 +1595,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= -golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1861,8 +1806,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= -howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= k8s.io/apimachinery v0.26.2 h1:da1u3D5wfR5u2RpLhE/ZtZS2P7QvDgLZTi9wrNZl/tQ= @@ -1885,14 +1828,12 @@ modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= -modernc.org/sqlite v1.29.5 h1:8l/SQKAjDtZFo9lkJLdk8g9JEOeYRG4/ghStDCCTiTE= -modernc.org/sqlite v1.29.5/go.mod h1:S02dvcmm7TnTRvGhv8IGYyLnIt7AS2KPaB1F/71p75U= +modernc.org/sqlite v1.29.6 h1:0lOXGrycJPptfHDuohfYgNqoe4hu+gYuN/pKgY5XjS4= +modernc.org/sqlite v1.29.6/go.mod h1:S02dvcmm7TnTRvGhv8IGYyLnIt7AS2KPaB1F/71p75U= modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= From e93f30ed2fa64494538df7cd6b646a2103655cc5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 04:33:04 +0000 Subject: [PATCH 018/100] chore(deps): bump github.com/quic-go/quic-go from 0.39.4 to 0.42.0 (#17028) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- go.mod | 5 ++--- go.sum | 10 ++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 2a1c49aa54f..3bd0b725022 100644 --- a/go.mod +++ b/go.mod @@ -229,8 +229,7 @@ require ( github.com/prysmaticlabs/gohashtree v0.0.3-alpha // indirect github.com/prysmaticlabs/prombbolt v0.0.0-20210126082820-9b7adba6db7c // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-20 v0.3.4 // indirect - github.com/quic-go/quic-go v0.39.4 // indirect + github.com/quic-go/quic-go v0.42.0 // indirect github.com/quic-go/webtransport-go v0.6.0 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect @@ -270,7 +269,7 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/dig v1.17.1 // indirect go.uber.org/fx v1.20.1 // indirect - go.uber.org/mock v0.3.0 // indirect + go.uber.org/mock v0.4.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.22.0 // indirect diff --git a/go.sum b/go.sum index 3c63fa2fc53..5a3627928a8 100644 --- a/go.sum +++ b/go.sum @@ -992,10 +992,8 @@ github.com/prysmaticlabs/prysm/v4 v4.2.0 h1:87QoRT3Azs7c1Y6SnIq0+CNtQRbAt0sVKGj2 github.com/prysmaticlabs/prysm/v4 v4.2.0/go.mod h1:PQrQtHJeeqTz4K3udN/EX1Gs2xhWR4j93gSj0OQZ1f4= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-20 v0.3.4 h1:MfFAPULvst4yoMgY9QmtpYmfij/em7O8UUi+bNVm7Cg= -github.com/quic-go/qtls-go1-20 v0.3.4/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= -github.com/quic-go/quic-go v0.39.4 h1:PelfiuG7wXEffUT2yceiqz5V6Pc0TA5ruOd1LcmFc1s= -github.com/quic-go/quic-go v0.39.4/go.mod h1:T09QsDQWjLiQ74ZmacDfqZmhY/NLnw5BC40MANNNZ1Q= +github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= +github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/rabbitmq/amqp091-go v1.9.0 h1:qrQtyzB4H8BQgEuJwhmVQqVHB9O4+MNDJCCAcpc3Aoo= @@ -1227,8 +1225,8 @@ go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= -go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo= -go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= From 85021ba71ff53785204c9710c56319f29c0f174f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 05:14:19 +0000 Subject: [PATCH 019/100] chore(deps): bump golangci/golangci-lint-action from 4 to 6 (#17035) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .github/workflows/eventindexer.yml | 2 +- .github/workflows/guardianproverhealthcheck.yaml | 2 +- .github/workflows/relayer.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml index 3762e033ab1..7a726dc6739 100644 --- a/.github/workflows/eventindexer.yml +++ b/.github/workflows/eventindexer.yml @@ -19,7 +19,7 @@ jobs: go-version: 1.21.0 - uses: actions/checkout@v4 - name: golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v6 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version version: latest diff --git a/.github/workflows/guardianproverhealthcheck.yaml b/.github/workflows/guardianproverhealthcheck.yaml index 604f261f1b0..5b90fa185d2 100644 --- a/.github/workflows/guardianproverhealthcheck.yaml +++ b/.github/workflows/guardianproverhealthcheck.yaml @@ -19,7 +19,7 @@ jobs: go-version: 1.21.0 - uses: actions/checkout@v4 - name: golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v6 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version version: latest diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml index a361191707c..e4ea6f25997 100644 --- a/.github/workflows/relayer.yml +++ b/.github/workflows/relayer.yml @@ -19,7 +19,7 @@ jobs: go-version: 1.21.0 - uses: actions/checkout@v4 - name: golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v6 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version version: latest From dbdbeb877e042a9867ac4240108f687856d9e818 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 8 May 2024 14:08:31 +0800 Subject: [PATCH 020/100] test(taiko-client): update tests for `TxListDecompressor` (#17032) --- packages/taiko-client/Makefile | 8 +- packages/taiko-client/bindings/.githead | 2 +- .../txlist_decompressor_test.go | 123 ++++++++---------- 3 files changed, 59 insertions(+), 74 deletions(-) diff --git a/packages/taiko-client/Makefile b/packages/taiko-client/Makefile index 96ef03298c0..e375ef6799f 100644 --- a/packages/taiko-client/Makefile +++ b/packages/taiko-client/Makefile @@ -18,17 +18,17 @@ lint: && goimports -local "github.com/taikoxyz/taiko-mono/packages/taiko-client" -w ./ \ && golangci-lint run -test: - PACKAGE=${PACKAGE} \ +test: lint + @PACKAGE=${PACKAGE} \ RUN_TESTS=true \ ./integration_test/entrypoint.sh dev_net: - COMPILE_PROTOCOL=${COMPILE_PROTOCOL} \ + @COMPILE_PROTOCOL=${COMPILE_PROTOCOL} \ ./integration_test/entrypoint.sh gen_bindings: - TAIKO_GETH_DIR=${TAIKO_GETH_DIR} \ + @TAIKO_GETH_DIR=${TAIKO_GETH_DIR} \ ./scripts/gen_bindings.sh .PHONY: build \ diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead index 92b7203daae..f5ed3b88ea9 100644 --- a/packages/taiko-client/bindings/.githead +++ b/packages/taiko-client/bindings/.githead @@ -1 +1 @@ -8532b7750513b87732340030139513d2b2ee203b +d4b62d23b4819bd932ad52b040a01f2cbbbeb9f2 diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go index 8dd9c9445e9..980e866bb24 100644 --- a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go +++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go @@ -6,78 +6,72 @@ import ( "testing" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" - "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" ) var ( - maxBlocksGasLimit = uint64(50) - maxTxlistBytes = uint64(10000) - chainID = genesis.Config.ChainID - testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") - testAddr = crypto.PubkeyToAddress(testKey.PublicKey) - genesis = &core.Genesis{ - Config: params.AllEthashProtocolChanges, - Alloc: types.GenesisAlloc{testAddr: {Balance: big.NewInt(2e15)}}, - ExtraData: []byte("test genesis"), - Timestamp: 9000, - BaseFee: big.NewInt(params.InitialBaseFee), - } + chainID = new(big.Int).SetUint64(167001) + testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + testAddr = crypto.PubkeyToAddress(testKey.PublicKey) ) -func TestDecomporess(t *testing.T) { - d := NewTxListDecompressor( - maxBlocksGasLimit, - maxTxlistBytes, +type TxListDecompressorTestSuite struct { + testutils.ClientTestSuite + d *TxListDecompressor +} + +func (s *TxListDecompressorTestSuite) SetupTest() { + s.ClientTestSuite.SetupTest() + s.d = NewTxListDecompressor( + params.MaxGasLimit, + rpc.BlockMaxTxListBytes, chainID, ) +} + +func (s *TxListDecompressorTestSuite) TestZeroBytes() { + s.Empty(s.d.TryDecompress(chainID, []byte{}, false)) +} + +func (s *TxListDecompressorTestSuite) TestCalldataSize() { + s.Empty(s.d.TryDecompress(chainID, randBytes(rpc.BlockMaxTxListBytes+1), false)) + s.Empty(s.d.TryDecompress(chainID, randBytes(rpc.BlockMaxTxListBytes-1), false)) +} + +func (s *TxListDecompressorTestSuite) TestValidTxList() { compressed, err := utils.Compress(rlpEncodedTransactionBytes(1, true)) - require.NoError(t, err) - - tests := []struct { - name string - blockID *big.Int - txListBytes []byte - decompressed []byte - }{ - { - "txListBytes binary too large", - chainID, - randBytes(maxTxlistBytes + 1), - []byte{}, - }, - { - "txListBytes not decodable to rlp", - chainID, - randBytes(0x1), - []byte{}, - }, - { - "success empty tx list", - chainID, - rlpEncodedTransactionBytes(0, true), - []byte{}, - }, - { - "success non-empty tx list", - chainID, - compressed, - rlpEncodedTransactionBytes(1, true), - }, - } + s.Nil(err) + decompressed, err := utils.Decompress(compressed) + s.Nil(err) - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - require.Equal(t, tt.decompressed, d.TryDecompress(tt.blockID, tt.txListBytes, false)) - }) - } + s.Equal(s.d.TryDecompress(chainID, compressed, true), decompressed) + s.Equal(s.d.TryDecompress(chainID, compressed, false), decompressed) +} + +func (s *TxListDecompressorTestSuite) TestInvalidTxList() { + compressed, err := utils.Compress(randBytes(1024)) + s.Nil(err) + + s.Zero(len(s.d.TryDecompress(chainID, compressed, true))) + s.Zero(len(s.d.TryDecompress(chainID, compressed, false))) +} + +func (s *TxListDecompressorTestSuite) TestInvalidZlibBytes() { + s.Zero(len(s.d.TryDecompress(chainID, randBytes(1024), true))) + s.Zero(len(s.d.TryDecompress(chainID, randBytes(1024), false))) +} + +func TestDriverTestSuite(t *testing.T) { + suite.Run(t, new(TxListDecompressorTestSuite)) } func rlpEncodedTransactionBytes(l int, signed bool) []byte { @@ -85,22 +79,13 @@ func rlpEncodedTransactionBytes(l int, signed bool) []byte { for i := 0; i < l; i++ { var tx *types.Transaction if signed { - txData := &types.LegacyTx{ - Nonce: 1, - To: &testAddr, - GasPrice: common.Big256, - Value: common.Big1, - Gas: 10, - } - - tx = types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), txData) + txData := &types.LegacyTx{Nonce: 1, To: &testAddr, GasPrice: common.Big256, Value: common.Big1, Gas: 10} + + tx = types.MustSignNewTx(testKey, types.LatestSigner(¶ms.ChainConfig{ChainID: chainID}), txData) } else { tx = types.NewTransaction(1, testAddr, common.Big1, 10, new(big.Int).SetUint64(10*params.GWei), nil) } - txs = append( - txs, - tx, - ) + txs = append(txs, tx) } b, _ := rlp.EncodeToBytes(txs) return b From 6e78ab0234105b80c4a472197486c303d55d32ec Mon Sep 17 00:00:00 2001 From: David Date: Wed, 8 May 2024 14:38:21 +0800 Subject: [PATCH 021/100] chore(taiko-client): bump dependencies version (#17036) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3bd0b725022..61d6cb40de7 100644 --- a/go.mod +++ b/go.mod @@ -305,6 +305,6 @@ require ( replace github.com/ethereum/go-ethereum v1.13.15 => github.com/taikoxyz/taiko-geth v0.0.0-20240504072040-7e1b8b65a3f8 -replace github.com/ethereum-optimism/optimism v1.7.4 => github.com/taikoxyz/optimism v0.0.0-20240504104604-6c9729321b29 +replace github.com/ethereum-optimism/optimism v1.7.4 => github.com/taikoxyz/optimism v0.0.0-20240508063202-db34e8c760ea replace github.com/uber/jaeger-client-go => github.com/uber/jaeger-client-go v2.25.0+incompatible diff --git a/go.sum b/go.sum index 5a3627928a8..591d7adf2e8 100644 --- a/go.sum +++ b/go.sum @@ -1119,8 +1119,8 @@ github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/taikoxyz/optimism v0.0.0-20240504104604-6c9729321b29 h1:JcOxHwY5zQfqsjx2Uh9WwWkcwy5jJX3XR2YQEx3IByY= -github.com/taikoxyz/optimism v0.0.0-20240504104604-6c9729321b29/go.mod h1:bkiRWtDE4T9nXmaK5NBKC/buX5GnyJ6VKozGFwiwKxs= +github.com/taikoxyz/optimism v0.0.0-20240508063202-db34e8c760ea h1:+oLT2sxS+KLgHZVW4toyKavAMbgjYkFOiL0YpciATnQ= +github.com/taikoxyz/optimism v0.0.0-20240508063202-db34e8c760ea/go.mod h1:bkiRWtDE4T9nXmaK5NBKC/buX5GnyJ6VKozGFwiwKxs= github.com/taikoxyz/taiko-geth v0.0.0-20240504072040-7e1b8b65a3f8 h1:z4juQ4Nyp2T836JTCNC8t3vrbr0K9v2pPUV/ir2dy9s= github.com/taikoxyz/taiko-geth v0.0.0-20240504072040-7e1b8b65a3f8/go.mod h1:nqByouVW0a0qx5KKgvYgoXba+pYEHznAAQp6LhZilgM= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= From 8ec02d2127d45e02791849b3bce5f618228729c7 Mon Sep 17 00:00:00 2001 From: Korbinian Date: Wed, 8 May 2024 08:46:13 +0200 Subject: [PATCH 022/100] chore(bridge-ui): remove metamask from excluded wallets (#17025) --- .../bridge-ui/src/libs/connect/web3modal.ts | 2 +- pnpm-lock.yaml | 16575 +++++++++------- 2 files changed, 9284 insertions(+), 7293 deletions(-) diff --git a/packages/bridge-ui/src/libs/connect/web3modal.ts b/packages/bridge-ui/src/libs/connect/web3modal.ts index c1462201f25..5618c7ad66d 100644 --- a/packages/bridge-ui/src/libs/connect/web3modal.ts +++ b/packages/bridge-ui/src/libs/connect/web3modal.ts @@ -12,7 +12,7 @@ export const web3modal = createWeb3Modal({ projectId, featuredWalletIds: [], allowUnsupportedChain: true, - excludeWalletIds: ['c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96'], + excludeWalletIds: [], // chains, chainImages, themeVariables: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2af1f393f42..b54992ec4be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -283,19 +283,19 @@ importers: version: 4.9.6 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std#v1.7.5 - version: github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 merkletreejs: specifier: ^0.3.11 version: 0.3.11 p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da + version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da solady: specifier: github:Vectorized/solady#v0.0.167 - version: github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d + version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d devDependencies: '@types/node': specifier: ^20.11.30 @@ -355,19 +355,19 @@ importers: version: 4.9.6 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std#v1.7.5 - version: github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3 merkletreejs: specifier: ^0.3.11 version: 0.3.11 p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da + version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da solady: specifier: github:Vectorized/solady#v0.0.167 - version: github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d + version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d devDependencies: '@types/node': specifier: ^20.11.30 @@ -431,10 +431,10 @@ importers: version: 2.46.0 ds-test: specifier: github:dapphub/ds-test#e282159d5170298eb2455a6c05280ab5a73a4ef0 - version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 + version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std - version: github.com/foundry-rs/forge-std/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc ipfs-http-client: specifier: ^60.0.1 version: 60.0.1 @@ -443,19 +443,19 @@ importers: version: 0.3.11 murky: specifier: github:dmfxyz/murky - version: github.com/dmfxyz/murky/5feccd1253d7da820f7cccccdedf64471025455d + version: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d p256-verifier: specifier: github:taikoxyz/p256-verifier#v0.1.0 - version: github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da + version: p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da sharp: specifier: ^0.33.3 version: 0.33.3 solady: specifier: github:Vectorized/solady#v0.0.167 - version: github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d + version: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d solidity-stringutils: specifier: github:Arachnid/solidity-stringutils - version: github.com/Arachnid/solidity-stringutils/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461 + version: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461 devDependencies: '@types/node': specifier: ^20.11.30 @@ -653,2263 +653,8722 @@ importers: packages: - /@adraffy/ens-normalize@1.10.0: + '@adraffy/ens-normalize@1.10.0': resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - /@alloc/quick-lru@5.2.0: + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.3.0: + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - /@babel/code-frame@7.24.2: + '@babel/code-frame@7.24.2': resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.5 - picocolors: 1.0.0 - /@babel/compat-data@7.24.4: + '@babel/compat-data@7.24.4': resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.24.5: + '@babel/core@7.24.5': resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/generator@7.24.5: + '@babel/generator@7.24.5': resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.22.5: + '@babel/helper-annotate-as-pure@7.22.5': resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - dev: false - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - dev: false - /@babel/helper-compilation-targets@7.23.6: + '@babel/helper-compilation-targets@7.23.6': resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5): + '@babel/helper-create-class-features-plugin@7.24.5': resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - semver: 6.3.1 - dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5): + '@babel/helper-create-regexp-features-plugin@7.22.15': resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - dev: false - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5): + '@babel/helper-define-polyfill-provider@0.6.2': resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-environment-visitor@7.22.20: + '@babel/helper-environment-visitor@7.22.20': resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name@7.23.0: + '@babel/helper-function-name@7.23.0': resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - /@babel/helper-hoist-variables@7.22.5: + '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - /@babel/helper-member-expression-to-functions@7.24.5: + '@babel/helper-member-expression-to-functions@7.24.5': resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - dev: false - /@babel/helper-module-imports@7.24.3: + '@babel/helper-module-imports@7.24.3': resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): + '@babel/helper-module-transforms@7.24.5': resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - /@babel/helper-optimise-call-expression@7.22.5: + '@babel/helper-optimise-call-expression@7.22.5': resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - dev: false - /@babel/helper-plugin-utils@7.24.5: + '@babel/helper-plugin-utils@7.24.5': resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5): + '@babel/helper-remap-async-to-generator@7.22.20': resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.24.5 - dev: false - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5): + '@babel/helper-replace-supers@7.24.1': resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: false - /@babel/helper-simple-access@7.24.5: + '@babel/helper-simple-access@7.24.5': resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - dev: false - /@babel/helper-split-export-declaration@7.24.5: + '@babel/helper-split-export-declaration@7.24.5': resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - /@babel/helper-string-parser@7.24.1: + '@babel/helper-string-parser@7.24.1': resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.24.5: + '@babel/helper-validator-identifier@7.24.5': resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.23.5: + '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.24.5: + '@babel/helper-wrap-function@7.24.5': resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - dev: false - /@babel/helpers@7.24.5: + '@babel/helpers@7.24.5': resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color - /@babel/highlight@7.24.5: + '@babel/highlight@7.24.5': resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - /@babel/parser@7.24.5: + '@babel/parser@7.24.5': resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.24.5 - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5): + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5': resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5): + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5): + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5): + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.5): + '@babel/plugin-proposal-async-generator-functions@7.20.7': resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5): + '@babel/plugin-proposal-class-properties@7.18.6': resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.5): + '@babel/plugin-proposal-export-default-from@7.24.1': resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.5): + '@babel/plugin-proposal-logical-assignment-operators@7.20.7': resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.5): + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.5): + '@babel/plugin-proposal-numeric-separator@7.18.6': resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.5): + '@babel/plugin-proposal-object-rest-spread@7.20.7': resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.5): + '@babel/plugin-proposal-optional-catch-binding@7.18.6': resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.5): + '@babel/plugin-proposal-optional-chaining@7.21.0': resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5): + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): + '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): + '@babel/plugin-syntax-class-properties@7.12.13': resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5): + '@babel/plugin-syntax-class-static-block@7.14.5': resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5): + '@babel/plugin-syntax-dynamic-import@7.8.3': resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.5): + '@babel/plugin-syntax-export-default-from@7.24.1': resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5): + '@babel/plugin-syntax-export-namespace-from@7.8.3': resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5): + '@babel/plugin-syntax-flow@7.24.1': resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5): + '@babel/plugin-syntax-import-assertions@7.24.1': resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5): + '@babel/plugin-syntax-import-attributes@7.24.1': resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): + '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): + '@babel/plugin-syntax-json-strings@7.8.3': resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5): + '@babel/plugin-syntax-jsx@7.24.1': resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): + '@babel/plugin-syntax-numeric-separator@7.10.4': resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): + '@babel/plugin-syntax-object-rest-spread@7.8.3': resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): + '@babel/plugin-syntax-optional-catch-binding@7.8.3': resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): + '@babel/plugin-syntax-optional-chaining@7.8.3': resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5): + '@babel/plugin-syntax-private-property-in-object@7.14.5': resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): + '@babel/plugin-syntax-top-level-await@7.14.5': resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): + '@babel/plugin-syntax-typescript@7.24.1': resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5): + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-arrow-functions@7.24.1': resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5): + '@babel/plugin-transform-async-generator-functions@7.24.3': resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-async-to-generator@7.24.1': resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-block-scoped-functions@7.24.1': resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-block-scoping@7.24.5': resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-class-properties@7.24.1': resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5): + '@babel/plugin-transform-class-static-block@7.24.4': resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-classes@7.24.5': resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - dev: false - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-computed-properties@7.24.1': resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 - dev: false - /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-destructuring@7.24.5': resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-dotall-regex@7.24.1': resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-duplicate-keys@7.24.1': resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-dynamic-import@7.24.1': resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-exponentiation-operator@7.24.1': resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-export-namespace-from@7.24.1': resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-flow-strip-types@7.24.1': resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-for-of@7.24.1': resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: false - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-function-name@7.24.1': resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-json-strings@7.24.1': resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-literals@7.24.1': resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-logical-assignment-operators@7.24.1': resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-member-expression-literals@7.24.1': resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-modules-amd@7.24.1': resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-modules-commonjs@7.24.1': resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-simple-access': 7.24.5 - dev: false - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-modules-systemjs@7.24.1': resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - dev: false - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-modules-umd@7.24.1': resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5): + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-new-target@7.24.1': resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-numeric-separator@7.24.1': resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-object-rest-spread@7.24.5': resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-object-super@7.24.1': resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-optional-catch-binding@7.24.1': resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-optional-chaining@7.24.5': resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-parameters@7.24.5': resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-private-methods@7.24.1': resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-private-property-in-object@7.24.5': resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-property-literals@7.24.1': resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-react-display-name@7.24.1': resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-react-jsx-self@7.24.5': resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-react-jsx-source@7.24.1': resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5): + '@babel/plugin-transform-react-jsx@7.23.4': resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/types': 7.24.5 - dev: false - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-regenerator@7.24.1': resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - regenerator-transform: 0.15.2 - dev: false - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-reserved-words@7.24.1': resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5): + '@babel/plugin-transform-runtime@7.24.3': resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-shorthand-properties@7.24.1': resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-spread@7.24.1': resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: false - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-sticky-regex@7.24.1': resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-template-literals@7.24.1': resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-typeof-symbol@7.24.5': resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5): + '@babel/plugin-transform-typescript@7.24.5': resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) - dev: false - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-unicode-escapes@7.24.1': resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-unicode-property-regex@7.24.1': resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-unicode-regex@7.24.1': resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5): + '@babel/plugin-transform-unicode-sets-regex@7.24.1': resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - /@babel/preset-env@7.24.5(@babel/core@7.24.5): + '@babel/preset-env@7.24.5': resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/preset-flow@7.24.1(@babel/core@7.24.5): + '@babel/preset-flow@7.24.1': resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) - dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5): + '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/types': 7.24.5 - esutils: 2.0.3 - dev: false - /@babel/preset-typescript@7.24.1(@babel/core@7.24.5): + '@babel/preset-typescript@7.24.1': resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) - dev: false - /@babel/register@7.23.7(@babel/core@7.24.5): + '@babel/register@7.23.7': resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - dev: false - /@babel/regjsgen@0.8.0: + '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: false - /@babel/runtime@7.24.5: + '@babel/runtime@7.24.5': resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - /@babel/template@7.24.0: + '@babel/template@7.24.0': resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - /@babel/traverse@7.24.5: + '@babel/traverse@7.24.5': resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/types@7.24.5: + '@babel/types@7.24.5': resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 - /@bcoe/v8-coverage@0.2.3: + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - /@chainsafe/is-ip@2.0.2: + '@chainsafe/is-ip@2.0.2': resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} - dev: false - /@chainsafe/netmask@2.0.0: + '@chainsafe/netmask@2.0.0': resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} - dependencies: - '@chainsafe/is-ip': 2.0.2 - dev: false - /@chromatic-com/storybook@1.3.4(react@18.3.1): + '@chromatic-com/storybook@1.3.4': resolution: {integrity: sha512-ZfQDc5Zg5YSC9cWdBc9QpMF0vgvknwKTB9xBE0NhCJWjGxG9mz9yLzQTzzliYulPtWgcQ+8cE+apDljYK+fWdQ==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} - dependencies: - chromatic: 11.3.1 - filesize: 10.1.1 - jsonfile: 6.1.0 - react-confetti: 6.1.0(react@18.3.1) - strip-ansi: 7.1.0 - transitivePeerDependencies: - - '@chromatic-com/cypress' - - '@chromatic-com/playwright' - - react - dev: true - /@coinbase/wallet-sdk@3.9.1: + '@coinbase/wallet-sdk@3.9.1': resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==} - dependencies: - bn.js: 5.2.1 - buffer: 6.0.3 - clsx: 1.2.1 - eth-block-tracker: 7.1.0 - eth-json-rpc-filters: 6.0.1 - eventemitter3: 5.0.1 - keccak: 3.0.4 - preact: 10.21.0 - sha.js: 2.4.11 - transitivePeerDependencies: - - supports-color - dev: false - /@cspotcode/source-map-support@0.8.1: + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16): + '@csstools/selector-resolve-nested@1.1.0': resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 - dependencies: - postcss-selector-parser: 6.0.16 - dev: true - /@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16): + '@csstools/selector-specificity@3.0.3': resolution: {integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 - dependencies: - postcss-selector-parser: 6.0.16 - dev: true - /@emnapi/runtime@1.1.1: + '@emnapi/runtime@1.1.1': resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} - requiresBuild: true - dependencies: - tslib: 2.6.2 - dev: false - optional: true - /@esbuild/aix-ppc64@0.19.12: + '@esbuild/aix-ppc64@0.19.12': resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - requiresBuild: true - optional: true - /@esbuild/aix-ppc64@0.20.2: + '@esbuild/aix-ppc64@0.20.2': resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.18.20: + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.19.12: + '@esbuild/android-arm64@0.19.12': resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm64@0.20.2: + '@esbuild/android-arm64@0.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.18.20: + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.19.12: + '@esbuild/android-arm@0.19.12': resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm@0.20.2: + '@esbuild/android-arm@0.20.2': resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.18.20: + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.19.12: + '@esbuild/android-x64@0.19.12': resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-x64@0.20.2: + '@esbuild/android-x64@0.20.2': resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.18.20: + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.19.12: + '@esbuild/darwin-arm64@0.19.12': resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-arm64@0.20.2: + '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.18.20: + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.19.12: + '@esbuild/darwin-x64@0.19.12': resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-x64@0.20.2: + '@esbuild/darwin-x64@0.20.2': resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.19.12: + '@esbuild/freebsd-arm64@0.19.12': resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-arm64@0.20.2: + '@esbuild/freebsd-arm64@0.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.18.20: + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.19.12: + '@esbuild/freebsd-x64@0.19.12': resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-x64@0.20.2: + '@esbuild/freebsd-x64@0.20.2': resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.18.20: + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.19.12: + '@esbuild/linux-arm64@0.19.12': resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm64@0.20.2: + '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.18.20: + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.19.12: + '@esbuild/linux-arm@0.19.12': resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm@0.20.2: + '@esbuild/linux-arm@0.20.2': resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.18.20: + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.19.12: + '@esbuild/linux-ia32@0.19.12': resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ia32@0.20.2: + '@esbuild/linux-ia32@0.20.2': resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.18.20: + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.19.12: + '@esbuild/linux-loong64@0.19.12': resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-loong64@0.20.2: + '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.18.20: + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.19.12: + '@esbuild/linux-mips64el@0.19.12': resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-mips64el@0.20.2: + '@esbuild/linux-mips64el@0.20.2': resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.18.20: + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.19.12: + '@esbuild/linux-ppc64@0.19.12': resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ppc64@0.20.2: + '@esbuild/linux-ppc64@0.20.2': resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.18.20: + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.19.12: + '@esbuild/linux-riscv64@0.19.12': resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-riscv64@0.20.2: + '@esbuild/linux-riscv64@0.20.2': resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.18.20: + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.19.12: + '@esbuild/linux-s390x@0.19.12': resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-s390x@0.20.2: + '@esbuild/linux-s390x@0.20.2': resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.18.20: + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.19.12: + '@esbuild/linux-x64@0.19.12': resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-x64@0.20.2: + '@esbuild/linux-x64@0.20.2': resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.18.20: + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.19.12: + '@esbuild/netbsd-x64@0.19.12': resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - optional: true - /@esbuild/netbsd-x64@0.20.2: + '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.18.20: + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.19.12: + '@esbuild/openbsd-x64@0.19.12': resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - optional: true - /@esbuild/openbsd-x64@0.20.2: + '@esbuild/openbsd-x64@0.20.2': resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.18.20: + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.19.12: + '@esbuild/sunos-x64@0.19.12': resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - optional: true - /@esbuild/sunos-x64@0.20.2: + '@esbuild/sunos-x64@0.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.18.20: + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.19.12: + '@esbuild/win32-arm64@0.19.12': resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-arm64@0.20.2: + '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.18.20: + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.19.12: + '@esbuild/win32-ia32@0.19.12': resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-ia32@0.20.2: + '@esbuild/win32-ia32@0.20.2': resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.18.20: + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.19.12: + '@esbuild/win32-x64@0.19.12': resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-x64@0.20.2: + '@esbuild/win32-x64@0.20.2': resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.10.0: + '@eslint-community/regexpp@4.10.0': resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint/eslintrc@2.1.4: + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/js@8.57.0: + '@eslint/js@8.57.0': resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@ethereumjs/common@3.2.0: + '@ethereumjs/common@3.2.0': resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} - dependencies: - '@ethereumjs/util': 8.1.0 - crc-32: 1.2.2 - dev: false - /@ethereumjs/rlp@4.0.1: + '@ethereumjs/rlp@4.0.1': resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} hasBin: true - dev: false - /@ethereumjs/tx@4.2.0: + '@ethereumjs/tx@4.2.0': resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} engines: {node: '>=14'} - dependencies: - '@ethereumjs/common': 3.2.0 - '@ethereumjs/rlp': 4.0.1 - '@ethereumjs/util': 8.1.0 - ethereum-cryptography: 2.1.3 - dev: false - /@ethereumjs/util@8.1.0: + '@ethereumjs/util@8.1.0': resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} - dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.1.3 - micro-ftch: 0.3.1 - dev: false - /@ethersproject/abi@5.7.0: + '@ethersproject/abi@5.7.0': resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - /@ethersproject/abstract-provider@5.7.0: + '@ethersproject/abstract-provider@5.7.0': resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - /@ethersproject/abstract-signer@5.7.0: + '@ethersproject/abstract-signer@5.7.0': resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - /@ethersproject/address@5.7.0: + '@ethersproject/address@5.7.0': resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - /@ethersproject/base64@5.7.0: + '@ethersproject/base64@5.7.0': resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - dependencies: - '@ethersproject/bytes': 5.7.0 - /@ethersproject/basex@5.7.0: + '@ethersproject/basex@5.7.0': resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - dev: true - /@ethersproject/bignumber@5.7.0: + '@ethersproject/bignumber@5.7.0': resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@formatjs/ecma402-abstract@1.18.2': + resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} + + '@formatjs/fast-memoize@2.2.0': + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + + '@formatjs/icu-messageformat-parser@2.7.6': + resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} + + '@formatjs/icu-skeleton-parser@1.8.0': + resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} + + '@formatjs/intl-localematcher@0.5.4': + resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + + '@img/sharp-darwin-arm64@0.33.3': + resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.3': + resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.2': + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.2': + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.2': + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.2': + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.2': + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.2': + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.2': + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.3': + resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.3': + resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.3': + resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.3': + resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.3': + resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.3': + resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.3': + resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.3': + resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.3': + resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + + '@ipld/dag-cbor@9.2.0': + resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@ipld/dag-json@10.2.0': + resolution: {integrity: sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@ipld/dag-pb@4.1.0': + resolution: {integrity: sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@26.6.2': + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@libp2p/interface-connection@4.0.0': + resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-keychain@2.0.5': + resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-peer-id@2.0.2': + resolution: {integrity: sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-peer-info@1.0.10': + resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface-pubsub@3.0.7': + resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/interface@1.3.1': + resolution: {integrity: sha512-KJoYP6biAgIHUU3pxaixaaYCvIHZshzXetxfoNigadAZ3hCGuwpdFhk7IABEaI3RgadOOYUwW3MXPbL+cxnXVQ==} + + '@libp2p/interfaces@3.3.2': + resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/logger@2.1.1': + resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@libp2p/peer-id@2.0.4': + resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@lit-labs/ssr-dom-shim@1.2.0': + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + + '@lit/reactive-element@1.6.3': + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + + '@lit/reactive-element@2.0.4': + resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + + '@metamask/eth-json-rpc-provider@1.0.1': + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + + '@metamask/json-rpc-engine@7.3.3': + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-middleware-stream@6.0.2': + resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} + engines: {node: '>=16.0.0'} + + '@metamask/object-multiplex@2.0.0': + resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} + engines: {node: ^16.20 || ^18.16 || >=20} + + '@metamask/onboarding@1.0.1': + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + + '@metamask/providers@15.0.0': + resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} + engines: {node: ^18.18 || >=20} + + '@metamask/rpc-errors@6.2.1': + resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} + engines: {node: '>=16.0.0'} + + '@metamask/safe-event-emitter@2.0.0': + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + + '@metamask/safe-event-emitter@3.1.1': + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} + engines: {node: '>=12.0.0'} + + '@metamask/sdk-communication-layer@0.18.5': + resolution: {integrity: sha512-WMf9oJa3rAimjCXMAaaRVFPD0Q6dfZR0r9037KCpD5g9SlVh+TeMISfdQCEKAyhXP3d4CGxmp/Kib8C3mn2YLw==} + peerDependencies: + cross-fetch: ^3.1.5 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + + '@metamask/sdk-install-modal-web@0.18.5': + resolution: {integrity: sha512-Wygc0dgr1PwIA/Sg9WW9QWAsQr4G2GV6iveXt2xw8VKW/9cRORWqYukH1NZLr71hBKzi9AKYBU54Tk5Dfg41zg==} + peerDependencies: + i18next: 22.5.1 + react: ^18.2.0 + react-dom: ^18.2.0 + react-i18next: ^13.2.2 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + + '@metamask/sdk@0.18.6': + resolution: {integrity: sha512-ZT8e4BrcWrm44apLb412WR0fDsgeaS8UlI1c0wKRUPu1w/UntpXuUVO+EaY8WDlnOPAiAsjyqWKey64/DfvbXQ==} + peerDependencies: + '@react-native-async-storage/async-storage': ^1.19.6 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + + '@metamask/utils@5.0.2': + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} + + '@metamask/utils@8.4.0': + resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} + engines: {node: '>=16.0.0'} + + '@moralisweb3/api-utils@2.26.1': + resolution: {integrity: sha512-xG2rEvv7MEGiLwz6YkHeWnRToP9xiwtzdesgpYcbOMfEhO0dOF5NMhey9F4NS3l4p+ei8liLQAmFRUehyojbWg==} + + '@moralisweb3/aptos-api@2.26.1': + resolution: {integrity: sha512-LClXb88MtC8kAkuWgJ5PlvjBnY9wCd3fBMa+FbOvIlKgMDHjNizDzFCVAX/f6lF884/XBzpxq0QyoFcvYx0RFQ==} + + '@moralisweb3/auth@2.26.1': + resolution: {integrity: sha512-PUIm67hPOI0ThyUJ851Bq0i1Y0A7cFSR7wILwM0Ye1W1IOoygAI2Ls7Zyy9HK9aRUV3J1Sqek49azjNfmXQ0QA==} + + '@moralisweb3/common-aptos-utils@2.26.1': + resolution: {integrity: sha512-02c4zgksBzlM9zZgeDLvPQ/+yDjVAWRnkbXP2Hnow19PSIqUJb/RkHclqm3+623tH4JJwgbqei3wrQZigNQAWg==} + + '@moralisweb3/common-auth-utils@2.26.1': + resolution: {integrity: sha512-g2FrjZKqjxitd4aDbJjdIwLXDYYa8a3sMRL31jynyblIfz2OTXJ5YZj86n8aENY+1t8BOcLwixzsRHRDiHnbog==} + + '@moralisweb3/common-core@2.26.1': + resolution: {integrity: sha512-HbsSjBZuicoKyJxlWNl0YV6YolGQ0bWT2jbPwMGvLrtbeeRTT3rE2IrIh9nSe7z9pWVvXfU3t+4oXkisY+8dJg==} + + '@moralisweb3/common-evm-utils@2.26.1': + resolution: {integrity: sha512-Gr4qJmGhr5ixSeysg4CjZBZexeTzHqPYPE1YuaGAmD4dmW2OMpN2mRwXYnJmKNtML45XfTy4bCfeoTER7xBCWA==} + + '@moralisweb3/common-sol-utils@2.26.1': + resolution: {integrity: sha512-68VaTLpTvWljzaWsb7bHd7IOPHraT5pqfQG/rs5pOZQ846/nWe8bWzCT619aKAiS54WEhkg3lgqE58mISiTmCw==} + + '@moralisweb3/common-streams-utils@2.26.1': + resolution: {integrity: sha512-dhUrGoeBW1xfokQNRhr7AfejEBA/jOwIp3uyaw19M1eQcw0v+ekhgWvglSEDp0Fp3AouZFUAgkX1pOz/BziuCw==} + + '@moralisweb3/evm-api@2.26.1': + resolution: {integrity: sha512-1A92tQsM/K9wMVpciziPmy8s258en+KN9CIIBNj+6AqXS+yjvd6Fbh//0ZGpKmsBu862ULfb8EnrmeYQBoSEbw==} + + '@moralisweb3/sol-api@2.26.1': + resolution: {integrity: sha512-Wvpg8soLyb5DRR2R/v3ociFVI4I4EH1SsCU7Ah53tfmX/gDl5qs9FFdOMR/gYhS0vZXFN0f2jW+6I9ml1A9bDw==} + + '@moralisweb3/streams-typings@1.0.7': + resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} + + '@moralisweb3/streams@2.26.1': + resolution: {integrity: sha512-YyF3w8jKYw06ihKSi7LsG2L7FmOXDZarufQdYFhFFlNflprJG+ENorAp8NX9CfSoPzbLkF5NTDug22lehNqWTA==} + + '@motionone/animation@10.17.0': + resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} + + '@motionone/dom@10.17.0': + resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} + + '@motionone/easing@10.17.0': + resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} + + '@motionone/generators@10.17.0': + resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} + + '@motionone/svelte@10.16.4': + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + + '@motionone/types@10.17.0': + resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} + + '@motionone/utils@10.17.0': + resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} + + '@motionone/vue@10.16.4': + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + + '@multiformats/dns@1.0.6': + resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} + + '@multiformats/multiaddr-to-uri@9.0.8': + resolution: {integrity: sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw==} + + '@multiformats/multiaddr@11.6.1': + resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@multiformats/multiaddr@12.2.1': + resolution: {integrity: sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==} + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/curves@1.3.0': + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + + '@noble/hashes@1.2.0': + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/hashes@1.3.3': + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@openzeppelin/contracts-upgradeable@4.9.6': + resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} + + '@openzeppelin/contracts-upgradeable@5.0.2': + resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} + peerDependencies: + '@openzeppelin/contracts': 5.0.2 + + '@openzeppelin/contracts@4.9.6': + resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} + + '@openzeppelin/contracts@5.0.2': + resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} + + '@openzeppelin/merkle-tree@1.0.6': + resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-wasm@2.4.1': + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@playwright/test@1.44.0': + resolution: {integrity: sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==} + engines: {node: '>=16'} + hasBin: true + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.2.2': + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@react-native-community/cli-clean@13.6.6': + resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} + + '@react-native-community/cli-config@13.6.6': + resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} + + '@react-native-community/cli-debugger-ui@13.6.6': + resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} + + '@react-native-community/cli-doctor@13.6.6': + resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} + + '@react-native-community/cli-hermes@13.6.6': + resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} + + '@react-native-community/cli-platform-android@13.6.6': + resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} + + '@react-native-community/cli-platform-apple@13.6.6': + resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} + + '@react-native-community/cli-platform-ios@13.6.6': + resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} + + '@react-native-community/cli-server-api@13.6.6': + resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} + + '@react-native-community/cli-tools@13.6.6': + resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} + + '@react-native-community/cli-types@13.6.6': + resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} + + '@react-native-community/cli@13.6.6': + resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} + engines: {node: '>=18'} + hasBin: true + + '@react-native/assets-registry@0.74.83': + resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} + engines: {node: '>=18'} + + '@react-native/babel-plugin-codegen@0.74.83': + resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} + engines: {node: '>=18'} + + '@react-native/babel-preset@0.74.83': + resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.74.83': + resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + + '@react-native/community-cli-plugin@0.74.83': + resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} + engines: {node: '>=18'} + + '@react-native/debugger-frontend@0.74.83': + resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.74.83': + resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} + engines: {node: '>=18'} + + '@react-native/gradle-plugin@0.74.83': + resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.74.83': + resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} + engines: {node: '>=18'} + + '@react-native/metro-babel-transformer@0.74.83': + resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/normalize-colors@0.74.83': + resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} + + '@react-native/virtualized-lists@0.74.83': + resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@rnx-kit/chromium-edge-launcher@1.0.0': + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} + + '@rollup/rollup-android-arm-eabi@4.17.2': + resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.17.2': + resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.17.2': + resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.17.2': + resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.17.2': + resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.17.2': + resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.17.2': + resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.17.2': + resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.17.2': + resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.17.2': + resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.17.2': + resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.17.2': + resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.17.2': + resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.17.2': + resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} + cpu: [x64] + os: [win32] + + '@safe-global/safe-apps-provider@0.18.1': + resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + + '@safe-global/safe-apps-sdk@8.1.0': + resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + + '@safe-global/safe-gateway-typescript-sdk@3.21.1': + resolution: {integrity: sha512-7nakIjcRSs6781LkizYpIfXh1DYlkUDqyALciqz/BjFU/S97sVjZdL4cuKsG9NEarytE+f6p0Qbq2Bo1aocVUA==} + engines: {node: '>=16'} + + '@scure/base@1.1.6': + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} + + '@scure/bip32@1.1.5': + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + + '@scure/bip32@1.3.2': + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + + '@scure/bip32@1.3.3': + resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + + '@scure/bip39@1.1.1': + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + + '@scure/bip39@1.2.1': + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + + '@scure/bip39@1.2.2': + resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@solidity-parser/parser@0.18.0': + resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} + + '@stablelib/aead@1.0.1': + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/chacha20poly1305@1.0.1': + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + + '@stablelib/chacha@1.0.1': + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hkdf@1.0.1': + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/sha256@1.0.1': + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + + '@storybook/csf@0.0.1': + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + + '@sveltejs/adapter-auto@3.2.0': + resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/kit@2.5.7': + resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@sveltejs/vite-plugin-svelte@3.1.0': + resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + + '@tailwindcss/nesting@0.0.0-insiders.565cd3e': + resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} + peerDependencies: + postcss: ^8.2.15 + + '@ts-morph/common@0.20.0': + resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/bn.js@5.1.5': + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/dns-packet@5.6.5': + resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} + + '@types/dom-screen-wake-lock@1.0.3': + resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} + + '@types/eslint@8.56.10': + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@18.19.32': + resolution: {integrity: sha512-2bkg93YBSDKk8DLmmHnmj/Rwr18TLx7/n+I23BigFwgexUJoMHZOd8X1OFxuF/W3NN0S2W2E5sVabI5CPinNvA==} + + '@types/node@20.12.10': + resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} + + '@types/object-hash@3.0.6': + resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/pug@2.0.10': + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@15.0.19': + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + + '@typescript-eslint/eslint-plugin@7.8.0': + resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.8.0': + resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/scope-manager@7.8.0': + resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.8.0': + resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@7.8.0': + resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.8.0': + resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@7.8.0': + resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@7.8.0': + resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitest/coverage-v8@1.6.0': + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@wagmi/cli@2.1.4': + resolution: {integrity: sha512-vamvEo/GeBjFxb5oZCvby4YZDOrK/RqD+tcWb5X0pqmJDyWbN2Mkv9DYTtVB+OtfVUzFKciN/8Vhw8luMtOJbw==} + hasBin: true + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/connectors@4.3.3': + resolution: {integrity: sha512-6u/HbWlIS2MI5lxBYbsqNZIQT4sBleFt8rhzH7mJBrHH6v95LmeZZ3qZFpWdopx4bQ6maNEZOIJnCLhv7k37DQ==} + peerDependencies: + '@wagmi/core': 2.9.1 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/core@2.9.1': + resolution: {integrity: sha512-VUILlj0qFmZEa9XpNsYhIaQe3jsJdFGSRSbn+xsvGBo+yZpNxQXuaLo3+ntuv1kTFdw8Qzk17fLGy2U9a0XFdA==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + + '@walletconnect/core@2.11.2': + resolution: {integrity: sha512-bB4SiXX8hX3/hyBfVPC5gwZCXCl+OPj+/EDVM71iAO3TDsh78KPbrVAbDnnsbHzZVHlsMohtXX3j5XVsheN3+g==} + + '@walletconnect/core@2.12.2': + resolution: {integrity: sha512-7Adv/b3pp9F42BkvReaaM4KS8NEvlkS7AMtwO3uF/o6aRMKtcfTJq9/jgWdKJh4RP8pPRTRFjCw6XQ/RZtT4aQ==} + + '@walletconnect/environment@1.0.1': + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + + '@walletconnect/ethereum-provider@2.11.2': + resolution: {integrity: sha512-BUDqee0Uy2rCZVkW5Ao3q6Ado/3fePYnFdryVF+YL6bPhj+xQZ5OfKodl+uvs7Rwq++O5wTX2RqOTzpW7+v+Mg==} + + '@walletconnect/ethereum-provider@2.12.2': + resolution: {integrity: sha512-vBl2zCnNm2iPaomJdr5YT16cT7aa8cH2WFs6879XPngU5i7HXS3bU6TamhyhKKl13sdIfifmCkCC+RWn5GdPMw==} + + '@walletconnect/events@1.0.1': + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + + '@walletconnect/heartbeat@1.2.1': + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + + '@walletconnect/jsonrpc-http-connection@1.0.7': + resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} + + '@walletconnect/jsonrpc-provider@1.0.13': + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + + '@walletconnect/jsonrpc-types@1.0.3': + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + + '@walletconnect/jsonrpc-utils@1.0.8': + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + + '@walletconnect/jsonrpc-ws-connection@1.0.14': + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + + '@walletconnect/keyvaluestorage@1.1.1': + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@walletconnect/logger@2.1.2': + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + + '@walletconnect/modal-core@2.6.2': + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + + '@walletconnect/modal-ui@2.6.2': + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + + '@walletconnect/modal@2.6.2': + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + + '@walletconnect/relay-api@1.0.10': + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + + '@walletconnect/relay-auth@1.0.4': + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + + '@walletconnect/safe-json@1.0.2': + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + + '@walletconnect/sign-client@2.11.2': + resolution: {integrity: sha512-MfBcuSz2GmMH+P7MrCP46mVE5qhP0ZyWA0FyIH6/WuxQ6G+MgKsGfaITqakpRPsykWOJq8tXMs3XvUPDU413OQ==} + + '@walletconnect/sign-client@2.12.2': + resolution: {integrity: sha512-cM0ualXj6nVvLqS4BDNRk+ZWR+lubcsz/IHreH+3wYrQ2sV+C0fN6ctrd7MMGZss0C0qacWCx0pm62ZBuoKvqA==} + + '@walletconnect/time@1.0.2': + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + + '@walletconnect/types@2.11.2': + resolution: {integrity: sha512-p632MFB+lJbip2cvtXPBQslpUdiw1sDtQ5y855bOlAGquay+6fZ4h1DcDePeKQDQM3P77ax2a9aNPZxV6y/h1Q==} + + '@walletconnect/types@2.12.2': + resolution: {integrity: sha512-9CmwTlPbrFTzayTL9q7xM7s3KTJkS6kYFtH2m1/fHFgALs6pIUjf1qAx1TF2E4tv7SEzLAIzU4NqgYUt2vWXTg==} + + '@walletconnect/universal-provider@2.11.2': + resolution: {integrity: sha512-cNtIn5AVoDxKAJ4PmB8m5adnf5mYQMUamEUPKMVvOPscfGtIMQEh9peKsh2AN5xcRVDbgluC01Id545evFyymw==} + + '@walletconnect/universal-provider@2.12.2': + resolution: {integrity: sha512-0k5ZgSkABopQLVhkiwl2gRGG7dAP4SWiI915pIlyN5sRvWV+qX1ALhWAmRcdv0TXWlKHDcDgPJw/q2sCSAHuMQ==} + + '@walletconnect/utils@2.11.2': + resolution: {integrity: sha512-LyfdmrnZY6dWqlF4eDrx5jpUwsB2bEPjoqR5Z6rXPiHJKUOdJt7az+mNOn5KTSOlRpd1DmozrBrWr+G9fFLYVw==} + + '@walletconnect/utils@2.12.2': + resolution: {integrity: sha512-zf50HeS3SfoLv1N9GPl2IXTZ9TsXfet4usVAsZmX9P6/Xzq7d/7QakjVQCHH/Wk1O9XkcsfeoZoUhRxoMJ5uJw==} + + '@walletconnect/window-getters@1.0.1': + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + + '@walletconnect/window-metadata@1.0.1': + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + + '@web3modal/common@4.1.11': + resolution: {integrity: sha512-zcoaixcI3dLC/D0QlhpT8MNCd717O1/3r1AemC5/9Wbk2F+YKXkzJZHmWlXoTvlTw9DH07rJzs9YTPxFyn855w==} + + '@web3modal/core@4.1.11': + resolution: {integrity: sha512-e475IIWywEtgH1CCB2Pl1C/wgPu0NzAvtTMOPSGNoHsw1ID2n6j/o4CURQb2HJjOoYQjTKKVkzXa44vFh2p9xw==} + + '@web3modal/polyfills@4.1.11': + resolution: {integrity: sha512-+aMmjGrLCKLo4gVAdWgFdOX2ZjExciSLw/YlZ01wLO8Yj3bZbCZ7sjBc9xndHOVMK0QyUzBtpCOpYMJzi+59jg==} + + '@web3modal/scaffold-react@4.1.11': + resolution: {integrity: sha512-vouJHj77ZNKvR/Uyb3Hfc2UFSA4ZrrHmA0vbioCbgIh+V1rYT5XcAZDEu4AAo1qJ5NBRU1pkClVwAmQuWGY43w==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@web3modal/scaffold-utils@4.1.11': + resolution: {integrity: sha512-nsS9yK5tp1N/VfecLLPc8H/dGJCzn0jElWjRS92VfGPhOSiEh5PIrPyCl9o6wUZsp4fH1YUsoSY2EFpPsuCWgw==} + + '@web3modal/scaffold-vue@4.1.11': + resolution: {integrity: sha512-PmIfD2TlKkZZa6V0sqwDtZ7t62BEk5JjCHd380QaZwGTbPEwS99leTWLKBTaxAPShK2p7+aj2Txss63wIXLRFg==} + peerDependencies: + vue: '>=3' + peerDependenciesMeta: + vue: + optional: true + + '@web3modal/scaffold@4.1.11': + resolution: {integrity: sha512-n8bP3cJNQxV8OD3s8bSj8QDbZvjn8a1Ui81jo2a3rIxOUAlD/cKRM8ivmNxiUdBMae8GP5CLiWtkIptmSLw40Q==} + + '@web3modal/siwe@4.1.11': + resolution: {integrity: sha512-gndcNA351mkAR0wUsO4dLS9CbpcFo+AQ2CUXF0Jx83DwaBStCVsX3yllfnYKh/gpVetF3B48mRUt9TTTJJ79dA==} + + '@web3modal/ui@4.1.11': + resolution: {integrity: sha512-lentHZvUpNjVasvNI8/jrVPIAV1M5zJKZ4Q4AeYwUJdEtlRon1uq10MRylmvlZAjWb98U130uJy245Fz87Th/w==} + + '@web3modal/wagmi@4.1.11': + resolution: {integrity: sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ==} + peerDependencies: + '@wagmi/connectors': '>=4.0.0' + '@wagmi/core': '>=2.0.0' + react: '>=17' + react-dom: '>=17' + viem: '>=2.0.0' + vue: '>=3' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + vue: + optional: true + + '@web3modal/wallet@4.1.11': + resolution: {integrity: sha512-6eJSpNcrBxufJFEQu9+ZOMUZxPqa8438RvfYKCU9nLXwoBtweo6ecpQw2yhXDlrfG+uJZhFabtPxROabn2M8Kg==} + + '@zerodevx/svelte-toast@0.9.5': + resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} + peerDependencies: + svelte: ^3.57.0 || ^4.0.0 + + abitype@0.9.10: + resolution: {integrity: sha512-FIS7U4n7qwAT58KibwYig5iFG4K61rbhAqaQh/UWj8v1Y8mjX3F8TC9gd8cz9yT1TYel9f8nS5NO5kZp2RW0jQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@0.9.8: + resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.0: + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.2: + resolution: {integrity: sha512-aFt4k2H+eiAKy/zxtnORa9iIb10BMBeWL18l8v4+QuwYEBXPxxjSB1bFZCzQmKPoj8m7j68K705l3uY+E2gAjg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + + anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + + ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + antlr4@4.13.1-patch-1: + resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} + engines: {node: '>=16'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + any-signal@3.0.1: + resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + + ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async-mutex@0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@1.6.8: + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + + axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + + babel-core@7.0.0-bridge.0: + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-flow-enums@0.0.2: + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + blob-to-it@2.0.6: + resolution: {integrity: sha512-xveo/z3QNilIJgCZAjzvx2uWWVHE4JzOy7eMp45zkuBsmwZMgjfhn2h/+BsZPaByVFa3u1W/OBUleNiqgMtVpQ==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-readablestream-to-it@1.0.3: + resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} + + browser-readablestream-to-it@2.0.7: + resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + + bundle-require@4.1.0: + resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001616: + resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + cborg@4.2.0: + resolution: {integrity: sha512-q6cFW5m3KxfP/9xGI3yGLaC1l5DP6DWM9IvjiJojnIwohL5CQDl02EXViPV852mOfQo+7PJGPN01MI87vFGzyA==} + hasBin: true + + chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chromatic@11.3.1: + resolution: {integrity: sha512-ATAfVEn84NARTIxdiGQ8QywWg3BPM/+6stVD1stSKCO7lQLEKFyGcI+PhBBDt+ZgNcgsEsg5fo3E2dQNt01W6g==} + hasBin: true + peerDependencies: + '@chromatic-com/cypress': ^0.*.* || ^1.0.0 + '@chromatic-com/playwright': ^0.*.* || ^1.0.0 + peerDependenciesMeta: + '@chromatic-com/cypress': + optional: true + '@chromatic-com/playwright': + optional: true + + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} + engines: {node: '>=0.10'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + code-block-writer@12.0.0: + resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + + code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + convert-csv-to-json@2.46.0: + resolution: {integrity: sha512-Q7PjRjhECa5nBUEGbsKXvB8YaygVUesF/sYnaoCPTWoiwJEDCbLd2CcFDE1y80Q347IaTQukCQSCP2fR5IW+5g==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + core-js-compat@3.37.0: + resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + + cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + + crypto-js@3.3.0: + resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + css-selector-tokenizer@0.8.0: + resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} + + culori@3.3.0: + resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + dag-jose@4.0.0: + resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} + + daisyui@4.10.5: + resolution: {integrity: sha512-eOFUo5yEg0WV+3VK2C/+/XN1WH/OhFV4HzrMG5etAzcnB2hPg3aoR7gF1ZUpIv+b5MglLuAVMgub0rv660EgZg==} + engines: {node: '>=16.9.0'} + + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + dayjs@1.10.1: + resolution: {integrity: sha512-2xg7JrHQeLBQFkvTumLoy62x1siyeocc98QwjtURgvRqOPYmAkMUdmSjrOA+MlmL6QMQn5MUhDf6rNZNuPc1LQ==} + + dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + + dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + devalue@5.0.0: + resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dns-over-http-resolver@2.1.3: + resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: + resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + name: ds-test + version: 1.0.0 + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + eciesjs@0.3.18: + resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-fetch@1.9.1: + resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} + engines: {node: '>=6'} + + electron-to-chromium@1.4.757: + resolution: {integrity: sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw==} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + engine.io-client@6.5.3: + resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} + + engine.io-parser@5.2.2: + resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} + engines: {node: '>=10.0.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true + + err-code@3.0.1: + resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-compat-utils@0.5.0: + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-standard@17.1.0: + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-es-x@7.6.0: + resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-es@3.0.1: + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-n@16.6.2: + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-node@11.1.0: + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + + eslint-plugin-prettier@5.1.3: + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-promise@6.1.1: + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + eslint-plugin-simple-import-sort@12.1.0: + resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} + peerDependencies: + eslint: '>=5.0.0' + + eslint-plugin-storybook@0.8.0: + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' + + eslint-plugin-svelte@2.38.0: + resolution: {integrity: sha512-IwwxhHzitx3dr0/xo0z4jjDlb2AAHBPKt+juMyKKGTLlKi1rZfA4qixMwnveU20/JTHyipM6keX4Vr7LZFYc9g==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 + peerDependenciesMeta: + svelte: + optional: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + + eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + + eth-query@2.1.2: + resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + + eth-rpc-errors@4.0.3: + resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + + ethereum-address@0.0.4: + resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} + engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} + + ethereum-bloom-filters@1.1.0: + resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + + ethereum-cryptography@2.1.3: + resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-xml-parser@4.3.6: + resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} + hasBin: true + + fastparse@1.1.2: + resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + filesize@10.1.1: + resolution: {integrity: sha512-L0cdwZrKlwZQkMSFnCflJ6J2Y+5egO/p3vgRSDQGxQt++QbUZe5gMbRO6kg6gzwQDPvq2Fk9AmoxUNfZ5gdqaQ==} + engines: {node: '>= 10.4.0'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@4.1.1: + resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} + hasBin: true + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + + flow-parser@0.235.1: + resolution: {integrity: sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==} + engines: {node: '>=0.4.0'} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} + name: forge-std + version: 1.7.5 + + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc} + name: forge-std + version: 1.7.6 + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + futoin-hkdf@1.5.3: + resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} + engines: {node: '>=8'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-iterator@1.0.2: + resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} + + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.4: + resolution: {integrity: sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + h3@1.11.1: + resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hashlru@2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + hermes-estree@0.19.1: + resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + + hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} + + hermes-parser@0.19.1: + resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + + hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} + + hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + + i18next@22.5.1: + resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + interface-datastore@7.0.4: + resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + interface-datastore@8.2.11: + resolution: {integrity: sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA==} + + interface-store@3.0.4: + resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + interface-store@5.1.8: + resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + intl-messageformat@10.5.12: + resolution: {integrity: sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ipfs-core-types@0.14.1: + resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-core-utils@0.18.1: + resolution: {integrity: sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-http-client@60.0.1: + resolution: {integrity: sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + + ipfs-unixfs@9.0.1: + resolution: {integrity: sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + ipfs-utils@9.0.14: + resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + iron-webcrypto@1.1.1: + resolution: {integrity: sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-electron@2.2.2: + resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + iso-url@1.2.1: + resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} + engines: {node: '>=12'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + + isows@1.0.3: + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + it-all@1.0.6: + resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} + + it-all@2.0.1: + resolution: {integrity: sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-first@2.0.1: + resolution: {integrity: sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-glob@1.0.2: + resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} + + it-last@2.0.1: + resolution: {integrity: sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-map@2.0.1: + resolution: {integrity: sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-peekable@2.0.1: + resolution: {integrity: sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-pushable@3.2.3: + resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} + + it-stream-types@1.0.5: + resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-stream-types@2.0.1: + resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + it-to-stream@1.0.0: + resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + + joi@17.13.1: + resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + + jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + jscodeshift@0.14.0: + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + + jsdom@24.0.0: + resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} + + json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} + + latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} + + lefthook-darwin-arm64@1.6.10: + resolution: {integrity: sha512-Hh11OkoKG7FEOByS1dcgNV7ETq45VmwBbw0VPTiBznyfOG4k+pi0fIdc1qbmbxvYqNE0r420QR/Q3bimaa4Kxg==} + cpu: [arm64] + os: [darwin] + + lefthook-darwin-x64@1.6.10: + resolution: {integrity: sha512-FiOB0t5OBcQ8OnG/LSdfUYj736SJdlLjWuOZ4wTlJ7EUrHditieap6VNAxwMmFVyQN0X2ZwKWytwY35y+Hflhw==} + cpu: [x64] + os: [darwin] + + lefthook-freebsd-arm64@1.6.10: + resolution: {integrity: sha512-IxGgS3RrNwk3Kr83o5SQhGxqppQi7fu2t//nsp6ocgnJeStrTtXZJOrel2VohzrFxpzQdJVXBGgUGLXtY8t8qw==} + cpu: [arm64] + os: [freebsd] + + lefthook-freebsd-x64@1.6.10: + resolution: {integrity: sha512-sFSe+dGLa4iBblWAhAGTP9moarcbFtFAH6aaCeyqSX51O6p9VPdGjqNtcE8aGbGAk4lO6v1ScRjk5ogMSinJwQ==} + cpu: [x64] + os: [freebsd] + + lefthook-linux-arm64@1.6.10: + resolution: {integrity: sha512-fXnKiNdRIW+FRvc1keVrvWX5EqIhVFfPjcy+PbsKdxiWRXgjtidi6LPmQ8eosH0DC9PxZ0mpdCMf40FHEZLbQA==} + cpu: [arm64] + os: [linux] + + lefthook-linux-x64@1.6.10: + resolution: {integrity: sha512-bm6l2GOFnmYreZxmHb47QeOiFAItttOOxvCEX1okIRD7JbUC+lGC9evW5GJv/ltjZBoTDYEtQAUa+BpHTGuY2A==} + cpu: [x64] + os: [linux] + + lefthook-windows-arm64@1.6.10: + resolution: {integrity: sha512-pFxT8KbOMzGxj6cz4glHYwQSNC7XCuy9RDqIO0AxPlpATsCpapkF4ngDxBT1iFv2VhdeweMa7RXUDsMAGQA4Qw==} + cpu: [arm64] + os: [win32] + + lefthook-windows-x64@1.6.10: + resolution: {integrity: sha512-fcDnUSTv95AdLvm0NIrn3jBWXuRq8SlbDDjkkB5OHLiSmjz4eOr6wyD7xceDp33zZgZmWFzHebJngxxcIaUuHw==} + cpu: [x64] + os: [win32] + + lefthook@1.6.10: + resolution: {integrity: sha512-HeVjsDCrHLe9htQHbLuQJu2YdLK6Tl5bh36fOpmXqckEXTI0BDR0Y5JYc7G5Inj4YXQsc51a9dUDZMeniSnSag==} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + hasBin: true + + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-element@4.0.5: + resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit-html@3.1.3: + resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==} + + lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + + lit@3.1.0: + resolution: {integrity: sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} + + logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + + lokijs@1.5.12: + resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} + + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merkletreejs@0.3.11: + resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} + engines: {node: '>= 7.6.0'} + + metro-babel-transformer@0.80.9: + resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} + engines: {node: '>=18'} + + metro-cache-key@0.80.9: + resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} + engines: {node: '>=18'} + + metro-cache@0.80.9: + resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} + engines: {node: '>=18'} + + metro-config@0.80.9: + resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} + engines: {node: '>=18'} + + metro-core@0.80.9: + resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} + engines: {node: '>=18'} + + metro-file-map@0.80.9: + resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} + engines: {node: '>=18'} + + metro-minify-terser@0.80.9: + resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} + engines: {node: '>=18'} + + metro-resolver@0.80.9: + resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} + engines: {node: '>=18'} + + metro-runtime@0.80.9: + resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} + engines: {node: '>=18'} + + metro-source-map@0.80.9: + resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} + engines: {node: '>=18'} + + metro-symbolicate@0.80.9: + resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} + engines: {node: '>=18'} + hasBin: true + + metro-transform-plugins@0.80.9: + resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} + engines: {node: '>=18'} + + metro-transform-worker@0.80.9: + resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} + engines: {node: '>=18'} + + metro@0.80.9: + resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} + engines: {node: '>=18'} + hasBin: true + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minidenticons@4.2.1: + resolution: {integrity: sha512-oWfFivA0lOx/V/bO/YIJbthB26lV8JXYvhnv9zM2hNd3fzsHTXQ6c6bWZPcvhD3nnOB+lQk/D9lF43BXixrN8g==} + engines: {node: '>=15.14.0'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.0: + resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} + engines: {node: '>=16 || 14 >=14.17'} + + mipd@0.0.5: + resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + + moralis@2.26.1: + resolution: {integrity: sha512-6aY1D/ZJwpys3H1tKhxbuRvnHXTOK07uqPrBQS2OPbCyxYjW33NFJPJXiLRXsmpDjFM+xq6vYRKrQSy5Zf4yog==} + + motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multiformats@11.0.2: + resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + multiformats@12.1.3: + resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + multiformats@13.1.0: + resolution: {integrity: sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==} + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: + resolution: {tarball: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d} + name: murky + version: 0.0.0 + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@4.0.2: + resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + + native-fetch@3.0.0: + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' + + native-fetch@4.0.2: + resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} + peerDependencies: + undici: '*' + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} + + node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + nwsapi@2.2.9: + resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} + + ob1@0.80.9: + resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} + engines: {node: '>=18'} + + obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + + ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ora@6.3.1: + resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-defer@3.0.0: + resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} + engines: {node: '>=8'} + + p-defer@4.0.1: + resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} + engines: {node: '>=12'} + + p-fifo@1.0.0: + resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-map@7.0.2: + resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} + engines: {node: '>=18'} + + p-queue@8.0.1: + resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} + engines: {node: '>=18'} + + p-timeout@6.1.2: + resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + engines: {node: '>=14.16'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: + resolution: {tarball: https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da} + name: p256-verifier#v0.1.0 + version: 0.0.0 + + package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-duration@1.1.0: + resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} + engines: {node: '>=16 || 14 >=14.17'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-types@1.1.0: + resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} + + playwright-core@1.44.0: + resolution: {integrity: sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==} + engines: {node: '>=16'} + hasBin: true + + playwright@1.44.0: + resolution: {integrity: sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==} + engines: {node: '>=16'} + hasBin: true + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-import@16.1.0: + resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@5.0.6: + resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-nesting@12.1.2: + resolution: {integrity: sha512-FUmTHGDNundodutB4PUBxt/EPuhgtpk8FJGRsBhOuy+6FnkR2A8RZWIsyyy6XmhvX2DZQQWIkvu+HB4IbJm+Ew==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.21.0: + resolution: {integrity: sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-svelte@3.2.3: + resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + progress-events@1.0.0: + resolution: {integrity: sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protobufjs@7.2.6: + resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==} + engines: {node: '>=12.0.0'} + + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qr-code-styling@1.6.0-rc.1: + resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + + qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + + qrcode-terminal-nooctal@0.12.1: + resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} + hasBin: true + + qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-confetti@6.1.0: + resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} + engines: {node: '>=10.18'} + peerDependencies: + react: ^16.3.0 || ^17.0.1 || ^18.0.0 + + react-devtools-core@5.1.0: + resolution: {integrity: sha512-NRtLBqYVLrIY+lOa2oTpFiAhI7Hru0AUXI0tP9neCyaPPAzlZyeH0i+VZ0shIyRTJbpvyqbD/uCsewA2hpfZHw==} + + react-i18next@13.5.0: + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-native-fetch-api@3.0.0: + resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} + + react-native-webview@11.26.1: + resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} + peerDependencies: + react: '*' + react-native: '*' + + react-native@0.74.1: + resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-shallow-renderer@16.15.0: + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + + receptacle@1.3.2: + resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} + + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retimer@3.0.0: + resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rollup@4.17.2: + resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + + secp256k1@5.0.0: + resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} + engines: {node: '>=14.0.0'} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + sharp@0.33.3: + resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} + engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + solady@https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d: + resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d} + name: solady + version: 0.0.167 + + solc@0.8.24: + resolution: {integrity: sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==} + engines: {node: '>=10.0.0'} + hasBin: true + + solhint@4.5.4: + resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} + hasBin: true + + solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: + resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} + name: solidity-stringutils + version: 0.0.0 + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} + hasBin: true + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + stream-to-it@0.2.4: + resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svelte-check@3.7.1: + resolution: {integrity: sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + + svelte-copy@1.4.2: + resolution: {integrity: sha512-Q99JvWDzB58JlbVWX2VxjHX/CQ5ayDLUGGJgL2EqU1+3c9CDOtxLrKFZx5CVN5bN/DDl62nxtazz0j3nGX1Xew==} + peerDependencies: + svelte: ^3.55.0 || ^4.0.0 + + svelte-countdown@1.1.2: + resolution: {integrity: sha512-datUfbRtGCp+7OwIRcbW9tbIwlkN7KiJp9Mg01Na9HgSQrLG0knsD/xjaIVKPovxY8xF0yOrbPEz+bT/BS9EBQ==} + + svelte-eslint-parser@0.35.0: + resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 + peerDependenciesMeta: + svelte: + optional: true + + svelte-hmr@0.16.0: + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + + svelte-i18n@4.0.0: + resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + svelte: ^3 || ^4 + + svelte-preprocess@5.1.4: + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + + svelte-scrolling@1.4.0: + resolution: {integrity: sha512-1721UrmTODAIhybCR5p/l6lQNSmuk66VgtgxdAEdQiGuYU1wCcKB/9kba0VXlxIeh5vhEaoODAOCizRRtHKQoQ==} + peerDependencies: + svelte: ^3 || ^4 + + svelte@4.2.15: + resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} + engines: {node: '>=16'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tailwindcss-image-rendering@1.0.2: + resolution: {integrity: sha512-WC3hJd2RbHBYIqtJxwpQ5z94wUNyBrJn1eFz3J/jR7OGrQB8WYbJGvJQ9scNNVzoHEYGoNdZbUI90l9YgpBCwg==} + + tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + engines: {node: '>=14.0.0'} + hasBin: true + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + + terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + timeout-abort-controller@3.0.0: + resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} + + timers-ext@0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + + tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-essentials@9.4.2: + resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} + peerDependencies: + typescript: '>=4.1.0' + peerDependenciesMeta: + typescript: + optional: true + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-morph@19.0.0: + resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfck@3.0.3: + resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tween-functions@1.2.0: + resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + + uint8-varint@2.0.4: + resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + + uint8arraylist@2.4.8: + resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + + uint8arrays@4.0.10: + resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} + + uint8arrays@5.0.3: + resolution: {integrity: sha512-6LBuKji28kHjgPJMkQ6GDaBb1lRwIhyOYq6pDGwYMoDPfImE9SkuYENVmR0yu9yGgs2clHUSY9fKDukR+AXfqQ==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} + + unenv@1.9.0: + resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unstorage@1.10.2: + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + + update-browserslist-db@1.0.15: + resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + utf-8-validate@6.0.3: + resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} + engines: {node: '>=6.14.2'} + + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + valtio@1.11.2: + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + viem@1.21.4: + resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.10.1: + resolution: {integrity: sha512-sfbcFdzlMHSZI+4RpqidxOqPu6xwWtmqDBWSVml2XV+n21dgQFmVRN0nHhZoyMDSo4mTSKtWwW9sHHu9vUF2mw==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite-tsconfig-paths@4.3.2: + resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite@4.5.3: + resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@5.2.11: + resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitefu@0.2.5: + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + + vitest-fetch-mock@0.2.2: + resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} + engines: {node: '>=14.14.0'} + peerDependencies: + vitest: '>=0.16.0' + + vitest-mock-extended@1.3.1: + resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} + peerDependencies: + typescript: 3.x || 4.x || 5.x + vitest: '>=0.31.1' + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web3-eth-abi@1.10.4: + resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} + engines: {node: '>=8.0.0'} + + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + + ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + 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 + + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + 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 + + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + 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 + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + + zod@3.23.6: + resolution: {integrity: sha512-RTHJlZhsRbuA8Hmp/iNL7jnfc4nZishjsanDAfEY1QpDQZCahUp3xDzl+zfweE9BklxMUcgBgS1b7Lvie/ZVwA==} + + zustand@4.4.1: + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@adraffy/ens-normalize@1.10.0': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.5 + picocolors: 1.0.0 + + '@babel/compat-data@7.24.4': {} + + '@babel/core@7.24.5': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helpers': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.24.5': + dependencies: + '@babel/types': 7.24.5 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-compilation-targets@7.23.6': + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-function-name@7.23.0': + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-member-expression-to-functions@7.24.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-module-imports@7.24.3': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + + '@babel/helper-optimise-call-expression@7.22.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-plugin-utils@7.24.5': {} + + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.24.5 + + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-simple-access@7.24.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-split-export-declaration@7.24.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/helper-string-parser@7.24.1': {} + + '@babel/helper-validator-identifier@7.24.5': {} + + '@babel/helper-validator-option@7.23.5': {} + + '@babel/helper-wrap-function@7.24.5': + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 + + '@babel/helpers@7.24.5': + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.24.5': + dependencies: + '@babel/helper-validator-identifier': 7.24.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + + '@babel/parser@7.24.5': + dependencies: + '@babel/types': 7.24.5 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) + + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.5)': + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + + '@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-split-export-declaration': 7.24.5 + globals: 11.12.0 + + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/template': 7.24.0 + + '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-simple-access': 7.24.5 + + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + + '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + + '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/types': 7.24.5 + + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/preset-env@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-flow@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/types': 7.24.5 + esutils: 2.0.3 + + '@babel/preset-typescript@7.24.1(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + + '@babel/register@7.23.7(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime@7.24.5': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.24.0': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + + '@babel/traverse@7.24.5': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.24.5': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@chainsafe/is-ip@2.0.2': {} + + '@chainsafe/netmask@2.0.0': + dependencies: + '@chainsafe/is-ip': 2.0.2 + + '@chromatic-com/storybook@1.3.4(react@18.3.1)': + dependencies: + chromatic: 11.3.1 + filesize: 10.1.1 + jsonfile: 6.1.0 + react-confetti: 6.1.0(react@18.3.1) + strip-ansi: 7.1.0 + transitivePeerDependencies: + - '@chromatic-com/cypress' + - '@chromatic-com/playwright' + - react + + '@coinbase/wallet-sdk@3.9.1': + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 7.1.0 + eth-json-rpc-filters: 6.0.1 + eventemitter3: 5.0.1 + keccak: 3.0.4 + preact: 10.21.0 + sha.js: 2.4.11 + transitivePeerDependencies: + - supports-color + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16)': + dependencies: + postcss-selector-parser: 6.0.16 + + '@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16)': + dependencies: + postcss-selector-parser: 6.0.16 + + '@emnapi/runtime@1.1.1': + dependencies: + tslib: 2.6.2 + optional: true + + '@esbuild/aix-ppc64@0.19.12': + optional: true + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.19.12': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.19.12': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.19.12': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.19.12': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.19.12': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.19.12': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.19.12': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.19.12': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.19.12': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.19.12': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.19.12': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.19.12': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.19.12': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.19.12': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.19.12': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.19.12': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.19.12': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.19.12': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.19.12': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.19.12': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.19.12': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.19.12': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.10.0': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@ethereumjs/common@3.2.0': + dependencies: + '@ethereumjs/util': 8.1.0 + crc-32: 1.2.2 + + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/tx@4.2.0': + dependencies: + '@ethereumjs/common': 3.2.0 + '@ethereumjs/rlp': 4.0.1 + '@ethereumjs/util': 8.1.0 + ethereum-cryptography: 2.1.3 + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.3 + micro-ftch: 0.3.1 + + '@ethersproject/abi@5.7.0': + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/abstract-provider@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + + '@ethersproject/abstract-signer@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/address@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/bignumber@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - /@ethersproject/bytes@5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/constants@5.7.0: - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + '@ethersproject/constants@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 - /@ethersproject/contracts@5.7.0: - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + '@ethersproject/contracts@5.7.0': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -2921,10 +9380,8 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - dev: true - /@ethersproject/hash@5.7.0: - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + '@ethersproject/hash@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -2936,8 +9393,7 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/hdnode@5.7.0: - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + '@ethersproject/hdnode@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/basex': 5.7.0 @@ -2951,10 +9407,8 @@ packages: '@ethersproject/strings': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: true - /@ethersproject/json-wallets@5.7.0: - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + '@ethersproject/json-wallets@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -2969,36 +9423,28 @@ packages: '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 - dev: true - /@ethersproject/keccak256@5.7.0: - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + '@ethersproject/keccak256@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - /@ethersproject/logger@5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + '@ethersproject/logger@5.7.0': {} - /@ethersproject/networks@5.7.1: - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + '@ethersproject/networks@5.7.1': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/pbkdf2@5.7.0: - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + '@ethersproject/pbkdf2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - dev: true - /@ethersproject/properties@5.7.0: - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + '@ethersproject/properties@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/providers@5.7.2: - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + '@ethersproject/providers@5.7.2': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -3023,30 +9469,24 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: true - /@ethersproject/random@5.7.0: - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + '@ethersproject/random@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true - /@ethersproject/rlp@5.7.0: - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + '@ethersproject/rlp@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/sha2@5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + '@ethersproject/sha2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - /@ethersproject/signing-key@5.7.0: - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + '@ethersproject/signing-key@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 @@ -3055,8 +9495,7 @@ packages: elliptic: 6.5.4 hash.js: 1.1.7 - /@ethersproject/solidity@5.7.0: - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + '@ethersproject/solidity@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -3064,17 +9503,14 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true - /@ethersproject/strings@5.7.0: - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + '@ethersproject/strings@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - /@ethersproject/transactions@5.7.0: - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + '@ethersproject/transactions@5.7.0': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -3086,16 +9522,13 @@ packages: '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - /@ethersproject/units@5.7.0: - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + '@ethersproject/units@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true - /@ethersproject/wallet@5.7.0: - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + '@ethersproject/wallet@5.7.0': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -3112,10 +9545,8 @@ packages: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: true - /@ethersproject/web@5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + '@ethersproject/web@5.7.1': dependencies: '@ethersproject/base64': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -3123,332 +9554,172 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - /@ethersproject/wordlists@5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + '@ethersproject/wordlists@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true - /@fastify/busboy@2.1.1: - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - dev: false + '@fastify/busboy@2.1.1': {} - /@formatjs/ecma402-abstract@1.18.2: - resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} + '@formatjs/ecma402-abstract@1.18.2': dependencies: '@formatjs/intl-localematcher': 0.5.4 tslib: 2.6.2 - /@formatjs/fast-memoize@2.2.0: - resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + '@formatjs/fast-memoize@2.2.0': dependencies: tslib: 2.6.2 - /@formatjs/icu-messageformat-parser@2.7.6: - resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} + '@formatjs/icu-messageformat-parser@2.7.6': dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/icu-skeleton-parser': 1.8.0 tslib: 2.6.2 - /@formatjs/icu-skeleton-parser@1.8.0: - resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} + '@formatjs/icu-skeleton-parser@1.8.0': dependencies: '@formatjs/ecma402-abstract': 1.18.2 tslib: 2.6.2 - /@formatjs/intl-localematcher@0.5.4: - resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} + '@formatjs/intl-localematcher@0.5.4': dependencies: tslib: 2.6.2 - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false + '@hapi/hoek@9.3.0': {} - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + '@humanwhocodes/module-importer@1.0.1': {} - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - dev: true + '@humanwhocodes/object-schema@2.0.3': {} - /@img/sharp-darwin-arm64@0.33.3: - resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + '@img/sharp-darwin-arm64@0.33.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.2 - dev: false optional: true - /@img/sharp-darwin-x64@0.33.3: - resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true + '@img/sharp-darwin-x64@0.33.3': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.2 - dev: false optional: true - /@img/sharp-libvips-darwin-arm64@1.0.2: - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@img/sharp-libvips-darwin-arm64@1.0.2': optional: true - /@img/sharp-libvips-darwin-x64@1.0.2: - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@img/sharp-libvips-darwin-x64@1.0.2': optional: true - /@img/sharp-libvips-linux-arm64@1.0.2: - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-arm64@1.0.2': optional: true - /@img/sharp-libvips-linux-arm@1.0.2: - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-arm@1.0.2': optional: true - /@img/sharp-libvips-linux-s390x@1.0.2: - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-s390x@1.0.2': optional: true - /@img/sharp-libvips-linux-x64@1.0.2: - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linux-x64@1.0.2': optional: true - /@img/sharp-libvips-linuxmusl-arm64@1.0.2: - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': optional: true - /@img/sharp-libvips-linuxmusl-x64@1.0.2: - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@img/sharp-libvips-linuxmusl-x64@1.0.2': optional: true - /@img/sharp-linux-arm64@0.33.3: - resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@img/sharp-linux-arm64@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.2 - dev: false optional: true - /@img/sharp-linux-arm@0.33.3: - resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - requiresBuild: true + '@img/sharp-linux-arm@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.2 - dev: false optional: true - /@img/sharp-linux-s390x@0.33.3: - resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - requiresBuild: true + '@img/sharp-linux-s390x@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.0.2 - dev: false optional: true - /@img/sharp-linux-x64@0.33.3: - resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true + '@img/sharp-linux-x64@0.33.3': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.2 - dev: false optional: true - /@img/sharp-linuxmusl-arm64@0.33.3: - resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true + '@img/sharp-linuxmusl-arm64@0.33.3': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - dev: false optional: true - /@img/sharp-linuxmusl-x64@0.33.3: - resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - requiresBuild: true + '@img/sharp-linuxmusl-x64@0.33.3': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - dev: false optional: true - /@img/sharp-wasm32@0.33.3: - resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - requiresBuild: true + '@img/sharp-wasm32@0.33.3': dependencies: '@emnapi/runtime': 1.1.1 - dev: false optional: true - /@img/sharp-win32-ia32@0.33.3: - resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@img/sharp-win32-ia32@0.33.3': optional: true - /@img/sharp-win32-x64@0.33.3: - resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@img/sharp-win32-x64@0.33.3': optional: true - /@ipld/dag-cbor@9.2.0: - resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@ipld/dag-cbor@9.2.0': dependencies: cborg: 4.2.0 multiformats: 13.1.0 - dev: false - /@ipld/dag-json@10.2.0: - resolution: {integrity: sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@ipld/dag-json@10.2.0': dependencies: cborg: 4.2.0 multiformats: 13.1.0 - dev: false - /@ipld/dag-pb@4.1.0: - resolution: {integrity: sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@ipld/dag-pb@4.1.0': dependencies: multiformats: 13.1.0 - dev: false - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 + string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 - /@isaacs/ttlcache@1.4.1: - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} - dev: false + '@isaacs/ttlcache@1.4.1': {} - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + '@istanbuljs/schema@0.1.3': {} - /@jest/create-cache-key-function@29.7.0: - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/create-cache-key-function@29.7.0': dependencies: '@jest/types': 29.6.3 - dev: false - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.12.10 jest-mock: 29.7.0 - dev: false - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 @@ -3456,28 +9727,20 @@ packages: jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: false - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - /@jest/types@26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} + '@jest/types@26.6.2': dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.12.10 '@types/yargs': 15.0.19 chalk: 4.1.2 - dev: false - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -3485,98 +9748,67 @@ packages: '@types/node': 20.12.10 '@types/yargs': 17.0.32 chalk: 4.1.2 - dev: false - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': {} - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': {} - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/source-map@0.3.6': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - dev: false - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.4.15': {} - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@leichtgewicht/ip-codec@2.0.5: - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - dev: false + '@leichtgewicht/ip-codec@2.0.5': {} - /@libp2p/interface-connection@4.0.0: - resolution: {integrity: sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-connection@4.0.0': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 '@multiformats/multiaddr': 12.2.1 it-stream-types: 1.0.5 uint8arraylist: 2.4.8 - dev: false - /@libp2p/interface-keychain@2.0.5: - resolution: {integrity: sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-keychain@2.0.5': dependencies: '@libp2p/interface-peer-id': 2.0.2 multiformats: 11.0.2 - dev: false - /@libp2p/interface-peer-id@2.0.2: - resolution: {integrity: sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-peer-id@2.0.2': dependencies: multiformats: 11.0.2 - dev: false - /@libp2p/interface-peer-info@1.0.10: - resolution: {integrity: sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-peer-info@1.0.10': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@multiformats/multiaddr': 12.2.1 - dev: false - /@libp2p/interface-pubsub@3.0.7: - resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/interface-pubsub@3.0.7': dependencies: '@libp2p/interface-connection': 4.0.0 '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 it-pushable: 3.2.3 uint8arraylist: 2.4.8 - dev: false - /@libp2p/interface@1.3.1: - resolution: {integrity: sha512-KJoYP6biAgIHUU3pxaixaaYCvIHZshzXetxfoNigadAZ3hCGuwpdFhk7IABEaI3RgadOOYUwW3MXPbL+cxnXVQ==} + '@libp2p/interface@1.3.1': dependencies: '@multiformats/multiaddr': 12.2.1 it-pushable: 3.2.3 @@ -3584,16 +9816,10 @@ packages: multiformats: 13.1.0 progress-events: 1.0.0 uint8arraylist: 2.4.8 - dev: false - /@libp2p/interfaces@3.3.2: - resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + '@libp2p/interfaces@3.3.2': {} - /@libp2p/logger@2.1.1: - resolution: {integrity: sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/logger@2.1.1': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@multiformats/multiaddr': 12.2.1 @@ -3602,59 +9828,41 @@ packages: multiformats: 11.0.2 transitivePeerDependencies: - supports-color - dev: false - /@libp2p/peer-id@2.0.4: - resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@libp2p/peer-id@2.0.4': dependencies: '@libp2p/interface-peer-id': 2.0.2 '@libp2p/interfaces': 3.3.2 multiformats: 11.0.2 uint8arrays: 4.0.10 - dev: false - /@lit-labs/ssr-dom-shim@1.2.0: - resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} - dev: false + '@lit-labs/ssr-dom-shim@1.2.0': {} - /@lit/reactive-element@1.6.3: - resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + '@lit/reactive-element@1.6.3': dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - dev: false - /@lit/reactive-element@2.0.4: - resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + '@lit/reactive-element@2.0.4': dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - dev: false - /@metamask/eth-json-rpc-provider@1.0.1: - resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} - engines: {node: '>=14.0.0'} + '@metamask/eth-json-rpc-provider@1.0.1': dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/json-rpc-engine@7.3.3: - resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} - engines: {node: '>=16.0.0'} + '@metamask/json-rpc-engine@7.3.3': dependencies: '@metamask/rpc-errors': 6.2.1 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.4.0 transitivePeerDependencies: - supports-color - dev: false - /@metamask/json-rpc-middleware-stream@6.0.2: - resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} - engines: {node: '>=16.0.0'} + '@metamask/json-rpc-middleware-stream@6.0.2': dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.1 @@ -3662,25 +9870,17 @@ packages: readable-stream: 3.6.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/object-multiplex@2.0.0: - resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} - engines: {node: ^16.20 || ^18.16 || >=20} + '@metamask/object-multiplex@2.0.0': dependencies: once: 1.4.0 readable-stream: 3.6.2 - dev: false - /@metamask/onboarding@1.0.1: - resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + '@metamask/onboarding@1.0.1': dependencies: bowser: 2.11.0 - dev: false - /@metamask/providers@15.0.0: - resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} - engines: {node: ^18.18 || >=20} + '@metamask/providers@15.0.0': dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/json-rpc-middleware-stream': 6.0.2 @@ -3696,35 +9896,19 @@ packages: webextension-polyfill: 0.10.0 transitivePeerDependencies: - supports-color - dev: false - /@metamask/rpc-errors@6.2.1: - resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} - engines: {node: '>=16.0.0'} + '@metamask/rpc-errors@6.2.1': dependencies: '@metamask/utils': 8.4.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color - dev: false - /@metamask/safe-event-emitter@2.0.0: - resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} - dev: false + '@metamask/safe-event-emitter@2.0.0': {} - /@metamask/safe-event-emitter@3.1.1: - resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} - engines: {node: '>=12.0.0'} - dev: false + '@metamask/safe-event-emitter@3.1.1': {} - /@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): - resolution: {integrity: sha512-WMf9oJa3rAimjCXMAaaRVFPD0Q6dfZR0r9037KCpD5g9SlVh+TeMISfdQCEKAyhXP3d4CGxmp/Kib8C3mn2YLw==} - peerDependencies: - cross-fetch: ^3.1.5 - eciesjs: ^0.3.16 - eventemitter2: ^6.4.7 - readable-stream: ^3.6.2 - socket.io-client: ^4.5.1 + '@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5)': dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0 @@ -3738,47 +9922,16 @@ packages: uuid: 8.3.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1): - resolution: {integrity: sha512-Wygc0dgr1PwIA/Sg9WW9QWAsQr4G2GV6iveXt2xw8VKW/9cRORWqYukH1NZLr71hBKzi9AKYBU54Tk5Dfg41zg==} - peerDependencies: - i18next: 22.5.1 - react: ^18.2.0 - react-dom: ^18.2.0 - react-i18next: ^13.2.2 - react-native: '*' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - react-native: - optional: true + '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)': dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 react: 18.3.1 react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.74.1)(react@18.3.1) react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) - dev: false - /@metamask/sdk@0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1): - resolution: {integrity: sha512-ZT8e4BrcWrm44apLb412WR0fDsgeaS8UlI1c0wKRUPu1w/UntpXuUVO+EaY8WDlnOPAiAsjyqWKey64/DfvbXQ==} - peerDependencies: - '@react-native-async-storage/async-storage': ^1.19.6 - react: ^18.2.0 - react-dom: ^18.2.0 - react-native: '*' - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true - react: - optional: true - react-dom: - optional: true - react-native: - optional: true + '@metamask/sdk@0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 @@ -3811,11 +9964,8 @@ packages: - rollup - supports-color - utf-8-validate - dev: false - /@metamask/utils@5.0.2: - resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} - engines: {node: '>=14.0.0'} + '@metamask/utils@5.0.2': dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 @@ -3824,11 +9974,8 @@ packages: superstruct: 1.0.4 transitivePeerDependencies: - supports-color - dev: false - /@metamask/utils@8.4.0: - resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} - engines: {node: '>=16.0.0'} + '@metamask/utils@8.4.0': dependencies: '@ethereumjs/tx': 4.2.0 '@noble/hashes': 1.4.0 @@ -3841,30 +9988,24 @@ packages: uuid: 9.0.1 transitivePeerDependencies: - supports-color - dev: false - /@moralisweb3/api-utils@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-xG2rEvv7MEGiLwz6YkHeWnRToP9xiwtzdesgpYcbOMfEhO0dOF5NMhey9F4NS3l4p+ei8liLQAmFRUehyojbWg==} + '@moralisweb3/api-utils@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/common-core': 2.26.1(debug@4.3.4) '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) axios: 1.6.8(debug@4.3.4) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/aptos-api@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-LClXb88MtC8kAkuWgJ5PlvjBnY9wCd3fBMa+FbOvIlKgMDHjNizDzFCVAX/f6lF884/XBzpxq0QyoFcvYx0RFQ==} + '@moralisweb3/aptos-api@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) '@moralisweb3/common-core': 2.26.1(debug@4.3.4) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/auth@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-PUIm67hPOI0ThyUJ851Bq0i1Y0A7cFSR7wILwM0Ye1W1IOoygAI2Ls7Zyy9HK9aRUV3J1Sqek49azjNfmXQ0QA==} + '@moralisweb3/auth@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) @@ -3874,19 +10015,15 @@ packages: '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-aptos-utils@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-02c4zgksBzlM9zZgeDLvPQ/+yDjVAWRnkbXP2Hnow19PSIqUJb/RkHclqm3+623tH4JJwgbqei3wrQZigNQAWg==} + '@moralisweb3/common-aptos-utils@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/common-core': 2.26.1(debug@4.3.4) '@noble/hashes': 1.4.0 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-auth-utils@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-g2FrjZKqjxitd4aDbJjdIwLXDYYa8a3sMRL31jynyblIfz2OTXJ5YZj86n8aENY+1t8BOcLwixzsRHRDiHnbog==} + '@moralisweb3/common-auth-utils@2.26.1(debug@4.3.4)': dependencies: '@ethersproject/abi': 5.7.0 '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) @@ -3896,18 +10033,14 @@ packages: '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-core@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-HbsSjBZuicoKyJxlWNl0YV6YolGQ0bWT2jbPwMGvLrtbeeRTT3rE2IrIh9nSe7z9pWVvXfU3t+4oXkisY+8dJg==} + '@moralisweb3/common-core@2.26.1(debug@4.3.4)': dependencies: axios: 1.6.8(debug@4.3.4) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-evm-utils@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-Gr4qJmGhr5ixSeysg4CjZBZexeTzHqPYPE1YuaGAmD4dmW2OMpN2mRwXYnJmKNtML45XfTy4bCfeoTER7xBCWA==} + '@moralisweb3/common-evm-utils@2.26.1(debug@4.3.4)': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -3915,10 +10048,8 @@ packages: '@moralisweb3/common-core': 2.26.1(debug@4.3.4) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-sol-utils@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-68VaTLpTvWljzaWsb7bHd7IOPHraT5pqfQG/rs5pOZQ846/nWe8bWzCT619aKAiS54WEhkg3lgqE58mISiTmCw==} + '@moralisweb3/common-sol-utils@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/common-core': 2.26.1(debug@4.3.4) bn.js: 5.2.1 @@ -3926,10 +10057,8 @@ packages: buffer: 6.0.3 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/common-streams-utils@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-dhUrGoeBW1xfokQNRhr7AfejEBA/jOwIp3uyaw19M1eQcw0v+ekhgWvglSEDp0Fp3AouZFUAgkX1pOz/BziuCw==} + '@moralisweb3/common-streams-utils@2.26.1(debug@4.3.4)': dependencies: '@ethersproject/abi': 5.7.0 '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) @@ -3938,34 +10067,26 @@ packages: '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - dev: false - /@moralisweb3/evm-api@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-1A92tQsM/K9wMVpciziPmy8s258en+KN9CIIBNj+6AqXS+yjvd6Fbh//0ZGpKmsBu862ULfb8EnrmeYQBoSEbw==} + '@moralisweb3/evm-api@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) '@moralisweb3/common-core': 2.26.1(debug@4.3.4) '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/sol-api@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-Wvpg8soLyb5DRR2R/v3ociFVI4I4EH1SsCU7Ah53tfmX/gDl5qs9FFdOMR/gYhS0vZXFN0f2jW+6I9ml1A9bDw==} + '@moralisweb3/sol-api@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) '@moralisweb3/common-core': 2.26.1(debug@4.3.4) '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) transitivePeerDependencies: - debug - dev: false - /@moralisweb3/streams-typings@1.0.7: - resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} - dev: false + '@moralisweb3/streams-typings@1.0.7': {} - /@moralisweb3/streams@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-YyF3w8jKYw06ihKSi7LsG2L7FmOXDZarufQdYFhFFlNflprJG+ENorAp8NX9CfSoPzbLkF5NTDug22lehNqWTA==} + '@moralisweb3/streams@2.26.1(debug@4.3.4)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -3980,19 +10101,15 @@ packages: web3-eth-abi: 1.10.4 transitivePeerDependencies: - debug - dev: false - /@motionone/animation@10.17.0: - resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} + '@motionone/animation@10.17.0': dependencies: '@motionone/easing': 10.17.0 '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 tslib: 2.6.2 - dev: false - /@motionone/dom@10.17.0: - resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} + '@motionone/dom@10.17.0': dependencies: '@motionone/animation': 10.17.0 '@motionone/generators': 10.17.0 @@ -4000,52 +10117,37 @@ packages: '@motionone/utils': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 - dev: false - /@motionone/easing@10.17.0: - resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} + '@motionone/easing@10.17.0': dependencies: '@motionone/utils': 10.17.0 tslib: 2.6.2 - dev: false - /@motionone/generators@10.17.0: - resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} + '@motionone/generators@10.17.0': dependencies: '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 tslib: 2.6.2 - dev: false - /@motionone/svelte@10.16.4: - resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + '@motionone/svelte@10.16.4': dependencies: '@motionone/dom': 10.17.0 tslib: 2.6.2 - dev: false - /@motionone/types@10.17.0: - resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} - dev: false + '@motionone/types@10.17.0': {} - /@motionone/utils@10.17.0: - resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} + '@motionone/utils@10.17.0': dependencies: '@motionone/types': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 - dev: false - /@motionone/vue@10.16.4: - resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} - deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + '@motionone/vue@10.16.4': dependencies: '@motionone/dom': 10.17.0 tslib: 2.6.2 - dev: false - /@multiformats/dns@1.0.6: - resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} + '@multiformats/dns@1.0.6': dependencies: '@types/dns-packet': 5.6.5 buffer: 6.0.3 @@ -4054,17 +10156,12 @@ packages: p-queue: 8.0.1 progress-events: 1.0.0 uint8arrays: 5.0.3 - dev: false - /@multiformats/multiaddr-to-uri@9.0.8: - resolution: {integrity: sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw==} + '@multiformats/multiaddr-to-uri@9.0.8': dependencies: '@multiformats/multiaddr': 12.2.1 - dev: false - /@multiformats/multiaddr@11.6.1: - resolution: {integrity: sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@multiformats/multiaddr@11.6.1': dependencies: '@chainsafe/is-ip': 2.0.2 dns-over-http-resolver: 2.1.3 @@ -4074,10 +10171,8 @@ packages: varint: 6.0.0 transitivePeerDependencies: - supports-color - dev: false - /@multiformats/multiaddr@12.2.1: - resolution: {integrity: sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==} + '@multiformats/multiaddr@12.2.1': dependencies: '@chainsafe/is-ip': 2.0.2 '@chainsafe/netmask': 2.0.0 @@ -4086,207 +10181,94 @@ packages: multiformats: 13.1.0 uint8-varint: 2.0.4 uint8arrays: 5.0.3 - dev: false - /@noble/curves@1.2.0: - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 - /@noble/curves@1.3.0: - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + '@noble/curves@1.3.0': dependencies: '@noble/hashes': 1.3.3 - dev: false - /@noble/hashes@1.2.0: - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - dev: false + '@noble/hashes@1.2.0': {} - /@noble/hashes@1.3.2: - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} + '@noble/hashes@1.3.2': {} - /@noble/hashes@1.3.3: - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - dev: false + '@noble/hashes@1.3.3': {} - /@noble/hashes@1.4.0: - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - dev: false + '@noble/hashes@1.4.0': {} - /@noble/secp256k1@1.7.1: - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - dev: false + '@noble/secp256k1@1.7.1': {} - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - /@openzeppelin/contracts-upgradeable@4.9.6: - resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} - dev: false + '@openzeppelin/contracts-upgradeable@4.9.6': {} - /@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2): - resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} - peerDependencies: - '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2)': dependencies: '@openzeppelin/contracts': 5.0.2 - dev: false - /@openzeppelin/contracts@4.9.6: - resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} - dev: false + '@openzeppelin/contracts@4.9.6': {} - /@openzeppelin/contracts@5.0.2: - resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} - dev: false + '@openzeppelin/contracts@5.0.2': {} - /@openzeppelin/merkle-tree@1.0.6: - resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} + '@openzeppelin/merkle-tree@1.0.6': dependencies: '@ethersproject/abi': 5.7.0 ethereum-cryptography: 1.2.0 - dev: false - /@parcel/watcher-android-arm64@2.4.1: - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false + '@parcel/watcher-android-arm64@2.4.1': optional: true - /@parcel/watcher-darwin-arm64@2.4.1: - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@parcel/watcher-darwin-arm64@2.4.1': optional: true - /@parcel/watcher-darwin-x64@2.4.1: - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@parcel/watcher-darwin-x64@2.4.1': optional: true - /@parcel/watcher-freebsd-x64@2.4.1: - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false + '@parcel/watcher-freebsd-x64@2.4.1': optional: true - /@parcel/watcher-linux-arm-glibc@2.4.1: - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm-glibc@2.4.1': optional: true - /@parcel/watcher-linux-arm64-glibc@2.4.1: - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm64-glibc@2.4.1': optional: true - /@parcel/watcher-linux-arm64-musl@2.4.1: - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm64-musl@2.4.1': optional: true - /@parcel/watcher-linux-x64-glibc@2.4.1: - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-x64-glibc@2.4.1': optional: true - /@parcel/watcher-linux-x64-musl@2.4.1: - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-x64-musl@2.4.1': optional: true - /@parcel/watcher-wasm@2.4.1: - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} - engines: {node: '>= 10.0.0'} + '@parcel/watcher-wasm@2.4.1': dependencies: is-glob: 4.0.3 micromatch: 4.0.5 - dev: false - bundledDependencies: - - napi-wasm - /@parcel/watcher-win32-arm64@2.4.1: - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-arm64@2.4.1': optional: true - /@parcel/watcher-win32-ia32@2.4.1: - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-ia32@2.4.1': optional: true - /@parcel/watcher-win32-x64@2.4.1: - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-x64@2.4.1': optional: true - /@parcel/watcher@2.4.1: - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} - engines: {node: '>= 10.0.0'} + '@parcel/watcher@2.4.1': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 @@ -4305,97 +10287,54 @@ packages: '@parcel/watcher-win32-arm64': 2.4.1 '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - dev: false - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true + '@pkgjs/parseargs@0.11.0': optional: true - /@pkgr/core@0.1.1: - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true + '@pkgr/core@0.1.1': {} - /@playwright/test@1.44.0: - resolution: {integrity: sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==} - engines: {node: '>=16'} - hasBin: true + '@playwright/test@1.44.0': dependencies: playwright: 1.44.0 - dev: true - /@pnpm/config.env-replace@1.1.0: - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} - dev: true + '@pnpm/config.env-replace@1.1.0': {} - /@pnpm/network.ca-file@1.0.2: - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} + '@pnpm/network.ca-file@1.0.2': dependencies: graceful-fs: 4.2.10 - dev: true - /@pnpm/npm-conf@2.2.2: - resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} - engines: {node: '>=12'} + '@pnpm/npm-conf@2.2.2': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - dev: true - /@polka/url@1.0.0-next.25: - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - dev: true + '@polka/url@1.0.0-next.25': {} - /@protobufjs/aspromise@1.1.2: - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - dev: false + '@protobufjs/aspromise@1.1.2': {} - /@protobufjs/base64@1.1.2: - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - dev: false + '@protobufjs/base64@1.1.2': {} - /@protobufjs/codegen@2.0.4: - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - dev: false + '@protobufjs/codegen@2.0.4': {} - /@protobufjs/eventemitter@1.1.0: - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - dev: false + '@protobufjs/eventemitter@1.1.0': {} - /@protobufjs/fetch@1.1.0: - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + '@protobufjs/fetch@1.1.0': dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 - dev: false - /@protobufjs/float@1.0.2: - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - dev: false + '@protobufjs/float@1.0.2': {} - /@protobufjs/inquire@1.1.0: - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - dev: false + '@protobufjs/inquire@1.1.0': {} - /@protobufjs/path@1.1.2: - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - dev: false + '@protobufjs/path@1.1.2': {} - /@protobufjs/pool@1.1.0: - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - dev: false + '@protobufjs/pool@1.1.0': {} - /@protobufjs/utf8@1.1.0: - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - dev: false + '@protobufjs/utf8@1.1.0': {} - /@react-native-community/cli-clean@13.6.6: - resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} + '@react-native-community/cli-clean@13.6.6': dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 @@ -4403,10 +10342,8 @@ packages: fast-glob: 3.3.2 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-config@13.6.6: - resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} + '@react-native-community/cli-config@13.6.6': dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 @@ -4416,18 +10353,14 @@ packages: joi: 17.13.1 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-debugger-ui@13.6.6: - resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} + '@react-native-community/cli-debugger-ui@13.6.6': dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - dev: false - /@react-native-community/cli-doctor@13.6.6: - resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} + '@react-native-community/cli-doctor@13.6.6': dependencies: '@react-native-community/cli-config': 13.6.6 '@react-native-community/cli-platform-android': 13.6.6 @@ -4448,10 +10381,8 @@ packages: yaml: 2.4.2 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-hermes@13.6.6: - resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} + '@react-native-community/cli-hermes@13.6.6': dependencies: '@react-native-community/cli-platform-android': 13.6.6 '@react-native-community/cli-tools': 13.6.6 @@ -4459,10 +10390,8 @@ packages: hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-platform-android@13.6.6: - resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} + '@react-native-community/cli-platform-android@13.6.6': dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 @@ -4472,10 +10401,8 @@ packages: logkitty: 0.7.1 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-platform-apple@13.6.6: - resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} + '@react-native-community/cli-platform-apple@13.6.6': dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 @@ -4485,18 +10412,14 @@ packages: ora: 5.4.1 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-platform-ios@13.6.6: - resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} + '@react-native-community/cli-platform-ios@13.6.6': dependencies: '@react-native-community/cli-platform-apple': 13.6.6 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-server-api@13.6.6: - resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} + '@react-native-community/cli-server-api@13.6.6': dependencies: '@react-native-community/cli-debugger-ui': 13.6.6 '@react-native-community/cli-tools': 13.6.6 @@ -4512,10 +10435,8 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native-community/cli-tools@13.6.6: - resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} + '@react-native-community/cli-tools@13.6.6': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 @@ -4530,18 +10451,12 @@ packages: sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding - dev: false - /@react-native-community/cli-types@13.6.6: - resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} + '@react-native-community/cli-types@13.6.6': dependencies: joi: 17.13.1 - dev: false - /@react-native-community/cli@13.6.6: - resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} - engines: {node: '>=18'} - hasBin: true + '@react-native-community/cli@13.6.6': dependencies: '@react-native-community/cli-clean': 13.6.6 '@react-native-community/cli-config': 13.6.6 @@ -4565,28 +10480,17 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native/assets-registry@0.74.83: - resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} - engines: {node: '>=18'} - dev: false + '@react-native/assets-registry@0.74.83': {} - /@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} - engines: {node: '>=18'} + '@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.24.5)': dependencies: '@react-native/codegen': 0.74.83(@babel/preset-env@7.24.5) transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/babel-preset@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' + '@react-native/babel-preset@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5)': dependencies: '@babel/core': 7.24.5 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.5) @@ -4634,13 +10538,8 @@ packages: transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/codegen@0.74.83(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 + '@react-native/codegen@0.74.83(@babel/preset-env@7.24.5)': dependencies: '@babel/parser': 7.24.5 '@babel/preset-env': 7.24.5(@babel/core@7.24.5) @@ -4652,11 +10551,8 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /@react-native/community-cli-plugin@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} - engines: {node: '>=18'} + '@react-native/community-cli-plugin@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5)': dependencies: '@react-native-community/cli-server-api': 13.6.6 '@react-native-community/cli-tools': 13.6.6 @@ -4677,16 +10573,10 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native/debugger-frontend@0.74.83: - resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} - engines: {node: '>=18'} - dev: false + '@react-native/debugger-frontend@0.74.83': {} - /@react-native/dev-middleware@0.74.83: - resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} - engines: {node: '>=18'} + '@react-native/dev-middleware@0.74.83': dependencies: '@isaacs/ttlcache': 1.4.1 '@react-native/debugger-frontend': 0.74.83 @@ -4706,23 +10596,12 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native/gradle-plugin@0.74.83: - resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} - engines: {node: '>=18'} - dev: false + '@react-native/gradle-plugin@0.74.83': {} - /@react-native/js-polyfills@0.74.83: - resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} - engines: {node: '>=18'} - dev: false + '@react-native/js-polyfills@0.74.83': {} - /@react-native/metro-babel-transformer@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' + '@react-native/metro-babel-transformer@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5)': dependencies: '@babel/core': 7.24.5 '@react-native/babel-preset': 0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5) @@ -4731,32 +10610,17 @@ packages: transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/normalize-colors@0.74.83: - resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} - dev: false + '@react-native/normalize-colors@0.74.83': {} - /@react-native/virtualized-lists@0.74.83(react-native@0.74.1)(react@18.3.1): - resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.2.6 - react: '*' - react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true + '@react-native/virtualized-lists@0.74.83(react-native@0.74.1)(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) - dev: false - /@rnx-kit/chromium-edge-launcher@1.0.0: - resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} - engines: {node: '>=14.15'} + '@rnx-kit/chromium-edge-launcher@1.0.0': dependencies: '@types/node': 18.19.32 escape-string-regexp: 4.0.0 @@ -4766,138 +10630,56 @@ packages: rimraf: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /@rollup/rollup-android-arm-eabi@4.17.2: - resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true + '@rollup/rollup-android-arm-eabi@4.17.2': optional: true - /@rollup/rollup-android-arm64@4.17.2: - resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true + '@rollup/rollup-android-arm64@4.17.2': optional: true - /@rollup/rollup-darwin-arm64@4.17.2: - resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + '@rollup/rollup-darwin-arm64@4.17.2': optional: true - /@rollup/rollup-darwin-x64@4.17.2: - resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + '@rollup/rollup-darwin-x64@4.17.2': optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.17.2: - resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': optional: true - /@rollup/rollup-linux-arm-musleabihf@4.17.2: - resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-arm-musleabihf@4.17.2': optional: true - /@rollup/rollup-linux-arm64-gnu@4.17.2: - resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-arm64-gnu@4.17.2': optional: true - /@rollup/rollup-linux-arm64-musl@4.17.2: - resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-arm64-musl@4.17.2': optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.17.2: - resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': optional: true - /@rollup/rollup-linux-riscv64-gnu@4.17.2: - resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-riscv64-gnu@4.17.2': optional: true - /@rollup/rollup-linux-s390x-gnu@4.17.2: - resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-s390x-gnu@4.17.2': optional: true - /@rollup/rollup-linux-x64-gnu@4.17.2: - resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-x64-gnu@4.17.2': optional: true - /@rollup/rollup-linux-x64-musl@4.17.2: - resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + '@rollup/rollup-linux-x64-musl@4.17.2': optional: true - /@rollup/rollup-win32-arm64-msvc@4.17.2: - resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + '@rollup/rollup-win32-arm64-msvc@4.17.2': optional: true - /@rollup/rollup-win32-ia32-msvc@4.17.2: - resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true + '@rollup/rollup-win32-ia32-msvc@4.17.2': optional: true - /@rollup/rollup-win32-x64-msvc@4.17.2: - resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true - /@safe-global/safe-apps-provider@0.18.1(typescript@5.4.5): - resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + '@safe-global/safe-apps-provider@0.18.1(typescript@5.4.5)': dependencies: '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.5) events: 3.3.0 @@ -4906,10 +10688,8 @@ packages: - typescript - utf-8-validate - zod - dev: false - /@safe-global/safe-apps-sdk@8.1.0(typescript@5.4.5): - resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + '@safe-global/safe-apps-sdk@8.1.0(typescript@5.4.5)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.21.1 viem: 1.21.4(typescript@5.4.5) @@ -4918,117 +10698,77 @@ packages: - typescript - utf-8-validate - zod - dev: false - /@safe-global/safe-gateway-typescript-sdk@3.21.1: - resolution: {integrity: sha512-7nakIjcRSs6781LkizYpIfXh1DYlkUDqyALciqz/BjFU/S97sVjZdL4cuKsG9NEarytE+f6p0Qbq2Bo1aocVUA==} - engines: {node: '>=16'} - dev: false + '@safe-global/safe-gateway-typescript-sdk@3.21.1': {} - /@scure/base@1.1.6: - resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} + '@scure/base@1.1.6': {} - /@scure/bip32@1.1.5: - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 '@scure/base': 1.1.6 - dev: false - /@scure/bip32@1.3.2: - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + '@scure/bip32@1.3.2': dependencies: '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/base': 1.1.6 - /@scure/bip32@1.3.3: - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + '@scure/bip32@1.3.3': dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 '@scure/base': 1.1.6 - dev: false - /@scure/bip39@1.1.1: - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 '@scure/base': 1.1.6 - dev: false - /@scure/bip39@1.2.1: - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + '@scure/bip39@1.2.1': dependencies: '@noble/hashes': 1.3.2 '@scure/base': 1.1.6 - /@scure/bip39@1.2.2: - resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + '@scure/bip39@1.2.2': dependencies: '@noble/hashes': 1.3.3 '@scure/base': 1.1.6 - dev: false - /@sideway/address@4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false + '@sideway/formula@3.0.1': {} - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false + '@sideway/pinpoint@2.0.0': {} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.27.8': {} - /@sindresorhus/is@5.6.0: - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - dev: true + '@sindresorhus/is@5.6.0': {} - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - dev: false - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.1 - dev: false - /@socket.io/component-emitter@3.1.2: - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - dev: false + '@socket.io/component-emitter@3.1.2': {} - /@solidity-parser/parser@0.18.0: - resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} - dev: true + '@solidity-parser/parser@0.18.0': {} - /@stablelib/aead@1.0.1: - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - dev: false + '@stablelib/aead@1.0.1': {} - /@stablelib/binary@1.0.1: - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + '@stablelib/binary@1.0.1': dependencies: '@stablelib/int': 1.0.1 - dev: false - /@stablelib/bytes@1.0.1: - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} - dev: false + '@stablelib/bytes@1.0.1': {} - /@stablelib/chacha20poly1305@1.0.1: - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + '@stablelib/chacha20poly1305@1.0.1': dependencies: '@stablelib/aead': 1.0.1 '@stablelib/binary': 1.0.1 @@ -5036,123 +10776,80 @@ packages: '@stablelib/constant-time': 1.0.1 '@stablelib/poly1305': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/chacha@1.0.1: - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + '@stablelib/chacha@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/constant-time@1.0.1: - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - dev: false + '@stablelib/constant-time@1.0.1': {} - /@stablelib/ed25519@1.0.3: - resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + '@stablelib/ed25519@1.0.3': dependencies: '@stablelib/random': 1.0.2 '@stablelib/sha512': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/hash@1.0.1: - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} - dev: false + '@stablelib/hash@1.0.1': {} - /@stablelib/hkdf@1.0.1: - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + '@stablelib/hkdf@1.0.1': dependencies: '@stablelib/hash': 1.0.1 '@stablelib/hmac': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/hmac@1.0.1: - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + '@stablelib/hmac@1.0.1': dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/int@1.0.1: - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} - dev: false + '@stablelib/int@1.0.1': {} - /@stablelib/keyagreement@1.0.1: - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + '@stablelib/keyagreement@1.0.1': dependencies: '@stablelib/bytes': 1.0.1 - dev: false - /@stablelib/poly1305@1.0.1: - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + '@stablelib/poly1305@1.0.1': dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/random@1.0.2: - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + '@stablelib/random@1.0.2': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/sha256@1.0.1: - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + '@stablelib/sha256@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/sha512@1.0.1: - resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + '@stablelib/sha512@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/wipe@1.0.1: - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} - dev: false + '@stablelib/wipe@1.0.1': {} - /@stablelib/x25519@1.0.3: - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + '@stablelib/x25519@1.0.3': dependencies: '@stablelib/keyagreement': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 - dev: false - /@storybook/csf@0.0.1: - resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + '@storybook/csf@0.0.1': dependencies: lodash: 4.17.21 - dev: true - /@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7): - resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7)': dependencies: '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) import-meta-resolve: 4.1.0 - dev: true - /@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3): - resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} - engines: {node: '>=18.13'} - hasBin: true - requiresBuild: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 + '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@4.5.3) '@types/cookie': 0.6.0 @@ -5169,17 +10866,8 @@ packages: svelte: 4.2.15 tiny-glob: 0.2.9 vite: 4.5.3 - dev: true - /@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11): - resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} - engines: {node: '>=18.13'} - hasBin: true - requiresBuild: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 + '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) '@types/cookie': 0.6.0 @@ -5196,15 +10884,8 @@ packages: svelte: 4.2.15 tiny-glob: 0.2.9 vite: 5.2.11(@types/node@20.12.10) - dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3): - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@4.5.3) debug: 4.3.4 @@ -5212,15 +10893,8 @@ packages: vite: 4.5.3 transitivePeerDependencies: - supports-color - dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11): - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11)': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) debug: 4.3.4 @@ -5228,14 +10902,8 @@ packages: vite: 5.2.11(@types/node@20.12.10) transitivePeerDependencies: - supports-color - dev: true - /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@4.5.3): - resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@4.5.3)': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3) debug: 4.3.4 @@ -5248,14 +10916,8 @@ packages: vitefu: 0.2.5(vite@4.5.3) transitivePeerDependencies: - supports-color - dev: true - /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11): - resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11)': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) debug: 4.3.4 @@ -5268,194 +10930,115 @@ packages: vitefu: 0.2.5(vite@5.2.11) transitivePeerDependencies: - supports-color - dev: true - /@szmarczak/http-timer@5.0.1: - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} + '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 - dev: true - /@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.38): - resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} - peerDependencies: - postcss: ^8.2.15 + '@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.38)': dependencies: postcss: 8.4.38 postcss-nested: 5.0.6(postcss@8.4.38) - dev: true - /@ts-morph/common@0.20.0: - resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} + '@ts-morph/common@0.20.0': dependencies: fast-glob: 3.3.2 minimatch: 7.4.6 mkdirp: 2.1.6 path-browserify: 1.0.1 - dev: true - /@tsconfig/node10@1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - dev: true + '@tsconfig/node10@1.0.11': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true + '@tsconfig/node16@1.0.4': {} - /@types/bn.js@5.1.5: - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + '@types/bn.js@5.1.5': dependencies: '@types/node': 20.12.10 - dev: false - /@types/cookie@0.6.0: - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - dev: true + '@types/cookie@0.6.0': {} - /@types/debug@4.1.12: - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 - /@types/dns-packet@5.6.5: - resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} + '@types/dns-packet@5.6.5': dependencies: '@types/node': 20.12.10 - dev: false - /@types/dom-screen-wake-lock@1.0.3: - resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} - dev: false + '@types/dom-screen-wake-lock@1.0.3': {} - /@types/eslint@8.56.10: - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + '@types/eslint@8.56.10': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 - dev: true - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.5': {} - /@types/http-cache-semantics@4.0.4: - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - dev: true + '@types/http-cache-semantics@4.0.4': {} - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: false + '@types/istanbul-lib-coverage@2.0.6': {} - /@types/istanbul-lib-report@3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 - dev: false - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - dev: false - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true + '@types/json-schema@7.0.15': {} - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json5@0.0.29': {} - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: false + '@types/minimatch@3.0.5': {} - /@types/ms@0.7.34: - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/ms@0.7.34': {} - /@types/node-forge@1.3.11: - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node-forge@1.3.11': dependencies: '@types/node': 20.12.10 - dev: false - /@types/node@18.19.32: - resolution: {integrity: sha512-2bkg93YBSDKk8DLmmHnmj/Rwr18TLx7/n+I23BigFwgexUJoMHZOd8X1OFxuF/W3NN0S2W2E5sVabI5CPinNvA==} + '@types/node@18.19.32': dependencies: undici-types: 5.26.5 - dev: false - /@types/node@20.12.10: - resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} + '@types/node@20.12.10': dependencies: undici-types: 5.26.5 - /@types/object-hash@3.0.6: - resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} - dev: true + '@types/object-hash@3.0.6': {} - /@types/pbkdf2@3.1.2: - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + '@types/pbkdf2@3.1.2': dependencies: '@types/node': 20.12.10 - dev: false - /@types/pug@2.0.10: - resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - dev: true + '@types/pug@2.0.10': {} - /@types/secp256k1@4.0.6: - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + '@types/secp256k1@4.0.6': dependencies: '@types/node': 20.12.10 - dev: false - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true + '@types/semver@7.5.8': {} - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - dev: false + '@types/stack-utils@2.0.3': {} - /@types/trusted-types@2.0.7: - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - dev: false + '@types/trusted-types@2.0.7': {} - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: false + '@types/yargs-parser@21.0.3': {} - /@types/yargs@15.0.19: - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + '@types/yargs@15.0.19': dependencies: '@types/yargs-parser': 21.0.3 - dev: false - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 - dev: false - /@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) @@ -5473,17 +11056,8 @@ packages: typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 7.8.0 '@typescript-eslint/types': 7.8.0 @@ -5494,33 +11068,18 @@ packages: typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - /@typescript-eslint/scope-manager@7.8.0: - resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@7.8.0': dependencies: '@typescript-eslint/types': 7.8.0 '@typescript-eslint/visitor-keys': 7.8.0 - dev: true - /@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) @@ -5530,26 +11089,12 @@ packages: typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@typescript-eslint/types@5.62.0': {} - /@typescript-eslint/types@7.8.0: - resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true + '@typescript-eslint/types@7.8.0': {} - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 @@ -5561,16 +11106,8 @@ packages: typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5): - resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.8.0 '@typescript-eslint/visitor-keys': 7.8.0 @@ -5583,13 +11120,8 @@ packages: typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 @@ -5603,13 +11135,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 + '@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 @@ -5622,32 +11149,20 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@7.8.0: - resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@7.8.0': dependencies: '@typescript-eslint/types': 7.8.0 eslint-visitor-keys: 3.4.3 - dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true + '@ungap/structured-clone@1.2.0': {} - /@vitest/coverage-v8@1.6.0(vitest@1.6.0): - resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} - peerDependencies: - vitest: 1.6.0 + '@vitest/coverage-v8@1.6.0(vitest@1.6.0)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -5665,55 +11180,37 @@ packages: vitest: 1.6.0(jsdom@24.0.0) transitivePeerDependencies: - supports-color - dev: true - /@vitest/expect@1.6.0: - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + '@vitest/expect@1.6.0': dependencies: '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 chai: 4.4.1 - dev: true - /@vitest/runner@1.6.0: - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + '@vitest/runner@1.6.0': dependencies: '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 - dev: true - /@vitest/snapshot@1.6.0: - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + '@vitest/snapshot@1.6.0': dependencies: magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 - dev: true - /@vitest/spy@1.6.0: - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/spy@1.6.0': dependencies: tinyspy: 2.2.1 - dev: true - /@vitest/utils@1.6.0: - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 - dev: true - /@wagmi/cli@2.1.4(typescript@5.4.5): - resolution: {integrity: sha512-vamvEo/GeBjFxb5oZCvby4YZDOrK/RqD+tcWb5X0pqmJDyWbN2Mkv9DYTtVB+OtfVUzFKciN/8Vhw8luMtOJbw==} - hasBin: true - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + '@wagmi/cli@2.1.4(typescript@5.4.5)': dependencies: abitype: 0.9.10(typescript@5.4.5)(zod@3.23.6) bundle-require: 4.1.0(esbuild@0.19.12) @@ -5739,15 +11236,7 @@ packages: - bufferutil - utf-8-validate - /@wagmi/connectors@4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.10.1): - resolution: {integrity: sha512-6u/HbWlIS2MI5lxBYbsqNZIQT4sBleFt8rhzH7mJBrHH6v95LmeZZ3qZFpWdopx4bQ6maNEZOIJnCLhv7k37DQ==} - peerDependencies: - '@wagmi/core': 2.9.1 - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true + '@wagmi/connectors@4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.10.1)': dependencies: '@coinbase/wallet-sdk': 3.9.1 '@metamask/sdk': 0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1) @@ -5784,19 +11273,8 @@ packages: - uWebSockets.js - utf-8-validate - zod - dev: false - /@wagmi/core@2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1): - resolution: {integrity: sha512-VUILlj0qFmZEa9XpNsYhIaQe3jsJdFGSRSbn+xsvGBo+yZpNxQXuaLo3+ntuv1kTFdw8Qzk17fLGy2U9a0XFdA==} - peerDependencies: - '@tanstack/query-core': '>=5.0.0' - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - '@tanstack/query-core': - optional: true - typescript: - optional: true + '@wagmi/core@2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1)': dependencies: eventemitter3: 5.0.1 mipd: 0.0.5(typescript@5.4.5) @@ -5810,10 +11288,8 @@ packages: - react - utf-8-validate - zod - dev: false - /@walletconnect/core@2.11.2: - resolution: {integrity: sha512-bB4SiXX8hX3/hyBfVPC5gwZCXCl+OPj+/EDVM71iAO3TDsh78KPbrVAbDnnsbHzZVHlsMohtXX3j5XVsheN3+g==} + '@walletconnect/core@2.11.2': dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -5850,10 +11326,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/core@2.12.2: - resolution: {integrity: sha512-7Adv/b3pp9F42BkvReaaM4KS8NEvlkS7AMtwO3uF/o6aRMKtcfTJq9/jgWdKJh4RP8pPRTRFjCw6XQ/RZtT4aQ==} + '@walletconnect/core@2.12.2': dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -5890,16 +11364,12 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/environment@1.0.1: - resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/ethereum-provider@2.11.2(react@18.3.1): - resolution: {integrity: sha512-BUDqee0Uy2rCZVkW5Ao3q6Ado/3fePYnFdryVF+YL6bPhj+xQZ5OfKodl+uvs7Rwq++O5wTX2RqOTzpW7+v+Mg==} + '@walletconnect/ethereum-provider@2.11.2(react@18.3.1)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -5931,10 +11401,8 @@ packages: - react - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/ethereum-provider@2.12.2(react@18.3.1): - resolution: {integrity: sha512-vBl2zCnNm2iPaomJdr5YT16cT7aa8cH2WFs6879XPngU5i7HXS3bU6TamhyhKKl13sdIfifmCkCC+RWn5GdPMw==} + '@walletconnect/ethereum-provider@2.12.2(react@18.3.1)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -5966,25 +11434,19 @@ packages: - react - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/events@1.0.1: - resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + '@walletconnect/events@1.0.1': dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 - dev: false - /@walletconnect/heartbeat@1.2.1: - resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + '@walletconnect/heartbeat@1.2.1': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 tslib: 1.14.1 - dev: false - /@walletconnect/jsonrpc-http-connection@1.0.7: - resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} + '@walletconnect/jsonrpc-http-connection@1.0.7': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -5992,33 +11454,25 @@ packages: tslib: 1.14.1 transitivePeerDependencies: - encoding - dev: false - /@walletconnect/jsonrpc-provider@1.0.13: - resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + '@walletconnect/jsonrpc-provider@1.0.13': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 tslib: 1.14.1 - dev: false - /@walletconnect/jsonrpc-types@1.0.3: - resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + '@walletconnect/jsonrpc-types@1.0.3': dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 - dev: false - /@walletconnect/jsonrpc-utils@1.0.8: - resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + '@walletconnect/jsonrpc-utils@1.0.8': dependencies: '@walletconnect/environment': 1.0.1 '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 - dev: false - /@walletconnect/jsonrpc-ws-connection@1.0.14: - resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + '@walletconnect/jsonrpc-ws-connection@1.0.14': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -6027,15 +11481,8 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /@walletconnect/keyvaluestorage@1.1.1: - resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} - peerDependencies: - '@react-native-async-storage/async-storage': 1.x - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true + '@walletconnect/keyvaluestorage@1.1.1': dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.1 @@ -6054,26 +11501,20 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/logger@2.1.2: - resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + '@walletconnect/logger@2.1.2': dependencies: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - dev: false - /@walletconnect/modal-core@2.6.2(react@18.3.1): - resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + '@walletconnect/modal-core@2.6.2(react@18.3.1)': dependencies: valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/modal-ui@2.6.2(react@18.3.1): - resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + '@walletconnect/modal-ui@2.6.2(react@18.3.1)': dependencies: '@walletconnect/modal-core': 2.6.2(react@18.3.1) lit: 2.8.0 @@ -6082,26 +11523,20 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/modal@2.6.2(react@18.3.1): - resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + '@walletconnect/modal@2.6.2(react@18.3.1)': dependencies: '@walletconnect/modal-core': 2.6.2(react@18.3.1) '@walletconnect/modal-ui': 2.6.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/relay-api@1.0.10: - resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + '@walletconnect/relay-api@1.0.10': dependencies: '@walletconnect/jsonrpc-types': 1.0.3 - dev: false - /@walletconnect/relay-auth@1.0.4: - resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + '@walletconnect/relay-auth@1.0.4': dependencies: '@stablelib/ed25519': 1.0.3 '@stablelib/random': 1.0.2 @@ -6109,16 +11544,12 @@ packages: '@walletconnect/time': 1.0.2 tslib: 1.14.1 uint8arrays: 3.1.1 - dev: false - /@walletconnect/safe-json@1.0.2: - resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + '@walletconnect/safe-json@1.0.2': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/sign-client@2.11.2: - resolution: {integrity: sha512-MfBcuSz2GmMH+P7MrCP46mVE5qhP0ZyWA0FyIH6/WuxQ6G+MgKsGfaITqakpRPsykWOJq8tXMs3XvUPDU413OQ==} + '@walletconnect/sign-client@2.11.2': dependencies: '@walletconnect/core': 2.11.2 '@walletconnect/events': 1.0.1 @@ -6147,10 +11578,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/sign-client@2.12.2: - resolution: {integrity: sha512-cM0ualXj6nVvLqS4BDNRk+ZWR+lubcsz/IHreH+3wYrQ2sV+C0fN6ctrd7MMGZss0C0qacWCx0pm62ZBuoKvqA==} + '@walletconnect/sign-client@2.12.2': dependencies: '@walletconnect/core': 2.12.2 '@walletconnect/events': 1.0.1 @@ -6179,16 +11608,12 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/time@1.0.2: - resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + '@walletconnect/time@1.0.2': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/types@2.11.2: - resolution: {integrity: sha512-p632MFB+lJbip2cvtXPBQslpUdiw1sDtQ5y855bOlAGquay+6fZ4h1DcDePeKQDQM3P77ax2a9aNPZxV6y/h1Q==} + '@walletconnect/types@2.11.2': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -6211,10 +11636,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/types@2.12.2: - resolution: {integrity: sha512-9CmwTlPbrFTzayTL9q7xM7s3KTJkS6kYFtH2m1/fHFgALs6pIUjf1qAx1TF2E4tv7SEzLAIzU4NqgYUt2vWXTg==} + '@walletconnect/types@2.12.2': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -6237,10 +11660,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/universal-provider@2.11.2: - resolution: {integrity: sha512-cNtIn5AVoDxKAJ4PmB8m5adnf5mYQMUamEUPKMVvOPscfGtIMQEh9peKsh2AN5xcRVDbgluC01Id545evFyymw==} + '@walletconnect/universal-provider@2.11.2': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -6269,10 +11690,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/universal-provider@2.12.2: - resolution: {integrity: sha512-0k5ZgSkABopQLVhkiwl2gRGG7dAP4SWiI915pIlyN5sRvWV+qX1ALhWAmRcdv0TXWlKHDcDgPJw/q2sCSAHuMQ==} + '@walletconnect/universal-provider@2.12.2': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -6301,10 +11720,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/utils@2.11.2: - resolution: {integrity: sha512-LyfdmrnZY6dWqlF4eDrx5jpUwsB2bEPjoqR5Z6rXPiHJKUOdJt7az+mNOn5KTSOlRpd1DmozrBrWr+G9fFLYVw==} + '@walletconnect/utils@2.11.2': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -6335,10 +11752,8 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/utils@2.12.2: - resolution: {integrity: sha512-zf50HeS3SfoLv1N9GPl2IXTZ9TsXfet4usVAsZmX9P6/Xzq7d/7QakjVQCHH/Wk1O9XkcsfeoZoUhRxoMJ5uJw==} + '@walletconnect/utils@2.12.2': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -6369,30 +11784,22 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/window-getters@1.0.1: - resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + '@walletconnect/window-getters@1.0.1': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/window-metadata@1.0.1: - resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + '@walletconnect/window-metadata@1.0.1': dependencies: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 - dev: false - /@web3modal/common@4.1.11: - resolution: {integrity: sha512-zcoaixcI3dLC/D0QlhpT8MNCd717O1/3r1AemC5/9Wbk2F+YKXkzJZHmWlXoTvlTw9DH07rJzs9YTPxFyn855w==} + '@web3modal/common@4.1.11': dependencies: bignumber.js: 9.1.2 dayjs: 1.11.10 - dev: false - /@web3modal/core@4.1.11(react@18.3.1): - resolution: {integrity: sha512-e475IIWywEtgH1CCB2Pl1C/wgPu0NzAvtTMOPSGNoHsw1ID2n6j/o4CURQb2HJjOoYQjTKKVkzXa44vFh2p9xw==} + '@web3modal/core@4.1.11(react@18.3.1)': dependencies: '@web3modal/common': 4.1.11 '@web3modal/wallet': 4.1.11 @@ -6400,33 +11807,19 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@web3modal/polyfills@4.1.11: - resolution: {integrity: sha512-+aMmjGrLCKLo4gVAdWgFdOX2ZjExciSLw/YlZ01wLO8Yj3bZbCZ7sjBc9xndHOVMK0QyUzBtpCOpYMJzi+59jg==} + '@web3modal/polyfills@4.1.11': dependencies: buffer: 6.0.3 - dev: false - /@web3modal/scaffold-react@4.1.11(react@18.3.1): - resolution: {integrity: sha512-vouJHj77ZNKvR/Uyb3Hfc2UFSA4ZrrHmA0vbioCbgIh+V1rYT5XcAZDEu4AAo1qJ5NBRU1pkClVwAmQuWGY43w==} - peerDependencies: - react: '>=17' - react-dom: '>=17' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@web3modal/scaffold-react@4.1.11(react@18.3.1)': dependencies: '@web3modal/scaffold': 4.1.11(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' - dev: false - /@web3modal/scaffold-utils@4.1.11(react@18.3.1): - resolution: {integrity: sha512-nsS9yK5tp1N/VfecLLPc8H/dGJCzn0jElWjRS92VfGPhOSiEh5PIrPyCl9o6wUZsp4fH1YUsoSY2EFpPsuCWgw==} + '@web3modal/scaffold-utils@4.1.11(react@18.3.1)': dependencies: '@web3modal/core': 4.1.11(react@18.3.1) '@web3modal/polyfills': 4.1.11 @@ -6434,24 +11827,15 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@web3modal/scaffold-vue@4.1.11(react@18.3.1): - resolution: {integrity: sha512-PmIfD2TlKkZZa6V0sqwDtZ7t62BEk5JjCHd380QaZwGTbPEwS99leTWLKBTaxAPShK2p7+aj2Txss63wIXLRFg==} - peerDependencies: - vue: '>=3' - peerDependenciesMeta: - vue: - optional: true + '@web3modal/scaffold-vue@4.1.11(react@18.3.1)': dependencies: '@web3modal/scaffold': 4.1.11(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - dev: false - /@web3modal/scaffold@4.1.11(react@18.3.1): - resolution: {integrity: sha512-n8bP3cJNQxV8OD3s8bSj8QDbZvjn8a1Ui81jo2a3rIxOUAlD/cKRM8ivmNxiUdBMae8GP5CLiWtkIptmSLw40Q==} + '@web3modal/scaffold@4.1.11(react@18.3.1)': dependencies: '@web3modal/common': 4.1.11 '@web3modal/core': 4.1.11(react@18.3.1) @@ -6462,10 +11846,8 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@web3modal/siwe@4.1.11(react@18.3.1): - resolution: {integrity: sha512-gndcNA351mkAR0wUsO4dLS9CbpcFo+AQ2CUXF0Jx83DwaBStCVsX3yllfnYKh/gpVetF3B48mRUt9TTTJJ79dA==} + '@web3modal/siwe@4.1.11(react@18.3.1)': dependencies: '@web3modal/core': 4.1.11(react@18.3.1) '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) @@ -6474,31 +11856,13 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@web3modal/ui@4.1.11: - resolution: {integrity: sha512-lentHZvUpNjVasvNI8/jrVPIAV1M5zJKZ4Q4AeYwUJdEtlRon1uq10MRylmvlZAjWb98U130uJy245Fz87Th/w==} + '@web3modal/ui@4.1.11': dependencies: - lit: 3.1.0 - qrcode: 1.5.3 - dev: false - - /@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.10.1): - resolution: {integrity: sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ==} - peerDependencies: - '@wagmi/connectors': '>=4.0.0' - '@wagmi/core': '>=2.0.0' - react: '>=17' - react-dom: '>=17' - viem: '>=2.0.0' - vue: '>=3' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - vue: - optional: true + lit: 3.1.0 + qrcode: 1.5.3 + + '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.10.1)': dependencies: '@wagmi/connectors': 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.10.1) @@ -6512,244 +11876,132 @@ packages: viem: 2.10.1(typescript@5.4.5)(zod@3.23.6) transitivePeerDependencies: - '@types/react' - dev: false - /@web3modal/wallet@4.1.11: - resolution: {integrity: sha512-6eJSpNcrBxufJFEQu9+ZOMUZxPqa8438RvfYKCU9nLXwoBtweo6ecpQw2yhXDlrfG+uJZhFabtPxROabn2M8Kg==} + '@web3modal/wallet@4.1.11': dependencies: '@web3modal/polyfills': 4.1.11 zod: 3.22.4 - dev: false - /@zerodevx/svelte-toast@0.9.5(svelte@4.2.15): - resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} - peerDependencies: - svelte: ^3.57.0 || ^4.0.0 + '@zerodevx/svelte-toast@0.9.5(svelte@4.2.15)': dependencies: svelte: 4.2.15 - dev: false - /abitype@0.9.10(typescript@5.4.5)(zod@3.23.6): - resolution: {integrity: sha512-FIS7U4n7qwAT58KibwYig5iFG4K61rbhAqaQh/UWj8v1Y8mjX3F8TC9gd8cz9yT1TYel9f8nS5NO5kZp2RW0jQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + abitype@0.9.10(typescript@5.4.5)(zod@3.23.6): dependencies: typescript: 5.4.5 zod: 3.23.6 - /abitype@0.9.8(typescript@5.4.5): - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + abitype@0.9.8(typescript@5.4.5): dependencies: typescript: 5.4.5 - dev: false - /abitype@1.0.0(typescript@5.4.5)(zod@3.23.6): - resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + abitype@1.0.0(typescript@5.4.5)(zod@3.23.6): dependencies: typescript: 5.4.5 zod: 3.23.6 - /abitype@1.0.2(typescript@5.4.5): - resolution: {integrity: sha512-aFt4k2H+eiAKy/zxtnORa9iIb10BMBeWL18l8v4+QuwYEBXPxxjSB1bFZCzQmKPoj8m7j68K705l3uY+E2gAjg==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + abitype@1.0.2(typescript@5.4.5): dependencies: typescript: 5.4.5 - dev: true - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: false - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 - dev: true - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - dev: true + acorn-walk@8.3.2: {} - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.11.3: {} - /aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - dev: true + aes-js@3.0.0: {} - /agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} + agent-base@7.1.1: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + ajv@8.13.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: true - /anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - dev: false + anser@1.4.10: {} - /ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + ansi-fragments@0.2.1: dependencies: colorette: 1.4.0 slice-ansi: 2.1.0 strip-ansi: 5.2.0 - dev: false - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false + ansi-regex@4.1.1: {} - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + ansi-regex@6.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + ansi-styles@5.2.0: {} - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + ansi-styles@6.2.1: {} - /antlr4@4.13.1-patch-1: - resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} - engines: {node: '>=16'} - dev: true + antlr4@4.13.1-patch-1: {} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + any-promise@1.3.0: {} - /any-signal@3.0.1: - resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} - dev: false + any-signal@3.0.1: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - dev: false + appdirsjs@1.2.7: {} - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + arg@4.1.3: {} - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + arg@5.0.2: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: false - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true + argparse@2.0.1: {} - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.0: dependencies: dequal: 2.0.3 - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -6757,16 +12009,10 @@ packages: es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -6774,31 +12020,22 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -6808,61 +12045,32 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false + asap@2.0.6: {} - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true + assertion-error@1.1.0: {} - /ast-parents@0.0.1: - resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} - dev: true + ast-parents@0.0.1: {} - /ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} + ast-types@0.15.2: dependencies: tslib: 2.6.2 - dev: false - /astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - dev: false + astral-regex@1.0.0: {} - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true + astral-regex@2.0.0: {} - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: false + async-limiter@1.0.1: {} - /async-mutex@0.2.6: - resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + async-mutex@0.2.6: dependencies: tslib: 2.6.2 - dev: false - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + asynckit@0.4.0: {} - /atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - dev: false + atomic-sleep@1.0.0: {} - /autoprefixer@10.4.19(postcss@8.4.38): - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + autoprefixer@10.4.19(postcss@8.4.38): dependencies: browserslist: 4.23.0 caniuse-lite: 1.0.30001616 @@ -6872,39 +12080,27 @@ packages: postcss: 8.4.38 postcss-value-parser: 4.2.0 - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - /axios@1.6.8(debug@4.3.4): - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + axios@1.6.8(debug@4.3.4): dependencies: follow-redirects: 1.15.6(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + axobject-query@4.0.0: dependencies: dequal: 2.0.3 - /babel-core@7.0.0-bridge.0(@babel/core@7.24.5): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-core@7.0.0-bridge.0(@babel/core@7.24.5): dependencies: '@babel/core': 7.24.5 - dev: false - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): dependencies: '@babel/compat-data': 7.24.4 '@babel/core': 7.24.5 @@ -6912,136 +12108,90 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): dependencies: '@babel/core': 7.24.5 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) core-js-compat: 3.37.0 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): dependencies: '@babel/core': 7.24.5 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.5): - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.5): dependencies: '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) transitivePeerDependencies: - '@babel/core' - dev: false - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + base-x@3.0.9: dependencies: safe-buffer: 5.2.1 - dev: false - /base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - dev: false + base-x@4.0.0: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64-js@1.5.1: {} - /bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - dev: true + bech32@1.1.4: {} - /bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - dev: false + bignumber.js@9.1.2: {} - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + binary-extensions@2.3.0: {} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + bl@5.1.0: dependencies: buffer: 6.0.3 inherits: 2.0.4 readable-stream: 3.6.2 - /blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - dev: false + blakejs@1.2.1: {} - /blob-to-it@2.0.6: - resolution: {integrity: sha512-xveo/z3QNilIJgCZAjzvx2uWWVHE4JzOy7eMp45zkuBsmwZMgjfhn2h/+BsZPaByVFa3u1W/OBUleNiqgMtVpQ==} + blob-to-it@2.0.6: dependencies: browser-readablestream-to-it: 2.0.7 - dev: false - /bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - dev: false + bn.js@4.11.6: {} - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + bn.js@4.12.0: {} - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + bn.js@5.2.1: {} - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false + bowser@2.11.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + brorand@1.1.0: {} - /browser-readablestream-to-it@1.0.3: - resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} - dev: false + browser-readablestream-to-it@1.0.3: {} - /browser-readablestream-to-it@2.0.7: - resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} - dev: false + browser-readablestream-to-it@2.0.7: {} - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + browserify-aes@1.2.0: dependencies: buffer-xor: 1.0.3 cipher-base: 1.0.4 @@ -7049,123 +12199,74 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.23.0: dependencies: caniuse-lite: 1.0.30001616 electron-to-chromium: 1.4.757 node-releases: 2.0.14 update-browserslist-db: 1.0.15(browserslist@4.23.0) - /bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + bs58@4.0.1: dependencies: base-x: 3.0.9 - dev: false - /bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + bs58@5.0.0: dependencies: base-x: 4.0.0 - dev: false - /bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + bs58check@2.1.2: dependencies: bs58: 4.0.1 create-hash: 1.2.0 safe-buffer: 5.2.1 - dev: false - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bser@2.1.1: dependencies: node-int64: 0.4.0 - dev: false - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true + buffer-crc32@0.2.13: {} - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false + buffer-from@1.1.2: {} - /buffer-reverse@1.0.1: - resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} - dev: false + buffer-reverse@1.0.1: {} - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: false + buffer-xor@1.0.3: {} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - requiresBuild: true + bufferutil@4.0.8: dependencies: node-gyp-build: 4.8.1 - dev: false - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true + builtin-modules@3.3.0: {} - /builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + builtins@5.1.0: dependencies: semver: 7.6.0 - dev: true - /bundle-require@4.1.0(esbuild@0.19.12): - resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' + bundle-require@4.1.0(esbuild@0.19.12): dependencies: esbuild: 0.19.12 load-tsconfig: 0.2.5 - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: false + bytes@3.0.0: {} - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true + bytes@3.1.2: {} - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} + cac@6.7.14: {} - /cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - dev: true + cacheable-lookup@7.0.0: {} - /cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} + cacheable-request@10.2.14: dependencies: '@types/http-cache-semantics': 4.0.4 get-stream: 6.0.1 @@ -7174,11 +12275,8 @@ packages: mimic-response: 4.0.0 normalize-url: 8.0.1 responselike: 3.0.0 - dev: true - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -7186,68 +12284,40 @@ packages: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - /caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} + caller-callsite@2.0.0: dependencies: callsites: 2.0.0 - dev: false - /caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} + caller-path@2.0.0: dependencies: caller-callsite: 2.0.0 - dev: false - /callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - dev: false + callsites@2.0.0: {} - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + callsites@3.1.0: {} - /camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + camel-case@4.1.2: dependencies: pascal-case: 3.1.2 tslib: 2.6.2 - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + camelcase-css@2.0.1: {} - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false + camelcase@5.3.1: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false + camelcase@6.3.0: {} - /caniuse-lite@1.0.30001616: - resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==} + caniuse-lite@1.0.30001616: {} - /capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + capital-case@1.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 upper-case-first: 2.0.2 - /cborg@4.2.0: - resolution: {integrity: sha512-q6cFW5m3KxfP/9xGI3yGLaC1l5DP6DWM9IvjiJojnIwohL5CQDl02EXViPV852mOfQo+7PJGPN01MI87vFGzyA==} - hasBin: true - dev: false + cborg@4.2.0: {} - /chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + chai@4.4.1: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -7256,29 +12326,21 @@ packages: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 - dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chalk@5.3.0: {} - /change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + change-case@4.1.2: dependencies: camel-case: 4.1.2 capital-case: 1.0.4 @@ -7293,15 +12355,11 @@ packages: snake-case: 3.0.4 tslib: 2.6.2 - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 - dev: true - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -7313,23 +12371,9 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chromatic@11.3.1: - resolution: {integrity: sha512-ATAfVEn84NARTIxdiGQ8QywWg3BPM/+6stVD1stSKCO7lQLEKFyGcI+PhBBDt+ZgNcgsEsg5fo3E2dQNt01W6g==} - hasBin: true - peerDependencies: - '@chromatic-com/cypress': ^0.*.* || ^1.0.0 - '@chromatic-com/playwright': ^0.*.* || ^1.0.0 - peerDependenciesMeta: - '@chromatic-com/cypress': - optional: true - '@chromatic-com/playwright': - optional: true - dev: true + chromatic@11.3.1: {} - /chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} - hasBin: true + chrome-launcher@0.15.2: dependencies: '@types/node': 20.12.10 escape-string-regexp: 4.0.0 @@ -7337,33 +12381,21 @@ packages: lighthouse-logger: 1.4.2 transitivePeerDependencies: - supports-color - dev: false - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false + ci-info@2.0.0: {} - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: false + ci-info@3.9.0: {} - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + cipher-base@1.0.4: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + citty@0.1.6: dependencies: consola: 3.2.3 - dev: false - /cli-color@2.0.4: - resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} - engines: {node: '>=0.10'} + cli-color@2.0.4: dependencies: d: 1.0.2 es5-ext: 0.10.64 @@ -7371,73 +12403,47 @@ packages: memoizee: 0.4.15 timers-ext: 0.1.7 - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - dev: false - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + cli-spinners@2.9.2: {} - /clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} + clipboardy@4.0.0: dependencies: execa: 8.0.1 is-wsl: 3.1.0 is64bit: 2.0.0 - dev: false - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: false - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: false - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + clone@1.0.4: {} - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false + clsx@1.2.1: {} - /code-block-writer@12.0.0: - resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} - dev: true + code-block-writer@12.0.0: {} - /code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 @@ -7445,88 +12451,53 @@ packages: estree-walker: 3.0.3 periscopic: 3.1.0 - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-string@1.9.1: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - dev: false - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} + color@4.2.3: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - dev: false - /colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: false + colorette@1.4.0: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - /command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + command-exists@1.2.9: {} - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: true + commander@10.0.1: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + commander@4.1.1: {} - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true + commander@8.3.0: {} - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: false + commander@9.5.0: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false + commondir@1.0.1: {} - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + compressible@2.0.18: dependencies: mime-db: 1.52.0 - dev: false - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} + compression@1.7.4: dependencies: accepts: 1.3.8 bytes: 3.0.0 @@ -7537,24 +12508,17 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: false - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + confbox@0.1.7: {} - /config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + config-chain@1.1.13: dependencies: ini: 1.3.8 proto-list: 1.2.4 - dev: true - /connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} + connect@3.7.0: dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -7562,89 +12526,55 @@ packages: utils-merge: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - dev: false + consola@3.2.3: {} - /constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + constant-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 upper-case: 2.0.2 - /convert-csv-to-json@2.46.0: - resolution: {integrity: sha512-Q7PjRjhECa5nBUEGbsKXvB8YaygVUesF/sYnaoCPTWoiwJEDCbLd2CcFDE1y80Q347IaTQukCQSCP2fR5IW+5g==} + convert-csv-to-json@2.46.0: {} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + convert-source-map@2.0.0: {} - /cookie-es@1.1.0: - resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} - dev: false + cookie-es@1.1.0: {} - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - dev: true + cookie@0.6.0: {} - /core-js-compat@3.37.0: - resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} + core-js-compat@3.37.0: dependencies: browserslist: 4.23.0 - dev: false - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false + core-util-is@1.0.3: {} - /cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} + cosmiconfig@5.2.1: dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 - dev: false - /cosmiconfig@8.3.6(typescript@5.4.5): - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true + cosmiconfig@8.3.6(typescript@5.4.5): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.4.5 - dev: true - /crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: false + crc-32@1.2.2: {} - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + create-hash@1.2.0: dependencies: cipher-base: 1.0.4 inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 - dev: false - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-hmac@1.1.7: dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 @@ -7652,98 +12582,62 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: false - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true + create-require@1.1.1: {} - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + cross-fetch@3.1.8: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - /cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - dev: false - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true - dev: false + crossws@0.2.4: {} - /crypto-js@3.3.0: - resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} - dev: true + crypto-js@3.3.0: {} - /crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - dev: false + crypto-js@4.2.0: {} - /css-selector-tokenizer@0.8.0: - resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} + css-selector-tokenizer@0.8.0: dependencies: cssesc: 3.0.0 fastparse: 1.1.2 - /css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@2.3.1: dependencies: mdn-data: 2.0.30 source-map-js: 1.2.0 - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + cssesc@3.0.0: {} - /cssstyle@4.0.1: - resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} - engines: {node: '>=18'} + cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 - dev: true - /culori@3.3.0: - resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + culori@3.3.0: {} - /d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} + d@1.0.2: dependencies: es5-ext: 0.10.64 type: 2.7.2 - /dag-jose@4.0.0: - resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} + dag-jose@4.0.0: dependencies: '@ipld/dag-cbor': 9.2.0 multiformats: 11.0.2 - dev: false - /daisyui@4.10.5(postcss@8.4.38): - resolution: {integrity: sha512-eOFUo5yEg0WV+3VK2C/+/XN1WH/OhFV4HzrMG5etAzcnB2hPg3aoR7gF1ZUpIv+b5MglLuAVMgub0rv660EgZg==} - engines: {node: '>=16.9.0'} + daisyui@4.10.5(postcss@8.4.38): dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 @@ -7752,250 +12646,132 @@ packages: transitivePeerDependencies: - postcss - /data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - dev: true - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + date-fns@2.30.0: dependencies: '@babel/runtime': 7.24.5 - dev: false - /dayjs@1.10.1: - resolution: {integrity: sha512-2xg7JrHQeLBQFkvTumLoy62x1siyeocc98QwjtURgvRqOPYmAkMUdmSjrOA+MlmL6QMQn5MUhDf6rNZNuPc1LQ==} - dev: false + dayjs@1.10.1: {} - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: false + dayjs@1.11.10: {} - /dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - dev: false + dayjs@1.11.11: {} - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@2.6.9: dependencies: ms: 2.0.0 - dev: false - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7: dependencies: ms: 2.1.3 - dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4: dependencies: ms: 2.1.2 - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false + decamelize@1.2.0: {} - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true + decimal.js@10.4.3: {} - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false + decode-uri-component@0.2.2: {} - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - dev: true - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dedent@0.7.0: {} - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} + deep-eql@4.1.3: dependencies: type-detect: 4.0.8 - dev: true - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true + deep-extend@0.6.0: {} - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + deepmerge@4.3.1: {} - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - /defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true + defer-to-connect@2.0.1: {} - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: false + define-lazy-prop@2.0.0: {} - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: true - /defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - dev: false + defu@6.1.4: {} - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + delayed-stream@1.0.0: {} - /denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - dev: false + denodeify@1.2.1: {} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + depd@2.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + dequal@2.0.3: {} - /destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - dev: false + destr@2.0.3: {} - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: false + destroy@1.2.0: {} - /detect-browser@5.3.0: - resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} - dev: false + detect-browser@5.3.0: {} - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true + detect-indent@6.1.0: {} - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: false + detect-libc@1.0.3: {} - /detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - dev: false + detect-libc@2.0.3: {} - /devalue@5.0.0: - resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} - dev: true + devalue@5.0.0: {} - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + didyoumean@1.2.2: {} - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + diff-sequences@29.6.3: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true + diff@4.0.2: {} - /dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - dev: false + dijkstrajs@1.0.3: {} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dlv@1.1.3: {} - /dns-over-http-resolver@2.1.3: - resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} + dns-over-http-resolver@2.1.3: dependencies: debug: 4.3.4 native-fetch: 4.0.2(undici@5.28.4) @@ -8003,79 +12779,54 @@ packages: undici: 5.28.4 transitivePeerDependencies: - supports-color - dev: false - /dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} + dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 - dev: false - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dot-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 - /dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} + dotenv-expand@10.0.0: {} - /dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} + dotenv@16.4.5: {} - /duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} + + duplexify@4.1.3: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 - dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + eastasianwidth@0.2.0: {} - /eciesjs@0.3.18: - resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==} + eciesjs@0.3.18: dependencies: '@types/secp256k1': 4.0.6 futoin-hkdf: 1.5.3 secp256k1: 5.0.0 - dev: false - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: false + ee-first@1.1.1: {} - /electron-fetch@1.9.1: - resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} - engines: {node: '>=6'} + electron-fetch@1.9.1: dependencies: encoding: 0.1.13 - dev: false - /electron-to-chromium@1.4.757: - resolution: {integrity: sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw==} + electron-to-chromium@1.4.757: {} - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.5.4: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -8085,8 +12836,7 @@ packages: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /elliptic@6.5.5: - resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + elliptic@6.5.5: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -8095,37 +12845,24 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emoji-regex@9.2.2: {} - /encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - dev: false + encode-utf8@1.0.3: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: false + encodeurl@1.0.2: {} - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 - dev: false - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - dev: false - /engine.io-client@6.5.3: - resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} + engine.io-client@6.5.3: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 @@ -8136,50 +12873,29 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /engine.io-parser@5.2.2: - resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} - engines: {node: '>=10.0.0'} - dev: false + engine.io-parser@5.2.2: {} - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true + entities@4.5.0: {} - /envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - dev: false + envinfo@7.13.0: {} - /err-code@3.0.1: - resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} - dev: false + err-code@3.0.1: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 - dev: false - /errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} + errorhandler@1.5.1: dependencies: accepts: 1.3.8 escape-html: 1.0.3 - dev: false - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -8227,90 +12943,61 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + es-errors@1.3.0: {} - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.2 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - requiresBuild: true + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 es6-symbol: 3.1.4 esniff: 2.0.1 next-tick: 1.1.0 - /es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + es6-iterator@2.0.3: dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-symbol: 3.1.4 - /es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - dev: true + es6-promise@3.3.1: {} - /es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} + es6-symbol@3.1.4: dependencies: d: 1.0.2 ext: 1.7.0 - /es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + es6-weak-map@2.0.3: dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-iterator: 2.0.3 es6-symbol: 3.1.4 - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.18.20: optionalDependencies: '@esbuild/android-arm': 0.18.20 '@esbuild/android-arm64': 0.18.20 @@ -8334,13 +13021,8 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - dev: true - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 '@esbuild/android-arm': 0.19.12 @@ -8366,11 +13048,7 @@ packages: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - /esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.20.2: optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 '@esbuild/android-arm': 0.20.2 @@ -8395,93 +13073,42 @@ packages: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 - dev: true - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} + escalade@3.1.2: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: false + escape-string-regexp@2.0.0: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + escape-string-regexp@4.0.0: {} - /eslint-compat-utils@0.5.0(eslint@8.57.0): - resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' + eslint-compat-utils@0.5.0(eslint@8.57.0): dependencies: eslint: 8.57.0 semver: 7.6.0 - dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0): - resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) eslint-plugin-promise: 6.1.1(eslint@8.57.0) - dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 @@ -8489,40 +13116,21 @@ packages: eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-es-x@7.6.0(eslint@8.57.0): - resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' + eslint-plugin-es-x@7.6.0(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 eslint: 8.57.0 eslint-compat-utils: 0.5.0(eslint@8.57.0) - dev: true - /eslint-plugin-es@3.0.1(eslint@8.57.0): - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' + eslint-plugin-es@3.0.1(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0): dependencies: '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 @@ -8547,13 +13155,8 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-n@16.6.2(eslint@8.57.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: '>=7.0.0' + eslint-plugin-n@16.6.2(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) builtins: 5.1.0 @@ -8567,13 +13170,8 @@ packages: minimatch: 3.1.2 resolve: 1.22.8 semver: 7.6.0 - dev: true - /eslint-plugin-node@11.1.0(eslint@8.57.0): - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' + eslint-plugin-node@11.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-plugin-es: 3.0.1(eslint@8.57.0) @@ -8582,51 +13180,24 @@ packages: minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 - dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): dependencies: eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 - dev: true - /eslint-plugin-promise@6.1.1(eslint@8.57.0): - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint-plugin-promise@6.1.1(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): - resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} - peerDependencies: - eslint: '>=5.0.0' + eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} - engines: {node: '>= 18'} - peerDependencies: - eslint: '>=6' + eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.4.5): dependencies: '@storybook/csf': 0.0.1 '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) @@ -8636,17 +13207,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /eslint-plugin-svelte@2.38.0(eslint@8.57.0)(svelte@4.2.15): - resolution: {integrity: sha512-IwwxhHzitx3dr0/xo0z4jjDlb2AAHBPKt+juMyKKGTLlKi1rZfA4qixMwnveU20/JTHyipM6keX4Vr7LZFYc9g==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 - peerDependenciesMeta: - svelte: - optional: true + eslint-plugin-svelte@2.38.0(eslint@8.57.0)(svelte@4.2.15): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 @@ -8665,45 +13227,26 @@ packages: transitivePeerDependencies: - supports-color - ts-node - dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} + eslint-utils@2.1.0: dependencies: eslint-visitor-keys: 1.3.0 - dev: true - /eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true + eslint-visitor-keys@1.3.0: {} - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 @@ -8745,80 +13288,47 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - dev: true + esm-env@1.0.0: {} - /esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} + esniff@2.0.1: dependencies: d: 1.0.2 es5-ext: 0.10.64 event-emitter: 0.3.5 type: 2.7.2 - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: false + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + estraverse@5.3.0: {} - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@2.0.2: {} - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.5 - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + esutils@2.0.3: {} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: false + etag@1.8.1: {} - /eth-block-tracker@7.1.0: - resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} - engines: {node: '>=14.0.0'} + eth-block-tracker@7.1.0: dependencies: '@metamask/eth-json-rpc-provider': 1.0.1 '@metamask/safe-event-emitter': 3.1.1 @@ -8827,47 +13337,33 @@ packages: pify: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /eth-json-rpc-filters@6.0.1: - resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} - engines: {node: '>=14.0.0'} + eth-json-rpc-filters@6.0.1: dependencies: '@metamask/safe-event-emitter': 3.1.1 async-mutex: 0.2.6 eth-query: 2.1.2 json-rpc-engine: 6.1.0 pify: 5.0.0 - dev: false - /eth-query@2.1.2: - resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + eth-query@2.1.2: dependencies: json-rpc-random-id: 1.0.1 xtend: 4.0.2 - dev: false - /eth-rpc-errors@4.0.3: - resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + eth-rpc-errors@4.0.3: dependencies: fast-safe-stringify: 2.1.1 - dev: false - /ethereum-address@0.0.4: - resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} - engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} + ethereum-address@0.0.4: dependencies: crypto-js: 3.3.0 - dev: true - /ethereum-bloom-filters@1.1.0: - resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} + ethereum-bloom-filters@1.1.0: dependencies: '@noble/hashes': 1.4.0 - dev: false - /ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + ethereum-cryptography@0.1.3: dependencies: '@types/pbkdf2': 3.1.2 '@types/secp256k1': 4.0.6 @@ -8884,39 +13380,30 @@ packages: scrypt-js: 3.0.1 secp256k1: 4.0.3 setimmediate: 1.0.5 - dev: false - /ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + ethereum-cryptography@1.2.0: dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 - dev: false - /ethereum-cryptography@2.1.3: - resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + ethereum-cryptography@2.1.3: dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 '@scure/bip32': 1.3.3 '@scure/bip39': 1.2.2 - dev: false - /ethereumjs-util@7.1.5: - resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} - engines: {node: '>=10.0.0'} + ethereumjs-util@7.1.5: dependencies: '@types/bn.js': 5.1.5 bn.js: 5.2.1 create-hash: 1.2.0 ethereum-cryptography: 0.1.3 rlp: 2.2.7 - dev: false - /ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + ethers@5.7.2: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -8951,50 +13438,31 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: true - /ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} + ethjs-unit@0.1.6: dependencies: bn.js: 4.11.6 number-to-bn: 1.7.0 - dev: false - /event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + event-emitter@0.3.5: dependencies: d: 1.0.2 es5-ext: 0.10.64 - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /eventemitter2@6.4.9: - resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} - dev: false + eventemitter2@6.4.9: {} - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: false + eventemitter3@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + events@3.3.0: {} - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + evp_bytestokey@1.0.3: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 - dev: false - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -9005,11 +13473,8 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: false - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + execa@8.0.1: dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -9021,33 +13486,22 @@ packages: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - /ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + ext@1.7.0: dependencies: type: 2.7.2 - /extension-port-stream@3.0.0: - resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} - engines: {node: '>=12.0.0'} + extension-port-stream@3.0.0: dependencies: readable-stream: 3.6.2 webextension-polyfill: 0.10.0 - dev: false - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-diff@1.3.0: {} - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false + fast-fifo@1.3.2: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -9055,70 +13509,41 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - dev: false + fast-redact@3.5.0: {} - /fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - dev: false + fast-safe-stringify@2.1.1: {} - /fast-xml-parser@4.3.6: - resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} - hasBin: true + fast-xml-parser@4.3.6: dependencies: strnum: 1.0.5 - dev: false - /fastparse@1.1.2: - resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} + fastparse@1.1.2: {} - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.17.1: dependencies: reusify: 1.0.4 - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: false - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - dev: true - /filesize@10.1.1: - resolution: {integrity: sha512-L0cdwZrKlwZQkMSFnCflJ6J2Y+5egO/p3vgRSDQGxQt++QbUZe5gMbRO6kg6gzwQDPvq2Fk9AmoxUNfZ5gdqaQ==} - engines: {node: '>= 10.4.0'} - dev: true + filesize@10.1.1: {} - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - /filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - dev: false + filter-obj@1.1.0: {} - /finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} + finalhandler@1.1.2: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -9129,192 +13554,117 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} + find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - dev: false - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} + find-up@3.0.0: dependencies: locate-path: 3.0.0 - dev: false - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: false - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-up@6.3.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@3.2.0: dependencies: flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 - dev: true - /flat@4.1.1: - resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} - hasBin: true + flat@4.1.1: dependencies: is-buffer: 2.0.5 - dev: true - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true + flatted@3.3.1: {} - /flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - dev: false + flow-enums-runtime@0.0.6: {} - /flow-parser@0.235.1: - resolution: {integrity: sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==} - engines: {node: '>=0.4.0'} - dev: false + flow-parser@0.235.1: {} - /follow-redirects@1.15.6(debug@4.3.4): - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true + follow-redirects@1.15.6(debug@4.3.4): dependencies: debug: 4.3.4 - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - dev: true + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: {} - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc: {} + + form-data-encoder@2.1.4: {} + + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@4.3.7: {} - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: false + fresh@0.5.2: {} - /fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true + fsevents@2.3.2: optional: true - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /futoin-hkdf@1.5.3: - resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} - engines: {node: '>=8'} - dev: false + futoin-hkdf@1.5.3: {} - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false + get-caller-file@2.0.5: {} - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true + get-func-name@2.0.2: {} - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -9322,53 +13672,33 @@ packages: has-symbols: 1.0.3 hasown: 2.0.2 - /get-iterator@1.0.2: - resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} - dev: false + get-iterator@1.0.2: {} - /get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - dev: false + get-port-please@3.1.2: {} - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + get-stream@6.0.1: {} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} + get-stream@8.0.1: {} - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.7.4: - resolution: {integrity: sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ==} + get-tsconfig@4.7.4: dependencies: resolve-pkg-maps: 1.0.0 - dev: true - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - /glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + glob@10.3.12: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 @@ -9376,8 +13706,7 @@ packages: minipass: 7.1.0 path-scurry: 1.10.2 - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -9386,42 +13715,28 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + globals@11.12.0: {} - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.0.1 - dev: true - /globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + globalyzer@0.1.0: {} - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -9429,11 +13744,8 @@ packages: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 - dev: true - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globby@13.2.2: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.2 @@ -9441,17 +13753,13 @@ packages: merge2: 1.4.1 slash: 4.0.0 - /globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + globrex@0.1.2: {} - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - /got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} - engines: {node: '>=14.16'} + got@12.6.1: dependencies: '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 @@ -9464,21 +13772,14 @@ packages: lowercase-keys: 3.0.0 p-cancelable: 3.0.0 responselike: 3.0.0 - dev: true - /graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true + graceful-fs@4.2.10: {} - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /h3@1.11.1: - resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + h3@1.11.1: dependencies: cookie-es: 1.1.0 crossws: 0.2.4 @@ -9492,132 +13793,84 @@ packages: unenv: 1.9.0 transitivePeerDependencies: - uWebSockets.js - dev: false - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} + hash-base@3.1.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 - dev: false - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hash.js@1.1.7: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - /hashlru@2.3.0: - resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} - dev: false + hashlru@2.3.0: {} - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - /header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + header-case@2.0.4: dependencies: capital-case: 1.0.4 tslib: 2.6.2 - /hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - dev: false + hermes-estree@0.19.1: {} - /hermes-estree@0.20.1: - resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} - dev: false + hermes-estree@0.20.1: {} - /hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + hermes-parser@0.19.1: dependencies: hermes-estree: 0.19.1 - dev: false - /hermes-parser@0.20.1: - resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} + hermes-parser@0.20.1: dependencies: hermes-estree: 0.20.1 - dev: false - /hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} + hermes-profile-transformer@0.0.6: dependencies: source-map: 0.7.4 - dev: false - /hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - dev: false + hey-listen@1.0.8: {} - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 - dev: true - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-escaper@2.0.2: {} - /html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 - dev: false - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: true + http-cache-semantics@4.1.1: {} - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -9625,181 +13878,113 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false + http-shutdown@1.2.2: {} - /http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} + http2-wrapper@2.2.1: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - dev: true - /https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} - engines: {node: '>= 14'} + https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: false + human-signals@2.1.0: {} - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} + human-signals@5.0.0: {} - /i18next-browser-languagedetector@7.1.0: - resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + i18next-browser-languagedetector@7.1.0: dependencies: '@babel/runtime': 7.24.5 - dev: false - /i18next@22.5.1: - resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} + i18next@22.5.1: dependencies: '@babel/runtime': 7.24.5 - dev: false - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - dev: true - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - /idb-keyval@6.2.1: - resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} - dev: false + idb-keyval@6.2.1: {} - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ieee754@1.2.1: {} - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} + ignore@5.3.1: {} - /image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true + image-size@1.1.1: dependencies: queue: 6.0.2 - dev: false - /import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} + import-fresh@2.0.0: dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 - dev: false - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - /import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - dev: true + import-meta-resolve@4.1.0: {} - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + imurmurhash@0.1.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true + ini@1.3.8: {} - /interface-datastore@7.0.4: - resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + interface-datastore@7.0.4: dependencies: interface-store: 3.0.4 nanoid: 4.0.2 uint8arrays: 4.0.10 - dev: false - /interface-datastore@8.2.11: - resolution: {integrity: sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA==} + interface-datastore@8.2.11: dependencies: interface-store: 5.1.8 uint8arrays: 5.0.3 - dev: false - /interface-store@3.0.4: - resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + interface-store@3.0.4: {} - /interface-store@5.1.8: - resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} - dev: false + interface-store@5.1.8: {} - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 - dev: true - /intl-messageformat@10.5.12: - resolution: {integrity: sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg==} + intl-messageformat@10.5.12: dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.6 tslib: 2.6.2 - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: false - /ipfs-core-types@0.14.1: - resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + ipfs-core-types@0.14.1: dependencies: '@ipld/dag-pb': 4.1.0 '@libp2p/interface-keychain': 2.0.5 @@ -9813,12 +13998,8 @@ packages: multiformats: 11.0.2 transitivePeerDependencies: - supports-color - dev: false - /ipfs-core-utils@0.18.1: - resolution: {integrity: sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + ipfs-core-utils@0.18.1: dependencies: '@libp2p/logger': 2.1.1 '@multiformats/multiaddr': 11.6.1 @@ -9843,12 +14024,8 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /ipfs-http-client@60.0.1: - resolution: {integrity: sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - deprecated: js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details + ipfs-http-client@60.0.1: dependencies: '@ipld/dag-cbor': 9.2.0 '@ipld/dag-json': 10.2.0 @@ -9872,19 +14049,13 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /ipfs-unixfs@9.0.1: - resolution: {integrity: sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + ipfs-unixfs@9.0.1: dependencies: err-code: 3.0.1 protobufjs: 7.2.6 - dev: false - /ipfs-utils@9.0.14: - resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + ipfs-utils@9.0.14: dependencies: any-signal: 3.0.1 browser-readablestream-to-it: 1.0.3 @@ -9904,418 +14075,229 @@ packages: stream-to-it: 0.2.4 transitivePeerDependencies: - encoding - dev: false - /iron-webcrypto@1.1.1: - resolution: {integrity: sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg==} - dev: false + iron-webcrypto@1.1.1: {} - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: false - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.2.1: {} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false + is-arrayish@0.3.2: {} - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: true + is-buffer@2.0.5: {} - /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} + is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 - dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + is-callable@1.2.7: {} - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.13.1: dependencies: hasown: 2.0.2 - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - dev: false + is-directory@0.3.1: {} - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false + is-docker@2.2.1: {} - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: false + is-docker@3.0.0: {} - /is-electron@2.2.2: - resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} - dev: false + is-electron@2.2.2: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false + is-fullwidth-code-point@2.0.0: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 - dev: false - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - dev: false + is-hex-prefixed@1.0.0: {} - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 - dev: false - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false + is-interactive@1.0.0: {} - /is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} + is-interactive@2.0.0: {} - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.3: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false + is-plain-obj@2.1.0: {} - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 - dev: false - /is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true + is-potential-custom-element-name@1.0.1: {} - /is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-promise@2.2.2: {} - /is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + is-reference@3.0.2: dependencies: '@types/estree': 1.0.5 - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false + is-stream@2.0.1: {} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@3.0.0: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: false + is-unicode-supported@0.1.0: {} - /is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} + is-unicode-supported@1.3.0: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: false + is-wsl@1.1.0: {} - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 - dev: false - /is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - dev: false - /is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} + is64bit@2.0.0: dependencies: system-architecture: 0.1.0 - dev: false - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false + isarray@1.0.0: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - dev: true + isexe@3.1.1: {} - /iso-url@1.2.1: - resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} - engines: {node: '>=12'} - dev: false + iso-url@1.2.1: {} - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: false + isobject@3.0.1: {} - /isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + isomorphic-unfetch@3.1.0: dependencies: node-fetch: 2.7.0 unfetch: 4.2.0 transitivePeerDependencies: - encoding - dev: false - /isows@1.0.3(ws@8.13.0): - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} - peerDependencies: - ws: '*' + isows@1.0.3(ws@8.13.0): dependencies: ws: 8.13.0 - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.2: {} - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@5.0.4: - resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} - engines: {node: '>=10'} + istanbul-lib-source-maps@5.0.4: dependencies: '@jridgewell/trace-mapping': 0.3.25 debug: 4.3.4 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - dev: true - /it-all@1.0.6: - resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} - dev: false + it-all@1.0.6: {} - /it-all@2.0.1: - resolution: {integrity: sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-all@2.0.1: {} - /it-first@2.0.1: - resolution: {integrity: sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-first@2.0.1: {} - /it-glob@1.0.2: - resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} + it-glob@1.0.2: dependencies: '@types/minimatch': 3.0.5 minimatch: 3.1.2 - dev: false - /it-last@2.0.1: - resolution: {integrity: sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-last@2.0.1: {} - /it-map@2.0.1: - resolution: {integrity: sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-map@2.0.1: {} - /it-peekable@2.0.1: - resolution: {integrity: sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-peekable@2.0.1: {} - /it-pushable@3.2.3: - resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} + it-pushable@3.2.3: dependencies: p-defer: 4.0.1 - dev: false - /it-stream-types@1.0.5: - resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-stream-types@1.0.5: {} - /it-stream-types@2.0.1: - resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + it-stream-types@2.0.1: {} - /it-to-stream@1.0.0: - resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} + it-to-stream@1.0.0: dependencies: buffer: 6.0.3 fast-fifo: 1.3.2 @@ -10323,19 +14305,14 @@ packages: p-defer: 3.0.0 p-fifo: 1.0.0 readable-stream: 3.6.2 - dev: false - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -10343,16 +14320,10 @@ packages: '@types/node': 20.12.10 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: false - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: false + jest-get-type@29.6.3: {} - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 @@ -10363,20 +14334,14 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - dev: false - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.10 jest-util: 29.7.0 - dev: false - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.10 @@ -10384,11 +14349,8 @@ packages: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: false - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -10396,70 +14358,44 @@ packages: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 - dev: false - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.7.0: dependencies: '@types/node': 20.12.10 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: false - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true + jiti@1.21.0: {} - /joi@17.13.1: - resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} + joi@17.13.1: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - dev: false - /js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + js-sha3@0.8.0: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - dev: true + js-tokens@9.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: false - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - /jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - dev: false + jsc-android@250231.0.0: {} - /jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - dev: false + jsc-safe-url@0.2.4: {} - /jscodeshift@0.14.0(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 + jscodeshift@0.14.0(@babel/preset-env@7.24.5): dependencies: '@babel/core': 7.24.5 '@babel/parser': 7.24.5 @@ -10483,16 +14419,8 @@ packages: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color - dev: false - /jsdom@24.0.0: - resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true + jsdom@24.0.0: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -10519,193 +14447,95 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: true - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: false + jsesc@0.5.0: {} - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true + jsesc@2.5.2: {} - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false + json-parse-better-errors@1.0.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + json-parse-even-better-errors@2.3.1: {} - /json-rpc-engine@6.1.0: - resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} - engines: {node: '>=10.0.0'} + json-rpc-engine@6.1.0: dependencies: '@metamask/safe-event-emitter': 2.0.0 eth-rpc-errors: 4.0.3 - dev: false - /json-rpc-random-id@1.0.1: - resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} - dev: false + json-rpc-random-id@1.0.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true + json-schema-traverse@1.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + json5@2.2.3: {} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: false - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.1.0: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - /keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - requiresBuild: true + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.8.1 readable-stream: 3.6.2 - dev: false - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 - dev: true - /keyvaluestorage-interface@1.0.0: - resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} - dev: false + keyvaluestorage-interface@1.0.0: {} - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false + kind-of@6.0.3: {} - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: false + kleur@3.0.3: {} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true + kleur@4.1.5: {} - /known-css-properties@0.30.0: - resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} - dev: true + known-css-properties@0.30.0: {} - /latest-version@7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} - engines: {node: '>=14.16'} + latest-version@7.0.0: dependencies: package-json: 8.1.1 - dev: true - /lefthook-darwin-arm64@1.6.10: - resolution: {integrity: sha512-Hh11OkoKG7FEOByS1dcgNV7ETq45VmwBbw0VPTiBznyfOG4k+pi0fIdc1qbmbxvYqNE0r420QR/Q3bimaa4Kxg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true + lefthook-darwin-arm64@1.6.10: optional: true - /lefthook-darwin-x64@1.6.10: - resolution: {integrity: sha512-FiOB0t5OBcQ8OnG/LSdfUYj736SJdlLjWuOZ4wTlJ7EUrHditieap6VNAxwMmFVyQN0X2ZwKWytwY35y+Hflhw==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true + lefthook-darwin-x64@1.6.10: optional: true - /lefthook-freebsd-arm64@1.6.10: - resolution: {integrity: sha512-IxGgS3RrNwk3Kr83o5SQhGxqppQi7fu2t//nsp6ocgnJeStrTtXZJOrel2VohzrFxpzQdJVXBGgUGLXtY8t8qw==} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true + lefthook-freebsd-arm64@1.6.10: optional: true - /lefthook-freebsd-x64@1.6.10: - resolution: {integrity: sha512-sFSe+dGLa4iBblWAhAGTP9moarcbFtFAH6aaCeyqSX51O6p9VPdGjqNtcE8aGbGAk4lO6v1ScRjk5ogMSinJwQ==} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true + lefthook-freebsd-x64@1.6.10: optional: true - /lefthook-linux-arm64@1.6.10: - resolution: {integrity: sha512-fXnKiNdRIW+FRvc1keVrvWX5EqIhVFfPjcy+PbsKdxiWRXgjtidi6LPmQ8eosH0DC9PxZ0mpdCMf40FHEZLbQA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true + lefthook-linux-arm64@1.6.10: optional: true - /lefthook-linux-x64@1.6.10: - resolution: {integrity: sha512-bm6l2GOFnmYreZxmHb47QeOiFAItttOOxvCEX1okIRD7JbUC+lGC9evW5GJv/ltjZBoTDYEtQAUa+BpHTGuY2A==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + lefthook-linux-x64@1.6.10: optional: true - /lefthook-windows-arm64@1.6.10: - resolution: {integrity: sha512-pFxT8KbOMzGxj6cz4glHYwQSNC7XCuy9RDqIO0AxPlpATsCpapkF4ngDxBT1iFv2VhdeweMa7RXUDsMAGQA4Qw==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true + lefthook-windows-arm64@1.6.10: optional: true - /lefthook-windows-x64@1.6.10: - resolution: {integrity: sha512-fcDnUSTv95AdLvm0NIrn3jBWXuRq8SlbDDjkkB5OHLiSmjz4eOr6wyD7xceDp33zZgZmWFzHebJngxxcIaUuHw==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true + lefthook-windows-x64@1.6.10: optional: true - /lefthook@1.6.10: - resolution: {integrity: sha512-HeVjsDCrHLe9htQHbLuQJu2YdLK6Tl5bh36fOpmXqckEXTI0BDR0Y5JYc7G5Inj4YXQsc51a9dUDZMeniSnSag==} - hasBin: true - requiresBuild: true + lefthook@1.6.10: optionalDependencies: lefthook-darwin-arm64: 1.6.10 lefthook-darwin-x64: 1.6.10 @@ -10715,44 +14545,28 @@ packages: lefthook-linux-x64: 1.6.10 lefthook-windows-arm64: 1.6.10 lefthook-windows-x64: 1.6.10 - dev: true - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: false + leven@3.1.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 marky: 1.2.5 transitivePeerDependencies: - supports-color - dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@2.1.0: {} - /lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} + lilconfig@3.1.1: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} - hasBin: true + listhen@1.7.2: dependencies: '@parcel/watcher': 2.4.1 '@parcel/watcher-wasm': 2.4.1 @@ -10774,251 +14588,163 @@ packages: uqr: 0.1.2 transitivePeerDependencies: - uWebSockets.js - dev: false - /lit-element@3.3.3: - resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + lit-element@3.3.3: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 - dev: false - /lit-element@4.0.5: - resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==} + lit-element@4.0.5: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 lit-html: 3.1.3 - dev: false - /lit-html@2.8.0: - resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + lit-html@2.8.0: dependencies: '@types/trusted-types': 2.0.7 - dev: false - /lit-html@3.1.3: - resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==} + lit-html@3.1.3: dependencies: '@types/trusted-types': 2.0.7 - dev: false - /lit@2.8.0: - resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + lit@2.8.0: dependencies: '@lit/reactive-element': 1.6.3 lit-element: 3.3.3 lit-html: 2.8.0 - dev: false - /lit@3.1.0: - resolution: {integrity: sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==} + lit@3.1.0: dependencies: '@lit/reactive-element': 2.0.4 lit-element: 4.0.5 lit-html: 3.1.3 - dev: false - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + load-tsconfig@0.2.5: {} - /local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} + local-pkg@0.5.0: dependencies: mlly: 1.7.0 pkg-types: 1.1.0 - dev: true - /locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + locate-character@3.0.0: {} - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} + locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - dev: false - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: false - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@7.2.0: dependencies: p-locate: 6.0.0 - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: false + lodash.debounce@4.0.8: {} - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false + lodash.isequal@4.5.0: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - dev: false + lodash.throttle@4.1.1: {} - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true + lodash.truncate@4.4.2: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true + lodash@4.17.21: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: false - /log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} + log-symbols@5.1.0: dependencies: chalk: 5.3.0 is-unicode-supported: 1.3.0 - /logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true + logkitty@0.7.1: dependencies: ansi-fragments: 0.2.1 dayjs: 1.11.11 yargs: 15.4.1 - dev: false - /lokijs@1.5.12: - resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} - dev: true + lokijs@1.5.12: {} - /long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - dev: false + long@5.2.3: {} - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@2.3.7: dependencies: get-func-name: 2.0.2 - dev: true - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lower-case@2.0.2: dependencies: tslib: 2.6.2 - /lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + lowercase-keys@3.0.0: {} - /lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} + lru-cache@10.2.2: {} - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + lru-queue@0.1.0: dependencies: es5-ext: 0.10.64 - /magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /magicast@0.3.4: - resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + magicast@0.3.4: dependencies: '@babel/parser': 7.24.5 '@babel/types': 7.24.5 source-map-js: 1.2.0 - dev: true - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} + make-dir@2.1.0: dependencies: pify: 4.0.1 semver: 5.7.2 - dev: false - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + make-dir@4.0.0: dependencies: semver: 7.6.0 - dev: true - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + make-error@1.3.6: {} - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - dev: false - /marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - dev: false + marky@1.2.5: {} - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + md5.js@1.3.5: dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.0.30: {} - /memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - dev: false + memoize-one@5.2.1: {} - /memoizee@0.4.15: - resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + memoizee@0.4.15: dependencies: d: 1.0.2 es5-ext: 0.10.64 @@ -11029,63 +14755,40 @@ packages: next-tick: 1.1.0 timers-ext: 0.1.7 - /memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: true + memorystream@0.3.1: {} - /merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} + merge-options@3.0.4: dependencies: is-plain-obj: 2.1.0 - dev: false - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /merkletreejs@0.3.11: - resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} - engines: {node: '>= 7.6.0'} + merkletreejs@0.3.11: dependencies: bignumber.js: 9.1.2 buffer-reverse: 1.0.1 crypto-js: 4.2.0 treeify: 1.1.0 web3-utils: 1.10.4 - dev: false - /metro-babel-transformer@0.80.9: - resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} - engines: {node: '>=18'} + metro-babel-transformer@0.80.9: dependencies: '@babel/core': 7.24.5 hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /metro-cache-key@0.80.9: - resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} - engines: {node: '>=18'} - dev: false + metro-cache-key@0.80.9: {} - /metro-cache@0.80.9: - resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} - engines: {node: '>=18'} + metro-cache@0.80.9: dependencies: metro-core: 0.80.9 rimraf: 3.0.2 - dev: false - /metro-config@0.80.9: - resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} - engines: {node: '>=18'} + metro-config@0.80.9: dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 @@ -11099,19 +14802,13 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /metro-core@0.80.9: - resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} - engines: {node: '>=18'} + metro-core@0.80.9: dependencies: lodash.throttle: 4.1.1 metro-resolver: 0.80.9 - dev: false - /metro-file-map@0.80.9: - resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} - engines: {node: '>=18'} + metro-file-map@0.80.9: dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -11127,30 +14824,18 @@ packages: fsevents: 2.3.3 transitivePeerDependencies: - supports-color - dev: false - /metro-minify-terser@0.80.9: - resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} - engines: {node: '>=18'} + metro-minify-terser@0.80.9: dependencies: terser: 5.31.0 - dev: false - /metro-resolver@0.80.9: - resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} - engines: {node: '>=18'} - dev: false + metro-resolver@0.80.9: {} - /metro-runtime@0.80.9: - resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} - engines: {node: '>=18'} + metro-runtime@0.80.9: dependencies: '@babel/runtime': 7.24.5 - dev: false - /metro-source-map@0.80.9: - resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} - engines: {node: '>=18'} + metro-source-map@0.80.9: dependencies: '@babel/traverse': 7.24.5 '@babel/types': 7.24.5 @@ -11162,12 +14847,8 @@ packages: vlq: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /metro-symbolicate@0.80.9: - resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} - engines: {node: '>=18'} - hasBin: true + metro-symbolicate@0.80.9: dependencies: invariant: 2.2.4 metro-source-map: 0.80.9 @@ -11177,11 +14858,8 @@ packages: vlq: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /metro-transform-plugins@0.80.9: - resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} - engines: {node: '>=18'} + metro-transform-plugins@0.80.9: dependencies: '@babel/core': 7.24.5 '@babel/generator': 7.24.5 @@ -11190,11 +14868,8 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /metro-transform-worker@0.80.9: - resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} - engines: {node: '>=18'} + metro-transform-worker@0.80.9: dependencies: '@babel/core': 7.24.5 '@babel/generator': 7.24.5 @@ -11213,12 +14888,8 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /metro@0.80.9: - resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} - engines: {node: '>=18'} - hasBin: true + metro@0.80.9: dependencies: '@babel/code-frame': 7.24.2 '@babel/core': 7.24.5 @@ -11268,120 +14939,63 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - dev: false + micro-ftch@0.3.1: {} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: false + mime@1.6.0: {} - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: false + mime@2.6.0: {} - /mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: false + mime@3.0.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mimic-fn@2.1.0: {} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} + mimic-fn@4.0.0: {} - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true + mimic-response@3.1.0: {} - /mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + mimic-response@4.0.0: {} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + min-indent@1.0.1: {} - /minidenticons@4.2.1: - resolution: {integrity: sha512-oWfFivA0lOx/V/bO/YIJbthB26lV8JXYvhnv9zM2hNd3fzsHTXQ6c6bWZPcvhD3nnOB+lQk/D9lF43BXixrN8g==} - engines: {node: '>=15.14.0'} - dev: false + minidenticons@4.2.1: {} - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimalistic-assert@1.0.1: {} - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimalistic-crypto-utils@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} + minimatch@7.4.6: dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.4: dependencies: brace-expansion: 2.0.1 - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.8: {} - /minipass@7.1.0: - resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} - engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.0: {} - /mipd@0.0.5(typescript@5.4.5): - resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + mipd@0.0.5(typescript@5.4.5): dependencies: typescript: 5.4.5 viem: 1.21.4(typescript@5.4.5) @@ -11389,36 +15003,23 @@ packages: - bufferutil - utf-8-validate - zod - dev: false - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false + mkdirp@1.0.4: {} - /mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} - engines: {node: '>=10'} - hasBin: true - dev: true + mkdirp@2.1.6: {} - /mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + mlly@1.7.0: dependencies: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.1.0 ufo: 1.5.3 - /moralis@2.26.1(debug@4.3.4): - resolution: {integrity: sha512-6aY1D/ZJwpys3H1tKhxbuRvnHXTOK07uqPrBQS2OPbCyxYjW33NFJPJXiLRXsmpDjFM+xq6vYRKrQSy5Zf4yog==} + moralis@2.26.1(debug@4.3.4): dependencies: '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) '@moralisweb3/aptos-api': 2.26.1(debug@4.3.4) @@ -11435,10 +15036,8 @@ packages: '@moralisweb3/streams-typings': 1.0.7 transitivePeerDependencies: - debug - dev: false - /motion@10.16.2: - resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + motion@10.16.2: dependencies: '@motionone/animation': 10.17.0 '@motionone/dom': 10.17.0 @@ -11446,356 +15045,201 @@ packages: '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 '@motionone/vue': 10.16.4 - dev: false - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} + mri@1.2.0: {} - /mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - dev: true + mrmime@2.0.0: {} - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false + ms@2.0.0: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /multiformats@11.0.2: - resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + multiformats@11.0.2: {} - /multiformats@12.1.3: - resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + multiformats@12.1.3: {} - /multiformats@13.1.0: - resolution: {integrity: sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==} - dev: false + multiformats@13.1.0: {} - /multiformats@9.9.0: - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - dev: false + multiformats@9.9.0: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + murky@https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d: {} + + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.7: {} - /nanoid@4.0.2: - resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} - engines: {node: ^14 || ^16 || >=18} - hasBin: true - dev: false + nanoid@4.0.2: {} - /native-fetch@3.0.0(node-fetch@2.7.0): - resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} - peerDependencies: - node-fetch: '*' + native-fetch@3.0.0(node-fetch@2.7.0): dependencies: node-fetch: 2.7.0 - dev: false - /native-fetch@4.0.2(undici@5.28.4): - resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} - peerDependencies: - undici: '*' + native-fetch@4.0.2(undici@5.28.4): dependencies: undici: 5.28.4 - dev: false - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false + negotiator@0.6.3: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false + neo-async@2.6.2: {} - /next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + next-tick@1.1.0: {} - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.6.2 - /nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - dev: false + nocache@3.0.4: {} - /node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - dev: false + node-abort-controller@3.1.1: {} - /node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - dev: false + node-addon-api@2.0.2: {} - /node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - dev: false + node-addon-api@5.1.0: {} - /node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} - dev: false + node-addon-api@7.1.0: {} - /node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} + node-dir@0.1.17: dependencies: minimatch: 3.1.2 - dev: false - /node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - dev: false + node-fetch-native@1.6.4: {} - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - /node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - dev: false + node-forge@1.3.1: {} - /node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} - hasBin: true - dev: false + node-gyp-build@4.8.1: {} - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: false + node-int64@0.4.0: {} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.14: {} - /node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - dev: false + node-stream-zip@1.15.0: {} - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} + normalize-range@0.1.2: {} - /normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} - dev: true + normalize-url@8.0.1: {} - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - dev: false - /npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 - /nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - dev: false + nullthrows@1.1.1: {} - /number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} + number-to-bn@1.7.0: dependencies: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - dev: false - /nwsapi@2.2.9: - resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} - dev: true + nwsapi@2.2.9: {} - /ob1@0.80.9: - resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} - engines: {node: '>=18'} - dev: false + ob1@0.80.9: {} - /obj-multiplex@1.0.0: - resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 readable-stream: 2.3.8 - dev: false - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + object-hash@3.0.0: {} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true + object-inspect@1.13.1: {} - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 - dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + ofetch@1.3.4: dependencies: destr: 2.0.3 node-fetch-native: 1.6.4 ufo: 1.5.3 - dev: false - /ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - dev: false + ohash@1.1.3: {} - /on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - dev: false + on-exit-leak-free@0.2.0: {} - /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 - dev: false - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - dev: false - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: false + on-headers@1.0.2: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - /open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} + open@6.4.0: dependencies: is-wsl: 1.1.0 - dev: false - /open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} + open@7.4.2: dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + optionator@0.9.4: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -11803,11 +15247,8 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 - dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -11818,11 +15259,8 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: false - /ora@6.3.1: - resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + ora@6.3.1: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 @@ -11834,284 +15272,171 @@ packages: strip-ansi: 7.1.0 wcwidth: 1.0.1 - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true + os-tmpdir@1.0.2: {} - /p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - dev: true + p-cancelable@3.0.0: {} - /p-defer@3.0.0: - resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} - engines: {node: '>=8'} - dev: false + p-defer@3.0.0: {} - /p-defer@4.0.1: - resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} - engines: {node: '>=12'} - dev: false + p-defer@4.0.1: {} - /p-fifo@1.0.0: - resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} + p-fifo@1.0.0: dependencies: fast-fifo: 1.3.2 p-defer: 3.0.0 - dev: false - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: false - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.0.0 - /p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} + p-limit@5.0.0: dependencies: yocto-queue: 1.0.0 - dev: true - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} + p-locate@3.0.0: dependencies: p-limit: 2.3.0 - dev: false - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: false - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@6.0.0: dependencies: p-limit: 4.0.0 - /p-map@7.0.2: - resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} - engines: {node: '>=18'} - dev: true + p-map@7.0.2: {} - /p-queue@8.0.1: - resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} - engines: {node: '>=18'} + p-queue@8.0.1: dependencies: eventemitter3: 5.0.1 p-timeout: 6.1.2 - dev: false - /p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} - engines: {node: '>=14.16'} - dev: false + p-timeout@6.1.2: {} - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: false + p-try@2.2.0: {} - /package-json@8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} - engines: {node: '>=14.16'} + p256-verifier#v0.1.0@https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da: {} + + package-json@8.1.1: dependencies: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 semver: 7.6.0 - dev: true - /param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + param-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.6.2 - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - /parse-duration@1.1.0: - resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} - dev: false + parse-duration@1.1.0: {} - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + parse-json@4.0.0: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: false - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - dev: true - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false + parseurl@1.3.3: {} - /pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + pascal-case@3.1.2: dependencies: no-case: 3.0.4 tslib: 2.6.2 - /path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true + path-browserify@1.0.1: {} - /path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + path-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.6.2 - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: false + path-exists@3.0.0: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + path-exists@4.0.0: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-exists@5.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + path-key@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.10.2: dependencies: lru-cache: 10.2.2 minipass: 7.1.0 - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-type@4.0.0: {} - /pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@1.1.2: {} - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true + pathval@1.1.1: {} - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} + pbkdf2@3.1.2: dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: false - /periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + periscopic@3.1.0: dependencies: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pify@2.3.0: {} - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: false + pify@3.0.0: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: false + pify@4.0.1: {} - /pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - dev: false + pify@5.0.0: {} - /pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + pino-abstract-transport@0.5.0: dependencies: duplexify: 4.1.3 split2: 4.2.0 - dev: false - /pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - dev: false + pino-std-serializers@4.0.0: {} - /pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true + pino@7.11.0: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -12124,285 +15449,153 @@ packages: safe-stable-stringify: 2.4.3 sonic-boom: 2.8.0 thread-stream: 0.15.2 - dev: false - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pirates@4.0.6: {} - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 - dev: false - /pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} + pkg-types@1.1.0: dependencies: confbox: 0.1.7 mlly: 1.7.0 pathe: 1.1.2 - /playwright-core@1.44.0: - resolution: {integrity: sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==} - engines: {node: '>=16'} - hasBin: true - dev: true + playwright-core@1.44.0: {} - /playwright@1.44.0: - resolution: {integrity: sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==} - engines: {node: '>=16'} - hasBin: true + playwright@1.44.0: dependencies: playwright-core: 1.44.0 optionalDependencies: fsevents: 2.3.2 - dev: true - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true + pluralize@8.0.0: {} - /pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} - dev: false + pngjs@5.0.0: {} - /pony-cause@2.1.11: - resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} - engines: {node: '>=12.0.0'} - dev: false + pony-cause@2.1.11: {} - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} + possible-typed-array-names@1.0.0: {} - /postcss-import@15.1.0(postcss@8.4.38): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@15.1.0(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - /postcss-import@16.1.0(postcss@8.4.38): - resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} - engines: {node: '>=18.0.0'} - peerDependencies: - postcss: ^8.0.0 + postcss-import@16.1.0(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.8 - dev: true - - /postcss-js@4.0.1(postcss@8.4.38): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.38 - - /postcss-load-config@3.1.4(postcss@8.4.38): - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.38): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.38 + + postcss-load-config@3.1.4(postcss@8.4.38): dependencies: lilconfig: 2.1.0 postcss: 8.4.38 yaml: 1.10.2 - dev: true - /postcss-load-config@4.0.2(postcss@8.4.38): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + postcss-load-config@4.0.2(postcss@8.4.38): dependencies: lilconfig: 3.1.1 postcss: 8.4.38 yaml: 2.4.2 - /postcss-nested@5.0.6(postcss@8.4.38): - resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@5.0.6(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - dev: true - /postcss-nested@6.0.1(postcss@8.4.38): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + postcss-nested@6.0.1(postcss@8.4.38): dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - /postcss-nesting@12.1.2(postcss@8.4.38): - resolution: {integrity: sha512-FUmTHGDNundodutB4PUBxt/EPuhgtpk8FJGRsBhOuy+6FnkR2A8RZWIsyyy6XmhvX2DZQQWIkvu+HB4IbJm+Ew==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.4 + postcss-nesting@12.1.2(postcss@8.4.38): dependencies: '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.16) '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) postcss: 8.4.38 postcss-selector-parser: 6.0.16 - dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.38): - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 + postcss-safe-parser@6.0.0(postcss@8.4.38): dependencies: postcss: 8.4.38 - dev: true - /postcss-scss@4.0.9(postcss@8.4.38): - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 + postcss-scss@4.0.9(postcss@8.4.38): dependencies: postcss: 8.4.38 - dev: true - /postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} + postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss-value-parser@4.2.0: {} - /postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.38: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.2.0 - /preact@10.21.0: - resolution: {integrity: sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==} - dev: false + preact@10.21.0: {} - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.15): - resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.15): dependencies: prettier: 3.2.5 svelte: 4.2.15 - dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - requiresBuild: true - dev: true + prettier@2.8.8: optional: true - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true + prettier@3.2.5: {} - /pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} + pretty-format@26.6.2: dependencies: '@jest/types': 26.6.2 ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 - dev: false - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false + process-nextick-args@2.0.1: {} - /process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - dev: false + process-warning@1.0.0: {} - /progress-events@1.0.0: - resolution: {integrity: sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - dev: false + progress-events@1.0.0: {} - /promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + promise@8.3.0: dependencies: asap: 2.0.6 - dev: false - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: false - /proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: true + proto-list@1.2.4: {} - /protobufjs@7.2.6: - resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==} - engines: {node: '>=12.0.0'} - requiresBuild: true + protobufjs@7.2.6: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -12416,206 +15609,115 @@ packages: '@protobufjs/utf8': 1.1.0 '@types/node': 20.12.10 long: 5.2.3 - dev: false - /proxy-compare@2.5.1: - resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} - dev: false + proxy-compare@2.5.1: {} - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true + psl@1.9.0: {} - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: false - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: true + punycode@2.3.1: {} - /qr-code-styling@1.6.0-rc.1: - resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + qr-code-styling@1.6.0-rc.1: dependencies: qrcode-generator: 1.4.4 - dev: false - /qrcode-generator@1.4.4: - resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} - dev: false + qrcode-generator@1.4.4: {} - /qrcode-terminal-nooctal@0.12.1: - resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} - hasBin: true - dev: false + qrcode-terminal-nooctal@0.12.1: {} - /qrcode@1.5.3: - resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} - engines: {node: '>=10.13.0'} - hasBin: true + qrcode@1.5.3: dependencies: dijkstrajs: 1.0.3 encode-utf8: 1.0.3 pngjs: 5.0.0 yargs: 15.4.1 - dev: false - /query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} + query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 - dev: false - /querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: false + querystring@0.2.1: {} - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true + querystringify@2.2.0: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-microtask@1.2.3: {} - /queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + queue@6.0.2: dependencies: inherits: 2.0.4 - dev: false - /quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false + quick-format-unescaped@4.0.4: {} - /quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true + quick-lru@5.1.1: {} - /radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - dev: false + radix3@1.1.2: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: false - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: false + range-parser@1.2.1: {} - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} + raw-body@2.5.2: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: true - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true + rc@1.2.8: dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: true - /react-confetti@6.1.0(react@18.3.1): - resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} - engines: {node: '>=10.18'} - peerDependencies: - react: ^16.3.0 || ^17.0.1 || ^18.0.0 + react-confetti@6.1.0(react@18.3.1): dependencies: react: 18.3.1 tween-functions: 1.2.0 - dev: true - /react-devtools-core@5.1.0: - resolution: {integrity: sha512-NRtLBqYVLrIY+lOa2oTpFiAhI7Hru0AUXI0tP9neCyaPPAzlZyeH0i+VZ0shIyRTJbpvyqbD/uCsewA2hpfZHw==} + react-devtools-core@5.1.0: dependencies: shell-quote: 1.8.1 ws: 7.5.9 transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1)(react@18.3.1): - resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} - peerDependencies: - i18next: '>= 23.2.3' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true + react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1)(react@18.3.1): dependencies: '@babel/runtime': 7.24.5 html-parse-stringify: 3.0.1 i18next: 22.5.1 react: 18.3.1 react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) - dev: false - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: false + react-is@17.0.2: {} - /react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@18.3.1: {} - /react-native-fetch-api@3.0.0: - resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} + react-native-fetch-api@3.0.0: dependencies: p-defer: 3.0.0 - dev: false - /react-native-webview@11.26.1(react-native@0.74.1)(react@18.3.1): - resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} - peerDependencies: - react: '*' - react-native: '*' + react-native-webview@11.26.1(react-native@0.74.1)(react@18.3.1): dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 react: 18.3.1 react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) - dev: false - /react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1): - resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@types/react': ^18.2.6 - react: 18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native-community/cli': 13.6.6 @@ -12662,36 +15764,24 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - dev: false + react-refresh@0.14.2: {} - /react-shallow-renderer@16.15.0(react@18.3.1): - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-shallow-renderer@16.15.0(react@18.3.1): dependencies: object-assign: 4.1.1 react: 18.3.1 react-is: 18.3.1 - dev: false - /react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} + react@18.3.1: dependencies: loose-envify: 1.4.0 - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-cache@1.0.0: dependencies: pify: 2.3.0 - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -12700,90 +15790,56 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - dev: false + readline@1.3.0: {} - /real-require@0.1.0: - resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} - engines: {node: '>= 12.13.0'} - dev: false + real-require@0.1.0: {} - /recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} + recast@0.21.5: dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 tslib: 2.6.2 - dev: false - /receptacle@1.3.2: - resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} + receptacle@1.3.2: dependencies: ms: 2.1.3 - dev: false - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} + regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 - dev: false - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: false + regenerate@1.4.2: {} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false + regenerator-runtime@0.13.11: {} - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: false + regenerator-runtime@0.14.1: {} - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regenerator-transform@0.15.2: dependencies: '@babel/runtime': 7.24.5 - dev: false - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true + regexpp@3.2.0: {} - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -12791,170 +15847,94 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - dev: false - /registry-auth-token@5.0.2: - resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} - engines: {node: '>=14'} + registry-auth-token@5.0.2: dependencies: '@pnpm/npm-conf': 2.2.2 - dev: true - /registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} - engines: {node: '>=12'} + registry-url@6.0.1: dependencies: rc: 1.2.8 - dev: true - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 - dev: false - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true + require-from-string@2.0.2: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: false + require-main-filename@2.0.0: {} - /requireindex@1.2.0: - resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} - engines: {node: '>=0.10.5'} - dev: true + requireindex@1.2.0: {} - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true + requires-port@1.0.0: {} - /resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true + resolve-alpn@1.2.1: {} - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - dev: false + resolve-from@3.0.0: {} - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + resolve-from@4.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true + resolve-pkg-maps@1.0.0: {} - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} + responselike@3.0.0: dependencies: lowercase-keys: 3.0.0 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: false - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - /retimer@3.0.0: - resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} - dev: false + retimer@3.0.0: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true + rimraf@2.6.3: dependencies: glob: 7.2.3 - dev: false - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true + rimraf@2.7.1: dependencies: glob: 7.2.3 - dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + ripemd160@2.0.2: dependencies: hash-base: 3.1.0 inherits: 2.0.4 - dev: false - /rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true + rlp@2.2.7: dependencies: bn.js: 5.2.1 - dev: false - /rollup-plugin-visualizer@5.12.0: - resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true + rollup-plugin-visualizer@5.12.0: dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 - dev: false - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true + rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 - dev: true - /rollup@4.17.2: - resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + rollup@4.17.2: dependencies: '@types/estree': 1.0.5 optionalDependencies: @@ -12975,128 +15955,81 @@ packages: '@rollup/rollup-win32-ia32-msvc': 4.17.2 '@rollup/rollup-win32-x64-msvc': 4.17.2 fsevents: 2.3.3 - dev: true - /rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: true + rrweb-cssom@0.6.0: {} - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} + sade@1.8.1: dependencies: mri: 1.2.0 - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - dev: false + safe-stable-stringify@2.4.3: {} - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + safer-buffer@2.1.2: {} - /sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + sander@0.5.1: dependencies: es6-promise: 3.3.1 graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 - dev: true - /saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 - dev: true - /scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + scheduler@0.24.0-canary-efb381bbf-20230505: dependencies: loose-envify: 1.4.0 - dev: false - /scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + scrypt-js@3.0.1: {} - /secp256k1@4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - requiresBuild: true + secp256k1@4.0.3: dependencies: elliptic: 6.5.5 node-addon-api: 2.0.2 node-gyp-build: 4.8.1 - dev: false - /secp256k1@5.0.0: - resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} - engines: {node: '>=14.0.0'} - requiresBuild: true + secp256k1@5.0.0: dependencies: elliptic: 6.5.5 node-addon-api: 5.1.0 node-gyp-build: 4.8.1 - dev: false - /selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - dev: false - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true + semver@5.7.2: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.0: dependencies: lru-cache: 6.0.0 - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + send@0.18.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -13113,23 +16046,16 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color - dev: false - /sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + sentence-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 upper-case-first: 2.0.2 - /serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - dev: false - - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + serialize-error@2.1.0: {} + + serve-static@1.15.0: dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -13137,19 +16063,12 @@ packages: send: 0.18.0 transitivePeerDependencies: - supports-color - dev: false - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + set-blocking@2.0.0: {} - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: true + set-cookie-parser@2.6.0: {} - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -13158,42 +16077,27 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false + setimmediate@1.0.5: {} - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + setprototypeof@1.2.0: {} - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true + sha.js@2.4.11: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 - dev: false - /sharp@0.33.3: - resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} - requiresBuild: true + sharp@0.33.3: dependencies: color: 4.2.3 detect-libc: 2.0.3 @@ -13218,97 +16122,62 @@ packages: '@img/sharp-wasm32': 0.33.3 '@img/sharp-win32-ia32': 0.33.3 '@img/sharp-win32-x64': 0.33.3 - dev: false - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: false + shell-quote@1.8.1: {} - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: true - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true + siginfo@2.0.0: {} - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@3.0.7: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + signal-exit@4.1.0: {} - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 - dev: false - /sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 - dev: true - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false + sisteransi@1.0.5: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + slash@3.0.0: {} - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} + slash@4.0.0: {} - /slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} + slice-ansi@2.1.0: dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 - dev: false - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: true - /snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.6.2 - /socket.io-client@4.7.5: - resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} - engines: {node: '>=10.0.0'} + socket.io-client@4.7.5: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 @@ -13318,22 +16187,17 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} + socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: false - /solc@0.8.24: - resolution: {integrity: sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==} - engines: {node: '>=10.0.0'} - hasBin: true + solady@https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d: {} + + solc@0.8.24: dependencies: command-exists: 1.2.9 commander: 8.3.0 @@ -13344,11 +16208,8 @@ packages: tmp: 0.0.33 transitivePeerDependencies: - debug - dev: true - /solhint@4.5.4(typescript@5.4.5): - resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} - hasBin: true + solhint@4.5.4(typescript@5.4.5): dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 @@ -13372,244 +16233,145 @@ packages: prettier: 2.8.8 transitivePeerDependencies: - typescript - dev: true - /sonic-boom@2.8.0: - resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + solidity-stringutils@https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: {} + + sonic-boom@2.8.0: dependencies: atomic-sleep: 1.0.0 - dev: false - /sorcery@0.11.0: - resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} - hasBin: true + sorcery@0.11.0: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 buffer-crc32: 0.2.13 minimist: 1.2.8 sander: 0.5.1 - dev: true - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} + source-map-js@1.2.0: {} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.5.7: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.6.1: {} - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: false + source-map@0.7.4: {} - /split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - dev: false + split-on-first@1.1.0: {} - /split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - dev: false + split2@4.2.0: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false + sprintf-js@1.0.3: {} - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - dev: false - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true + stackback@0.0.2: {} - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false + stackframe@1.3.4: {} - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 - dev: false - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false + statuses@1.5.0: {} - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + statuses@2.0.1: {} - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + std-env@3.7.0: {} - /stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + stdin-discarder@0.1.0: dependencies: bl: 5.1.0 - /stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - dev: false + stream-shift@1.0.3: {} - /stream-to-it@0.2.4: - resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + stream-to-it@0.2.4: dependencies: get-iterator: 1.0.2 - dev: false - /strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: false + strict-uri-encode@2.0.0: {} - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - dev: false - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: false + strip-final-newline@2.0.0: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} + strip-final-newline@3.0.0: {} - /strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} + strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed: 1.0.0 - dev: false - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true + strip-json-comments@2.0.1: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + strip-literal@2.1.0: dependencies: js-tokens: 9.0.0 - dev: true - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false + strnum@1.0.5: {} - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 @@ -13619,43 +16381,25 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 - /sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - dev: false + sudo-prompt@9.2.1: {} - /superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} - engines: {node: '>=14.0.0'} - dev: false + superstruct@1.0.4: {} - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /svelte-check@3.7.1(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15): - resolution: {integrity: sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + svelte-check@3.7.1(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -13676,30 +16420,16 @@ packages: - sass - stylus - sugarss - dev: true - /svelte-copy@1.4.2(svelte@4.2.15): - resolution: {integrity: sha512-Q99JvWDzB58JlbVWX2VxjHX/CQ5ayDLUGGJgL2EqU1+3c9CDOtxLrKFZx5CVN5bN/DDl62nxtazz0j3nGX1Xew==} - peerDependencies: - svelte: ^3.55.0 || ^4.0.0 + svelte-copy@1.4.2(svelte@4.2.15): dependencies: svelte: 4.2.15 - dev: true - /svelte-countdown@1.1.2: - resolution: {integrity: sha512-datUfbRtGCp+7OwIRcbW9tbIwlkN7KiJp9Mg01Na9HgSQrLG0knsD/xjaIVKPovxY8xF0yOrbPEz+bT/BS9EBQ==} + svelte-countdown@1.1.2: dependencies: dayjs: 1.10.1 - dev: false - /svelte-eslint-parser@0.35.0(svelte@4.2.15): - resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 - peerDependenciesMeta: - svelte: - optional: true + svelte-eslint-parser@0.35.0(svelte@4.2.15): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -13707,23 +16437,12 @@ packages: postcss: 8.4.38 postcss-scss: 4.0.9(postcss@8.4.38) svelte: 4.2.15 - dev: true - /svelte-hmr@0.16.0(svelte@4.2.15): - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 + svelte-hmr@0.16.0(svelte@4.2.15): dependencies: svelte: 4.2.15 - dev: true - /svelte-i18n@4.0.0(svelte@4.2.15): - resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} - engines: {node: '>= 16'} - hasBin: true - peerDependencies: - svelte: ^3 || ^4 + svelte-i18n@4.0.0(svelte@4.2.15): dependencies: cli-color: 2.0.4 deepmerge: 4.3.1 @@ -13734,43 +16453,7 @@ packages: svelte: 4.2.15 tiny-glob: 0.2.9 - /svelte-preprocess@5.1.4(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5): - resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} - engines: {node: '>= 16.0.0'} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true + svelte-preprocess@5.1.4(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5): dependencies: '@babel/core': 7.24.5 '@types/pug': 2.0.10 @@ -13781,19 +16464,12 @@ packages: strip-indent: 3.0.0 svelte: 4.2.15 typescript: 5.4.5 - dev: true - /svelte-scrolling@1.4.0(svelte@4.2.15): - resolution: {integrity: sha512-1721UrmTODAIhybCR5p/l6lQNSmuk66VgtgxdAEdQiGuYU1wCcKB/9kba0VXlxIeh5vhEaoODAOCizRRtHKQoQ==} - peerDependencies: - svelte: ^3 || ^4 + svelte-scrolling@1.4.0(svelte@4.2.15): dependencies: svelte: 4.2.15 - dev: true - /svelte@4.2.15: - resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} - engines: {node: '>=16'} + svelte@4.2.15: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 @@ -13810,45 +16486,29 @@ packages: magic-string: 0.30.10 periscopic: 3.1.0 - /symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true + symbol-tree@3.2.4: {} - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.2 - dev: true - /system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - dev: false + system-architecture@0.1.0: {} - /table@6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} - engines: {node: '>=10.0.0'} + table@6.8.2: dependencies: ajv: 8.13.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /tailwindcss-image-rendering@1.0.2: - resolution: {integrity: sha512-WC3hJd2RbHBYIqtJxwpQ5z94wUNyBrJn1eFz3J/jR7OGrQB8WYbJGvJQ9scNNVzoHEYGoNdZbUI90l9YgpBCwg==} + tailwindcss-image-rendering@1.0.2: dependencies: flat: 4.1.1 lodash: 4.17.21 - dev: true - /tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@3.4.3: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -13875,205 +16535,115 @@ packages: transitivePeerDependencies: - ts-node - /temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - dev: false + temp-dir@2.0.0: {} - /temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} + temp@0.8.4: dependencies: rimraf: 2.6.3 - dev: false - /terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} - engines: {node: '>=10'} - hasBin: true + terser@5.31.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - /thread-stream@0.15.2: - resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + thread-stream@0.15.2: dependencies: real-require: 0.1.0 - dev: false - /throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: false + throat@5.0.0: {} - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - dev: false - /timeout-abort-controller@3.0.0: - resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} + timeout-abort-controller@3.0.0: dependencies: retimer: 3.0.0 - dev: false - /timers-ext@0.1.7: - resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + timers-ext@0.1.7: dependencies: es5-ext: 0.10.64 next-tick: 1.1.0 - /tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - /tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - dev: true + tinybench@2.8.0: {} - /tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - dev: true + tinypool@0.8.4: {} - /tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - dev: true + tinyspy@2.2.1: {} - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - dev: true - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: false + tmpl@1.0.5: {} - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + toidentifier@1.0.1: {} - /totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - dev: true + totalist@3.0.1: {} - /tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 - dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@0.0.3: {} - /tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} + tr46@5.0.0: dependencies: punycode: 2.3.1 - dev: true - /treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - dev: false + treeify@1.1.0: {} - /ts-api-utils@1.3.0(typescript@5.4.5): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.3.0(typescript@5.4.5): dependencies: typescript: 5.4.5 - dev: true - /ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - dev: true + ts-dedent@2.2.0: {} - /ts-essentials@9.4.2(typescript@5.4.5): - resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} - peerDependencies: - typescript: '>=4.1.0' - peerDependenciesMeta: - typescript: - optional: true + ts-essentials@9.4.2(typescript@5.4.5): dependencies: typescript: 5.4.5 - dev: true - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-interface-checker@0.1.13: {} - /ts-morph@19.0.0: - resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} + ts-morph@19.0.0: dependencies: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 - dev: true - /ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -14090,97 +16660,56 @@ packages: typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsconfck@3.0.3(typescript@5.4.5): - resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true + tsconfck@3.0.3(typescript@5.4.5): dependencies: typescript: 5.4.5 - dev: true - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@1.14.1: {} - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.2: {} - /tsutils@3.21.0(typescript@5.4.5): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsutils@3.21.0(typescript@5.4.5): dependencies: tslib: 1.14.1 typescript: 5.4.5 - dev: true - /tween-functions@1.2.0: - resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} - dev: true + tween-functions@1.2.0: {} - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} + type-detect@4.0.8: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false + type-fest@0.7.1: {} - /type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + type@2.7.2: {} - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -14188,11 +16717,8 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -14200,168 +16726,77 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - /typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.4.5: {} - /ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + ufo@1.5.3: {} - /uint8-varint@2.0.4: - resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + uint8-varint@2.0.4: dependencies: uint8arraylist: 2.4.8 uint8arrays: 5.0.3 - dev: false - /uint8arraylist@2.4.8: - resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + uint8arraylist@2.4.8: dependencies: uint8arrays: 5.0.3 - dev: false - /uint8arrays@3.1.1: - resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + uint8arrays@3.1.1: dependencies: multiformats: 9.9.0 - dev: false - /uint8arrays@4.0.10: - resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} + uint8arrays@4.0.10: dependencies: multiformats: 12.1.3 - dev: false - /uint8arrays@5.0.3: - resolution: {integrity: sha512-6LBuKji28kHjgPJMkQ6GDaBb1lRwIhyOYq6pDGwYMoDPfImE9SkuYENVmR0yu9yGgs2clHUSY9fKDukR+AXfqQ==} + uint8arrays@5.0.3: dependencies: multiformats: 13.1.0 - dev: false - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - dev: false + uncrypto@0.1.3: {} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@5.26.5: {} - /undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} + undici@5.28.4: dependencies: '@fastify/busboy': 2.1.1 - dev: false - /unenv@1.9.0: - resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + unenv@1.9.0: dependencies: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 node-fetch-native: 1.6.4 pathe: 1.1.2 - dev: false - /unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - dev: false + unfetch@4.2.0: {} - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: false + unicode-canonical-property-names-ecmascript@2.0.0: {} - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - dev: false - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - dev: false + unicode-match-property-value-ecmascript@2.1.0: {} - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: false + unicode-property-aliases-ecmascript@2.1.0: {} - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false + universalify@0.1.2: {} - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true + universalify@0.2.0: {} - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} + universalify@2.0.1: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + unpipe@1.0.0: {} - /unstorage@1.10.2(idb-keyval@6.2.1): - resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} - peerDependencies: - '@azure/app-configuration': ^1.5.0 - '@azure/cosmos': ^4.0.0 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.0.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.17.0 - '@capacitor/preferences': ^5.0.7 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.16.0 - '@upstash/redis': ^1.28.4 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.3.2 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true + unstorage@1.10.2(idb-keyval@6.2.1): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 @@ -14376,139 +16811,77 @@ packages: ufo: 1.5.3 transitivePeerDependencies: - uWebSockets.js - dev: false - /untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true + untun@0.1.3: dependencies: citty: 0.1.6 consola: 3.2.3 pathe: 1.1.2 - dev: false - /update-browserslist-db@1.0.15(browserslist@4.23.0): - resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.15(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.0 - /upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + upper-case-first@2.0.2: dependencies: tslib: 2.6.2 - /upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + upper-case@2.0.2: dependencies: tslib: 2.6.2 - /uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - dev: false + uqr@0.1.2: {} - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.1 - dev: true - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true - /use-sync-external-store@1.2.0(react@18.3.1): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + use-sync-external-store@1.2.0(react@18.3.1): dependencies: react: 18.3.1 - dev: false - /utf-8-validate@6.0.3: - resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} - engines: {node: '>=6.14.2'} - requiresBuild: true + utf-8-validate@6.0.3: dependencies: node-gyp-build: 4.8.1 - dev: false - /utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - dev: false + utf8@3.0.0: {} - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.13 which-typed-array: 1.1.15 - dev: false - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: false + utils-merge@1.0.1: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false + uuid@8.3.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false + uuid@9.0.1: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true + v8-compile-cache-lib@3.0.1: {} - /valtio@1.11.2(react@18.3.1): - resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=16.8' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true + valtio@1.11.2(react@18.3.1): dependencies: proxy-compare: 2.5.1 react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) - dev: false - /varint@6.0.0: - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - dev: false + varint@6.0.0: {} - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false + vary@1.1.2: {} - /viem@1.21.4(typescript@5.4.5): - resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + viem@1.21.4(typescript@5.4.5): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -14523,15 +16896,8 @@ packages: - bufferutil - utf-8-validate - zod - dev: false - /viem@2.10.1(typescript@5.4.5)(zod@3.23.6): - resolution: {integrity: sha512-sfbcFdzlMHSZI+4RpqidxOqPu6xwWtmqDBWSVml2XV+n21dgQFmVRN0nHhZoyMDSo4mTSKtWwW9sHHu9vUF2mw==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + viem@2.10.1(typescript@5.4.5)(zod@3.23.6): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -14547,10 +16913,7 @@ packages: - utf-8-validate - zod - /vite-node@1.6.0(@types/node@20.12.10): - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true + vite-node@1.6.0(@types/node@20.12.10): dependencies: cac: 6.7.14 debug: 4.3.4 @@ -14566,15 +16929,8 @@ packages: - sugarss - supports-color - terser - dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@4.5.3): - resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true + vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@4.5.3): dependencies: debug: 4.3.4 globrex: 0.1.2 @@ -14583,87 +16939,26 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11): - resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} - peerDependencies: - vite: '*' - peerDependenciesMeta: - vite: - optional: true + vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11): dependencies: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.4.5) vite: 5.2.11(@types/node@20.12.10) - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /vite@4.5.3: - resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.20 - postcss: 8.4.38 - rollup: 3.29.4 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@5.2.11(@types/node@20.12.10): - resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + transitivePeerDependencies: + - supports-color + - typescript + + vite@4.5.3: + dependencies: + esbuild: 0.18.20 + postcss: 8.4.38 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + + vite@5.2.11(@types/node@20.12.10): dependencies: '@types/node': 20.12.10 esbuild: 0.20.2 @@ -14671,77 +16966,29 @@ packages: rollup: 4.17.2 optionalDependencies: fsevents: 2.3.3 - dev: true - /vitefu@0.2.5(vite@4.5.3): - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true + vitefu@0.2.5(vite@4.5.3): dependencies: vite: 4.5.3 - dev: true - /vitefu@0.2.5(vite@5.2.11): - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true + vitefu@0.2.5(vite@5.2.11): dependencies: vite: 5.2.11(@types/node@20.12.10) - dev: true - /vitest-fetch-mock@0.2.2(vitest@1.6.0): - resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} - engines: {node: '>=14.14.0'} - peerDependencies: - vitest: '>=0.16.0' + vitest-fetch-mock@0.2.2(vitest@1.6.0): dependencies: cross-fetch: 3.1.8 vitest: 1.6.0(jsdom@24.0.0) transitivePeerDependencies: - encoding - dev: true - /vitest-mock-extended@1.3.1(typescript@5.4.5)(vitest@1.6.0): - resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} - peerDependencies: - typescript: 3.x || 4.x || 5.x - vitest: '>=0.31.1' + vitest-mock-extended@1.3.1(typescript@5.4.5)(vitest@1.6.0): dependencies: ts-essentials: 9.4.2(typescript@5.4.5) typescript: 5.4.5 vitest: 1.6.0(jsdom@24.0.0) - dev: true - /vitest@1.6.0(@types/node@20.12.10): - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + vitest@1.6.0(@types/node@20.12.10): dependencies: '@types/node': 20.12.10 '@vitest/expect': 1.6.0 @@ -14772,32 +17019,8 @@ packages: - sugarss - supports-color - terser - dev: true - /vitest@1.6.0(jsdom@24.0.0): - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + vitest@1.6.0(jsdom@24.0.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -14828,46 +17051,29 @@ packages: - sugarss - supports-color - terser - dev: true - /vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - dev: false + vlq@1.0.1: {} - /void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - dev: false + void-elements@3.1.0: {} - /w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - dev: true - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: false - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - /web3-eth-abi@1.10.4: - resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} - engines: {node: '>=8.0.0'} + web3-eth-abi@1.10.4: dependencies: '@ethersproject/abi': 5.7.0 web3-utils: 1.10.4 - dev: false - /web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} + web3-utils@1.10.4: dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 @@ -14877,67 +17083,42 @@ packages: number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 - dev: false - /webextension-polyfill@0.10.0: - resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} - dev: false + webextension-polyfill@0.10.0: {} - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@3.0.1: {} - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - dev: true + webidl-conversions@7.0.0: {} - /whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - dev: true - /whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - dev: false + whatwg-fetch@3.6.20: {} - /whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - dev: true + whatwg-mimetype@4.0.0: {} - /whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} - engines: {node: '>=18'} + whatwg-url@14.0.0: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 - dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: false + which-module@2.0.1: {} - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -14945,209 +17126,89 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.2 - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true + which@4.0.0: dependencies: isexe: 3.1.1 - dev: true - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true + why-is-node-running@2.2.2: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: true - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: true + word-wrap@1.2.5: {} - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + write-file-atomic@2.4.3: dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: false - /ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@6.2.2: dependencies: async-limiter: 1.0.1 - dev: false - /ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true + ws@7.4.6: {} - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@7.5.9: {} - /ws@8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - 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 - dev: false + ws@8.11.0: {} - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - 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 + ws@8.13.0: {} - /ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} - 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 - dev: true + ws@8.17.0: {} - /xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - dev: true + xml-name-validator@5.0.0: {} - /xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true + xmlchars@2.2.0: {} - /xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} - dev: false + xmlhttprequest-ssl@2.0.0: {} - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false + xtend@4.0.2: {} - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: false + y18n@4.0.3: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false + y18n@5.0.8: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@4.0.0: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true + yaml@1.10.2: {} - /yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} - engines: {node: '>= 14'} - hasBin: true + yaml@2.4.2: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: false - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: false + yargs-parser@21.1.1: {} - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + yargs@15.4.1: dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -15160,11 +17221,8 @@ packages: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: false - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.2 @@ -15173,85 +17231,18 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: false - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true + yn@3.1.1: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + yocto-queue@0.1.0: {} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} + yocto-queue@1.0.0: {} - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: false + zod@3.22.4: {} - /zod@3.23.6: - resolution: {integrity: sha512-RTHJlZhsRbuA8Hmp/iNL7jnfc4nZishjsanDAfEY1QpDQZCahUp3xDzl+zfweE9BklxMUcgBgS1b7Lvie/ZVwA==} + zod@3.23.6: {} - /zustand@4.4.1(react@18.3.1): - resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true + zustand@4.4.1(react@18.3.1): dependencies: react: 18.3.1 use-sync-external-store: 1.2.0(react@18.3.1) - dev: false - - github.com/Arachnid/solidity-stringutils/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: - resolution: {tarball: https://codeload.github.com/Arachnid/solidity-stringutils/tar.gz/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461} - name: solidity-stringutils - version: 0.0.0 - dev: false - - github.com/Vectorized/solady/de0f336d2033d04e0f77c923d639c7fbffd48b6d: - resolution: {tarball: https://codeload.github.com/Vectorized/solady/tar.gz/de0f336d2033d04e0f77c923d639c7fbffd48b6d} - name: solady - version: 0.0.167 - dev: false - - github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} - name: ds-test - version: 1.0.0 - dev: false - - github.com/dmfxyz/murky/5feccd1253d7da820f7cccccdedf64471025455d: - resolution: {tarball: https://codeload.github.com/dmfxyz/murky/tar.gz/5feccd1253d7da820f7cccccdedf64471025455d} - name: murky - version: 0.0.0 - dev: false - - github.com/foundry-rs/forge-std/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} - name: forge-std - version: 1.7.5 - dev: false - - github.com/foundry-rs/forge-std/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc} - name: forge-std - version: 1.7.6 - dev: false - - github.com/taikoxyz/p256-verifier/6ef45b117642786b08a37b4c37c6a6ce151166da: - resolution: {tarball: https://codeload.github.com/taikoxyz/p256-verifier/tar.gz/6ef45b117642786b08a37b4c37c6a6ce151166da} - name: p256-verifier#v0.1.0 - version: 0.0.0 - dev: false From fe49ed8f058fe6e181b474055ea93ce62ebd8a27 Mon Sep 17 00:00:00 2001 From: Gavin Yu <623770278@qq.com> Date: Wed, 8 May 2024 14:55:33 +0800 Subject: [PATCH 023/100] chore(taiko-client): add idea gitignore (#17038) --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 967a0a478d9..86e934589eb 100644 --- a/.gitignore +++ b/.gitignore @@ -118,3 +118,6 @@ __pycache__/ .vscode/launch.json packages/protocol/config.js .vercel + +# Idea +.idea/ From f19cf6686eaa327f56a645a2c3290baa2e513782 Mon Sep 17 00:00:00 2001 From: Korbinian Date: Wed, 8 May 2024 15:22:10 +0200 Subject: [PATCH 024/100] feat(bridge-ui): update token dropdown (#16979) --- .../src/components/Alert/FlatAlert.svelte | 2 +- .../AddressInput/AddressInput.svelte | 2 +- .../components/DialogTabs/DialogTab.svelte | 40 ++++ .../components/DialogTabs/DialogTabs.svelte | 24 +++ .../src/components/DialogTabs/index.ts | 2 + .../bridge-ui/src/components/Icon/Icon.svelte | 2 +- .../src/components/InputBox/InputBox.svelte | 2 +- .../TokenDropdown/AddCustomERC20.svelte | 27 +-- .../TokenDropdown/DialogView.svelte | 172 ++++++++++----- .../TokenDropdown/DropdownView.svelte | 199 ++++++++++++------ .../TokenDropdown/TokenDropdown.svelte | 43 +++- .../src/components/TokenDropdown/types.ts | 9 + packages/bridge-ui/src/i18n/en.json | 5 +- .../src/libs/fee/recommendProcessingFee.ts | 12 -- packages/bridge-ui/src/styles/components.css | 5 +- 15 files changed, 388 insertions(+), 158 deletions(-) create mode 100644 packages/bridge-ui/src/components/DialogTabs/DialogTab.svelte create mode 100644 packages/bridge-ui/src/components/DialogTabs/DialogTabs.svelte create mode 100644 packages/bridge-ui/src/components/DialogTabs/index.ts create mode 100644 packages/bridge-ui/src/components/TokenDropdown/types.ts diff --git a/packages/bridge-ui/src/components/Alert/FlatAlert.svelte b/packages/bridge-ui/src/components/Alert/FlatAlert.svelte index 6fc7fd4d029..a82472fe189 100644 --- a/packages/bridge-ui/src/components/Alert/FlatAlert.svelte +++ b/packages/bridge-ui/src/components/Alert/FlatAlert.svelte @@ -30,7 +30,7 @@ info: { textClass: 'text-secondary-content', iconType: 'info-circle', - iconFillClass: 'fill-info-content', + iconFillClass: 'fill-secondary-content', }, }; diff --git a/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/AddressInput/AddressInput.svelte b/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/AddressInput/AddressInput.svelte index 92fd502b3c7..f7a8d25ce4b 100644 --- a/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/AddressInput/AddressInput.svelte +++ b/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/AddressInput/AddressInput.svelte @@ -99,7 +99,7 @@ {#if !quiet} -
    +
    {#if state === State.INVALID && ethereumAddress} {:else if state === State.TOO_SHORT && ethereumAddress} diff --git a/packages/bridge-ui/src/components/DialogTabs/DialogTab.svelte b/packages/bridge-ui/src/components/DialogTabs/DialogTab.svelte new file mode 100644 index 00000000000..9c1ab0557fe --- /dev/null +++ b/packages/bridge-ui/src/components/DialogTabs/DialogTab.svelte @@ -0,0 +1,40 @@ + + + + + diff --git a/packages/bridge-ui/src/components/DialogTabs/DialogTabs.svelte b/packages/bridge-ui/src/components/DialogTabs/DialogTabs.svelte new file mode 100644 index 00000000000..919434c01d3 --- /dev/null +++ b/packages/bridge-ui/src/components/DialogTabs/DialogTabs.svelte @@ -0,0 +1,24 @@ + + +
    + {#each tabs as tab} + setActiveTab(tab.id)}> + {tab.title} + + {/each} +
    diff --git a/packages/bridge-ui/src/components/DialogTabs/index.ts b/packages/bridge-ui/src/components/DialogTabs/index.ts new file mode 100644 index 00000000000..1db8f2a45c8 --- /dev/null +++ b/packages/bridge-ui/src/components/DialogTabs/index.ts @@ -0,0 +1,2 @@ +export { default as DialogTab } from './DialogTab.svelte'; +export { default as DialogTabs } from './DialogTabs.svelte'; diff --git a/packages/bridge-ui/src/components/Icon/Icon.svelte b/packages/bridge-ui/src/components/Icon/Icon.svelte index 95e37b2de99..87b3de139e2 100644 --- a/packages/bridge-ui/src/components/Icon/Icon.svelte +++ b/packages/bridge-ui/src/components/Icon/Icon.svelte @@ -202,7 +202,7 @@ class={fillClass} fill-rule="evenodd" clip-rule="evenodd" - d="M20,6H16V5a3,3,0,0,0-3-3H11A3,3,0,0,0,8,5V6H4A1,1,0,0,0,4,8H5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V8h1a1,1,0,0,0,0-2ZM10,5a1,1,0,0,1,1-1h2a1,1,0,0,1,1,1V6H10Zm7,14a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V8H17Z" /> + d="M6.12461 0.699951C5.06146 0.699951 4.19961 1.5618 4.19961 2.62495V2.93484C3.64291 2.98875 3.09083 3.05858 2.54381 3.14386C2.25733 3.18852 2.06129 3.45697 2.10595 3.74346C2.15061 4.02995 2.41907 4.22599 2.70556 4.18132L2.80909 4.16538L3.39814 11.5285C3.47817 12.5289 4.31339 13.2999 5.31701 13.2999H8.68206C9.68568 13.2999 10.5209 12.5289 10.6009 11.5285L11.19 4.16534L11.2938 4.18132C11.5803 4.22599 11.8488 4.02995 11.8934 3.74346C11.9381 3.45697 11.742 3.18852 11.4556 3.14386C10.9085 3.05857 10.3564 2.98874 9.79961 2.93482V2.62495C9.79961 1.5618 8.93776 0.699951 7.87461 0.699951H6.12461ZM6.99968 2.79995C7.58723 2.79995 8.17071 2.81761 8.74961 2.85244V2.62495C8.74961 2.1417 8.35786 1.74995 7.87461 1.74995H6.12461C5.64136 1.74995 5.24961 2.1417 5.24961 2.62495V2.85245C5.82856 2.81762 6.41208 2.79995 6.99968 2.79995ZM5.94903 5.40625C5.93868 5.14758 5.72059 4.94626 5.46192 4.95661C5.20324 4.96696 5.00193 5.18505 5.01228 5.44372L5.22229 10.6937C5.23263 10.9524 5.45072 11.1537 5.7094 11.1434C5.96807 11.133 6.16938 10.9149 6.15904 10.6563L5.94903 5.40625ZM8.98704 5.44372C8.99738 5.18505 8.79607 4.96696 8.5374 4.95661C8.27872 4.94627 8.06063 5.14758 8.05029 5.40625L7.84029 10.6563C7.82994 10.9149 8.03125 11.133 8.28993 11.1434C8.5486 11.1537 8.76669 10.9524 8.77704 10.6937L8.98704 5.44372Z" /> {:else if type === 'adjustments'} { - log('remove token', token); - const address = $account.address; - tokenService.removeToken(token, address as Address); - customTokens = tokenService.getTokens(address as Address); dispatch('tokenRemoved', { token }); }; @@ -155,8 +151,6 @@ ? formatUnits(customTokenWithDetails.balance, customTokenWithDetails.decimals) : 0; - $: customTokens = tokenService.getTokens($account?.address as Address); - $: disabled = state !== AddressInputState.VALID || tokenAddress === '' || tokenAddress.length !== 42; const closeModalIfClickedOutside = (e: MouseEvent) => { @@ -186,7 +180,7 @@ on:addressvalidation={onAddressValidation} bind:state onDialog /> -
    +
    {#if customTokenWithDetails} {$t('common.name')}: {customTokenWithDetails.symbol} {$t('common.balance')}: {formattedBalance} @@ -194,16 +188,12 @@ {:else if loadingTokenDetails} - {:else} -
    + {:else if state === AddressInputState.DEFAULT} + {/if}
    - - - {$t('token_dropdown.custom_token.button')} - - +
    {#if customTokens.length > 0}

    {$t('token_dropdown.imported_tokens')}

    @@ -217,10 +207,15 @@
    -
    {/each}
    + {:else} + {$t('token_dropdown.no_imported_token')} {/if} +
    + + {$t('token_dropdown.custom_token.button')} +
    diff --git a/packages/bridge-ui/src/components/TokenDropdown/DialogView.svelte b/packages/bridge-ui/src/components/TokenDropdown/DialogView.svelte index cf199d2b111..cb355971ce1 100644 --- a/packages/bridge-ui/src/components/TokenDropdown/DialogView.svelte +++ b/packages/bridge-ui/src/components/TokenDropdown/DialogView.svelte @@ -1,34 +1,49 @@ -
      - {#each tokens as t (t.symbol)} -
    • selectToken(t)} - on:keydown={getTokenKeydownHandler(t)}> -
      - - {#if symbolToIconMap[t.symbol] && !t.imported} - - - - {:else} - - - - {/if} - {t.symbol} -
      -
    • - {/each} - {#if !onlyMintable} - {#each customTokens as ct, index (index)} -
    • selectToken(ct)} - on:keydown={getTokenKeydownHandler(ct)}> -
      - - - - {truncateString(ct.symbol, 10)} -
      -
    • - {/each} -
      -
    • - -
    • - {/if} -
    - + {$t('token_dropdown.add_custom')} + + +

  • + {/if} + {/if} + + diff --git a/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte b/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte index 07ddc5a7869..5b40f1e2b81 100644 --- a/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte +++ b/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte @@ -1,4 +1,5 @@
    @@ -76,7 +105,15 @@
    - {$t('transactions.claim.steps.pre_check.chain_check')} +
    + {$t('transactions.claim.steps.pre_check.chain_check')} + +

    {$t('transactions.claim.steps.pre_check.tooltip.chain.title')}

    + + {$t('transactions.claim.steps.pre_check.tooltip.chain.description')} +
    +
    + {#if checkingPrerequisites} {:else if correctChain} @@ -86,7 +123,13 @@ {/if}
    - {$t('transactions.claim.steps.pre_check.funds_check')} +
    + {$t('transactions.claim.steps.pre_check.funds_check')} + +

    {$t('transactions.claim.steps.pre_check.tooltip.funds.title')}

    + {$t('transactions.claim.steps.pre_check.tooltip.funds.description')} +
    +
    {#if checkingPrerequisites} {:else if hasEnoughEth} @@ -95,6 +138,24 @@ {/if}
    + {#if isL2Chain(Number(tx.srcChainId))} +
    +
    + {$t('transactions.claim.steps.pre_check.quota_check')} + +

    {$t('transactions.claim.steps.pre_check.tooltip.quota.title')}

    + {$t('transactions.claim.steps.pre_check.tooltip.quota.description')} +
    +
    + {#if checkingPrerequisites} + + {:else if hasEnoughQuota} + + {:else} + + {/if} +
    + {/if}
    {#if !canContinue && !correctChain} diff --git a/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte b/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte index 644ce3e0a70..cf779ef53af 100644 --- a/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte +++ b/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte @@ -7,11 +7,11 @@ import { uid } from '$libs/util/uid'; export let position: Position = 'top'; + export let tooltipOpen = false; let tooltipId = `tooltip-${uid()}`; let tooltipClass = `block dialog-tooltip`; - export let tooltipOpen = false; - let classes = classNames('flex', $$props.class || 'relative'); + let classes = classNames('flex z-10 ', $$props.class || 'relative'); const GAP = 10; // distance between trigger element and tooltip let triggerElem: HTMLButtonElement; diff --git a/packages/bridge-ui/src/i18n/en.json b/packages/bridge-ui/src/i18n/en.json index 0a32cdb4acf..9479addf465 100644 --- a/packages/bridge-ui/src/i18n/en.json +++ b/packages/bridge-ui/src/i18n/en.json @@ -472,10 +472,25 @@ "pre_check": { "chain_check": "Connected to the correct chain", "funds_check": "Sufficient funds to claim", + "quota_check": "Sufficient daily quota", "ready": "You can continue with the claim process!", "step": "Claim step", "switch_chain": "This transaction is bridging to {chain} You need to be connected to this chain", - "title": "Requirements" + "title": "Requirements", + "tooltip": { + "chain": { + "description": "You need to be connected to the chain you want to bridge your funds to.", + "title": "What is \"Connected to the correct chain\"?" + }, + "funds": { + "description": "In order to claim the transaction yourself, you need enough funds on the destination chain. If you've kept the default processing fee, the relayer will likely claim for you soon.", + "title": "What is \"Sufficient funds to claim\"?" + }, + "quota": { + "description": "Currently there is a daily limit of how much ETH can be bridged to L1. If the quota is reached, please try again the next day.", + "title": "What is \"Sufficient daily quota\"?" + } + } }, "review": { "name": "Review", diff --git a/packages/bridge-ui/src/libs/bridge/ETHBridge.ts b/packages/bridge-ui/src/libs/bridge/ETHBridge.ts index 881b2883646..625db1d1511 100644 --- a/packages/bridge-ui/src/libs/bridge/ETHBridge.ts +++ b/packages/bridge-ui/src/libs/bridge/ETHBridge.ts @@ -56,11 +56,13 @@ export class ETHBridge extends Bridge { id: BigInt(0), // will be set in contract }; - const minGasLimit = await bridgeContract.read.getMessageMinGasLimit([0n]); - log('Min gas limit for message', minGasLimit); + if (processingFee !== 0n) { + const minGasLimit = await bridgeContract.read.getMessageMinGasLimit([0n]); + log('Min gas limit for message', minGasLimit); - const gasLimit = minGasLimit + 1; - message.gasLimit = gasLimit; + const gasLimit = minGasLimit + 1; + message.gasLimit = gasLimit; + } log('Preparing transaction with message', message); diff --git a/packages/bridge-ui/src/libs/bridge/checkBridgeQuota.ts b/packages/bridge-ui/src/libs/bridge/checkBridgeQuota.ts new file mode 100644 index 00000000000..5224d0957cd --- /dev/null +++ b/packages/bridge-ui/src/libs/bridge/checkBridgeQuota.ts @@ -0,0 +1,63 @@ +import { readContract } from '@wagmi/core'; +import { type Address, zeroAddress } from 'viem'; + +import { quotaManagerAbi } from '$abi'; +import { isL2Chain } from '$libs/chain'; +import { getLogger } from '$libs/util/logger'; +import { config } from '$libs/wagmi'; + +import { type BridgeTransaction, ContractType } from '.'; +import { getContractAddressByType } from './getContractAddressByType'; + +const log = getLogger('bridge:checkBridgeQuota'); + +export const checkBridgeQuota = async ({ + transaction, + amount, +}: { + transaction: BridgeTransaction; + tokenAddress?: Address; + amount: bigint; +}) => { + log( + 'Checking bridge quota', + transaction.canonicalTokenAddress, + amount, + isL2Chain(Number(transaction.destChainId)), + transaction.destChainId, + transaction.srcChainId, + ); + + const tokenAddress = + transaction.canonicalTokenAddress && (transaction.canonicalTokenAddress as string) !== '' + ? transaction.canonicalTokenAddress + : zeroAddress; + + if (isL2Chain(Number(transaction.destChainId))) { + // Quota only applies for transactions from L2-L1. + // So if the destination chain is an L2 chain, we can skip this check. + log('Skipping quota check for L2 chain'); + return true; + } + + const quotaManagerAddress = getContractAddressByType({ + srcChainId: Number(transaction.destChainId), + destChainId: Number(transaction.srcChainId), + contractType: ContractType.QUOTAMANAGER, + }); + + const quota = await readContract(config, { + address: quotaManagerAddress, + abi: quotaManagerAbi, + chainId: Number(transaction.destChainId), + functionName: 'availableQuota', + args: [tokenAddress, 0n], + }); + + if (amount > quota) { + log('Not enough quota', quota, amount); + return false; + } + log('Quota:', quota, 'Amount:', amount, 'Has enough quota:', amount <= quota); + return true; +}; diff --git a/packages/bridge-ui/src/libs/bridge/getContractAddressByType.ts b/packages/bridge-ui/src/libs/bridge/getContractAddressByType.ts index 6ca431f2340..c39a835e67c 100644 --- a/packages/bridge-ui/src/libs/bridge/getContractAddressByType.ts +++ b/packages/bridge-ui/src/libs/bridge/getContractAddressByType.ts @@ -36,6 +36,12 @@ export const getContractAddressByType = (args: GetContractAddressType): Address return addressConfig.signalServiceAddress; case ContractType.CROSSCHAINSYNC: return addressConfig.crossChainSyncAddress; + case ContractType.QUOTAMANAGER: + if (addressConfig.quotaManagerAddress) { + return addressConfig.quotaManagerAddress; + } else { + throw new Error('QuotaManager not configured for this chain pair'); + } default: throw new Error('Invalid contract type'); } diff --git a/packages/bridge-ui/src/libs/bridge/types.ts b/packages/bridge-ui/src/libs/bridge/types.ts index cc3e656ac36..8a23cb4879a 100644 --- a/packages/bridge-ui/src/libs/bridge/types.ts +++ b/packages/bridge-ui/src/libs/bridge/types.ts @@ -108,6 +108,7 @@ export type BridgeTransaction = { status?: MessageStatus; receipt?: TransactionReceipt; + canonicalTokenAddress?: Address; }; interface BaseBridgeTransferOp { @@ -242,6 +243,7 @@ export type AddressConfig = { erc1155VaultAddress: Address; crossChainSyncAddress: Address; signalServiceAddress: Address; + quotaManagerAddress?: Address; hops?: Array; }; @@ -256,12 +258,13 @@ export enum ContractType { VAULT, SIGNALSERVICE, CROSSCHAINSYNC, + QUOTAMANAGER, } export type GetContractAddressType = { srcChainId: number; destChainId: number; - tokenType: TokenType; + tokenType?: TokenType; contractType: ContractType; }; diff --git a/packages/bridge-ui/src/libs/relayer/RelayerAPIService.ts b/packages/bridge-ui/src/libs/relayer/RelayerAPIService.ts index c4e7fb8fe9e..02db6974cab 100644 --- a/packages/bridge-ui/src/libs/relayer/RelayerAPIService.ts +++ b/packages/bridge-ui/src/libs/relayer/RelayerAPIService.ts @@ -189,6 +189,7 @@ export class RelayerAPIService { msgHash: tx.msgHash, tokenType: _eventToTokenType(tx.eventType), blockNumber: tx.data.Raw.blockNumber, + canonicalTokenAddress: tx.canonicalTokenAddress, message: { id: tx.data.Message.Id, to: tx.data.Message.To, diff --git a/packages/bridge-ui/wagmi.config.ts b/packages/bridge-ui/wagmi.config.ts index cfbdfdcb209..f16bbd2c232 100644 --- a/packages/bridge-ui/wagmi.config.ts +++ b/packages/bridge-ui/wagmi.config.ts @@ -13,6 +13,7 @@ import ERC1155Vault from '../protocol/out/ERC1155Vault.sol/ERC1155Vault.json'; import FreeMintERC20 from '../protocol/out/FreeMintERC20.sol/FreeMintERC20.json'; import ICrossChainSync from '../protocol/out/ICrossChainSync.sol/ICrossChainSync.json'; import ISignalService from '../protocol/out/ISignalService.sol/ISignalService.json'; +import QuotaManager from '../protocol/out/QuotaManager.sol/QuotaManager.json'; export default defineConfig({ out: 'src/abi/index.ts', @@ -57,5 +58,9 @@ export default defineConfig({ name: 'Erc1155', abi: ERC1155.abi as Abi, }, + { + name: 'QuotaManager', + abi: QuotaManager.abi as Abi, + }, ], }); From c7f3143c763792806de2dffb09d35e756f4cb1e9 Mon Sep 17 00:00:00 2001 From: Decave <162929542+Decave@users.noreply.github.com> Date: Mon, 13 May 2024 17:23:46 +0300 Subject: [PATCH 068/100] docs(guardian-prover-health-check-ui): update README.md for Guardian prover health check UI (#17053) --- .../guardian-prover-health-check-ui/README.md | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/packages/guardian-prover-health-check-ui/README.md b/packages/guardian-prover-health-check-ui/README.md index 5ce676612eb..54b92270f47 100644 --- a/packages/guardian-prover-health-check-ui/README.md +++ b/packages/guardian-prover-health-check-ui/README.md @@ -1,28 +1,54 @@ -# create-svelte +# Guardian prover health check UI -Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). +This package contains the Guardian prover health check UI built with svelte and wagmi -## Creating a project +- [Guardian prover health check UI](#guardian-prover-health-check-ui) + - [Development setup](#development-setup) + - [Set up environment variables](#set-up-environment-variables) + - [Start a development server:](#start-a-development-server) + - [Building](#building) -If you're seeing this, you've probably already done this step. Congrats! +## Development setup + +To get started, open your terminal in `/packages/guardian-prover-health-check-ui/` + +Install all dependencies with ```bash -# create a new project in the current directory -npm create svelte@latest +pnpm install +``` + +### Set up environment variables -# create a new project in my-app -npm create svelte@latest my-app +```bash +cp .env.example .env ``` -## Developing +Then update environment variables in .env -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +```bash +source .env +``` + +### Set up configurations + +```ENV +VITE_GUARDIAN_PROVER_API_URL= +VITE_GUARDIAN_PROVER_CONTRACT_ADDRESS= +VITE_RPC_URL= +``` + +### Start a development server: ```bash -npm run dev +pnpm dev # or start the server and open the app in a new browser tab -npm run dev -- --open +pnpm dev -- --open + +# if you want to expose the IP to your network you can use this flag +pnpm dev --host + ``` ## Building @@ -30,9 +56,9 @@ npm run dev -- --open To create a production version of your app: ```bash -npm run build +pnpm run build ``` -You can preview the production build with `npm run preview`. +You can preview the production build with `pnpm run preview`. -> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. +To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. From c0b47692a29bea03392091158a286896a592682b Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 15:38:18 -0400 Subject: [PATCH 069/100] chore(repo): add docs repo to taiko mono (#17121) --- .github/workflows/docs-site--preview.yml | 35 + .github/workflows/docs-site--production.yml | 32 + .github/workflows/validate-pr-title.yml | 1 + .release-please-manifest.json | 1 + packages/docs-site/.gitignore | 21 + packages/docs-site/.prettierignore | 2 + packages/docs-site/.prettierrc.json | 1 + packages/docs-site/.vscode/extensions.json | 4 + packages/docs-site/.vscode/launch.json | 11 + packages/docs-site/README.md | 21 + packages/docs-site/astro.config.ts | 129 + packages/docs-site/package.json | 22 + packages/docs-site/public/favicon.svg | 3 + .../core-concepts/booster-rollup-banner.png | Bin 0 -> 940738 bytes .../bridging-process-message.excalidraw.png | Bin 0 -> 161234 bytes .../bridging-send-message.excalidraw.png | Bin 0 -> 146508 bytes .../inception-layers-diagram.png | Bin 0 -> 26312 bytes .../content/docs/core-concepts/proposed.png | Bin 0 -> 869207 bytes .../content/docs/core-concepts/proved.png | Bin 0 -> 347636 bytes .../docs/core-concepts/taiko-nodes.png | Bin 0 -> 59427 bytes .../content/docs/core-concepts/verified.png | Bin 0 -> 350026 bytes .../assets/content/docs/guides/compiler.png | Bin 0 -> 45215 bytes .../assets/content/docs/guides/newfile.png | Bin 0 -> 14583 bytes .../assets/content/docs/guides/provider.png | Bin 0 -> 32691 bytes .../docs/guides/thirdweb-authorize.png | Bin 0 -> 185254 bytes .../content/docs/guides/thirdweb-deploy.png | Bin 0 -> 151658 bytes .../assets/content/docs/guides/transact.png | Bin 0 -> 33774 bytes .../network-reference/proof-tier-config.webp | Bin 0 -> 150073 bytes packages/docs-site/src/assets/docs-logo.svg | 13 + packages/docs-site/src/assets/logo-dark.svg | 8 + packages/docs-site/src/assets/logo-light.svg | 8 + packages/docs-site/src/assets/taiko-og-bg.png | Bin 0 -> 1422170 bytes .../docs-site/src/assets/taiko-og-logo.png | Bin 0 -> 11251 bytes .../src/components/starlight/Head.astro | 18 + .../src/components/starlight/SiteTitle.astro | 56 + packages/docs-site/src/content/config.ts | 15 + .../docs/api-reference/bridge-relayer-api.md | 6 + .../docs/api-reference/event-indexer-api.md | 6 + .../docs/api-reference/prover-server-api.md | 6 + .../docs/api-reference/taiko-node-api.md | 24 + .../docs/core-concepts/based-sequencing.md | 8 + .../docs/core-concepts/booster-rollups.md | 10 + .../content/docs/core-concepts/bridging.md | 117 + .../docs/core-concepts/contestable-rollups.md | 6 + .../docs/core-concepts/inception-layers.md | 20 + .../docs/core-concepts/multi-proofs.md | 85 + .../content/docs/core-concepts/taiko-nodes.md | 87 + .../docs/core-concepts/what-is-taiko.md | 61 + .../src/content/docs/guides/bridge-tokens.md | 18 + .../content/docs/guides/deploy-a-contract.mdx | 300 ++ .../content/docs/guides/enable-a-proposer.mdx | 37 + .../content/docs/guides/enable-a-prover.mdx | 58 + .../src/content/docs/guides/receive-tokens.md | 24 + .../docs/guides/run-a-holesky-node.mdx | 61 + .../content/docs/guides/run-a-taiko-node.mdx | 243 ++ .../content/docs/guides/set-up-your-wallet.md | 27 + .../src/content/docs/guides/swap-tokens.md | 14 + .../content/docs/guides/verify-a-contract.md | 33 + .../docs/network-reference/addresses.md | 61 + .../differences-from-ethereum.md | 10 + .../network-configuration.md | 16 + .../network-reference/rpc-configuration.md | 22 + .../src/content/docs/resources/faqs.md | 40 + .../docs/resources/learning-resources.md | 15 + .../docs/resources/prover-marketplace.md | 13 + .../content/docs/resources/sgx-resources.md | 6 + .../content/docs/start-here/contributing.md | 251 ++ .../docs/start-here/getting-started.mdx | 37 + .../docs/start-here/getting-support.md | 26 + packages/docs-site/src/env.d.ts | 2 + .../src/fonts/ClashGrotesk-Medium.ttf | Bin 0 -> 61480 bytes .../docs-site/src/fonts/PublicSans-Light.ttf | Bin 0 -> 60840 bytes packages/docs-site/src/pages/og/[...slug].ts | 44 + packages/docs-site/src/styles/custom.css | 30 + packages/docs-site/tsconfig.json | 9 + packages/docs-site/vercel.json | 4 + pnpm-lock.yaml | 3589 ++++++++++++++++- release-please-config.json | 1 + 78 files changed, 5645 insertions(+), 183 deletions(-) create mode 100644 .github/workflows/docs-site--preview.yml create mode 100644 .github/workflows/docs-site--production.yml create mode 100644 packages/docs-site/.gitignore create mode 100644 packages/docs-site/.prettierignore create mode 100644 packages/docs-site/.prettierrc.json create mode 100644 packages/docs-site/.vscode/extensions.json create mode 100644 packages/docs-site/.vscode/launch.json create mode 100644 packages/docs-site/README.md create mode 100644 packages/docs-site/astro.config.ts create mode 100644 packages/docs-site/package.json create mode 100644 packages/docs-site/public/favicon.svg create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/booster-rollup-banner.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/bridging-process-message.excalidraw.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/bridging-send-message.excalidraw.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/inception-layers-diagram.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/proposed.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/proved.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/taiko-nodes.png create mode 100644 packages/docs-site/src/assets/content/docs/core-concepts/verified.png create mode 100644 packages/docs-site/src/assets/content/docs/guides/compiler.png create mode 100644 packages/docs-site/src/assets/content/docs/guides/newfile.png create mode 100644 packages/docs-site/src/assets/content/docs/guides/provider.png create mode 100644 packages/docs-site/src/assets/content/docs/guides/thirdweb-authorize.png create mode 100644 packages/docs-site/src/assets/content/docs/guides/thirdweb-deploy.png create mode 100644 packages/docs-site/src/assets/content/docs/guides/transact.png create mode 100644 packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config.webp create mode 100644 packages/docs-site/src/assets/docs-logo.svg create mode 100644 packages/docs-site/src/assets/logo-dark.svg create mode 100644 packages/docs-site/src/assets/logo-light.svg create mode 100644 packages/docs-site/src/assets/taiko-og-bg.png create mode 100644 packages/docs-site/src/assets/taiko-og-logo.png create mode 100644 packages/docs-site/src/components/starlight/Head.astro create mode 100644 packages/docs-site/src/components/starlight/SiteTitle.astro create mode 100644 packages/docs-site/src/content/config.ts create mode 100644 packages/docs-site/src/content/docs/api-reference/bridge-relayer-api.md create mode 100644 packages/docs-site/src/content/docs/api-reference/event-indexer-api.md create mode 100644 packages/docs-site/src/content/docs/api-reference/prover-server-api.md create mode 100644 packages/docs-site/src/content/docs/api-reference/taiko-node-api.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/based-sequencing.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/booster-rollups.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/bridging.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/contestable-rollups.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/inception-layers.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/multi-proofs.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md create mode 100644 packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md create mode 100644 packages/docs-site/src/content/docs/guides/bridge-tokens.md create mode 100644 packages/docs-site/src/content/docs/guides/deploy-a-contract.mdx create mode 100644 packages/docs-site/src/content/docs/guides/enable-a-proposer.mdx create mode 100644 packages/docs-site/src/content/docs/guides/enable-a-prover.mdx create mode 100644 packages/docs-site/src/content/docs/guides/receive-tokens.md create mode 100644 packages/docs-site/src/content/docs/guides/run-a-holesky-node.mdx create mode 100644 packages/docs-site/src/content/docs/guides/run-a-taiko-node.mdx create mode 100644 packages/docs-site/src/content/docs/guides/set-up-your-wallet.md create mode 100644 packages/docs-site/src/content/docs/guides/swap-tokens.md create mode 100644 packages/docs-site/src/content/docs/guides/verify-a-contract.md create mode 100644 packages/docs-site/src/content/docs/network-reference/addresses.md create mode 100644 packages/docs-site/src/content/docs/network-reference/differences-from-ethereum.md create mode 100644 packages/docs-site/src/content/docs/network-reference/network-configuration.md create mode 100644 packages/docs-site/src/content/docs/network-reference/rpc-configuration.md create mode 100644 packages/docs-site/src/content/docs/resources/faqs.md create mode 100644 packages/docs-site/src/content/docs/resources/learning-resources.md create mode 100644 packages/docs-site/src/content/docs/resources/prover-marketplace.md create mode 100644 packages/docs-site/src/content/docs/resources/sgx-resources.md create mode 100644 packages/docs-site/src/content/docs/start-here/contributing.md create mode 100644 packages/docs-site/src/content/docs/start-here/getting-started.mdx create mode 100644 packages/docs-site/src/content/docs/start-here/getting-support.md create mode 100644 packages/docs-site/src/env.d.ts create mode 100644 packages/docs-site/src/fonts/ClashGrotesk-Medium.ttf create mode 100644 packages/docs-site/src/fonts/PublicSans-Light.ttf create mode 100644 packages/docs-site/src/pages/og/[...slug].ts create mode 100644 packages/docs-site/src/styles/custom.css create mode 100644 packages/docs-site/tsconfig.json create mode 100644 packages/docs-site/vercel.json diff --git a/.github/workflows/docs-site--preview.yml b/.github/workflows/docs-site--preview.yml new file mode 100644 index 00000000000..910fa4dc969 --- /dev/null +++ b/.github/workflows/docs-site--preview.yml @@ -0,0 +1,35 @@ +name: Docs Site Preview + +env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_DOCS_SITE }} + +on: + push: + branches-ignore: + - main + - release-please-* + paths: + - "packages/docs-site/**" + +jobs: + deploy-docs-site-preview: + runs-on: [taiko-runner] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install pnpm dependencies + uses: ./.github/actions/install-pnpm-dependencies + + - name: Install Vercel CLI + run: pnpm add --global vercel@latest + + - name: Pull Vercel Environment Information + run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts + run: vercel build --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project Artifacts to Vercel + run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/docs-site--production.yml b/.github/workflows/docs-site--production.yml new file mode 100644 index 00000000000..c450567596f --- /dev/null +++ b/.github/workflows/docs-site--production.yml @@ -0,0 +1,32 @@ +name: Docs Site Production + +env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_DOCS_SITE }} + +on: + push: + tags: + - "docs-site-*" + +jobs: + deploy-docs-site-production: + runs-on: [taiko-runner] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install pnpm dependencies + uses: ./.github/actions/install-pnpm-dependencies + + - name: Install Vercel CLI + run: pnpm add --global vercel@latest + + - name: Pull Vercel Environment Information + run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts + run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project Artifacts to Vercel + run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/validate-pr-title.yml b/.github/workflows/validate-pr-title.yml index ffcb2aa9c7e..7b11ad0f2db 100644 --- a/.github/workflows/validate-pr-title.yml +++ b/.github/workflows/validate-pr-title.yml @@ -30,6 +30,7 @@ jobs: main deps deps-dev + docs-site blobstorage branding bridge-ui diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b3311e2d386..26df389d454 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,6 +2,7 @@ "packages/blobstorage": "0.1.0", "packages/branding": "0.3.0", "packages/bridge-ui": "4.2.0", + "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.4.0", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/.gitignore b/packages/docs-site/.gitignore new file mode 100644 index 00000000000..6240da8b10b --- /dev/null +++ b/packages/docs-site/.gitignore @@ -0,0 +1,21 @@ +# build output +dist/ +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store diff --git a/packages/docs-site/.prettierignore b/packages/docs-site/.prettierignore new file mode 100644 index 00000000000..0eebf3e69ff --- /dev/null +++ b/packages/docs-site/.prettierignore @@ -0,0 +1,2 @@ +# Ignore all mdx files +*.mdx diff --git a/packages/docs-site/.prettierrc.json b/packages/docs-site/.prettierrc.json new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/packages/docs-site/.prettierrc.json @@ -0,0 +1 @@ +{} diff --git a/packages/docs-site/.vscode/extensions.json b/packages/docs-site/.vscode/extensions.json new file mode 100644 index 00000000000..22a15055d63 --- /dev/null +++ b/packages/docs-site/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["astro-build.astro-vscode"], + "unwantedRecommendations": [] +} diff --git a/packages/docs-site/.vscode/launch.json b/packages/docs-site/.vscode/launch.json new file mode 100644 index 00000000000..d6422097621 --- /dev/null +++ b/packages/docs-site/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/packages/docs-site/README.md b/packages/docs-site/README.md new file mode 100644 index 00000000000..54439811e51 --- /dev/null +++ b/packages/docs-site/README.md @@ -0,0 +1,21 @@ +[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build) + +# Taiko docs + +Welcome to Taiko docs! + +## Repo architecture + +Here we will list the important folders within this repo. + +### src/content + +This is where we store all of the content. + +### src/content/config.ts + +This is where we extend the `docsSchema`. + +## Contributing + +View CONTRIBUTING.md inside of the [Taiko monorepo](https://github.com/taikoxyz/taiko-mono/blob/main/CONTRIBUTING.md). diff --git a/packages/docs-site/astro.config.ts b/packages/docs-site/astro.config.ts new file mode 100644 index 00000000000..85a8986d844 --- /dev/null +++ b/packages/docs-site/astro.config.ts @@ -0,0 +1,129 @@ +import { defineConfig } from "astro/config"; +import starlight from "@astrojs/starlight"; +import starlightLinksValidator from "starlight-links-validator"; + +// https://astro.build/config +export default defineConfig({ + site: "https://docs.taiko.xyz", + server: { + host: true, + }, + redirects: { + "/": "/start-here/getting-started", + }, + integrations: [ + starlight({ + plugins: [starlightLinksValidator()], + components: { + SiteTitle: "./src/components/starlight/SiteTitle.astro", + Head: "./src/components/starlight/Head.astro", + }, + title: "Docs", + editLink: { + baseUrl: "https://github.com/taikoxyz/docs/edit/main/", + }, + customCss: ["./src/styles/custom.css"], + logo: { + dark: "./src/assets/logo-dark.svg", + light: "./src/assets/logo-light.svg", + }, + social: { + github: "https://github.com/taikoxyz", + "x.com": "https://x.com/taikoxyz", + discord: "https://discord.gg/taikoxyz", + youtube: "https://youtube.com/@taikoxyz", + }, + sidebar: [ + { + label: "Start Here", + items: [ + { label: "Getting started", link: "/start-here/getting-started/" }, + { label: "Contributing", link: "/start-here/contributing/" }, + { label: "Getting support", link: "/start-here/getting-support" }, + ], + }, + { + label: "Core Concepts", + items: [ + { label: "What is Taiko?", link: "/core-concepts/what-is-taiko/" }, + { + label: "Based sequencing", + link: "/core-concepts/based-sequencing/", + }, + { + label: "Contestable rollups", + link: "/core-concepts/contestable-rollups/", + }, + { + label: "Booster rollups", + link: "/core-concepts/booster-rollups/", + }, + { label: "Multi-proofs", link: "/core-concepts/multi-proofs/" }, + { + label: "Taiko nodes", + link: "/core-concepts/taiko-nodes/", + }, + { + label: "Bridging", + link: "/core-concepts/bridging/", + }, + { + label: "Inception layers", + link: "/core-concepts/inception-layers/", + }, + ], + }, + { + label: "Guides", + items: [ + { + label: "Set up your wallet", + link: "/guides/set-up-your-wallet/", + }, + { label: "Receive tokens", link: "/guides/receive-tokens/" }, + { label: "Bridge tokens", link: "/guides/bridge-tokens/" }, + { label: "Swap tokens", link: "/guides/swap-tokens/" }, + { label: "Deploy a contract", link: "/guides/deploy-a-contract/" }, + { label: "Verify a contract", link: "/guides/verify-a-contract/" }, + { + label: "Run a Holesky node", + link: "/guides/run-a-holesky-node/", + }, + { label: "Run a Taiko node", link: "/guides/run-a-taiko-node/" }, + { label: "Enable a proposer", link: "/guides/enable-a-proposer/" }, + { label: "Enable a prover", link: "/guides/enable-a-prover/" }, + ], + }, + { + label: "Network Reference", + items: [ + { + label: "Addresses", + link: "/network-reference/addresses", + }, + { + label: "Differences from Ethereum", + link: "/network-reference/differences-from-ethereum", + }, + { + label: "Network configuration", + link: "/network-reference/network-configuration", + }, + { + label: "RPC configuration", + link: "/network-reference/rpc-configuration", + }, + ], + }, + { + label: "API Reference", + autogenerate: { directory: "api-reference" }, + }, + { + label: "Resources", + autogenerate: { directory: "resources" }, + }, + ], + }), + ], +}); diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json new file mode 100644 index 00000000000..4d305ec6aca --- /dev/null +++ b/packages/docs-site/package.json @@ -0,0 +1,22 @@ +{ + "name": "docs-site", + "type": "module", + "version": "1.0.0", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro check && astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/check": "^0.6.0", + "@astrojs/starlight": "^0.22.2", + "astro": "^4.7.1", + "astro-og-canvas": "^0.4.2", + "canvaskit-wasm": "^0.39.1", + "sharp": "^0.33.3", + "starlight-links-validator": "^0.6.0", + "typescript": "^5.4.3" + } +} diff --git a/packages/docs-site/public/favicon.svg b/packages/docs-site/public/favicon.svg new file mode 100644 index 00000000000..fa357c111d0 --- /dev/null +++ b/packages/docs-site/public/favicon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/docs-site/src/assets/content/docs/core-concepts/booster-rollup-banner.png b/packages/docs-site/src/assets/content/docs/core-concepts/booster-rollup-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..f6ed3e4ac8b89587357c741fff90d04f6fe07ac6 GIT binary patch literal 940738 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 @uH6Z*v|o8was>;bc^ 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

    9Gti%Q9B0 z70!M0Gtep_O;U_)V-cqWiIPmF6aMi(`X71k{oDMP|Mh>xPk#2Vf=F;K#z8DrYfjG2 zA!z!;ZL+}}U3c`+y#4+M{4f9O|Hgm+5B~u#+MJ))}XCtqpIqKw|Y7?S&;pL;fiYW(lV@L?$h zZE2Xz;l{1!C=RZ$Y863x9Pa<8-uAR67ZsGi?%cnH0${U+f`_tusmPT>-Vr#k3<+$ zS8q@tfzkdRK1q;8k5mgtCChhiGd1vyNyR_EKjU=|b1l#|(A|AN+y5#j^EFqWy3UKY zUSinm(Y7TYyz?%{r{~m2s@|A8<%F-Elw7>F&vvTGMMpB&!rK~SElw*c0lAW>G=tR~ zyEtMsIYreS+5R@Hr>rN_7%l}gwj>vtuv$`;Et$%YIhc7DcfdF1YZ_

    y6mOe1lf^s!u2-HoD7CxdTn>9(hhHRJi?1X!h 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⪼z!9cmw{g5gXla* znT%j8fBgOdA3ps@ytR|@OJ97KU;F7dxpDPX{_hVh&!;m!bEV`{D>a|kzt0V~4<~n- z)VnOgf_gIHw5=I*n)!asc-9ilGp<~^!tLQEXEAaVj;SYsr^jc6U?^W>=-z!^+g#_B?Nuh7 zC%2+VR@XJJymE_6mo9-)G>e*MQRAHZ$inWOCnCyoWu8;lVu-b zh=x&LWD7!EH`?HJBq(Vk2Me`wtlhed>MZ+D4#0H`tCF_$G;K_^<=5y5A05u#5w65#G2?UR(rYEb)!)+4m&L?C;zz4x+TcwHC5?t~vF+$c~Dzo}j z9ZTX8F(svv;AmXWDG4lBtq`>o1baE~n8Y?>Ty`ep^I2LsQ{eV;_b2|aju04~%mFXF zhE)kRlA_Sw52@c*|K6k)7L<_fqf!Y5E0c;!vZnC`?$gCC*2nM}UQUGKOC6~nx4n>9 z1wxoh)z%m&4YnF_?dmqKT;JyP+t;{${W5FoE3B-rM7K2^+v+97z98gF}Pp^71Bn3 zke1p}+Hk>z7$O59ijn{V59$_W^p|ucAjpv6elU?FetXl zoJYF@?rq=Y{ihFk_t72RI@n})nz1z!>s8xDaGkgnQwV}!+RkHr;PFVat36>_(C!y3TE)wU zB_|g%POcW5TrD}hTyk`BPVJ?z32U0PJa*Iyl^H2+JTmY}CIZBaz7XmS8*XxRR1$7$ zP+1BtmB-ZHBsv#h96EFmbI8QFgdkf(@3iK%653@a0)4G580dUUGplLlHRsB4_M*U; zKsNcD@zy5y?;r5!?tSj>7Hm!6y)S2cGW++*Y5%M{}cs;dip+ltO<4FKJskj5Ik)hV;fLuOEA z#$a4<_wJNC(;<74FvgVTxMj3SgBb}O4grQ+BPwt37jv@Vkl*~RzsKMHyMLc={>;zw=-~r06{%)d9DnvX ztK}8d{EEfZIfRx_E$LQQ;3|S&p=j}L0dXmGUK|#W<(8pF3iws2VbXmA)uWneKQlU6 zylWYb^o^1Yniwp~mgJem6hfh#ZshFkP07pxl#?ySD!l6CdURfh*Lo%OkQvAxG~FQ| z42iLYEF<`cj*@MtTnpAiXo+1TNPm`#&NtD(i*k(0EKvh0lTn1QpSbY9D57mHcyW%Im_7#3`cEbI4zsxWH z{I@y!=+F6A|I2Ul6Yt#RgP;2qu4k_}fAt9)S;p+6KWFRVJ>I&r%Z1zFtH1mUtS$_T z4?l&=SBM>Qhe^35qGyR|LX`y3+Tyh(+9GjK6`do_{(!8=`8$7OgJ1jEZ!>&S za(Z^fFTJBcS>$Iq!RF4+LyySt5@U6Oe?xLfk-^ooN#)vZwZY32X`AOJ~3 zK~$d|@jL(X|HO1Z<2yh7Rh~Y%%lz`3i^YQR&OVO1T#Moy{A%{l{ z;sQ19U{In*6VWBj(?qPPrFl^qJ$0?mIgkxlHeG^4Dakbuy^5iqw93@CIO7Qd>|p+&VFgUqsBpPkS1Yv5^ljc7h)463sTY*hgi% zm|`E)7#M)g2-x+SlI)Woy)^zhw{_M^LVfz%7wAgsK+xNnGB=MAli^HX`5LX)Vc>o9 zWBSQ<8ZhpG&5Oq3WsZQJ4!4bvElQl3DLiC*?P=g@6~bqCOS&4C1a9!J}6w&QbfjN`K*Er zG4e6W6k_IJ3=9UW#XHWWdRO7JOM{#?0g2*RhR#z_rNGN1Jt6_$Dk!Y7$rQk&q9Ic` z9=Fzx)MQfNwt=(j3!Wd%`HS*78+p#b-h{gc6CNCFb7yLj<+V4w0qHYlO0B_I;Uw=q>Rj=P}GOq z-3gEG-C?V=O!J(Pu@s527^BA|oC^-{w{+5wUYLxnG_Vz%f zZ4avnCe4U$=-0qAuSZl;+KEP4LLP2tnhJ#_MTkZbu%P&hh*pV4U@@8Zq%uMLX5V0`}vqY>mZgKm~23Z z8j}?igAqGBJB%kIilG8EhiZmz8v;t8QwU8F39x=RTL<%=(-xC zQY{r)bgZOC@GY5&n30uZyj`LTBdnB|fhoaDhMO)26uB4p->qZrVbbznzXukgT6TWnRpLlUX<{GZ9&UtzV?%m&KXKRDya*iDr95yqqUpyo3 z44K5pcu){*M}Oz%SRPDhmm@y-`@hDs-~NBtX$(UJGd#fr zawmGZFktAJO2tv6D=}PS{}H!{*uyH4lTzZKE3E{vN>59=%lq~X#) z5Q^dY{#%nrr3}3Rhu8sYV$?TH(mI4tiGvf|Oq*r5ym=0RH;RGV&s~fD0YJr6$U2PG zDGyi*5a(L?xwax^LM7U{v(4j&_jvoQJG}GuL+;<(V=^(=fjngG;N&uLe0Ig@`8BUz zUGdqoL(b0URE?);fsjGtWx^CSs8THALliBTE}->7InyGnRx;!XBCf?X z$QU^_yg}^j`@*Xa4it)_!s|e^8e0x9#Q>idn864$7~(TUtS+hBE9wyOE=WOMix`^D zu{+Gzos_)y)C3)6BJcH&r&Giq6-7&5{g64`ayQG<4W2_V}O}nJ+YFsB-8grG@@GN1NEeHX+|2lv{*s3-SYs=_7P`7Y6sxeuLn0LNwT{Kq#vUoy+?f-Rsrtj}l$~ zNJqRL#p#`6(gm_^gnD;GrIPEJTBA#XB#9drs5RY2Y4zIjRw}6kwO%(%F^XwUZ>Zy( zCre?CS(f9yBLsufLYGz{V$oQe6MT@u3{P~Pk=10SWxlG(Eht^1W5vc!#=D!lG~RG@ zcbn78ImhRx9G{(YHoIb8Eoq%Y8H1}Tp~z@yNUSwD6#ws4#bU-X1`ZF8DZf9Y91a<64k$-CkDuJ-V1JvtcMQ{g`1;)qzV?+3LiHZ!Co7)6 zJmSNTKjDXm$6Q{_@bivX)oGZ~!^cAX!kA=sk*ueC@ln5-rlDc9ItBeER73@|ziFgH z41&>G^XAU|h1(Z=YI<~22~{oJrXbT_v$wzhjmKO6Z~fgj_a&1orKL%V$pU=+cLmzo z5qGd+)1kKX{vZRk56%OK@zah03fHHY-Gn6tp;Y zW(K1ruhA3*rZDW^*=B!x%=UD|My?qfOQE1plAGicH08U#Q3X85EkbENPl9A(x7>7}IqfD;Ie1@CiTn3%|q%?|(qKxkYnv!RgD- zSj=XuuCHkq=d{an+SN6_ouS+UT!r!#S**}%Aq|Cc5F2z{5qyQkk(tCwA<^k{M9#Lf zhLq5D^{q9gl|}`Ta)i*ICl;e~B+0U3I^ANjF<`v8L9sD_LgQv9c(+8yj%*Pd4=*FCf7hibfPED21C%6&^Blfgc7hK zm(Yd$y^Dk>mh8bTiA^W9K{15ECi!3sTVI`UKAYpl6WY;`wj9#37>S9E7H{@`EyQx2TNC{1?vE`RdbOFo`m;eijIEqHivpG}+b(X*FS`=4OP z4|sLzv1T7PzY;x3QKF5<+u7vF{XMukXZFdTvXvWlH#aC_2AhiQ4a5F!$>81wW^>B> z+gqG3mc%+x3`&;WoXd+DDj#z1;4VwEM+kwPogF4S+tjO$)vDs^>WVDOZcrqjc(=hx z)5Oh%973dNBw)6md>A9Pw$_Lipf4bLXQvp1vKF)>`k1Dg?b;KdzZqlkF`|VWgzB7J z_{QL46o+bKMAsU{3940|W$dU2mUn;U+f=d`EVVb9? zG0`f`Y@nK0zVVCS;@^GrXV3w+@`O_%#rGhtURSgV>=W>E7I?w)GR+ z^=T9n-7d1uGWi1PBEh8*-;>+r%OuK6`qx@OeY>dpYo-D;GCL6RsUkmz&09tL{4 z379vidx92eEd_(>CqhcJN`1D{`nj#MHhS7#dL9u$Pk!vwG)*$mDD449h(YK_F*P3{ zLS`6@N)FzA#M7sbc<|sJZ#{Xy?sm>-fY@0ZSk`cKwBl^O;N|HB&koNxKAkgPw5*mb zO&3M85K=MZ6;@|N|CG0n}(2G2W2K^j9N+m={L|x)tSg+~-Keu&IP1OF)TfdhYqw$_w z0o_^#MYoE!H=CvP_bH(rTbohWwFFDT8gbLwQCE>n=R)-b(F25l_lgb)U=+~C()maX zEy{X2TS=e&6JinFUrE-o)=Iz`(xG`>bDO)!EqYnzMC zvhye{u2I_N=%PfAhS08Wt?W6O&7@D!f+RZ9wV2qeBucYS``4<|RI8S=s|u{=+2JYLIJP!M+}qva?Yp}? z+}-5PPQlK@A^UH?%}@N|+ng`p)#02MAAZ7%A3o#R=g*m6%w@rb9>LGhR+`@%+vhg} zkdcM0q*>|#$XR+FUU z>-`=s&pAqTlZuj!)Ct|#bOATJ78-j86jRJkev9e7x2QXqS4%>*OiYO=2z=CHwiFCl zLpCX}M$eY;#f;1bM$-|Y33OGBQI3crGzu45v>jv1 z2`Vq75hI{W3*vN7J{UvHa7r9JO&+kzi;By+qRqCbi=4@H%%oIgC#Nh9mmEfTnH#oM z!E~|U==c65dU?wGBhB1T`Qc^9x4-^d{8zuZ&FG*1j~I1D)m^htIYT0Q20s1pKk?{& z&B@s-2HOoA<4v9ssErnT@T>%*a5Ug+lo`@A4aP)>mSQ-fYa%{Guo(;n_!z);)G;zF z_t0U?XRj{k78T`I!RO1Gy}V=fvZJ^>VvClCJMiey1T$X{>&OJyHxgj>;K2dAdwUd_ zVl_L*HrKqpH=%g2OA~AA%V&&2!=ncq?C&37^OE6Y!1Zd09atI#v#!In9dV^tHaXWv z$IKU(40k7(t!>UODwcjk?E};4l!JTsB!eJ$&d<+TEEbFhW16l@bh$`bmMm8tAq0V9 zwIa)80_=U8rWt)vBrYypf`)sFURjoOoujU6L6&~pp8I2NN(o<9DKC0Vqa+)^iOZGO z3a`ZVWOQeft)~z8Pk;WW#P9x)3!`cN?g9H>f0yb{p0kzZR4$-1O;DaHQ=FEbcYf(R zR9WEU_&I~g9tZahXutc6%xKvFBTNTFVyIcPj^HiPc{#)__>}*oV<0H8-PZL&oOCAJ zty>k?ZX)jvE)fn-A#b*CJ4OTw5MUE{HN#&^DwXiQMAPD}_?F|4x~xD}{;) zdCEHsiAwM;x7BadvgZ)uN`UJ+8B;VDVkV+Ken|;Z#V) zz3;?^S4EA@&a|=Bxx{3dh>&PuKINif#mb_#dJWY z%n{W&unpbfNj}CU3l!1*=$*>Gqzhuu7~8dIrOkQ=}qMiMw1>H)(aDcXLw#Lko6JW-6S&q^e&MuYN#%{t@S=KcJl-G1N7x zTM?TT!9~gekc+cyh*0Eeof#6n^mxNu(&r1|R>Yyrg+L^=ch1RUjuU=t#(i$(k0v1+!SBf!+QGc?aS=1y4`M=lzyG!yv}?}&3`Yf z4ndH)+sP{-74WwkrrXVu_X(XchTuKc2-48!qpbB&UQ^_jpvAxklhzc!s5J71+bjH2M_xNCcm(B;yuP!-0IpJzK=hejp7qdCn z%bHbP;Z=hfLeL8l@YjwITa1;0*V+t|kBP+qHYW@QC7Ey8Eef=?EEWr{&(EliPhnNV zVkym&lL1KR5`DLA38q5Z9I_0h25Il}C}l7vZF?c1o-q>!E1HN$wRO^|%D}Fg&oG7M zY^Jz)x#D|&`Z?2$F_Wzk`v?JSv1r@VN6 z%!|*SK~)hdamrJ9PH%7{*KeX*N$A!s%~A(3h);nhQKoJN2{8m=9;~mxH#MBE-(uge z^k2|7NR@oUn;OsX#(D5xz_5BmOx++!>u}lhyV7wh=Y{gpBzcc=0oT^xD=BREAHq97 z!R`kipta@Vqwf*Vjvm^EM3^oSbe{_#~d%Fy^V>0W|2xLWpu^JN$UDsh$6wOOdZA>q%Z)|+mB?`GE)5${INW5Jj_Ojlyb0mgg9)Ft*R!6Z9rCVtQk& zVLX~r*DZ_rlCOUC>-^1M|66SC?$dUTi_;5c7bh&Q&sbg_)2*&(SJ#+sfoZO=aUntA zx<$nXMN6bZvjXO5-J)VZE6BB&YM?Y$Ws)7&fBwmIORv{excReReMzGf6a*bGy1*+- zHW;$8z01btKG|p!OiouXiGIm)HK)i&3`Y~mKk`9Jj64UOOD0!6qgk#f%MmIs*P-qG z=iWtG&fc{Y<&a{3lfvz?I6tECmV7XjC>-bIiVLlrlSbBq%rAW=|0-{9IX?gRk2s1eY^Z2YK0`G%yGn8T{DeOfzc^<&D%jZCr1L^kxl(foo~oTQ-OTymn?FtG zDlT63Mw)o`p@3T01 z2Ir?xWL$?OlLuSWI|J%-d2P`L>P$1sBl+W94nBCy|MhSFHRwP&uqZ1IE90VMwQT8P z#N-mxW;)4Tirx#CKeKpmWg6NyAOu3QBIr44%VF{fX0n6ZYEYpS3X%83rk0B)Z4_85 zF0cvd>EBzS^+gDgV4x2I{A=;rZ?=@1pGk!(ebdu77zut>!K`IPH;Bc}W8D18H`(Zd zdiCq2{~oPVKyJ8cqCgNKl@K6}Oc{eQ;&y~0BF>0CqSU+jKnhV@KfjO=B@H@?21==Q zb9Qs{)YXN+Virv1xc|-rp1%Ev58i)={k!{Y?`GIS>_NL079Ff+j-%s44v)^cxNw}D z%z1fsMbH_`#^W&1dJ%k99$gF|fOpA0nUI{i5*iR9-nF7xb2Tw|@Pgdpz9<-e?R|b7 zFiI#}Kw(6qL3nLRxVB#F`xFiz14<>`pjKD|g*KGqAzPbM?%X-x(Sv(DxqqMi@q|0m zF?TkmY!n5C3hP@2O~XK!QoMFvoQE)Ab)wm(=W&Z8(dQb8?RAS$D=ahG#MNw0m|GVw^Le|B_uCVOG8Yr^+#U| zf1TT#XwnUmaHB)e$^2z~{k?{2r9f(xzDI}k^U^Vj<7E07mFPGm)18hJf!HhFL*XRah11y1-;Kz`4NQ z@PMax_fffFSv8zqUUPVI!u6`+)#*9cb;HSgNgF!4dJfv+syXB%X3J~ra+hv4MD0x3 z-rr-iIYpHvad{2bGg*gSMes(Z#i68W8YNH<6OBw=so72`UM97Mq#}6O!=4=TPH!TJu`8_sibwWf%C$vp1 z=#D{?7sAGAvk%d&qtMB2?FS)g8lCqy zp8+?>vs}Arux&F!@MvwYT9X+~nOR~~8@3od7uT$~@%%rBW;9Ae!9x@%0gO#hu@V~tSjT2MU;q61ZMCbt;f?*}rJ^D*VIw;tO$ls1fa?u%KG3z$&}ts_)5 zF*fM2dCvMFt}1Q$_mB^<&wg34%|L#rIC z3(0xN2dK};1@E^5wBPx0-7{eyjKV{wC=c2rRNj88kwfByIdr>B>kygH+99E(k~am=5kR(i1|J^Zq;={#*b6AOJ~3K~&Zr58rtT*3eWd zj*pJ$x{e|%Wn)PldW?b2b!%E(jFHayM4J|Yd+-6R;@XZ@C5?1HMCt#XCU6&VEEP^&!7JV zynHSTKl5BRGbjc$k9PR@_)|7rNii65T}DN8 z&uj90OpFen3JH(GEn4VWw93$ff~beY*6>9!wj(ZQn9U)2YkS>@G^ZU@7Z4g@Tv$sq zrMNX|n+}thrfN6SHf$3AzG2V$`oUygzwb?|&~3WbZMx4|?_h|!4|RO~M_;43$q&8p z4Piaq5r&ACjSs}Ipts6Rxkz${ES?ypnD#xo)(=5@Kx_RngyXBVCR&;D;+=%EArn-k zMsOIS8l&jf_=PwR9 zJG)@DYzeKwb)sdAIuK1E1&m3QhoO}Tc%}sh zJZZ7w%|thogPv*$p-JOoapsBM5q*pIErbpg-A(cBy*L3`aewo{5fLiJ#&pc)bj;oT zJsv)K$b-FI?rm+cJDD;lGDc-irdqQ48W$`&lk5%eJK9#^gCkf+@3Mtcl4YVG$3hHv zrwA$%j1+Drwm5%<=8)C=dn}IsgzoBxgyktkdyTHH2);ri^v1HVR4Ye_FevTXz-5>P z$wzXLqDY8~Yh|B^GPr3vk+9Ua3KU{7N3`dE z%wYE$E2c=z29%}j&3(XYvY#N_lL;q=x0ncn-oSHZy2WX z7_UEq_5ort!H62HrtVf`xmwPl66oRDjwfGTQm-mbPL4T0Ipy;B45|tiD=|}XEwO89lUr!# zaxlH6a+dTGqT%Szq-gS+Pds?Z!t3`k-#4WhTsvytQR|vhJLAK@IAl1?*xuRV!Gj0v z>})cbOc;$V8&3!P^t&I>%syat7Ww3dKjismpL6u=1*=!DpmTz*$Bbl)iEwv3G!?^* z3Dl0&;*?k|WT!0#nCS*l8%$P!wYX%eqfEYT_o2L&Ru{WMDF@Z8d=@k}(wgFR2 z@GcURCqysjz4gS9-E!oWT(B4e9-*+s5XoaML+5Zih}M(YY;Aremi|I-^y_BGrpJ|9 zD1>h9bk~2ak6y9#gTu6Qq~{>!F5(bttYldU{VtMQ1)(D=Mq=uv#89Fr1~QD+aJ`uG z?)zWkH-6*qu(x}MX0fE1pL2Egiu2PWR`XK;%Rn^0n$;D$y~Z_{Xg^2!8e)Z23$&6( zDI$%M(j7WktlMPwVYEE2wyot_GaB$h+g{f+F`eZg!%@jnlBFk2RF>yho8y8;>5`(H zk`*I%cXm-WOIgEO&eyJ^3s4TniJz?#v!(`bfE-m!i6)clIyTsWpv}?AKJD5@=&hN> zdV?y*c;C{b;O(;509-P$0<5Pk1Y|L`q|{Rxe$W9cpcCDyiKx(FI-d-~9A!R0=M(J3 zNu;R^+Yh$b-pTpo^Z&%p{^UdMKPZj zY7f4p$TJF~XhRS#bLhZpq1pi|WeLdWGP0as%bRN~!@OYCbkxg=&SqGf(>0yIsKIbP zZ~5czzF_hgzOwg-*etm_w3JG*3XaDcZ!!0d&tD$$>ESEJlQHl7#MjZog45FzPG&29 z|DXK}p1n9F2C=oSmY&rL1|wJ{2h7dg4HnAWq4JF4Mv+hw+s8;+oM$LA5``J(zO(Vu=cKR?{(G`nj*M(j6cE!T$||g3@Xx z*0Q)bL%WXBie;l$2A?Q~S(Z~|5V}b89d*4T8;w8@@vABw7%`0;I$X0PEU(Eo2jtt^ zSflV7+!?UCAk>{)s4;_JP=!v8xlumc^#nz&CyTEsaNj)LZfS=8i?_5X{AVE@wlmp`nhHG`@$k`Ip1k!IZ@v8%ckbo8EaSdV#h9Jw|J=dP5qmW+fj{1>RN3CcJmrsS{n#%OpAq0;#eL8#ES&)}G;b z!gM-ecYBMC@re6(@31)?v$M6y_ISv44ij3ma|}e7fl&?}3RDnnU<@7~#KNB2&Ag2K z(qCPVC4q{l*n(SN^fjUSjJo~-?bUZ_&i*qjkI3pd1(AGc@Ge`U&~@F)TLrjA1i!9z z1TRfcpkKogtutEZG4ujxiQ(y&uCd^wj01g?C0ADwyvMhqXEFl^t0SuGz{-BgaB;zS zwPNTsYU`^|>;gl21Rnb9LDv5lFEh3N@@*UNzv`xyUSBgxX+lE!g{g7F)9>93qi|w{ zYH8(tkI`YZC59HGJj24{yM;XG9<9m^UJDz*`M_{AqR1@E`XUu(0i!fA%f$yp$jY1@px@;XEgdMl6qySq?{>?(H+#+GaQzv$?&&-rWPn(;+)| zHgR#2tp^9RT}?HgQ_mM%ygFrdz2xHXl(6b>edB~oY@F+xTM@gfn4y%RET)oyL&T*# zCzG}_kI+h^OaoEM;9VMacm+1HsvB0bSG;&}hSD&Zju?*z?C z9p3%gJDeQPc=_x(pMLr&=f@{-RV7_hkSTgzG8haPv0o^yTpeVAQ9RYP>b#0WjB1F@(NshJ#=buA%uNyFy}$vh`UP1K$cH9AI| z@z%ZoEE zUOi`ic8ssD@yl~`SfaWGy1PKf3gv4I70T2=gVF(|TxyiOL^mL>O~;VjYZbQW9j2vO z>LuI#&6pdiXH?*O7d$P7OM<2wd;?Zn#?x)K_wK9*L#CWcre&yE%w`m&LFGA^NN85H z&O_9gY=q7Sm?CMELPTSUI6+y1$Zvv5Qi(K#Hnzmrf;Ux7BD1PewpJvg1&i8-tj3@6rrfUnjE>d+h zk&HSTcJ92#!>2#NOS{W=p1jZLfB1c#ee~}cT|LLW{0si^Klw|3!eXZHh)=3r(jSo$}CDgz*TK8OTj?G>fu1yH2KJt|7D) zaXcjMJtQ|JPFpz1p}iIdC*>hF7}WtIT$TfwOx$i|1_;c2>rHyIHhZ%{TL0U8@ooj{ zET#41rAbIg8v=g)vp_;WZcVYi@BzL4gl-(nqr5Nu-Rr17Ye6PsLvTsM zq(G;=snm*LQ8FEm8J0QYjWMHvVQWJ|a5wFeF;KJtRdr~)Lm(q~PutZpsEA5TCt}2T z$Wkh+F|U8tMkxpyrGsQ3=|I5AA)>C)?IB$KCC$ZOQqMo5xqgA0A2Lu5ts_cXTpej! zS(902$#jOvWo>8;E;@83XPH6@TIYjMON>b-i5e9nnRYadyIGaduv)mJp_CeIFwjJ2 zG0{@yfkB?*s8}rnu5PKj?@J-Qx?ptw5PR@9P{rd!7gj>gO2wjzunu1Cua8?O`Cq3= zdd*2o>2xNC8(e5dFs@;<$jOE|QRlq9|2EnbbY3y9Yfk1@eDdmq?>{@_ zv-26J*B7i#F9>HduE$eWqXC!0f}@QI#dOT{V2{Dpl%2bG*xns*_s#&V_i0y8saG}g z^BK#l1?Q)yTwl#Oe)dxKs-~4%z^!mz;e#R51x?kG*#S1sFvj4OP=i965txLGODPc& za2~~YAq@{{BgBTN0<()1GZi`d=#Zi)7)>UOhGVw(cA0E%vc0#%{s$j0efJ$sULJDt z*$d_;r&K4$(6pFFQ_ZibE^2h!KwiLb0H_E{BfS<-YhpSl^n*mB455l*N2)XQWD_+U(X3WbSSI6= z2lwytXm6LHuQ9%6kcsJs?^+CklB*QzoLfWZG*&BOFzZG?q&S&gUt|<(r@9!$SvK_9 zNmd3KI=_V)1*t22-z0@jYO20b^4a>aLb4(6fA&Z1Cn4#SNc)B{qN}k=5T!EDaIU2& z@?_ql8I7h~UMz^(@DKjsf5%UK``fgOCA0G*W@pDNPLHV0j?sQa*Ic0e3>9kdGfY@v zs6jVqYLsqJx=RBzVN_@n#GqCMvFKXU=@nUK)*4K4!+bsCE9=84;80CMk##8ebaNt&ac=8jE$Qg7yJSofol>Gz2N^P?oFOFyVCQ%-bH7Bd-{;2Bb$_W+G7c=Xk8 zP@OLL$&Y`4dG%vXAAb+7jhIN!C#xFy!*_Xb=S|*x_zqPsuvC$}upA7QoGjN+%$V~8 zUyRw`-C_0o6gR)b=?q!)Fqy`NfRA#s1JIp zO;V-g_CO)=T6Y^xLIWq0Zh}{AUVpXz^k4k?sh7B)Hf{RLKF8~Sc#XalMA&xsu6`A; znILtUNw85YZHgs6`)l`C>Ei7P*5iDeHU^_1&oPrRckbWe(K~l}^yYnT-RjZL)1GJ> zSk^E-UU70Z<$N~dGv& z0jUF~5M*QoSL2lEa%CJ!_0s-MqFM$ol2mkanExx@@Xcf}AVtNX7a&})x_qDI@%IUr zKcrne2DhNCX5_TWDKvM;Rs}Lx1t%){Zq@?K7sco~QK7XHfeNI)*n9!$pJtEB^ zBJ`pAe19=%@vr{+Op&w+s*SG)#U^^D=o)yCrc2R9BB?tmLrpJ}xUfLc66+F0iF4=F z)hVI9M1%_K>aDCN&w6N;lkS;)5WPf0^aF-+fR}v&Ljnap_Q8SF5s>t=3^krGonEG1 zg~`Zt`r7NdMk~#_T$9NpSIaxPmN6#DlwQB^g@DQexr#^;2(BTv4wDa=^hewn@9^-} z4&VIpTP$tleC2pHt9bXrr~Kr}3!a>wF~6`_EvQE$%w)pZvnPZsBj4R&v@_zy(JqIF z*Vx-XATJ6g4-2e4f{)|SkO3&wHAy)iV4DG_-vgTaBY?Tvmr%SEM|CRuzH$`DuBE| zWPOCr5XPW%hSa8$`pM2eeC2if{CZdMwJrPgsnO?OBKdOCcc0#`;9}>U(gYFld(R=HQ-1_o2$nQL$vXNI$pRsuQ7%ol_F%Vsvpb#RVt-62cs#w4V=#R*UW7-I` z4QS1c!#y6}y~U)L(Q5)8Pe0G`w&|FwR~Ph6!&gd)h#u4xyg`Yug)M{_Q=KMb*BnmL zJJDGeLI|C8;cDvRnl|+Sy9v4w8Hy_?Ly%#M8jmqzJE`MOQ))<&AXQhvv=Xh=YZE1b zlo?rOu)f6@=oNh~E-o03ukrW)lmCpH4<1s_rYtYcn4dgjdG;JxEzovKyS_lh1u-s( zAw>finP3f4vjQKGu6zYXCo<*#|RD@$yOKf0ey z`na@*2xOiyoa|%zJ({*99}H6gtrT>{=Wyp*l90F>XB{DCn5>8CjZtQpI;alNsgWtX z>ni-v(N0BDe@M~6ULv*wp9vxG2m}U`Bvuezm%p0MNf#2yR!V~u8OCHF0@1bTLLf5- zVU@l&;nLbu5xsN!7Ioe7zx~ed^8P2E(BC`6p)jKnW;Dju%e2`<%jx4E@!jA1-?>qY z_=6XpaK~SgyNc#y!P}4C=J|Uc^K=g1`sJ_lt-te#4;L3)y!a9A#Rt^Q3G3sM;;PNeT?U2K9GNWsa z3Ie|hL>q`kp`vElR($(|pKxZ*sTLpe^G74T`qekcdKnk<1>bxBJsv-M$-&`mrt>9t zA57>EhaA6riK{EDb65{&iyE&kF-B8XjBj;^5Drb%}X zr_@*J(hEjIuNH2S;5u+YL+zfmRyp8oYO8S=Pz@UVHGR!f3PI90W0?t1Cf} z8e2gBU=Ok1{7UACwn2!NL1qyBjLKI8DcFRzDy{LoB2B2EOKEnvW{t{n zyzFC&h|2n8*KZT@jCMSMlcz90g=S6kE1U;<3UZMysGFvBgou7^lYGt7wK=H%>U4+g z&*7)NQumMTfw6goeB2|=V&qBV1Y^Rp#X$J>qNa$3PPI*TG87?tP5RX)S+Re0%X#()5#9VL?YJ> zdI$rP-2;xU@AJkRZ*b$_knwPYLg8D-C(mE-_|+-Lr{^rs&ZtgK692kslCPqwNggCi zj25LLDw7yA%4bL{At&yyb92fRz^@7}|pm)3-}S18^f)7vQscpGp{Ai7SW8lbFNiVQ;6xfcS0OHyCFdA(X?qE}XRcHwQgMtXsnR1?^enObD*Apnvo&guatHf6`n@ zQD1wUe){2#Lqki5o;(+6|EteneTMNb zX{%$(`Ew+5n&zCQJVW{t6;ffkT$aQbCK(LV@8%9Nsy@L_&+&pm6W;ywG4Fly zjPs`_1k(rIqZ#ec76ZYym^DY8`tSi3VJ=wgSQWG)d64n+83BlD^8Ek zxI8=O^z@YVVo6iCPB(9CtDO1a(n2O3dWS%3(Lqx0bl>(OoIj9EuZIb0SB{ZFk z)!L*t)_lA(4=(5+=J z^~XH1Zc#BH&_rSIA>wQz_n}oXTi<;MZ@$gWoj17o=nM451I~^wIQjG$&ErpDxd5Gv z|0+mm8+>b%$y9_yift^x35W_c-X$CCvaFXN4gE~=&i#Aby|#mHYBCwnMUILB7bC_L zD3P)pqv)Vjq~KOUhO-tSJX$3wopWhz;~hH7aNZNV$05-=PXV~Zw4P(YI){`J?>xrj zX;SVTwoQTDG5YNVJ4TO0q~aqaE5bIDO^R*aNW@H%QUq zd_{0B<#a}mQ39z|qFxuIwWIW@k9UD8aBdNI37{S+|yXbBRfld)oqNgNbZiyB+)5)^7hk#z1RZoO2Ytf~u@YraTBzA-WDmp6A#u z=b)-8a+Bm0i$%G;NUP4{6r-eRE1XNAw4pQNOO?8EiQ1&l#;{zkk_KEW*1p9R5?2Va z8xv-Jg)}L+3t2!NVG6V*OwX7Nri||Ik%<9|58q{NJ(={3W8`NJ4|!gP;_ai`L_eriza7c!EQ4F{=R$Ma1X~p*@bW6Rq1Mzq1v-DG_>2 zvz{io>Tt;5<^yzpMBN(`UVQ@R&%v#ru7NeUNc0hveDeQ~m%JJx z0wi>5bZlsSYBN20El5wq&~=VCp{g1m)5SH2ki0yu>9i~=$-boOBeX_?i~pS%elym4bqGF1yaAgF-Tx^tgHF4Q}7Q&Fwpf+_`rhEd$;~ zR*N;~XQ!N>ob%$@OU^H6EJ{mNR`{|^+OTSgtSz(^vZ)ywk5&QG*Jv@IkU7$oL{}nQ zi&p79)G}hCL%Av)k{upgY%cUsKrE2tND&EL@wYCQ2%*S&Mb|0oI(;&33nC#Dl5}DE z{7XndkwwONMSJ-H&wujURHxseurKMkC9zx)T`CH4B*sfz1pEeLo_<7)3mY3-dK`eP zpCVGcBVnsWQY@xnb^^xd`35`_s8d}@mPpVfUr~3#6OeZkN7H%ZO(s)b(xz5{)bNQQ z1Ni0?H~lX2PXy8_iu>OJ4k3)wH`ECZw(rH~nh;{smHgLuZ9xwKd>1CXQNBt|l3j`w zxC`v^Dem$Kp?yWwJR#U~jB2o9hHo#Bc8zi^h0=(SF%S)9SLkFpP#N%3db)>1wkKv$C zG3oJz8+UQ`F3Tk>77Jb-zvTS%6^rvZZPO4do74d73LI2*N3Lx9kQwkEndca#5~f*6 zf(PH_BgGD^6E~BA5VtZ;5g~YwupVDFUGpZ=N|~B3ZH4H(3{gmeGRX&_Oe?Q=_wJD2xX#X2d10LSE!CtSRCq2e`vaZnc z-l2>_c0UiD6*!ydWHCgv&?WM_^nDz=86G+SZM8eyip|7bxKA-FMdL#3SnyFCTWZpYZua`0w7KWWo+&Z@plquSiy9VxlC*XLrnB93nInZ8AkFK|@Q_HP|!u^ppehlE41eF2D41*Et#q zKKRZD{Lzz7na-DBaz^6=CRxjBRpO0iI&YX?t`RL18TcmB5|Mq_yEb6IKjP-WA$gv2 zc{!sMlEx{Pbw%0Ks60a!l9LaQSuy6{`Hg>%zxC^Xm*GL5dfo8x#~-s=E&oEjyiy9G zMJi&NhDZWBIM;Sv!q4jOo!^W~6Sb~sk~A;R^Q}QK##DGoB!wwxTT5NnG;M`a3NTw* zOKUg9S=u$3-dE#0=kd9A)V=rjR zlAg-xDMjT1w3e7BNr}_xfJAhMrf7(|LYOsSeT)?jX%up>%jo(8^5FsN{yyzs4=z51 zp7jRC{HSm&rVq_*Q^#Lmlsp&s%7JK@~s2B6L9Y1>?~Uj~=|in-A`B`^F(h*9^hIx(uAYIA*af zIXk`J>|)B<>6CI^v0SdP&f!~6D9aR1>{|w*VU)qRpEHyh2P2L0H4=vm7H3!ZMq(R* zZ&d2=$4KyP2cb!akdGmKPf>Pzc>>p{=*VOwwhb7IkP7Ep`nofnZgVR_nygEWk|q(s zKDV}nkPM7syyJ<}AM)(||C5ss|2che#wd@dXmQp~h~DM&e}By$&{^D!to9KIuj8XGD^ zkccL-U-Y?s>l*sOEq>*z@334~oSsej@aYTw_=ETP=;bNTPCw+bw#0mhpX}2NM;sqt za#9rNqKD}hTsyi>F&eV7x663HU~hlS(Hmo2{WkOYip#TeE>F%_&gM)nE@_tyw4{-C zV_~{Vd)s_TV+_({#5_yj1k(4sT`yANgWGnWqS!1QLG(WD(=K$Qg1`n58Y9RckWt~K zC#p^!qyd+n@hBxxZO$Qq&ol5{ew%BP)U7Gg>hrGKtE+_6ts`5Mw^FH7-xW$x8iX>b zi!KyiDne9vbfV))l5e#8If90K1pP7W?!sUQ*RRvRcF6Aan-n`Eb`M7cC0H#jrysn> z{P=?Q*>k8?U|njabZ1FoCN&AQ96<|>iwZ)Urpm#?;UU@H9%Y?m2BXm~U$}pdyF2^r znw&tDEV(|As~lrGp9+c)6FpAlir`XlFNN&#BMqB?*bvpW5ZZ7px8N3?LYzYg)OGUB zXsy$}Cd77XpKJ)7R4vLR-HSj}U87oeceag3DK$ye=W?;OR5;k)3zU={y-}h%>6>$c z(O{q7{LSBD@8(^q*^JA}Q!dY*QeM7<@&wvbl%F9&iJ$>hC6$C|0f!JCsbU9W5C{#5 z9H~-}^9EcIW5C-)!?iA<>y^?-DN}P~Q#1uf<=05AD1Ro)Q*%zIsdCD$k6pHA#QT=u zW6F3_ov&GSjRC1~!4hOZsvME`ARDF4&I7)roL{0MHNVUgigP7od;A&4|E z&|mzrsBx;UwZf~6%gVBI`yPMySN}u4c;`!e^zOS{ z{@{mj@`SvnX+M3R(`v?LF4&WTe!tJmdzLQa-cT^ehny}~eEjS&_r87~Ek+zae%6h< zTjF|-=xd}*3m4}Q#t?<=AT2g|m89zQg9^2wpSThUWMavB_7M-SNq*zsdYixg=GU0W z8Q=b+-{p6{|33F`-9VUvVweB{RpY7Kz^W=apOq+?A+@3?G7hfoAcV&WPd>@HzQ0Fq zBbVpr7?ZOqYtH9$M&mv5$u34~9Ff8J5U($J=bf+cU;J19HMbt@U@Q3e;}1DGKEoJI zQJ9o#6R*1cA%^YmLEyblzBZ-sUJ+x9R*Jf+ugr}8%10oT#Cg#jkP@XNZQbB~ht_tU zrme89N#3QH#^ zpGK*uMUL~D;`(g{`(yIKglg{^>zDhurys)N0=y-7yUpGqOA-kYJM8x7I{L3)@IGH4 z{YAvBO-94(qapD+yyNv$>@HX|4UAImSE9otdXFG&05aN6mmgC$P`Bw3V$$SCMeNsD z0znsCk?u%3sUjoW+hctF8rSdM<>>x>^6?m*736u3wsCy_M?Ye{t~tB7Og^KghB{rs zF$3^PpRA-tsMLuT9YQalk)0DPx{jn6JTA5n8o+k4k?w*Lx&!JnZ)w^{bx)HQ88`3T z;O>LlT)(x)ty_oe?W9k&ylD8zhbJs9&N(?b<7_%(T{Q$3Sl#}(v`vF-Et#(v z=NY5j0XHUx+`Tqt*GR^NVq^sCi&wa2NnNh6&6@SHq6R7#X=NIk+1Gq*qPuj8ZVDzt z3T}>}MMRqb6GVb*3DME-=Lo4#9bjXFoRvhh7v02Mb{$H!El`30DO$!o0ke;I?@#^_ zXOI6m*UX�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 OPgO}vu~`0kz<&cIvr{er literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/core-concepts/bridging-send-message.excalidraw.png b/packages/docs-site/src/assets/content/docs/core-concepts/bridging-send-message.excalidraw.png new file mode 100644 index 0000000000000000000000000000000000000000..c53a592c5cf9dd30d080d44c352fce7fa30006b2 GIT binary patch literal 146508 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

    1gIavhq-GIQU%>d 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%0AfN1B&3(&PWpe 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

    +yNUs_=A{_%;DU~0d3Np0z- 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
    I zruP88 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 literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/core-concepts/inception-layers-diagram.png b/packages/docs-site/src/assets/content/docs/core-concepts/inception-layers-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..001899645b0e93a16c49026581d717e94dec3318 GIT binary patch literal 26312 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 No^HOo%8B8B|0heA7c&3= literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/core-concepts/proposed.png b/packages/docs-site/src/assets/content/docs/core-concepts/proposed.png new file mode 100644 index 0000000000000000000000000000000000000000..c9cf9b32caadc9c3d5eec5d3ff5cf1c8e8ce93bb GIT binary patch literal 869207 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%0A^plX`Po1MpyuNK3{ z5Ek&g<_0*uTDQuKrRY5~!DzHf9xx>H6%2(8Cu}IhckU(!n^!rt%jg_EB0Ellx;-#) z9TQTW|IIn;6zTV%4GoYqM1KPc;b%S;n4pfPaiCBx-^jR)`iz#H=Ab0^2iVAo)nJ(f zYr(o9azbNcJVNC(51QsV6^=`c#7)I7<^dyJBOt{D@}2xGE|*{6_@_*KmL8^hM!&K4 z{&2>((Z@H}72s^6;Xs0!kVRVaLDLZ7vPznAVrb8|{@pZ|fuE`_m)n{o7S9rYn$?A< zUw#7r+C!-}VM=6+d3khX#irVZrm?vzQy2}NqQO4dlu0Ds5zbBdZejZ7<{Q)e6OsqTDlA@n1l@xo^u0 zrF`WUG=~R2oOJ>&tp}hY#2bUr>I?QCEQ7)*`y<%5S-$$DcIkf#px{PsHU!O{QE0M9 z2A9s0ly|*7vX-sW>!f_JZyh3QjDj5W;b1WytlL9)Gq1p0iJ_$+ZzsU zJ!whud&#)j=6_=W(9c`*t3of#m@5c!G66uFK87MqEaAhT+`E5%MEh$P#kssG&5vutdextBkwR0$h_xSn1DkJXoz;xkXtf64@M1CtlcE zAr?JWhy^$=n_dq;gwo0>Ps8$jIzcvUI5F(ccKTJf&Tj_3;~s2xf7ApSA!5gNff=>5 zpLuk$C7c-1O}cExPlH3OK+1_Vi1`~Qje@I9kj{6?Kgo>o@@a_lZ@FQV#n`iApsDK@EBYj-3yv^cXezil6n*hx{dZ2O^*d=N3YZCI3&|5JW zcc>cN*`_Z~eEU&dseNU(P0FrQ&Y8^e8ir5v+*|7=HR<>DdV(}1*|xjL9dQ1UcR^iU zUE}Q>zhpYVego94WAEzog<3n-sgl(Uc9T!YOj_*GyFh0W_Uur!)!og7$VUCj-GNuc zU!TuKCdFcITjXSmfL@&jyi=4@sxaYbs(~-y9DOb2ZA?wlk;6vkI_c!eTii!0!&g_; z9ErKam%yBB(qGpd66t}W%FkX^@+Lpx@1LomM365qP~X#KLF{59{#E;#x%(Zspu5H* z(f{qal^1+$q zZKZ=3z40&;P-0<)-7F+~_K`K?Gx%70#z?h&jj&crPE2^=Pcmirs$e($^QTUzI&)`W zZ)dCz$;?%~;p&wVN^37?dTs|d+!l$m&eeNaVntr_Ys-v4ue}(wh(orcpf6iojl~;-K|xybv2$#7@YWGh^59$g z1xccaj+Fu}L1n(&viiRH!eV~-VzVtxB)#h0uTsk>%`*MEl)tg=6uw!ybNG{c*s5Dm zzSb&}p4**Ib+hw=yH%Q=eBpmrAfvOSS;usBl?`f#2Xc3szSAKf2I;MY1Z|fZV%=>Q)Eyf< z3cmmTNmG|)P-^Q|bjMJ2ayDa}_E@>oFm#@|0(2d*hoa;07gPb#(RI3lp(>0#Isupn z3ld9}LddZkRpBp66elE)qllOaT-JMuZbnB(g}K{i$_!X@1Fnl7H}NG0mJ>LY{% zVCOwvaugG-o)tc`)d0_F@L1*|&&JZ2aJt@k+85yMEG6;#>B8s=aIBcYNC>D!O`!g2 zfT<=KG2}5m%Hf^;*63UPA|S!oPQ1Xr7F+dD*4YPRoxcA(SPmd%Uxbo=iuN7aM8U47_h~j#uN9qYL-(1BXK_Ekazz!YX46ENSt!9S0qq!%@})? zDQ^i6%u49+>$Gy`xi=Ky)3Hv4Rev(VBAeM9e5vu{Mh3KJpPA!IEzuyyFVgaCZXs2f z&4X#yrmqi|&J9AV!%6d^FB4omKBDeBoca5=NS-qSvp>aHd23$JdF)OIsMkuH)ethx zK}8!<03bF_@E}b06g~Dr3F0X6VoiA?mTPU284Je1<`{r)_B$Umh#S;^RjnCS@bgKA z>|M1V3c^Fg+3sKt!%!ix#yR*^_H%`t`-__1A}z@z^k*Ig`gi!QY+UrjEUHQQ&Y{cI zmI6Do<>Ano`j6l378JUsxI6uDw(ytS_`g&o9wa;(QRPvgfOo)YEX~j}{f%hB%Rgp4 zs{UN=vajVff$fj2UG^Jb(?aN=0st{Km|<EAr^tU&D>$D^!qu*HiTnV>WvHxKzEm z9cH11KF=rlA5u=mih9?W09LoAyriMZ_qI^m@PBTC`IqR@;S?{E$ErOM&apJO?9xXQ z@z;vTf4}yP>kqt{bWW@Yz1?Ma>Hdn`SJzNwC?DbFnlo6A6SR@3;{Qo^&Tx&RPH}GF zomJhK&6@Kx_gAG+j5(Lmu=u^8=3{vqMIlMpQzH3ReikWu7fW%Ot11jlu=q=8wEnnz z_7F=}ty1;HExq1uo@S$0NjJ+3>gq9jq7p&qPcb!cP!)=SY^(%o$c8MNIev$CHn`Z+ zIFT{aWQle|<*Sd?;gdIRKUi(<^SVjOf&)6fy%LY|*h6+9R)Kpozcd?JC9iNTznUF> z!`3&FBdG&~N^<5KNpCGTz690?vNYbPz+We|Muzgc^qN72a8)KFo=vnVI5f8HQroWV z7)9G1^Zw$KMU_NB8PL=80VC}K)qVNt3{&Wk2KNYH`%5hXkBa3-B*BGduiLz0a?!$O zreo8ofo78dS*S6L7G(gJ1g0DQQ7C^$9%k*QJJ(!u&(Fs^hm>J zZjJ8sd687s`%11cE>ez)=7ZS>BGxTdPPZ?d_s}mopSoBfX{79$ykK4SXBrAgC8=N} zkkZZZ>o$& zhpkt%-|M&Cp1e$KNO-osm64?s@j?g2_E{tEQE5;UwM@b@zUzKLX;o zQ=D0%TwJ6fesi)g%|mTA{<9ne$WV&jUt27jzOPX(a0!QK(DkR|+*oe3A({ zcX@n9eZsJc2Bwcc^Z~5X1fKfC!8cII$HPud`&J`HG}yV$;_z03ejwb>;wLntC2+| zI+@rLrJgR3crmc}#eNz=8;Mv3*TmP1ez7x!d)|gr_q~A3ZsCX!>$M6sdbd&Oioadq zIGaF-Nh*-x;hmvDn&cR7`?lJm6Y?3nHQocTnt`0aTvtmG6UN;n>Is_y>hH{zdjQi1 zeA`b~`GkDx?s4=ZW_i`mpapAD(o$@f;insLwBN-YJuYLU@B5Uo0z3h>EaE8&fXMm? zUV;?>JZR_Zx|+LWOeF~jIoBftMhk1`uTp;h{h+wsap~Qn%)+s~FFTHvg~hCyo6%+9 z=YYHGA_9;W7hlRQLVt-pADn08(nBidKilSp9T1EPiO6EYf&<|LX^&b%kHT7~&~b|% z@)w$%T}0!?dq~4(ZP(e)We2;34bsz=2Y_~t&=dnoo6JY0c04mXad3=IseOSk=ic63 zf^GBYFW^=qU>yP79OTM`W^|J^2`q|@JUnemst*>p(oTNJPq+bx`(H7}M4G^(67YsUQP+M7y~<|aS) zGOO*g3hHVq6?eyET0&aKsG7`YPHfjThQE491tTT&F1^7UA3ylmzwn~h?`3AfhuE7D zu~~Xzbe_n~3ZV^g5|}Y4!}I=fk#Cz1=-<#|rXw|62E1My6ikV=Tn9HCqBWqrC9p*D0JKAVkNMB z5uiCVn%r&2u5GX(=NaN&!njSm{^A;<3oas_PiuW32-zt18V2nK86(@N+9 z4rux;97uvD7BeIsb@^YDrW`vvw{9i<7in>6k>i99a4-X>m^osSOJAnP;ePJt}D&T1pS(g>24nz!G@30!A5I19euM1&^fuCy(2xtIQ zU$~gHreUGRCLr4~rQb{^sm~R^WtB&ET&OE!;62s~{PCBPD zs5eBx7rgqvj^|qdM~2*{Ohgisk_rIYHKrAFSr+bw<%BjujzarwJTuGDFpsKdXJ-=QpFC zB`EC2qXVW^9IV38;6IjJ`9~ksYYCt>xuI3b;Ezps-92-l*;-7;E}c)fcaecXItQL0 z<3^rddmgOK%#hghkgApxj+#&GjoSPoBT0L&AHuN~(M4`i8lnd1JscB4rp zQz6#;Vo0{@mc#yrJZ){xxiF{p01NWfMe>(qq>3E#OSycN#i}cq?iG-+K@Jy(<&wXz zE#u_+lbQ-rkgK)}%!tiyd>wBQQONxQ&p_y@58^nXaHMg&6IL)NV1Rc3WU*A+&++>J zf`luH#!^_7fn%e>@8=ElVZv)YGCl2&UP~jtV+G?gX%Idz_}J#p4vOi9Y*f+G$6`+n zN&23XpD+xR=lY+gJKuvbVB|Igc4Hq)9%X%z7mB+987jd5>P-ZCap(S4*^GbAs>(u@ z2a!PT*R#Y#ygm(X^u|%)Rk{BCJudb_9fU%Wg`J_93LdWlWd2@D;VH_w_UvY@(t;2M zxTKgg=Fq6qyjsb%=rH9hI{?scFDV@&-k$m|#!1+ZH6ZbV@;Os;{ zN7UuB{aiJ(&Pw+ZP9Ie9%d=z{?9ulrcrXlsZoXG;0*|K*7HPt7H;5CPh?GfM0lQ%w zm76r|+st=w?kHBig0(%MrNL@g`5p6In%$;HubU;D1A+iI)&rKcqO3Cs>6VC{>P!ox z94fEMZk-Zs*MqDY9fXJ95kfZq`{3>pC<9WxS!-J%d$IjI;woTTQFm z(>#8FfoY=LP`v#e7r^@cw*l>6Hq>BaEF|9tr@%;sK{pj6&w$N?wk%Jd!qz_y={m#w zRC^7>O39;6;unVu?R<;t+t$=}y9YnSw2eIK2&}2B=a-h}ec?)zqYmp+2|5%DjeH)X zJw>h8(o@eXu4bhisBNJOQW;kU1`8EBSu?tI36nxOZusM|4t-vALmV^??FRwa6Xo;{ zS?iz~8@cbEdmNMtZ)*p>`4_xzf8Ku5GQBY~TCw;|dj16ZzV?{?bT@PpcU0KOwu0YU z+`!4)`v1`N7G6%Ok*8+(6tHvfLLJEGGTWoimWkxb7XIP&j9y=O$m;MSRl zj{^Tcl6g$IydO{4SDvFn=?Ha0L?L0@Y-!c$o;q`baXsG0PbK6=K`-N9f29pIS_QMNU4xtSv#DF|J81*Cl zv4no-7GlrG!Uq&Wrz|il^PyVb0z`{37;Ru^ibj{w!PAl$txiRx)_!7pPVGKSwGfbY zTULn|^{dG(UbV_f4)Y4Z_@%I*<5MhL#+RJ5jqG1^7G7_xF?T09FXr0V;`Y-(2EUSe z0+z}232J4$4GTh{DTQTkVE2sA`i*vX?d98JCM_z(q(VO05pyX19JPek{i=xeeo)~^ zzW1@r-8tHAgsho)SX%dlfUvpOpX?lP@% z{NoiNd9pk-F0vEI#Z8+YD2i|ftQ^r(mI6A*8FXCs9Y=2n%J^7WS%=KqoWF>={&|kZ znM|ozZTstMLj7V3BQtsG9M4mYGJzdDHv>(PVzvsJhe<_B#5Jy z(IocL5NCL1qq2~TjbqPpNi~Y=>{q(@0HlJmLE`WpnQ#}G?);?T*wcUOg^XT2^qV|d z{;_*VkqOS)zus%;SbZ#voWornD{I~m&pPw79PKDD&^6AqZ`d6jgI2?qR~DVE#!#RA z1!tW1ulxUyWj;I96a#KY(6=dH$Wy^QasWd60YgE z5pRRdy9qY=E{K~xf*t5^U5dj*hGI)@%Az+9Rz#W%GL7z=BcQPno6Dn}F&{ETrs`Bg^8Q9h4eij*FgJ8N;5%S+ibH9l zAwJgxU7z+hB?M}BYLj2BQfAePf!X5jYMY>SR?~j#^%A>TSVtB)wGtk7^e0dD#eb>( z_u4vO-IViW06YCZ0oO1KBoj}GPAjhD7*R8YZr9r`<5~A| z7^2xIE)pC>?$CH6NJ>*0_^k!cZC6IL18W^GF!LxhG%vhw9ly4WQX#eHmPR^03kdvF z5_V?Z(!e@-&d>BDGSM|JZGpH*vB}=8(m)uuXp$2!U1XSnz0jo;niZU)YSo%6nRQ`O z0l3I_tH)ya2c2PsU~Yb{CPSxpg3%KLm9HS3nyE6i={Z$({4)au<7JpRnKI znrxnv3@CZf+An-7*R=J>r~A;wYf(w5D#7-W?$IJ8b)o$2m4WqKA$Qxb%2b1Ijy124 zi6UjO*K(WdZgfVDbF8Ls(QkSK0=*e|OJ754HV|-s?8*ifBwiz2I^VjlgXXlVKF-8% zbzFiH66~6R+G8Q>vz>**tM3bB?DpL^Zmobp3tut4NWdel4k{gH) z!hs;r$5l)RE$EsEfcLV}4yH@v-hTv<#~*YT;_D~+Zok2lg=`9IL+IvejO^RWv?@~Q zY#};|CLCjB{%4TQNaY>H+ggN1n zubK~l4MAmV3H-*~%6P76POY?u{cPXTT11l*q_)zqKEj`$VHvGHTT=LnEx2 zM6(vv&OYx*Q{)}jHh9QzIudHn0>+>Dj-g<}wp_*d_ zU%Bbo#n;nu)3fPN8)yepR={b~cnO%MDeDv}%KUR=kh; zv__h*3;A>Fxu=UE=ThggmcXb{?~^qy=hI#nKNR!=c6uuI^VEDDn9KVelfdq>1ugVS zz{@4zF4~hOd{YYeO>LIBeyLG5*v6E*-Rh4ONg3F<;w-bqpfIK?Tg-keyOtlkzvKwY zRB&y|RS<0AdZE{hkMg8C6~fz3i=ADD@QFxyS1qQQNCs(}1Ti$^Qm$`W-(z-FpVcslTo(@%~pQHrmTlp;z*=+yZ5Dm6ge%*7WmT4Pv#BWRzjC))MQKPDE zsyKPw#-xyZm8Wz;PRhJ8zxcsv(d^4Fd!l!JPY(k*j%FU*f#d=d7>D+Y|Vr_5`y<;lqIIGb7KbJh;bGuR>t#Sgz!8g?$WbT*l4R_iacc;8;F+}VYDHo>V9zsbA* z0;Q=Z&nObRE;>~L=9%Z(TOd3qf-FL8e9fPrN1!M&keWn-+4rO*Q@|+2vNH;&+FrhN z@4m`zea5ghViSddZ^#ca;X7P(GURST8an(`HL(O_`XO_8Letl1bIOdyY?j9#T^@O> zxF5iEZvi1$nsYz?E6de8*V~$I0Cj?g-30W2Z+MeX<_?gL0DFOHFDh6+#rahN21$

    pfyKYw)z*r~B%ax{wm!|`p<88t{}%CLJnHk&bu8~JeWCZdz( zlkIdvlP6Hm40(+j(5PfPi`yWhmrNH$5fU%P_FiOd0ta{QX$|+)mt^pNcPl;iancdQ zjKSVHKAu@vXPir6OZ=N%0{*ziEZbejJ0Bgv9v$U?F5Po2$4trV2^%n?97(jg_bQ?| zg1RNn+rzr0TDcBjPBmGRB3AG8@c-*5=RM9Ec}yy5vI(pWnKdi3cuhllPk@-kC%54Y zx)HA#cl|C)a4SYuo!J%EN4<;G3n@TdYeX#Svk&#Q%{E6?^PfUmcO>F5Q+uk;RMSYq z=uIE6#b2#ei9Ike=VnnOcmS+c;|Zh48wVX`jT_R@8i%|4`Xi%ww<9B7CKh?U z4}pLBg0bD@jlv@mOMO9arY{)7TtpjBiil05O7XN;~?2V6BiPt15TlV#Ch^Dz}8rM54)V=jY zor#a=UfQ+W&giCE@+3#+vA$>6y)%OCq2B$=r!V3yslVG~;gcbzZ zHdB&bC9sdh7`l#t8%+eS&Y>jkVm`1WdVPvbEyYYc`+`6GyqHO+t+%`)VxqB~S` z#CEPa+gtdRbO(^OY6i4LgH&gVk67~Bn3DNhM~;;-%L$i#P!kps&WI9@F2h%95L4ts42~UYa%7k$w^qK|`$xHKNor!~U2p1y8l2|pOO&A?( z2`{T+ViaGLd}P#;*!OfY;&;1sq45WRD328z{caMzDTK_D#=l+)04)5`trmWg9cV(U z_x_K^eM@bw{I9*6sf4I5L_X1EVF_I-aIIaRXPZP^9=Hj*H)o9c9)J%FUA?%>Xg6g1uPtmzToPy4rB%K`1-@}zf&)##ES zw1a=*7Q8&@_7&Z(U-UqS6`_U zW7~m>d9S-lheHe~l&_%sMIY;< zpz*#WU6!25mXD&|HP2w!XMG6>drhCuI^&5|XvayP0{PWwV%?|pS^_V3d(J8f?Nl6I znAsULneVe#8|CPO+B!F1>)DoSxcl;(onMcAnHqaPQV0IFB+E^hto#i;AJBN_ve;po zbNDY)g@-cHbN8B74v?1|#ra`Y(Ey;p&ums*h^2T8SIfh-Al`2Ic@G=02FB9l(@R1K zX<~9I=I*;2_8X)xvRTq>k%M;Tsxu~Vb`5xsWzz)I`gO>$s$*XJ242i zVo%;8(vE2)B{E?F9u>O<< z0aI@W4EI*5nMGk!n@PS$r{HO*s3nD-{a7WHsq%|Y8NG{_#n~sS6nb{1dWiA*=-w1L z3L2ZIzU|kGFwZO{F&Nf*#}p;=3o$7Q*s_R`SV`3wJJN2~(tZp~3BI$t>KLrQ5jC~U zxY?Ys6fm8aWH{NhBq>uV5_R{t)61M>Z@QVEUxWd3jgbIb2B;nuz%>6y~rZIX6+mGdA}@a@$JqN(1qdp>sZHcPMxp3=Gt7BO|t zHpjbC#LaWJfUp$d7xlF}{xLHh!L=OjbT%bw*}gjl!MH zB~YX!tIO^O=;Yepp4e15==vX(^drjECgIVg=uh**Jrh75#I%2}jZ$V`LPgTrbf;1~ah!J8 z9cmv&MTZHEz-lBo*Nyy)o>2?Wc38H5o+_6iFZ;mv>U8g2vNjVkl<%*6@|Zx(rsE5};NkKI9JPFAIF#4=^MoZ zYW9GBMh$RFnj!SkLBDx_xbjAXfjknVx1K5pUIAO{=-o|#6V{t{SZ{pg(Bzns`1MW5 z_ct*w(kF22%p5f02f6?wnx@5MPWE(z*$5<*wg*j8t$>QKEuJYL4mj&@c);%NLvxw# z!(STj6oC!!1ZBstqu>6qp6bc#-)~b_LHup#*!7_5H#i`L_%ub#cf`g^0l|v^c@P@^ zBI3P3FPnCP<_<_FUTtjm3nCaxvE8NK1btU=m{IWu)#q2qNx@pgOrEj8>YEZI)Ae^s zc`FZpXnpG&zXN)d4e)!d6tq6rxjEWt&VUph0T9I--T5X<5yZ%D@C}c}C%s$3?wyj% zaaYUzR#p|09SZvnI$+-~@I8w}sCM5n(EjCgjD!@4rUGLb|6-2_#K#8)Zcb-PX`w8; zA$ccm{J2%W^k0J1fI9<>bKf_841|7R5ZVzwKY88>B=_>z(fvyB@H_E+3G3iS3-owr zot-GU8kKg_>KyX}r|yo%=C8V9H68T_sS5HLQB;$IKj*y`gki9kZKgJ+rg}8s<;8`0 z5yF(C4n8+(&*awKY){L@8h?b2p*1Wln;o2G?Y?Y)s5~oop5+G~@{)_Z1wPe>-=tQy)sTQ8LY>u5Ayo|R*(cQvd9+g~+#mR13`hh=vCa(YS3 z#MSrN&=YYEL8bsH!%bDO%%;=mh0-OYQ;N;UC+9}5zTDM#)Qlq@b%d?qhF(_!?bo+F zz#Y5A=p%Wy?)-?DtCe}olF21o6)?!l>k+v$#{8GEg%snyvMBmPzVt<-%IWt&gheOF zIl*dxMvFqoPT;e1Wy{yZ;V-Dm;htT?q|ui$#L;}g^{2hxPtJfDAs;D~rSxVU+Ifh} zU5t=d9OY{~_a!`DMdCz{2RJFIN(m+Y56bEWYmYU~Ddy`H_&(g|p?Nne38PmI=n#9f z{7j6gjg%oL9?c}ibsck58-%k&xKaz44h_67JIs-9*jJeg(A7 z#F-MI;g^I-5j#=lU5{a{)!p%{T0{AinqU;ylx(cGP^L_+w(cU~dSjiT*mvmEp|cBX zJ$YbJNv<|+W!Vgvmfee+M*i+hJ3sb#R-!d_weQMbdoV%e5+^ad!c#>^^83 zNY*C*u0*WT`AxX2mzC53J#}snoltyr0oR}p&aWSICfRO;?x z^4S0G%)d+c4J>Yv^`GV#QfiF7er+*RV&)5~??`AeyLQIaRomG?znWE6`O7{(i^-<_-FgXkTY=sw+HiJ6vk9yh_cx7uu%%8Hgu z<)>5IVdUa@n2Yct-@Dx1Hji2i^JoBS` z#B=>o@$=s=pc1vR<6x(3?bN2|gMlC{|D@=b8hK3@AX473{!Mpn7R^&Ekp{xY$z={9 zUD9>4-FV64c>~&CoXk&VzgZLdSvIaO9m@Zyjq!X-;7f^F>x34bA@s@aTO9uAvM-j| zZ*A|5{+hF4ZK*w>{WhUz)=Nco0#@#=dt$_pQlsbi+Cyb(1{_!>=BDv|x0vp~XzN1i zKgBgVb%xN!4=BhkMw9d7vBqe)-KLeQ(>`SfWDDEMg9Uw{2p`Sn>q&nHC{+Lj0bDhya0`Lq6z8mercBq% zKTnV8KRDfhKB!0hu#Yjk*=mk{{(d5{h1;O*Z_(C3wL5azg1|46SKJ4nbRqP8 zrfkkA()Jp1_nab4lh-d*4C4fUP>C*80!j(xd$3ZJvx!|1KDGFKy!OsBrp2Dt#K%BB z`{eVN<5sYru^=@QAdqk(3+vB?bxqU1>i-bJfSC$yT%)3VJ^OMk)OQ?7+JZ<)txiuh z%mw9#S9AKD2F34xGGKBytI1_l&wTwO6Jj%agxN6t1irEkmE7;=u+$aUv4T0;N}jLZ zR5LOjN~W*uM|*yQr#ElT#-21qyFtCPthPRbI{-V5?F!V>^=^IYr#k2`sP ziza0B{1z>I@>eA1}MiL4MH0@qnO+lTc!^>yzyr5QhKXlBHVg| zo(m29r)=)2t*9m-m||!lmw(^Za{3}>U&n7>)xC3nk_vXTw3%?+1YMeCpR8Mip$+^#0(W0S&(rmWT5HR30m3UP z`|iSs%tvyo{!|YS7*pA_Mz1B;#*9ued9T!;@9vKoH${6V085k{>rBh>D+)0)7HpJGo|GK0*6#1p&j}=83H*kF&AKdQU38$d)tkC@{j+@yfKu66FB|x=V z+*znRX>6nC;sych#A4K>A*;B5ufd}NS{&)jCDzu~vXcgX4||S8Qm-)}Y=F<#{M7Qo zJ9X~K(AN)D8J-t8rl0>0Q`)M_KQ4;vBYCH15y|$QCn>!J@{`NzLd9)KN}_B)2t@K( z375d;5=DT^LUA?V`+ZS1SKb_~EEM#@#POG|Ngi2}>hIO}>%`)wJEm&t;t$T?nsKl7 zP-v9HX88gvVutLBjo!Ua-OyQ-Qbr2xYmS^!$&c5&%ptcZD;6ba;LuSCtur;+4)4-m zDgw$LylqHF8%W6eHALO3FS)r{*-Cqo)|Lz1+G&qh2(csfv$7a88;XniW03z=mvC$T zud)Fy+4_p&>=rAnu_`dsR43vN3-rLwEOPo*J5Wj@Y>qq!l(b#+0TLA;x)zPoQtcGN zRP9v7D1u@5BqH7Vua&`v#Rglh7%_sB&M>~s2*5vhZN;Tqhv9c9n1IOfHxzBK&-EUS z)fdiG%6AB(O2vaRQsd>)4Jg~az2^_y1IZ`~a!f~=6dAQ3gWGoVQPVPZ^9nI+*JW~Lr*i0;2qw-G3JJ87*`Ny*W)Xf| z%H*Aea=V?$pREB-Kk@|o$jgxXRSwZ>VA*d^%no1>$Kf}7s*PFY>cG0QX*{I;GlYF9 z0I?2af+PY2rE_Tim~T^k?rBR7kjiyfQQh{ZA%Q&WMr>L<^*;Xv4oK`RP~)BNhit;k z^z8UV&}*=XO%*>hbM3bFeh)i>I=?k}RHNwayC`|=ywp;&a}Q7?J^;8|MY{Y%(*^-W zT5UGXqXX5SUy&B$I-Vxd$f=b_Ln`kv<`n9jLbee!bHA^n9mLNr6*fS+DX)R6*g5yf zeRuqYUajTHDlUo7_CVT7%r(I(I(4}o>KrgAtM0xky)KY*weX`s89y;e;MEdlFoD zhwpQw_*u7qu(XBEr-3^c>&Kzr7hgxBOn3K6^Y*iRTc-CCg%|p(XVRO6iItbvpfxe=@NDbz$seNu`Y7?*H zc`n3~CV8?3l&&aJOuuyl+B}MIMUze3GjV2k;ucD(Yk2s^n|(Wet~C$AN}Vn0$`^>= z^e%RU4FBc-A=7dwe@x0|!stKl3q+Ohc^;ePXPSp{8F(vXzj#`#-zT`xxhf0kL~_I-oFmJ;Mts`Wa&>3m)Rrku#x8Z=7K9-V zWb<>{m-&&}eh@r_F<*&<<-@Hiak)Wo>ua_3;47rVEWrp|;N4WJIQ!aPdzrM3*TlQ0 zNdx6Kt9>0!RMbllpH#+l3aOCKTb(**GAthm;)~jRL0v$$to9a@MXfQ9YcfCr(C5=u zNeJ$F=R`aITJqzPtfXOshUA?`B0|V*(K{yKL;}r0w(WpkDYOTl&Mv+I44aJ?SJY?!I;Lc2 zc9c(pu9$qUyc|#}VZdaQIR)UjbHUD~e9SANn-;U&Pg|b67W%<&3H|GWsRCh%2-TDW z>GrZa6o!>YYA(32$4uoEje8%o%HPizjk0t`b{&3weLslbE-?ue0l**cp&>=u%&mbG zmSZWL{C`U9gnk281;@5zQjuG^(^HV}mFd+JhBs+885^cG6H08s2`qm~J4F4iJz6&) z%5U{fv$aJJ11km@^6qAzs#3sa$@RPq(ckg|;)C><&Oce^ z&<1S^%TE4m8a+#~9F6J(9bOA5=u3pwR+IY{cyaKQa$YjsJ=T0uyMeF;7k2U$rS;D> zq%irzidD-Qv{rx92Jp#iL`p!nq@!5Pveqf9BW9Jef+| z8m9at93T~Ev~^qxSDlbJ1!A@UA`*@9 zd5^o^{_J0_w76X8wZ}H`FA&lq#P&@gBx+q)9fNp8EKv&jM|HGU``@=-IT8ux-|Ar9 zXd@qMeVuLH_779&PF=T^=`syw`(>N6VvP zl0osJGJhj`nUvA=HIu-MM_OX9T#tQPFlv5_pnr)j=yKsjAwbB>@fjfVsgpE$I+b5tBu<3yQOO)OGa!Zm*Tfih20-x z?R5EIZb_jZOwO&r8{-Eu`gxFlTHnSMrd90CjULL7J|(yxDDZ=Xuv?6KV|Zp8t$xZ@ zcN{C_w^7rC!=xcROaAqoHP(;pxDFpaqe(*TtAxr^d%g}Oq_IK*VMHhyLr=&2%f3H*?*$jPE2)lG;Z% zXuS7$UkPtsTr;BAqyy1_^0zlg|IB93h(>-OL2#IbQ~fBZS_Zrd8v&KQOXHF0s7CMl zsm!+p3?x|aDFg-Bz5;43U4pWu)5P2~djgG-L^FLmrwapqP~#5?k*7MHXov|{If~PR zC7apHpYk*#05njA->&WGVQq}A!f)=e7S%^r>1G*jz}bJpnZEnuU(80ebD~vu5E9+v zFyINY+2h@yz}SaseO9TPzZwG}@3A2(#vO?Dn-r~+)mOANpOE;Se{9K-M|%=4Xt-t` z5*5tborVo;p)1t664rCwlVik9#LCTwX7F#TZ}JtqX(U z<_DrRmkKvWSA$D~*2wC5Kt;vz2s+yUr-fENiYdL%D2+0kckax09V z%pax23RDAA@0m0AtZXL@ScOO?KR#TYGbBX^Z6au$LC|id$C(LY_8J zF@Rvr!_`xr+<)#^=%qjE`0SN<1O zvx_UKTkF}`x>rIwGi4$0`R2M`?5(fVn>!vi&&KuKxJpHEPhL7oL=31|5}e?9t= zR)i}Uw&xB?I>PsW^vhTbY&p8I9f#pR;bkH)8_==U!8+ohjmMcSpCG`$uA%{xR2l$TVYhr6JwGVyyCPErK(KWQ> zKPM&0O7qcVHQdbZ{59X)JB(IGf>|xHqBlewHh2%p8Xj#u!i?(Q1)0uxLpo0wBRF4T zRQC`LFB?dW3|w4o7GjERR4@(+o_GU{zSDg%1?R6C0KiP1+V}5IN)twd3w1Ek%!DyX z`ScF2c_We0W(gxgv7A=%B-Dg}toNyx9dX$t&b5rx#LIhn#yxF7Jc&7AjQs0gc}7rM zYsoPUO)yHd^C=u-lL>Q4TzvusG(f3_4w%#`&-pE)-=h_A3Qg|4 zdb*{EQTUne>bC{j$}OnX39z8o0qb+hz+NB~PkaSq(+AK>ktM;yKfwXM^Q-a(Gl^JB zp(EiEe0@S8Q-w;9?oV!U!qh|1)A;eBi6kSoLolqS>vA+zZP+o_<2QCIU~6M2SAi%T zy=!T_gRR_diD;EePi4Opit-!jiQ#N3L?FVemD1fGwJ{<*yRVPOiUGixh*s7e5KT-A zkVTDD)A@f^=?Se9-@ITkJcgrU%-YgQ>DjPZI_x|SCycon$Lh?-GA7szY2Yjsy7eU@ z!el^MWjFkO-+8&iGsgln0HECF>Y=*BHgWbE)0<*f>*5z*0w`P$CLbFN-fPlBX;FWt z-;Du!O{X@e#gFQxD%e7*ztEmy52AGp0DB z%iCTXzmFyNuB)D!fCtFJ3#lZ>2J6zQ`l|NMX=n-97PgRP1Nc$==x185T(*{gi!5+( zZ?dUzMDLXwFQ#bFGW7CNJVnt^=VGhMV)lJtg9;;0_ z-CUl$S%6#(y3j!p6h1pY*bJPwQ(VOhu>a0~?=Y)6hmz;Hg_S`-=`$o#7r-tu~05C|mO zYMX~g&NmSMy;2z#8k4D*Yq+#=&~BG3YCgSrDCFJ?K1p@3zOiJTa`_63H!)mCelvf= zHU}`tBMw0luj<^nu#TL%L7Ln2j++^Zvn9y2XWp!&^frO#I@lX;I?B4&nOjx|Lv{Gz z>aQI6lCT-a20p5N7bgRap%|-Quao%7E0`lMUqr@n%al144Uz~Otsb2h~yp?lkKQP{xw7oe(_QEUERW| z6e1KmbAkzjm3Rf|r{m`CwzVv_lD&5T7dgwSBGS602%MPtom)Zvr;Flfg=$q)mo1yx zz%wFYo$ECXwE+`$yPrkmyp%FGXf;cBu$Dn!>;TEW0}`K-3(RxUP=R;=o6U$7w2A5Q=8N-cuSU2v ze!SC{Jh`Z6gSC?|a~`=(>US*@fLGIUz?3>Fk;ZNNNAK(E)V|8M&vxmbU}8mgZA8CY zo-VVVDc52h@Fe~IQ#YwVoIvu>w}|D7>;s$7&N6|RyLlmkuWC9MJ?Ml*wJE~@5{h$= z8MeAQSjA?h`kpnU3UDePF5qD%xO{#)35KA{k$yV%IMp%)()~~$V=2qz;9awK6=T9_ zugL}hZ;K+!@yW9fQx}m#R8kZYcTg6-d>B*f6`M;6CC{fX5mcL!hiS%ZZZ0SE{XnjE z+N6OWmxitNQyev6hBUhp7jW_8)FC{~0dc$Pm!H0`AJz_0Cjtwbk6I-yrR!DzmP&&I zbrS4v6YX1?mKi7V6;YwqGu3FLy-qYHBi-c=7s9dXz{Tuw`CQBrdQ~8Y&GL{j592@| zt)rz6`(c(^ttZL?)gDFg{Mw+8Vv=(zs&Uhug?o#~FO$qjm^WmlwZo%7O4!BaHNg+144UJ>@iFo-LchbA8|q4vi-#h#|yuNZfr(M}V33co5}e zn3{+EV5ntBSh1IBs6@yPZdGkwq%Ad9`V&Jgsl&04VYjwg*D?JW@Q)^aAyz}X|H1cv zAxYW`gD?3TBrs=qSYaKywL?7DXd|?Paxh{z^<29^jNhhk=;9o>yN^}WbknUd;wt=3 z&@zFEJv)e6r<3(rY7u<&tdi}PPHw>Uf~BB4_0>SjZLgHK{GTb{MarB)baPpUG}WZ z@22dh-s4=q_@7)|kuO$6-TuYQAZk(cBg{8d#b#Snl?9q4;!f4rDnGQoQML3s@ed#N zRmx{X6^mOU3k2K5rZ!_kOxSVy#4(Mk&l4TSvY1c%H4@DHa0*7{YwuK!sFQl1xi90% zQm2YXls=ClLsp%CQr5I~`#b6%Lm?!X@J#&3veu-VRc#~0^BJEf03j#_{8UUPS0CvG zaCWwP286d$4ZTKwt=-V95AXEJ3xSZb?;oy^;Y@CC4d7nS<~@dO#h~$>zO;m9$v%appp->N?t+dkqo9X#KIj&XO}VubBr zv$GDI1247t;cBnsZr&^UT~^(?4bCN+V{<$l19rglk*P%6*Gt!hbZM{!-hL+|Px!HO zQgvn*&XW3$#Yis)@RM-vLOtOL=yBwy{cZF8>*@Yj8$$s+gKb4aQ|-4lA|HcdScli8tx9{Easu|ncq5L+0;%SIJ|aCG7=-m1G$_uRJa2vT(HJ!Iv{b(Q>k z#%|nc_G^j$mFBFhK1DW{{#7KaAGh9nvmJ0v4eLL?{Qo!xUx|>NXezfolji5Q9$vrxzWmPvci62=tAWk#c`S!W2cn!x!fW<_)dq>r-aQcs zjw+qR_xjn9d4WPC0!3_3z#b=%1w%RJaQvt?hx1r0oSm${^;k0eFBEh ze8c)zYiEc%_kAy1Rs7QHF6%1cPVff#Gr7UNsYXa3GfoqSF{9;U)eHevU7Z~z;SiQn ze8{&G_Hcbm8IDU@IL}J&)xg;yl(XZ9q|3G%!z`-nhpI7sNaXT&Vh>O5Qneb5Qq{qq zEDW(8wsE!JuiMX&{+{q6F4CY{{|(=ETrAadzv=Ixpy1w$FvgPKCp_NP5eP zA7#7X7A?QOKjmi&NY8+ircvpEo1;dmn7@C0fl9PFyY|j6v;s)*F;>ZaDr1cSeX6$- zKa!)xE6?VL#q?Zt{1ZvD)DQc*TLCafW|J_{kc_Zs##Hu{w(%9Iy7Q_^)Iaa?YhR4> z)=8v<;n%g`hkngRX!!ml?`d-l*X-#W-9(LXX!YIeeG)l)k#S`Nz z%^vTzz4sFLpb9W;b*VKgCmMRB!vfzhQ&4RZciIT&ODm{Vt(%Tt50-Bf<8SZYI zl;eR?z<4p35L3U%!sH_Md$p}aiUEfKYPy5MM$oR4$N-f;9(_-v2@Hj=&qTIXd`a|Nc6B>+ z%*e`cAe<~fr%vckC!2){LO*p|v{jn;bb>@`4(+vnHz;3gRUljvM4cXDbr?cq1^psj z*Bq>Q+l;aG#@5qG24>ao>4rOyjAA@m)!ZAS+mmOlTzehtDJc$plwc(QfufW?C0si6 z`VjTKZIf8msm+Dsx!r~ExDpn$?b8c4kE>ttzb;BmI-WtlpYP>gGqTsp9j=`!8jpVfGg3VJH>HYinBV1y>q?%lqUXZi2fsgNjU<7p9TpDbEK&r&!7#(KTP2*j!Y)YUNOH(2GgcTere}F zKTD9O=6%21tS7Bt%3kf0*KU$g%7{M*2AMWQ9)ibeYDt`o7XRH)85R{sv%{WA_Z2m;=Z) z*J?~P&qcA+zq%>5jeY)4`J)NpvM3gANz$^~_U z7r45`JS6)lva=fhSvLKzlfe@J+NY`JzCrS>3JXrARyn)IP9BTrSbw@__>(Y-G-VpD zxuVC8ICW&w4+FfibjRQK#5-Y&ac76vyW>j|<`qB-@hdt?V|b^6Cp{{WOP85hVJa<8 zB~wr`vD*h+Gxncl8}L6vkPK_~DRohaUlb&!m7)x$+xs@l3{^I^M^ML8^4bhW?PuF` z{VNn)o1^b_(lzx{3u)1=rT2akfd;dAaM7KbgU*laNDB99QuMOO-YHzCBoLj&B=!^p zff{USu*b;)T!X5AnJkICrHbVzRib|(e)%e#nq8VU;^dk#d?Yq>{r7`ku=i-Vzk;`U zasR~j0kB|a2}~F?arJQW?RB$}m0-);>R0*~ERKw}J#Oz56g;$Bj6Q^X;@?mT62DRv zMY)M__x|Kn-(wbxSl{^km~$;_XTU2KMdUkJKzKA?dO#GpjE@+n{>o4>v(xQkFV#p* zkYg{ab0PM+d|Oe?JY4ol_H_m>L1rO{!~c~CjlLWc7o4G+3(hw772_USE-lt+yfy`9dy`f`?m{mevmvdy}AVHl}zD!n2O-h3TBLH_FN zeE@AK`f&i5)kf5WIM2jw%$>Y`M=(d9PiUJpH|Cs4P+b-j6l?%~8O2Q<>qePowLvPB z@9Ov%Om{f64+DptJTBW12+n?ohmNyiXP*Bxo*)O=d6qM2G5mQro^I!jgvPkBT-1-& zsdk>zY{#FZ9@>@Ltg)wtsKK0R{A4uQ(-5vmQcSOB)XD&+mj_J=N2*fx5h<1*P#)et zBzscdtD_UTmjd-8&F+)e)^&D7w&fCVu-fO{E7VB)hd(@nD&>f}mY+ac5uY+%>I{K7 z<$=;FOp_q#;xhC69=2bfe3349#CMnC!C(&!_xn>;8ePGW4Q=@6_uaG4(Bu5jPw0nl zV7LFaq)h54kVjeq!}cRX@#l7jY_p84fIEKltx&q8l+flTntA+W?40WKcDDv_0v88s za+Io{@}?Pg^S(k>v_AgtPZwxER!^U_c+G5_HhL~`nn$V{o*6D3KALSrSB*D=5KUfq zcBuwz0u6ArXZ0k3Lmw!Hu^iy~K_^7WrHs0KnAQRx;bwV^w26@CmXR*659NsU*7`)U zr>pkzo;YoeVy_SV*D<}Xyr!|)FFxD=#G>QXAVQ{Yn;5pR;Y2Fj;o9fz9mfU`9SFDE zpZVqRh*9mY82QHZ17D8950|l1hiZQdx4(j8bG^3C<&A~(7Sl;{Oc`d?wlf+dVBtTP zF^5K)h(G2_yiSgxr5{g*=hR@GnzDn83126q7OXwPHfGRg|85=Da!mibM_Jjb_>Oi< zj5|0U_eoi&G(441`fwi4E^RX0Kh{C`n2gM0_V5fdBu2rlIlm>VORC@)JMOIGn7B|S~%2jglzgB$<~Y!$U_zWIflT3Pks5B71z?>M8 zjEPGYWV-qP==$z>s{8)`h-{8ym%X=0IriSN%3j&2aO}OwF(P{tk;-L`G$;y7Kx@WFNq zfkOrw;>i$37~87rjpY|grdvZ#7hb41=RSe?9B)z0^cUMkh;+r$@$ogC<_*~krw$hz z++&Kj6g=DJ-lD@&U@!IsksD+7zpss6=$etF4%X%`*u#=`8xCWJY}OxlBW*kV^L1d| z?Gw;CBQ3;+3GDSF5Jtn+CWwzZ{BB--1gLvW|4eLbs}!5 zFzWcwtYnW7TXL5pd(DwcV(o-MKF$^SM3Ay0l}RCb?{lp|r@mvIfuYlrVm?O3Hs2gj z!YK0fL@}Lg1MlBE_VqeVRU ztF4Hq+xY!TvVzFNHezg|=AgqxxRWU_+CBp+6%9d)jjiDGHTOAwP@fekM%F!gcWQR? zuh|{X2`h4Df#9tcqA(c$CU}N9e-Tf4e~yY&=KEU)&*{S^m<37iq-h73?+DT zIpg~(ZezN7dfg1CDQ-KQ`w6BGe>Ic1Whb9zHMdzGy8Im1XnPh7y?UJqzofk(rs%KW9I#bOyfUTk2gUd_W0*zxtz z8<41lh~`ysl{g^xGT6-b7;1e9yjpi^6ie55IN!br^n0sRtXF2bfqQH0`C3^+=fzqe zR#=kjFV!;5ekHW|ZHTV6rV>M8*#S^HUkkF+dD$X&+0~7!U!+Aqt;Ms0C2{%LTi$Xp z+YZcrZ1dNADx<}R6|FCJ)+(Vnah>>#lcieH*7V3&kv zMj)l_b)3Vx$e%AT{3Zq^QMJpO`e9bRdHbzH(fFOt=xz0)VXs;c+PdnJlc!=Dx=>vl zPVs0xuvPi4QS}SuBHSg{eV|KE>*3J(_?Vx<>eLT4$3bd4Te{mJDEgl7{}{5s#1l?D z?;M|vAig}$>NmDfCC5?!xX2eD>)^Q1>yA#t4|_2&1M zD!98?=rLaVhXYz14m7r&^ZN`RrwOqJlp)5vvN^Ots+M}(;q@j8s89#C>M6bm#BeoT z8n&J?O!4LN%e%x*tEBMnc?_ZbL4I&$&5>{xq*Wo;$Rd@;O;;0%$lobSZ95~wmYuE2 zRb?0yj=>jo-1~Rt!YN%b%dKRM_@TOs91(rA3`NJ^t&S^s1P-G32n6c*M`@n61fsEO zr;M~kzkFHnj+Dbhvr{}lK3(@X1*w0B(mt-Gfiy(|SNf?5(sFeG`&jfDjp_Rw$$%y` zut;1N6uO>))m3OCsN1_v$vZo-uwLsnpEq7i$yc$rug`vNSmu5BA_YXFa{c6N0PfmjnVgnek}-8vU!1 zoyhrOSqKHZ$Rjy92=kGl7BWR}cw~seQs=9L0zC^2VF(J1K^4~RMinqxph~f{qtsP8 zbzdKa+yx3kUEsav1bRdf5y!34b2IhWp21YZ*x+{pA4(J8u zi&smZ%0y155QKA?h?Xd}bDAd|0sIPT|61Sw_jQM#;oJ?1R8NXNvJoNg!h`V+k(T|$ z?b`OT6nHdQX+0n;VZvvsovk@^i&LpQ z=0pAeK&Sr>d7U5PSgC+z?ut8zd@k?1+YitQN3;~mX*hf5!Oz}$a&DgI)^Q6&zm?^B z=p!`nNt%Z}neO6qj6Xtmk#G6-iocn+f+mv(X9_EViU1Lezj>YyivO72>}tR>}N4SV%^%<1?&2J=n= z%)@_jb6jiHF*?~}P8F&Pz`F_TKFTbqpc&vhu~qk%Z_C$=$P{pw;~A+W%s5C=KgcAtL>RN{ z!kwAGFU+gaj@KDhXdNiEM5G?Sc8b=8R^0Q8)ZSsP$>bV|Wt}+mCfq!swyeR1Hv}qR zkQz8|K&=>!Q%SG$z0C4x?orpzPzO3g515Q!*96ys+2QC zS`T&_E3`i&l^ST$6`p<$jv@#RtPnLOW_a@RZMk-QXi|nx#J!#P5y@N2o2&-UnlQTL zV2Uc8Gc*saS0%CgpceDNwF*!oKGL%aNqX&1xsCMG=k&hCh^FNh5qMX$83&s1ZgTk# zzFdu!_;0m_apP}`h-YIa2HA%3zmF^eD zv|FNJ$v>cgrj|i}SIA{5u67r^O;}EC%;KK#H88yhc1TtZYvZjW?(FKi6Gy?9Y-wBY zq?KD>XJc`cn^6-=JvA~&0pH%jXJBU}JHJ^naBoIj0xlbhjcNu_uOBJ3q^c0&mh*AH2#Kw-?z8!BE9e8_+SSfIo!1=p z&^8Ni#Ha_jQh&<3KS4pLFnkn?t{VAOEX?OcGV#8v@r#+d&&0m7PxMA-G8rX0A6D^Y z=det#1FZJ`q8To9L*28a?Ii6cY%buck;=E?TjA!{1Puue(n0O_PDOYf;nZq*NO!CSa*ouf4)4Lenj8bEOc3-Fv93SIq`h&Ry~6+y7_)kqeBzq6?8srtysraF-#J}hy?HGFHYXcsA86a@ ze-KVYN8TCsNV7+o?Og3dC);b4>QG!d$QsyN2dp5Mx^-U@#C(tBQ~pmHLlb?RRcb5{ z#P z`TZ!{C;o%SQ%$Lt5@X7Yy=2L!p>i--DVZeV2pz8`oU)ueuLZAVn7A}rOLbunW{B=A z6n42Uh>8h^jL#6DqjdFSE!tkZALFZ?jTVQ?Y6?>@qIw_mKJ!2!?OBZVlHBmfspK71aNE)X_#0*EZ z$y_o7Y>N)CPN9Sa03qwbQCegB^T%`TjuqXH@XF0EGo^ zWn6T2L95(1v25Q-Jx8>z>zIVx6ulNDEl}7byZw`C+{tf7>uPT2yRbWwLN#Gs5+)i8 z^Ozl(r0mYaK{6_YHkugHU2098cjTe2#a7d|OgMxO6By-oW%fDblU(H*O!#j{6B(30 z3EJQb%dwKvd)OIKN#|Nwr@Qb5uOkV3g92yn^DSshVlO~J--kluTIbcOABIQM>zkw_ z+Q!QJKY)g(KiaT~FWPTS%{WpW8892xMpF08dEO3mG_G17tX1^NmKP!ki?HeW9U^syEIj0TCMT!dIc7$dowZ;Jts@8G?w@0NiL)i$ms6R zc6gYaa|CSNYLC=Y~Mdn_f+{DdYu5@%cY4l{XO zbT>wei}C3si|<;t@)l>D#gMC)6(GO|2E%VIEys;|Cb7yljijmT&I6E+&(H zrg@ylGtD$5r8a@zCXWjn;~T`of?SEC6UGHZZfcAD=xkc<4{4gcSz&eccz@EtD4Kce zOc_dKo&%xaRj)tAoIvs6w{_!|DZ}?y;o1E+k7jf{l+HeUwum}cqXxOIr;|619$|m`8_j%Gc>*lkb&$68g?R$Q%8cQ~j(@Lg2dpL9@5Nl8zB zcCA0{o&loAUOdb*d5omST1=4U7RcVRvw>^7b~dZxa*c7iau-Z7U@^nqRJd+vGX>5E z-jq+dmIgcNs69V3s?EH~;@Z9_q0N4xw^&MbGT05lHM}WMQ+YM(_Q+Vq z92c{MdID^!iC$Zcv^kIZ+x!a0RzS4>)^oC|{=?MVGZxFw9F@ywih6vJtm3g04$EHs znom?2#O4A-!nN`}OD29lu>a01ia79mdygIS-u2Xe@h&y-Ov#o%GSTaNlq2y>RhlDA zNGM8jYB7*H)-6(+1KkFN6iF}e>R$f?DGGWHo%g_!EZnfV=%6s`E;gu&XL}2`^e@|U z^Z%C2@u<^x=i2cA;{gC|nNuECz}c|8ConL4_`WQ1o{f!*D=-&Ppqlc4Lc$Xy$!KI} z9E-<&G&lKQJ;=YXsA+d}>X22Kc$pr&IGf~HxF@I2%cQ*uE^rB2-mIc=PGQ{K+`p{T z(KR!b-(tU8AMp*e{PHce=JVp1hNOM9<7j>lkH%u<_b>mmTED??pbJvtC|>S?%xrrS zC!uHD{>rpGOKU<*FxL4hjRtzY{XybStk?Nam?0 z)Iu@*)RvD$T7D<_wR0nbm|Ezma~!jj@rJto%N0^RiNI6`5n0oz#+X;479J7yl9`;b z>IyS%^KG6)a+$RwHi;<5t6N7qfv-t|QGwhL*46O$l@CHAVH>?>L~TmAWCq-8Dx0)N zoiBo=oXLMTKQ?wM9PvO*oD-=$P1+q+px7tMl{$#*9{JMxjQ&7w8M*ZH7ApPJBer^(3rS)y1IQ+|SYS&9@jN8mTflM~+8?7pqG! z3KyX0LK;^u3@7z*cpl?ZqY8gJ}%E51{|)cdR=pC)ckt!|t(`boz_*!?`z zi$FZtEWlIS@Y4?cju?CjzbA^t^z6yEFINIGf$H9*e*FFbU!~KS4J{2O<J(#jXZZ<^HIF&ooKVs9O^+v=sXcK_;RZQf_%%!W z^4Zhb7xRs7OZ>8W8X^h%5{+%G@6m4F!p`c@XUppDPG!7J+n3#S@2vYyteZ1i!11OH zIW5~X-Q_miY?5&5OCE-R5ZdM7lMzedh>**GdhEUWND3j!iX-raQjRYJ_W9R~%OpKh zehU>5vqKMznPxBP&|ozY#l7I3-$$DRE@otV9=Dn`)>#MU9*{mha5?ujPVxI%)R)*& z!U{i9+taPdKl($D^Cn6zzG-+WNL%M8-}@X6G~tQhKFjFI6vQ@{ zgLUN@q!y$0pT^h?rSi9bk=9ciYU4iu0nDiwEa`f8#d|oZo4@T_M!lTt3?@P!(#lwR9DGLa4V$>^&huj_(%Qf(Kp+449yhuX@X{%bDbD8JT^Vm+-`|8lg zHx_$`&)3VsTY~oID2U!l!hOZgZ(-yT536Pe-mQFzLH3M3cjfF&U8Uaf$jORO%~IZk z1}}xrPhF?X=}`Y2sVPz7!x?m$9xN8564O)Ws=xuY3cB>52ZNTv7zMR`GCn^NL$fSL z=IkJbO)rms2g%1n4mtIQ6e+Ct8zx6T&fM(5<4WdWbm?rg3r*tjCWy0Svlw`eZ<5I$ zkSW+yFHY;!{P|o5J)3RAH9k|!tJ3Mj2=oLyC%K+f*;s3<&2uEGn&J@s_*TLd{dh2i zFNc^04hcr@1$435BmAx)bk)7p$y>G#0^if}Zq+Ghd3Nc?3=a=4r`inp?QO+MG#z2E ztLN%x-Ggtisw{9vt@*6~ny6QFU0;4f97{!OOG@wD5&`s!dsIBxd2=A^zt1vOoHg1{ z$F@5f`sFCG2zH$T|J93P^5#Tetl9s0u$@H8T@?CiF~nh2Zo7Ktc>$#{k$aGf$lp0 z5OM4Yk-R~Us%S1+1*i|JaWQ7DLZY$PQ0nTv%bvkHsa7Z@xH_(NWqcX`E-_~?;lB5x0X9BE`gHS+!PrB{NEVjUJff43m$_A*OBQ=l5&iIM2;|^BGp#W@ zPCezTdY#~QMf%^r&5IRd<%vd^?$m3qN2ZmZJ%4dRg-YvKaGg{Q#vN~o{!|QYex4qI zNz{Ei$ok>Pf@Xz0PbhMqw0aQzL|N`T`TJ0%U0sO&EY_NW3SmOzp)d1dkEB9#jVuJG zA|U|#cLS|OKLzuq2?TBv?qa1dEr{0b=0%sumZIF2P1ivaK$&44aBc!Gv0C;b#%8z8 z;~E?8>S9(s5<+?X0{4iwK_*4A@{@&>mU#&TC)KO$CX(q&YgHh%C;!H)6lT#Xurh#+ z{cC!3=M|5$*n^&5F@m<26~?z8Jd1BAl|Tw(P-0yG?4b`tuUM%c8x$2j9nj-SUZM+& zbzNHeZQN;)O=>mD@mi>FdsL4myH89$IRuO7K^$dt&$}XqD3+FGZ^KJ}^i2D+v)$&5 z$r@l_5~4ZqB^vv|5SG{!LltRTY{|+)T;`FLy{+|ltlqc*q-;OV{hTn`)-I}aYguUZ`_T~Mu$Z5;RuJ1A9Y+#YivY_$%*Tnzl zDt#?mU1fUxD>NyFvVz8lPjq}RXv-pv~pf~OGWxsxck&SA`S~HFuo>R=si#rnIDC_f5iP1%bKutL3D6*EXL zhbB4F1eFWe<+Dltd^=`S7XK2VH|*?!qZugGB{kTT`M^Fsnod$e{^mw4(K~(q5Dgf- z#Ug@5TxfHurp$@PD*Bdu(hH-$EXBaZ$pkiyUZ5I^#+v}|UQS*@&0^}lTSNKC>Oe+c z)sO_2YsoUc85t_ylj~>1wMLD8j2Py=l^XHmUHi?fxV532oM&|FFJ_wje9WVDKWG;) z2V61>x!_*ul^C)VhfMigy{q6{l#dFh_3nn5jBX$`b7kViecU}P1V74k9|5ufM!F8Q*=OzN*UOrygII4J;f^*LTAJip;g7OH;sEs z^cDRVNsOH&GJwD5-i|NdcEP^eCHq381?hH+tT@6AVwoKz!#|fHJNr`Vc_Fp9Gi6MY z^ugwHvRphj)$kg371tM|KDrRL_W)7WGPk~!dihmn9pf|L>X^#&+0Dn^J#2gGIAk&K z?x(RkQ!JH>bod8G`N-5(tj>Trw{a8J!9#@~U+o=f(1s|F!ROxt_#^AVOkvhpD`31< zfNxCx9+0qsk)$$uDl}CiE%n3qlk^m1T^sMuCkXaDQ4Q+`0_ua zw;e|FBks0kG&AU{=Sc7X$|P~6FQtzy$CvS3;(+(Or1d@A-*LF02~^v#I`sL7{{#8@ zH%$+HQa1|fp9b!e;4)JYHvt#HJ^zJ=2xVin$DF1ONGiuSMJxbUp_a52gmsC*BEHoB z+?|_C#Y*HeGi_@tZKv<3XZ*)cZ<$k|AH(L#qF{)W3;k?Aw+sF8oi*HYab+L}-D)%* z))Ms)^EGW<{yxn}1EEcvCVKH@qJ0iB;8N~pFmd&gH8`67@T;g42IPn*Gt%5nS8pQ+?Lad%cEc!RpShjt_h~FGCN=-8Ic1ZPD% zUfPM-jpT*N$;n~w0%*;Sy0Fqpdbu%KO_rX4K^nkO*87Vc0`6P-24FahY?^yv&SGiA z@$rLMbJN}Gq@0Cs-1DRan5bGL~rc6L%?E318&Totdd~ zQ*1)Q2WMSRc}(BTFGK1cYyS)Y2BX~iN?YaMjaQYx(c5L5KYyGYRlVl@TmK&;+P~Iu z=9Y*z4YY0hIFX!d0~xm3&8vf1nMmzMDr+Yx+#8PHiHM!gpbkk-lb3=7D%yJs| zfRbuvz5CQKj{Hq>{(F}I!x~Tvg43*Pl7N*^bboIsz7dt+JZ-A-(qC9h!N2)N;v+mR zu0%dIj~Y8JzNX*RiJa*)yh+WiTF&Uk%(2Sw4-)V!xqOe(A~q@CqUq{Ki!eHtm`9=v z$RtFV~%DFe2^~rFHC{E){jo2`{#uN53w;=B}wi2FO^!Kgz? zSb3kFWhK6Lrc-&^;WHAO*>slOIl65m)a#K$kh~JGlT0ubt2}AJAaMNowt~LbmC>DL zIc|)6c4h&;9znY=)Qoz{&IilRJVH4)ItX0-hj!a0{>lQdh-Q^1n5uCU3c+-xXpC!P z$5XI){6Sk@C7GMUplWfKN$?Be4&_3ckfSLMK7KJOP^p?YV)R$E0x-q(%x)5zL>%2B-A48SZ>LZJAv%G%mTIN*f`T4cj^NgGQ z8@ct%Td;pNilXKSqAyo5qCw&f_ROlm`lo?8)=Z2_iw<0-y_4DGAuNL1R;W{eRVqa1 zuxZem6>SLo`3CuIENs+Hh*{67g&pi6}_2<`u-A=P`OVT zMy9{eV-UbT77t{C1&pSj4GHXKDr@n5k2yH9Hsdp|-cl@nVo>8gCbuZr1ynKu>jdxN zXBrA5G)8r?6%(+N6qCUgTm2G9<%xQTa2Py!+o;RJzI@tM&3W%#_^YK+}@(s%I4K^X!$71 zg=rdnp#^WoD^DEX-m+b#s&Dov8eQ`3)wX!9m~0z@3$U(~Pwmrg&)VnRC!&+!21@t) zRf0>4i_uJ^mZHM+Qsy)!IqZq~OZjd~E|Dx87VO5zyT<121u|i{J$VSD5!;f(UA7j> zmmw;kj9svef|kxzc4fcqPDi~f^zBVfns(0y&8N>J>}$pJN{wxjdF7FyC|SV5n0NeN zGj>|e4H~*r6RDb8{$^r8#QMQKvYCogx0t=esOA9$DSPpxH#SAw^R^lorHTuFX@R;Aj#ZjIf zVVjm*z&7yk^TSbe?3*+2N3LfPG=%Zh-5T@E$_qB+*mv3)-W3P3I|<39sOHi|hqLn+ zDxVPc8=0Pm93r;6A1t|2r8Ymvt}>@6NvIUTEFMJI4}~LWVuPPA8&u^i z9?1Go5EEt7@TL*9+f{u&wJl23C8ILjQ3*U`&Fiv1E40+RxuD_&U`k$?Gi^MI3D{~x z#G0co*l#$2j&x9C}QRpa!~Z>16NrOxW#R%mrkNQynuP800`u+ z!)^{u+IJ!TIscf||5`m;UP0%PLS5`n@3vID0!}t^#Z}-+659$(V0stV6i4wh%$;v$#&cPGKtP_amaV;r27)6T8Kk^el_Zy{F>g5mgPPn zM?Nl)?A>xojT~kZ}4YeEOX;KSxY1MZ+5u(XJe3iV+_WN(|-(o zTX6L`i!+y!tZR}6@|>6SY=i^iXVXQXHLbrR7C^mC-Fhen)kog9=wIN)33_jaeX{V~ z;^8ihO9xE?%Ce7{|G=n$H2VEv9VA_sT#?)40rBo;w9FNq>|7C3vM<`Sux%a{(uv$p zDmYTG?Xq1*0D(5ETl*t@!`-y)_f&_|lX$t^Gn4AAm;}0%%%nM8lh=72kv&Ca1jH2T z+*gO+?!cMz$^{BZIpbuTc75d1$9WlJGP6e9Wnlrcm}p!W9|Fv;icL2z%$TIKro-?k zLI;zwW0FWE^mjtU7W5dV&6dtIrXvTf&c&*Y)rCD#OYLJ7@%P|IslV8o&gwL-H~pX@ z4EDVI_h8&f>dXz=H^>g7xU()`(CqKW^f5n!ACHE59isw7v!9pdaEN;B{G9F=^IuJ~ zjc#Y*lS<^$8-&>u8Y)x#uejJ)Rm zkmw+{!8U6Rf@}qVbaHnfAKcudRkj)=Y^DvKPL^V?pRxRdK53zmr60rP;#i%mam)d7 zV%b^GrB{!oGVZ@;FWKSbp5andoy7f$A`n8&TbK}gWVt#gJPUb@SBiTpi=tX}aijwx zQA%1t^KyQK)d43cff++?Vvs1V#^EfC8OGPCV-E)IA!i)-Un!k`->Z| zn+vcjnCW9lIkL<;C5&{_b#RmW3WXRg#Px$C=VIM|x93;oPwsME6@+P|{MX!i{t#n* zwFQUDHSTJ!oe1n@Jnz_C*;bzedO3ld$B@#TIV|a#(kdI{$!I&jwwq^zHningqp6XL zptuEKop=q_G*tkf>*VLCDbxLb-h`U;8zh-Pm;G$9F_u>RS!i-JUZE@t!7Y75kk1t> zc7Sjy>rW%W@wiL##9W|jedO({kQE@09S~r3go}k*Z%tH;0)hLzoz@D-KWN|SGz@`~ z@_06$285_}FX_g3Sx#;r3HkT!D%Xz*8sEQllw3OCl--v(Z=-t&;U_Y!^-ob`XYU}R z;2CrgWoB^BhQ(aaLrERJEB_uMU|1GL&`v2oU0GvL;a=J|{7qy~$b)Oq)n0@eqG3Yw z;!=Ln^aK7;?Bu?#ivJ9=!2cZ);4jWeo@5Fo3zpKW|?xyuw-BcEi)hHE@DH@X<*3ecN8ob(apB@z&G@Pu4TX!V{n6@#nf(i`_o6og=|U6Z;k@~ zHmyz@V8l=hGiD0P7WV2C=@vv@`v2Z2e04{*KqX0Snan3(W0b`u$Q)qNogG0_UKFOr zp7TLi`M^A-4OY5CqfsB4f9%_To$oREI4s!uQA!K#&XDr=pIWkh3+vc>@ABoBFyq3GKh5 ze5Xb@du?stTeekm+CoeKtnHU-S<Y7pgqvfQiIjjSx?XWB1(T>23ljDh+MK|`sj1R zq8Y0#sj~b-Ulv>+8e0}0+BnAW#F!Cnl93tdiigAbjcTzSyEws6Fnw91mN2ik76Mn7 zZ;qtDJOe%sEkcp0;M>dTcK{cLl9F0Y(|Dik*yoi~mK6NwVIY5D zXvfmdoIm)a@VCR{d<=Wy#e;hWKY@KOuB`d;d%ioWtE+Hg0EE*Is7bAS=Hnti2i>~@ z0hhjMU`JQWk(epoO>3!n(u!_3jjRZL`Of}Ld>-*XIEfZ}rq>%`N!N0tT-os6Y;hlE zPEJm$X(OVDpBvLEk%HbPZINHQ4$7Cu1&-%`+^t&b7ePQ4x;?EbkR*HvBzyienz*?e zrTi*XvELv0K*oZ~kaVb>8L4K5!y_AKg(hg-p>I|)L>8dG)uo5v0X+htF2t=fB*cqD z43}p}<}E6=QoJSlUelNzVeUCDPGE-=y6gNa7DVjsCh4~_P^=6U8pg8kK*MT%6KoeWXPRigqro@?ANE*QuLN7p%v zS;sg*m^JxelA;Yl9Ct8rEhX3SGku=i3#1tW#l!r5<(R!-3TFa> zn>cE5ZYDrakF&o4`!?rw z#pst3BfUz{TGEhp;{E&ow6tFz00CHN3L$LF%-ER8V89@WvG%0s3Vf$&0e?@jk)im7p2k749iM?p_3J?2uM8rgW6MXRxKvB@?$MbT{0p{_^Of*G=R4CR zn@oiD44HIAd4rmAu8xAlQ>Cg#5OY6t8D(rd)tZng3vr|hxqMWRa!K3dXc8RA=T{)l z1d@GnF_I`T#=C5WSyzdtz@0sHMlBZ+tD;of1W|eLu&O2|wdB2}1V+Lb!@>E@k@-f= zp$lkgv&i?*`nQs(7>c}TN?JqgZJUSMHe_JvRa;P66*feV2Nj&=dNssKnfV~em-ZEf{UdFs3a?g`O zK^%I!W>+wuUVRN&vY3a^+ILH^LU5zK#cgnvKY z!O@INz(%1^-9R(;u;FC6C*hHsJqU5Q_JiOM5v7!uGcQ3z^g!~poI)(EeWwa&*iLOQ z0hKl@zy=%#+~XNIg*|-hH~)5${K-4%qNkba_mB|Rt$@K`R)51t(CmlS;~mFzy~yQh z&f4Av`c|^tFfL1Zrqil#wco^NXt%p;W%rPescm)BQyrXW5?W+Vl=ZC$buFT zCQQ}uF(D%AAK~BhDzh!oF}n-`hFLu zTT5Z_LDMVjEus#-;=)jQF;;2JT^X~(f+=~ub1H29=HRnsM%bh5uv`3u!GpF80c&yr%~h7}(jeZH))4w90wDvdYekl^G%t*|DA%GLvCbo zdTdRYW5l1&Y#V@$&Ke`>y0FuAch&^`=FN@`*V|ZFB0A2sW!i=6G+z516t5Cw!Da7P zlJ^hi`(IxgToL+)WF-`be#>0Z9E<4lmA<`P=j)N~f-$~Z30-euj_4X!X)ASP2%g5W?IaKk3QbrZe_u$p_yJGqG<7*} z!`(R4X9*3#Iv#nk$L!R}8#-|pUH!EVbN&m-;?ST|%Y z5SxU9guDfiIKtMaJ-UouAG>?*IaNMcfNqQzrr3q;W4ek}M&feuK>zNY07%;nrqavv zLk%iX_hKhqL}aAO4!dQ^PUDHG-DG6};8~OgGnJcTiD*Qus8@JSUM>@qictc`$?&UO z&;7-CQ4a^E&Yz}={~#&;y_u`C!Y|Lg?%5oG2@IDl1q9-*^kqCIQiqiQPA1}H^{4{C zHN7C6g-te`@W^;Z%zq(_A|Hr^N0CmJhsKtzj~GV(=Ny=?hIapK>jjwrsZkB!ioW~p z7kOjdt2@elw{!{|6Q-fr;)cBPu_5m(h2&yr9{zNbdVt{ikoZ%_I0C}#Kswbb4Ay08 z{&97j?irk^uPLwh)ZwZ4ClzEC?R+!>i^^ve))33m;8f>u46=Y3lzshTo*D-7q8kGh z?;$5XGn_)c2&*-P9{bznp+Zz7SaVnETW(Y`{=T)==i2vm!a;AE_)|T`kt6w9nk0j} zF=m`4J1WK+!)tNf(T-a**3U4=?)W9Dxc1psPA{N73Y+pt27@(~ zM<1=Yw-S(bh?|Z6%jfXdL;MSq1IbFR7`$dp+;|kciC|k#f4T>JNbl1!U+rQ;f4As8o-^ve0_l@@|qY1hm^UM-2J**_n)8l=l36!p+rB1#|1!a z4&bzY4Zvv?E30K4!Pc+>+cocloeT}7uyaD;nqw2B=#DhCCld~@F2Uey;Ab8EdL&L; zOQNnqP0hTmB}-3IjAm{@k3wk3(*J^>LZxY+dyBh@ng`p3w>V*SEswx#MK$xrdKMGoE%p6B8!Wu~} zhJV2aGKrilvE^R<8WGFn9O}w5>Kcj7Lr`6nVUT@@9j~SHrz$${H6(<2bUOOsF%HvA zP+4(NwIkOpjKFk!XyK;%^>(c&Q*w*`4 z$@TB64S1jcO>K)p1E9zUC+)qh$6$Y6ZakSyxXuy6yNQN|W>F&P_uG{U2(;FItU3X) zPiSy22qPafrdIkK%=_0F`@c^UNQTONe>tZCu_N4g8MH0+5GGA$fejdMhFzHdKJfP1 z5D7WXzDVXVsATS-9h<2Hv7@6vc?2XLDv{%VYC-<~C~H!#H>HEnrE3rv2s64tESB~# zFf#^4-#ICH%x-oaxIBz* z{VLm5!dUy%TL+Yv-Q%nKQ=WG-Ynxgb>)PVJLh1K`x?t|G5n~9 zn_!cWu$T|=JzW!hoM6)SvGImW&n*atP4TNDd!xZ5UghZD#Kbd?h?SeDVv=g#Wc5D_ zeKQ!Jw_xbs4*)Ys?Z4om9s;aBgTw!@|M>@a0Es${GOk zB5~L>KstcWH@e=sC!Xb1eZl`hoBZ1rnwHiAK2EhCUBJUQppQ#(BGw0PRZb8S6bHbI z$mZr|R7Xb-AZwO09Gl{RgWac;lZ^B6>pv*xrvt!r4VNkU$Gz$xc|8g*<6N)Ne(_vD zL4UrtB=^CrCLIGdB;|?3SnQ2JY|Rpk%=%+f<%GJd$UR7;_q_KAEk9Ti_o~DtP0O9Q$Jl^$wxDT4UIEvY`4~@;F7#l9{xJ5%-P*fiCan z;=mI0@eePYqAys%sD=%ll-1`Baw(z*& z?GV?x*Miwb!6xdHpH3Qlh0op>Px;7^_|?N7LsBkZD}TV`s{ zd)xPfhK<04r-0Z$_FhWi=JAzDbFULtD<&d&Amp?A@!!rH|1zzKmFiR?57nZw}Rm zv!Ie5LQ=9QM&<|T-MN{oZ$=RpHX5FvSGA5*;>x9*Nc&D6@YS-^kyx_$_bDlh{S@J) zP6=CKqNcccDD@&$@0^%GJw>sr2Uv%9lu>pyvS-!|3i$hKnWie*g!~4jHO@o`OOCG0NJY)PPS9o*n+gWlj&CH;vx9 z>V(rz7bIfZC7vnK7|F$8NL~0%_564jMI%Ho_{M};we?x$rc|`r>B4h^$o##pXOA2b znTsFH`o$(fQS-+<5r!z!1T)+6cn@whxI$0Y)|RU`s|8x7$eKmJfBrfS`DP%SAh4p zN({9*r2^#Rp(oE@VRHY0$!l`1;mdT?|vp@*zpSh9QMAjXr#gcjUT1^8+Ky>3IIqr!2OB=JAwH$0Qa~c8e@4k`q)q!=1n1&9Zho*L$nutHA_g* z>t!MNQye2*lwQCOlQ0|J*dNv1b;FD>dtKukr~HEC>`L@|CYL#8MsGzQrqv2zidsgq z>AQZDG>e+xn-|s_A0LjsQNQ0n*H_MW59RL~s(eXUB1RjNbYe=Z^SfYTC&tT}Y@B9{ zWgGD)Y++1szfL?H8;q~ z5hBC~k$Ne>xH@C_bs9(`&9Z%VgqJ>Q0uz5v#z~oQRpI-`IsbVo|GnVSlR)N=`mX0; zkk@T>O;&+!#${6%?H`JCepaldqqXrXVB1wd2m}7XWoFDUjYQ|V$iU@Q6;LmJv-pRe za{d8v_ouer&`=B)Z4eXZ`s<|m${s$F8}EL~&(9CNbLTlN1&`rl(|`-NjWH~(DSthb z*N!KQX%IR!OAJ>Cr5q;5(^CmQRmL`^!IO2JFqYwzz*|^wtNVd8L7-y74p(;L%d3cf zaI>^pnvJHeC+6EI2UUck@&OAbS4$qQK^TCL>%)B7AN&62fFd9zGtNK{>j%ZWGhP94;KT4 zoo;R4LvI(7JwMDYC1rLrnMKr2?Q@HFg&e>YpO>niX~a+;j?zwJFwBvLsUL=OU)KPV zNO?UU2@}d1z(?hSZR!z087{8JX_m9CXU+|9?|%RPDW=-wt`Y6C0b8;sc0JbO|>Iv@0>@_OCc#P?Bwo zkJ;8-%Ge6XwFi332MJLq!%?TO!*`8^ewm~NKULR4TB1hp`Q8T4S^aNzZyzOf`-TgqSzEVQ z^q+CNP5GNo_+6#_^XgZwa#e(E1#n)=2A>sI;4H4S;XgZpwPt?s&+iUn(X&Dp-IeL! z^Fv;5txqtV@Si_iEqho{NlB^f;h&xSua9jLIFjfToz`>{GX7*Q;NiT?Vy?p1Bp%#_ zeFdTcU(eqPOfa-!l`+|n8!)~+_a#MlRIl>J8;*oyp_irItJT!hyTZ9U934v1_ z!?X!$gkC{2(g-zWE6!f&;(U+O@3m$4zMol~iugf4(q9^3*f-gDsGJm+gOPlVo$8L`t3-twj6y*abe9KZ3r-(e~ zj%*LnN3Bl&)IZt;JV3bpBa(OGiuNxUPappIF#L9+jT3&lfnuE z?ZAi&&_)1?{KWK1O+=10=*&L`K8RU-z1s0vFWm39g}EWg;A4X{J;~xuBQ?b`;PG)} zTUtg&#=lYakK%0?mf5z$8xF!~CI#F*%LJxlM@TL~s?S_KsO?~HLpHc>RBFNwE2c7+ z#u|_LTU!0JlOh}ZA(3SGKV~!aF-Up`pFoZ6FS$F9jL!zAX_Xw)o{;Ksu<*|capa7~nk?D)QH9&j=n?46HSy$R z6kkq+HHcC=tIHiZzWRnk*)bHGFc`>gvc!LDzm$!6gTh|L}+>`PC8ggXv#*0OkQ!*_vpL4)brxmo>_MOlj!;W0!-NV#0uVEcA~NvXN%;D zpJ%#4LveztDuiQv*o2>zR1ZT7-{<$x*PrbE`gDOh&Er%spU%l2_w2a!Txy3s(vs3& zR%y%4f3A>Pm67w$oY_`}Z6m`|FUi3s(c+R&gqQw;2-TxKCqQF< zJn|<18^`FgWyBxBfEg1A!CPA!F;hP>|EG%n9msd8FS4%a8Mqw?RV$2U4Ok|i2JVLW zpow`R!U#t>EJ2~ls4RcqKtXB%{zwnRMNI_8sOhME9{2WlY;#c4*!hznZle+ zI4Ghx5wIw*`uTH}Ys42WdDNeOM3md?qtog=CP6WA|9m}5H_pGHT0%bD!U#UaH$3wrx-8wUH-@OZ)m z_hjg#4)*ds1HoIT_?I)xOPX$&yBO|&c`eZS@Wt9UmDgUHVCAn7gUpcG9W5qH_v=YrrH`2Y^Q-;yJBFXgm?D=KkUpZQSbP%{neJf39%xowS?Y-d&u*ZmW;a z=*Vnp9PR1-sbSHe*Qg+vlo%$dF=k>WQ(Z@YkIFuk`q4~N@a_@1`!U=6mcEaU z{zzws2A1jOh;je*7JoyEPiv`fs+&r(R2p3rhnQ~bUs=}wmQmcYRa{qK!Fy6S#Dttv znm6XDnFiWSOp)W!^C`#PO0TQvafzEznGe#u3p7rDO8B0v{%BUZ_hHqgLy=xf%7GI+ zr!UUteOz-;?KLM{kF^@~Dy>V?G!mw@NRqH*w{%q4Y;S8a(f>0`? zF^jvuXP7=U4$!c*AO-fLZTr^Ka!>k@C} zTNa#6w!pLH3Eh_12M>>V)2#N7T8zOxM6<^FKDhO)oKNqqpud-0Rg|nLZ_f3Wq^Rfs zg1KT^w=|bpquxeewYQ7G$S0)5H~QjDFi_Z_zd<)mxi@kf_~(~K>BCUO%twO zy($y3Y4U(;Do|{UK3**m8-DW!l;@@Z0pI{U*?;k3P=>>wpZDj_Z#Xd+3>MT9X%o$9 ziv+_`t7fxtr8DmY+}&rEmxUgQqS)Vo1mQ_0*c&}ZX*C$%(IDBwxOaD;kk_Kct6R^7 z?;(96cZB+|RKCaCBbw=2r{WLsow(b|$3D;a=#pVdLBLPL-ucy?**r#pxkzUZ4KM(o z3Gsa()4X+$PE*X_c2{OEljzQlv4Qt31)4Oax2!n3Z2o5+rG_@A(q0LlwpTY<@y7WC zDZSozzvXn!jg8YNp=W0z9up^5$lH3xjNZnD^Jg+-F+*q z@o3?IgLFHPkkr?iQ`fyNo6WP~+Df@U@lf&{czjo*Mp7@9Pfm|I!BlztLHg7KRj&2v zR_EZeLgeAs3ER&(~$0MbcLwv zSQ`Eku!bvC@AAv^s z2%vA|)zPc7J&SDfg9V!03JMA%IM(9AcTcW!LYq%<<^VN0EZj)}Pn`vyX=}#M`~Lee zf4m$`M zQSCkAezG(T z?;Xn?``0abLT&bC*saCFkgcG*+ByzN7Ix z4^79CX`wh4^!CT>tTRh(>YJJfIv&(Jn8))HS}p9~ zKUO!01_E+r{PjU5AOQQ~M46x5kgiV^FgLpIv%mpc{|4sPS3^LqAZpzaCA`oY2T8ov z<#jqZqCIBzXi_NDNa1k&{b{>?zy_fnp{hc6LYQEaoa<;Rm2wX zu(Q(d{r*pB=^`$#_`_Z7FHte^$4Tn!D$lquSCCT>TNB;T9w#S-w{1|4o%yV=wW0q& z`=qb8aV*WA@4YX-sM1m!D2Jw>tir>jgPpnVV{3P075f zy*q1lQ4+eOcRpOrn!mWM$5U<0v)22K7q>>e`edWbtK9W&R|2ow#pinrPZ-pO8%#W| zMT@A#^5))P6;Q|!iw!I>D{&8o)1oF|%+p~QXszhRd3^o4S9}wfj?PY5HXn>q*cNG= z-mdj?I4YpCInS$C=#}VWywK_^W7yk?=G_8go*QM!UTsf`qSA9p#&?!OuYG^X9M3H* ztXrrVx-Oyn$?_!cTEaH_n$U9k&L_D8bA>!Qboqq|)w}_`BrBh@g;C z8<<&&s1#(r-#Eh79t^wkLD!TlNgxx zzk#=$^Ut5qZuYVZ{kI6}r*>s75Ecl`WtMuM^Iz4oio!q5BqG|AB?yZWSWX}G)>$RTHq z9kopp{Mk?IAL5cVAbbS#tY-Og;D@o9Pgx4&{K07}B9$W|w|GCU1(V;eGeQd>*~m+AH7TDIvOprLH_X8AZ(j zSIm;7P9JIv{F%P7XSMvkLaqsjM@!Ez85HTZJM#r;{_(morl@so0^5?f>l^H3(3dL! z>d0!*@7YV02wbfuIDme;*bV0Uz0kNJwW9ThZ=c4^9~gq$<+am=5N3`O(k_5_f&b6v6YBk$2`DAg;6aIl;9x|oy* z^VA=S4#`mRHAszsJH^Jpz@z(b*-F}lmk2!dm>X;R$mDC`~0{m z(^93Ab5cJ-jSZ*h^M#&2kdc93Ct~dFg15Lo9w%Ska$dWBL29Rc-*E$()N*}$+{J?c z(!6q4qvrEu|089~H=q+yEal5_i~B0gf@uuH0NgOM^m0Qsj=)CE*#>d9K zc1o$q8G;P?qjN0Vx7Fb53V*!x-xnNySaC+zxsUTUuzd$B1(#Wdyjnos)IrzQ1(YtO zFx-DZ7|lv=-QMUc;s9`Fp!Mb3r&$@TFRvL$?2a2RRFU3X{^nsO6`rpVY??)0{yxUe z&GKu|&c9O1U$y{%x=yA1|dJFe+?=nn(V(opb-)I`Z6;#Z2DTV9K zJ3h2_ibfdISKZTl3ZLI@}pvM3v*u%aI>-#XG$ZJ|@6Rj;2O#%P~>q#?e zR+*y!XNxR`z|sQ!dUwn4EI(*q{vUmj@(m&_lNCH)NT8(ehty$Rke=j2l`SP8!HVBU zMwZAHx~T^~hYqj&0SPStiP}K9rF8fpF7m$-9=TuG0P=>K3Q;PGv9C9Q4?;UrR^%PrOSz)+%QT&_N>*As2=H`c^qnb^Md%BLjC;0Kc z)-vQG53bg@{dMl;@f&`;j(S6DU%wjkHTjPC68KiTZrrl+@Je;8mmsdIu7kI+%~P1nU|cfTR0T^eJdsf#`vB{ci1;#JNN6 z%cruklYgJG-9IQ_X#)!FEgZNika=$fUU{Jbi8&wSfQTOPqniIr7rAMpS3%G>!#DB4 z0G?!A-p}`8(r-QMio(_14YQvw>Rv$woe64B+!f0nZ*VVPoy+r)iuzZ-JT9vH+>e8o)h_eb;!Y>!B#U}mtH1xaJ@C|z^RVps-4Rn9cngs@nYn;S`F!x5y5z9xwA*=4!*)X%jn+VsPIVoNVyS z)8272P`p7SyDsmDQ#jn@xU1tKB3Gsff30oezdUi094_Dk=YaX|0*x!nW|A!)Kb!`SRY^pKS8&vqyo`(t$=aM4U0NaYPm1X?Dz+0|&XPh3JL>1B+&tH` zaqbh3A3hydie($GA)@;>c2cHGX{-Ixc0-H|W{o?8>+3tIRrPEuI{PxgSp9k0XHhMF z7i7Es;|1^{Ho-0FkJI#q9dqztkxCk5h-4__uhoj$J;EZ3r7!nBCZZWwnrJq6=+EY9 z-TIzoN_uRay%j(e{gx)L!^YnZ{x>B2nIPm*BC2ipd=~JSu(HT0be!_1|!fh*VEIZ+M3vV$o{*P z3H2@ZsF+Lic`@R_gkfe|~u| z^L^3@cSnmumg(|k)-UXV_OLdf>n50gerKI0(dk=|4j^S7U~erIZD*stXy;R0qGPu_pgB-LQWKq)^8e zxd6}D+}yN-B~bdXh<8r+Q(0?I=KjAj=YJnOh7%3>r6f89Z1hiz3hCYqJMKPa0)Bn@ zeNc}fUVMYaomVuVB2Nctjt2Dk--4C$vUkS-YZu{2c;{0|dJK3N*-wC9P>iv~9)GohJGu5lXF0I?3v zzBe`bxRZYSzV|@pFZye(PP~3?oPkqMR;J`*CsH{mnAqJEk}Gfeg;XvTgUbo}AZIW} zcW3{y#nY~nPF9{@^c(Ay45&XnpE~d<@sm(gCPv)GGVi4A#76VP`I^nb4Yrbj6uxv? zdZUv2?K*~rC&Vr;pI;zmX8+^1ljXL7$`ZZMjQBbti_MJR4-~{52chWY144pOro6h{ z+q$!D4rG+WD;~@HHRWf@%uYN8X_#sMU){*>PYu5YK62gr!i(q@TESV~#k~|#GE8{M zgJLbNMO+H%gZ4fGsP8pF{89k)b26tYb>6kVpSCe}O0+|Rz-{f+>hfAp5{#x8jjS5I zQ~=Uqn44B&h&3Q!)b41cX~eNlpK>DO-1j1%-K6G1c9c^7YL!oE)E-=RaJ+H8)Ilg+ z(_0CJy?b&*>*;Vut`2=D)%s8H{Bi`PHiCi5NZziCR%R*^NNT` z+mwRI*dU??+qNVf-i$x0cRMN`CSD-vI52o>?D~zkRw&RG;9s&br2wF>)3xK#3GhI< zvN`CvwM%bsikwb8niO)iSmdhIrBSXsm@_lc-`E?XB$9WRqveW3f(vS--vFk}wCuko zlGo7?>)lAp^-dX>-=(H z?O0N!5I8|eRg-n4BW|D}=Pn?AJ9du}g_|P=?ExIC6^T!p7StkX`SY|v$|ndDXV4l6 zn%8Loc!GnZAGb0U|23L~f*}!#7mYgC;TmRpH8sL@MP|X&_0Ep*aZBN=88I<2Ay;{J z-V=n~jktavH25@I6v!zCc-mIw0axpMGST$yl{w;Mf*AXT;LpSK=s=^lqj#f7HGWzV zNnwnJp93ot{=&n5mm&m96e%^!bDDm|bFoXo4Of{!%~S30G#LUBdA0yd5akbsntw0V z$(7xJeG3*GqpW{dk{^D(x6g0YhapuW!{T)wljW+}(8VL}s8E!t6n+J-s^$xsQ4)08 zDfnWTOf0_sfmu71Y8N@MBL3scGr2k7;ob=YwqF{Z-qO+nvLMFmK+|9g zQfXn5p1#50wiVQUS8V>z!f_@{US2+o(O~;?pHNl6H|J{7lL23!n`$6@6bxCULoL|{ z9)M5gFa{ythaEoy`Va?T_W#^+AhqyJ*0@U-zPvkqqZ|*jG$S3XJo`ZN(Lm>(iZSE3 zA-?;O%y5Rop+$&j90zeQ_?YYDLR2I9xfkjpr zNM-rYwpctc1W%|pEKd^ImGU8OZAgEC*G;-~T$3 z^Q$6-UpDz++=0c67kTi=dyDk)YNn|y_`txKA5w=Hqb5S+f;~orR_N|S@hb%}S=*mK zU&IB}!UxW|%w1n@xGa#Y#f#qp!iuAy#_S&1yFH5RCXHS85Q4Zn;NENLR zxmUf+tTrF|wIDSfDyF}$>AyE3yn&M_kI9Y=VV=Ot=;0Ds)sN}5Y$SG<7!=#V&QCKf zCxi2_Ah6#e!e`o~|MyM$=Lf`0=4pxIldoKO>>dDp8zchX6mmUBgPyfZT`uLX;xIcmj{Hg>lVhTP^^7xm#`mVO? zWLNg%a-rouH*z&3Sf=6$1NJ1^>Lz=)0JHp*ZU99C#BHXk8cW zKZf}pwd)yL#1loQ3D$MKvD_6nD!34;a7$?eUXuOVr}1|j4UBCCpFw~&QtSn*D!icU z@%D$PS(BxJMBBXZ#<0Jy$nQg?tuzIK12bJo=p-wH&ewrL4Dm%Er=S?@aUb4r?n z;e#i0YP1QHF+guV93LO&pZ^;O>mt)NVG_|URoRt)wN;4{(6GWe1?G z0GV zkr;)cCfNEE*H{XDt(l2wi2;u~z0L%$rVrV;NpSFH9E9fm3oa z06s`5PsJpv{CWP_y)(+Eb7Y2>g5WyToIwC^E^zYuf8Cu7c?f(_QBjZJx(EROA|_3t zFb6t2;*g-fTlL?st6?v3XlUqG)-$;5wMqpqTzk_cF@-WxqO?GGX?8|LX;n#+F!Hf3#_Q7ymJUTV3Ku*1@g8K9^6eV0hK{+t}`~59a*D^T_IL1FvUYqNs-K;Ko_ z4Yh%Mb=!3Be?n;639_lNT&x1Bx*BTi{rNjerZDZ#1%?0tU{vN!vimX-ZVV~*Pv6SyW1vh z1qlAq7nU%a2W7!Q6#nwqPY1eAtScN&NJVC+Km#`SAUDek=st4#Bgg+k_f1Km z5hwu9)8aj!!1x9LGo=ScGw+-r)p7ycb*F8>_te9je;~`QBg74dXO~IIR#V_?Wo0G2 zat*=xatJ^KydlusAW)#y9eLRje6CTgWQEEi(2z5Nq0{Wib$$$hv=1wo?V z<)pxE%j~S^Ej=J&NE>e_v`W4JQ}u0D*+f2vKJEOQ@FObx8D)b z;WY9GfA}s8r~rWY`^|=-u{Wbu_J+4IgW5?>pucC50W$V~C`A94nxfRb2S24FP+mLnfY%bojxu>^lwbNxG7 zJoryG{|Sc51f-ixaDYMF=QF+F-FUtdm%X%lQF&pYp!V*`?K=EBzwb-e5s&n%^MF%( z{rv8>6>*M1QBR`65UfWLX2I`$*stTc8r=p<$_jiJUu|rjk7v5B1@|T|l(WN2Vv@6E z^Rwm+3YPg0!s6eVpFv zx|z zrX^7{uR-{xzB3N?A*O@1bf~XjYpDT(EgZOg+&giAI$>8KeLD`K*b9~9kN7Fdhk_~UA-T+1hgooq3#yO zH}cnVIaDaj4YO~%LKuKSAuRzaa7)R2Dhs}8jsg4-yfXlH7%uHpL@vGGVe+Xa!j~<` zC5VM)0Ac-Sf$MOUewCfNr2pr9tt_$A8M7XT$X-Afbp&v`;KQDHtzFd#NRp10#$U*H zP2BwybKBr0*V;0L9L<%!SUw@&9nVzzob(JK0>m!X?gtk-lD1<7(MRZz7~XXTh0kva z_*OD?XBHfn<^ZoYlOXT83$Ncv0oRL!2+M>G%rOoDUUVuV&fux@lvOElOSNX@=!2Y` zHE&90O2H~i=35mdj zN_fshf&Yvi3 zuuA!;@jqMu!sLNhGOoP_`K&5zFt(F_m``r&>zR+*uJ>{=0Wd=^svVW4cDDs=#)40xVuF5r zChyvT(y;!uW%@r1MHdmVgka~wHpHO}WYlV!5%O&L_>-olrmvl5)O8fmvJ|tc~u4az;F_0u;ea=4xxqig*O=%e%&} zX>8}7v z2$1A9ZTz4W_9fexBQ$(2_cY>Dl}ag$=R|C~AHg^0LD&ljUVX3{vT(2uHc;weN38z| zn_V)*WPF~MQ5AFvsbuC(ZF(($xNhNz-re9qt~0{)BXB5`#03xblG@2&t%Z)3)~H^Z zgG;j-P1F*z2B6P_Z?o-HP(Zw&Ok7#(1a*uS6%040fg#0vQs1r3%_sjOk$!VT-nzg| zkbgIzQ-~#+Cmy4UmM?;&C7(+10X=`fEN-|b<)wbsrEuszBsb6SNs}C zK%Ho<0V2)^7Zh4ocAJ;NuOQFAUj?q<6;E^;<{mP;OX&w!-G-V45oZfUfZO zcj;mww%`W(@9vF01lEjUHUm;xR#m!`p^tJpEIy{YJK-=NbU-i6VgmS`41yd+UZ?Sbh>^zU(Y4-ner|HMLtO(Lhpqn_MCyb>z zFL7$uaq`1K1J^<)TfUnT5z)kgQVVHkpeKLfZvW;`mkcP((qX)G;mRcRwYoI@dk`vM zA?MmF9)~qbb0kn&p`ZdpIa(2T@SQXf9pLWfw5D?Q>{)^GC~stwam{m#jVzfewmWJC zGuO=*5Xczf0#l5s9nq8s=2@#`yY8agv{ypj4mEuqcF1(>H%d5kg7=k5{2Q7#7r_@M z4X#TJ6HB=|NU5F+rdu{%0 zF8KS?K_E|VQN(!&de&5iMTpByn+6A#^$Arf1nzklDm(@x6v2r9{1lWwaU*N)cX zN)c510z$<;s+4i*LNpnWNME2C~qiQ+bbWfq=tHHQHw}>1E18>xCJQaJ6*tIg4J(G)our( z<^hBm)PN}#pAkI2?eB`}pC2TU$7L&Pu^Tw?)F5(q1^2&1uxL_(Rigzzlle_WKbpk) zXyZkXq1>I|P?=VTu1pGVtRY1R4s4qvsOZs{~n|2p?$@zFH@8we1@J z*;7m`$pV9wi@ioW!*oW6453#SymIJ7GR$?WL&^S|Ua?7RL%{W-El7H`jcHJ(FCMQr z;XH(N&u>cUN243kwQfim781qe9qQN!SS->3Cy?8n_Wy)B3qJUwwp;a)BJbdPEKU+G zd>Z2c4(1ij^bGMh+y^xX%JI&B>ssEh!^1l)%zxy+_y`Xm?Q#Z8%MPA?CHZjPdZr;|rkroLOV!}m)VE6%M zR8O`W8XFhbI;SNr9YA&D)5vY=N=LE>3;w#C7U6Axqm!U$(EVK? zp6^Z5oVrcc&eosSPOK&_}os0l!tz2a}!4f%89!04R6Wepo4YGz*}rilnu zYQ<`~1Fkc)v_>7p$WC0TGQMuY;+~C!1LZi3zM`%Z8J|cr5$O~5+g;bN{C!$JSPm9{~|T?gU&kl1#Sf#%xuSOD+}!sS0P=jxzm@h9!f+1(zbV4$#8zkq(Q z8P`ws@%fCzX?e1~4zsXeY!!$J)~9<)y(Jd8e6ZDeZ{HfjXH zDKC38OFi~B>|wd7y?SL0`rb4c%T$9F_KNd8nTKKsGzF#22sz!tnHOx}>In43VUghA zV9uJuHPOtuFd?)-;z@3$HhhJrm;GIrjB*^thogYa;;8L0svdP$ZwOBM5VLM@jOnLR z5YL08h7VDLLvcI2Gywqf9Q3W2hO?qb%nC!_&L!#+#Z2Bi+iI05?olotwm1ZTW2b8= zbm{{&PG>%1m@?+=EcWQY>X`=FC)tw6wAk`KU+U;B(w&upFL;lW*n$QKX?_VIGt!pM zSr4i%Q2qJx;x|7=Et1Uoa>-lIEjAcS9{Eo#6aEIl$d``IGwvemu!`s@Bk~utEEd@F zmHX8^e!epIAlDBEtB@h1{l8vy*dSe)Nd+`CNuSOF+~<4QgKP(YxiXSaOq|^ro{DL0 zrj+okBuvRv^ha}P2{RAoZ=R9#XOwh*OttS(pm5V-Pgfpkf%5ASDBs=!5;Rf zX_eu}iv^cBOcMnyrLM~c-w*SI{coKO!HQHAl?za)L5XI1Fu%M(5!dc;j{xUgL6pkPjq6r4pN) zo69KCAwXCB$%gMaTb@TkU91mC9hTD(_hdlFYCtcNs@CJ!V9@c6mP1qNTx`v39Y+a| zzFV!mC1XyJJ>*S&m_^Kp%Ex>;=L!(!APvf-K5h;0>X+i~Ftc=*)pv0NrZaD#c{sD=cxIE3uRxIhR?|9hPmY0vxyMp->LN}tPAlt zsYbz97K?yx@)7Eg@SQ8^o4Ff0up#zZoK2f;;T^6bRt&vdH-9 zPJOW9L#+9s&`tuU>Gy0;-CkNVA$MAWkC?0{sayIsaZeXueyZ5#k>(!2nsMBB&K`>7 z!}U+&Sy?5$?6SYImoT4(B6RB8yDSe4Fu!{nNh6Dhidu$Px?~zowSRMXaa%=5K$W;_ z2d@TnV`kgdzk(@DGkPi@zGehKmBD@Hl>4ug2|)g&H1prIfsJ`HW*`%&0IoOhv`;$8^sa~OPu0DCZCGU9(QA+?_s--R}xC9%d? zB=H#(-F*1-``ArSo!3rl<&LN_bft~)f9j~4ToVEJ_A8G_-(nF7L+ z?ZdFdh#Z7B+<4d<2Z=b;4tg}8QLCWLG%J?`0!yGj@=?d==%`oH;M2~Bv=Qroi;<&O zPQgO5%^%*gZZ$d|B~yn-bfJbX0Cos*D}9{GlhSf4Q^w!x#s_8|<15DhmLft0MD?!p zJpBm#38iK&zt}u`g2Kjk#1#ixYwL7xSmLn>NKnKxto{qm6I)Qs`UV7irO2&BdSg;? zIw;8y#8Sv{XX&AUp8E~-%%wKqE=fMwH6)Z=EvmcWoKg&{&>UB8Wc*9Rc zMa7UE35{IA_z(gl`Ar`Jd6$_$5lD?9{Q?4d0rUJ;%P^k{*wXOQk?1tB$_jvAu{m@r zYiqAxM}j8#{B*Mb)w=mjpaS11x%|H8zlBp_328EW|4A?Z{zi15D8g^7@!`z()I&0qu@xBFAy#L1Ppq=Qf@`-(h8=F z(BdPQ$6lkn!(JD)PSUD+#Mnq%Dp$ zq2r?OUo+WZZYZD9ny1kPyG}c19*xM4L8(zYN+Us41M<>LF}ITFJs0@Ah=0XC5n>6W zec;m*vi-v`rnyU!wgW@BV`HB9uEJJ~u_K&PI~$LW!gAf|Og~Rgef$!$Jv>#M$3zpV zM^qw&X;Zj1M5W-~K@TXAKPK$wIBD?=c5HBuUoCR&eEBL|f=s*?tRzcR;xM8SCrsp@ zQ0Va~$5!rNAHy21AeP*aQ0|{yU%Hix39)f*dd|&q2E#RD|3s;X@CZa&h^L{Hip)Fq ziuk^;gA7j5({yqE@uU&_WS5dg=puCE!xd2X_`-qnU-Vu z;@>s75WcP**3r8jg2r$D`FKIY)32%4(+Jk45Vd2+w}ZifS|1h-eMC7B4lfzK`$dA{ z^--AY_DZ_j(yEoPK8nY?GV3#KpKDc$3(I{$2 zP;G2%bYDxP0knG@JASj-579It3(x?a8NNF+FsG&y2vVz$Z4}{bU2+(S_I-4MNe$(k zSVd)LUx_NF@~fC_g>{OUx@%+-O$e>~>fTu)xDQEiq*^~aOv#%y;H?F!o@Ac5%fM%( zMS1XS<22cEqDtOuF%c4DGUfI|XDTkqGxVHPEE`0XO+gS3YKh7hE3n306)XZ8ni+w`CEeF-+={AwAXg13n`!5Ob=v>jyB z&ZNQwr}tfU2j~wViCmJH?ADYCQ%(gPkG5tS@BWW@;bfHamSnS7*PcMFvhnH)>r~U2 z=^~PL(y=Y~=BY87|V|{X*KwBkBgsm$WqRl|ZLu3INBvj55bTVA4fRdf}7m#>1HS?LiVY z=?hxm+$jLF3aa^H;m=59*)TWTYiY8t7<48%KRRVU8x;Pm(NnuZ?}`c+rVJe)Q@P^b zCW*FQHj5-Zh%JvV_tvbT=F08{KC1AcLPCk2$pV2o1Hx~YD$0+Dq?Nl}VbTiAOw_dq zfKZKbGy;?V_YYYNy6g!;siDcq#iXE2YM^B)hm{wo9uaM$)AO6*nyk6D-SJ6)7rZ&l#)vhPU=?gTaV?>SS`V2Um6u@; zTh40`lb3K3f}V#H!K;7=7{1%#wX4n}tRY0{S_~2KpQRqi4hZr1$gc<}0NC5;600&J zzDse$_*cqk5Dh0#@UdI*0c(~TLlK_I9-uUGE?>2q4{{#jxD6VT7ahF_p~KLL_m9;A zjk7ZBPvAplRr@2s`uUg03bBm@HuyeIKKCU|w-tksmBqa{gNIQ6(ASWwo+QZr{I*#5 z(@}>&E}{;k6&lqI<<#(~GSEFH!{7*tOc;)TXW#7lEI#4a>3-PQG|YByaS@Ed+TS-g zRj^z)##YG&{~@nh?UkAZz5RxYZ%L=80Zp+3e}6=rKCZ%|gP~GYl{cVLxJ4`R2|Ll@ zI0Z7_Ap3Bkt|u6S4*M@q#s;u}vQR|KQTt=?k$8$a30qSTsFFk+3(AP7IKdlk%QjEV zLW4OONj?(MM%N#iKOXel36L+ipot3L|h2V z=Gnob`XxtbUcy~1;0DX0pC@d@8BAl06uFdvJ<P&%N`QyUfqlBP$Hsj=D&p%&flNfp`Sq$tnVU#-o@$7ro0K*)2&YbIT ziv87)mTO@-z{eYCkao$jO%6H?2%w@5z~wqNGe!~4sDF8Rv|i`Ix=Mao(U5}1E07SM zKcGnv^HicQZlA^zzznLm?Iew02B4t~@iaVLU*0~>8{fv3!up!#a#Bw!eYQ~8q`#o`8A^5sWF1!gB37c)y_pXs?wjYVQjMs?{ zw1<5yU$ZajP-p^i4C51Er#0KHe| z>9%mj@8lg5I65RANIY8qN?&V!asAZ`3c!sz>7$04tqTGdbw5dZ#UC5Wd zG!A(4@2E;>MdMR^Af-fP5!7%lht(R%jgL2EG;8x1mi0VdgEO)kDX$!rhOGpP4<7w| zwWyo&ZDfTH5Sku}{#qD9YQ{&>&Kqj!v8L$VH4^w(K~gC7bx*mC8nc@+#4TSbn+AM` z3YFkR45fmELlc%If^4rXkaiw5@`EOm0ThM3z{|SS3tDj79K(uH3GJ5{u;_#jj81z~ z|N7q9*NUbDN38tmBn}mj;P%U5-oc=c68IkZoOl=_s%)pX5dUohGt=(BuSZ?^YM|?Z zh<3OTPSY!(w=WzVQ@Z9b9%8WZ{`}#-@9d1-A^mq)_yO$|IH+m2$Ni?7C3(G3!%M~E zgo-h3yU`j$whoZGt48;LKmNK4! zviewWX0*@y1O2#z<{%#MExE9Gzw#TaqS{J4*%|ZTjtz;uE7v29oB#fVv}tla01jLPO1tK%Y=5~a z$p>+V#q_Qakwv9_FQ>;C&4gRsL0w%|rR@3BN@a=wN}q)H_+P-n@0;93Ox*C9>Y%WE z$ksRGEb|yXQy5LphX9fcQ#)C{CciL4n5E(n&i=CE#eo0(@TnY`$g~4#`#!5v2P60z z9x3>dip)UIYzJTSRGP_k#cR>Xw*|;{rdmkZS;uCv0TC`Zw1OHFSTj1u1V{dy z0_fBZIuEm>j(0`>KgQlWsL5`N7ZyYfJwc?mgwUH*=`}z?6_6%Px=4{Kz4uN+FM?pe zhA2o?M1;^06qK&g5kaI$5zuePbIyA__nWzMXZ%AmFe=Y}_FC)L7QsE?DV=Axi>d|r z7E_$}9;v#*OtT0mUoQn^2H^K&pMC`_M93=*MHhi;RKNdb=MSj5gm?NzyHA3+7wGap z1;(GLm^iz~opEVlBJ{(z3ihNMK4GllARjpTv|xr1#Iuu9mVw9=zTh_~lERobDe{Vp zUm|!JU5LAy$@+bc<9ZTTtq5DTH#QbRln~BkkT@nr(UbtK!OdHj1PyY>P9#~6K2s6Q zWy`pLzUZN5HMC4KPBKFcZ=N_iEZZ~TClc?@vu6)*Cr4pTaY7FCM7@;?c81MoYm=I6 zoawxBptnf+gLZMUJlUR)z|G0o2`yvkk(gi#kGUw(sv2s+DcT9hW-MsZUe!}%2wm*z z)bc(|?~Mq30Amzw4*Xt91d38=wt{Pa1Z%N`tp5h8p%?3&7C@~Cw8>0|UmrbT+Yn*n zmgOL-%ZKx6g#7*hcZAcV2N@~f&k>VZL7d7Io49rN)<=?Y%K!h6MsGH?++qCR*B{&i zNs^?^MiiHHWX+~1@aMXyLuSwk=l`Y7u`WC{b7i(!8c1C86YK@j)UVn@zRbQo z%c1!8!A>D`cbwNwZMBoa`g6(&#Hbc(@TGdj-<5dxf;$1{PXjk)JU zx?1F7y`?|`1zesGFi^@$BSUF!fDg#H|CG)_YX;f|bX`P+7AJSc^UwDTId6xsTuQh* z{g|qUh0WyN!z;@~C+o+kx5LJ&U+&+;+MM;Nz&?Bq-shi1zrl^7b=?};7!JBx`;naK zskS9ok`CP@4)|{T7wR&;wcUQ`CAE6;EjEr*KD(CBJXog_?r#Hs&IrQMqsK@Ubp)il zYvEq+W3LSvqdar8_vzIQAi`K%`Bqi=pfJPfw(u7phw<;uqJ{yY`IeSIhfsSt54>gv+`dgh6cSV2!L*T_OM`_bWj+7SRN!i(YnP*^m7RUfYt83*#yVo_gkfm= zZBsv=_Ck1g`Fk2QZ4UGLyvEUjZkCgh&vhg+N{TIfLkjORlADm=u zP`H+qux3uTe4c0LRz2W(LDEJUWJZqtOq+`8DZt%ceDlWWBLH;CyIsJVl!*JB6TQH- zYw#>>nB`}}Fw-98lros|4vvo8x7e!k>}$Pz7Mjrnz)R5eON==3W;R zfUCO%(qw^GZ@hrk_|)iWC16>H?{tJ59T0PE4(U8&PAflws!yF4T9|0}sRx2Ikr;vx z$!kv3yRm4;I{-@>snAUI9-Z#2WE72;b-l)6f7tTWgSAK0IHvQBlHy#=Qb>(5tB}rrBfw(=DrQc530M;7!W^Vw}-Idf@m3weHCI|9z>fAfs5Pn~iRWRel8{ zZY2QtVZK*l-?5XNpj9^jIaG`@BBGth`P z)NGF&0cDa7V6qx6u9|w8fd$4!sd=+!6L&isD*zUGm5}@me&L44**Gz10~M$8%!UgP zS?~kk+n2wZ(2xF2Ny16ULDwFG2|K}UH00IXLDcmjsAR_+O#P8VS4zC4Slvx3aX8^N zKqcN~xLrSuP;0KfdiLkF@G$koGjLY2GVdsqs>dy`sP&L2(FJqR)#~f@3ut~wPYd7_ z-Ck!IeIDBdQ`Yk*-e;-;$CAyFF@ljq^9S>b3!v(+9@O25)u*8c(PF8*T;)=L4^4 z-|(k|wocaaOC?DAgk^K*5<%&OUvTw$v@52ge@+lS=?gaBGv^WX3+k(W4;o z+Eeg8Pf1^D)Lfc~us$=S3&kl=9KSjB`spJIY9Ftt0`?vx;V8oaB;$yLLPr4_4J8( z#y0X&-6^5?ZY?vD7?~o|lb2D~X&nT#Gjc5$GXjYswVu;tKHUvN#s$vqta&kNNrPOt zXFO!j8fqR(tXn0WpDRlAe*s%fgkO&p;*RqmYHGj)%B{D9hJzQ=VDfpuBLg^fB4*(y zM^!}^D`a|>mu%cnJ9^=C2Z~KB;aSz)pHMmVth2T3Y{J~<(ah9MT1hWvOA>wNCIWLf z*abeqt?OwZJ6Rjd>Q{H!=aR_xq?OB{Pz~rQJ~Z1-Ha~;J7Kmyev6U+ayx&B=e>gx&>reW?h)1fN(Q=Z{86WvX-SWFM-8XGF|6>KQ?bzo zJw3IOL2~-6EE_3d#oI|k=fM2sviuB`@ef;+3iC!1diH%wRJNX?!Ifa`;j}LLpVRT@ zm=I`46gqSk1m+nHFZ39gH(&VsmIA+rMmahYt)fXCxTLueDUclhI{nHF>Q5kQl+bzE zCne-_LFbI1Gfa+xX*-olSQ>&X@S~49JOl`nE;w5CcSfMD*TP%5zNp_}zbgV!nVmmp z&pdM4Q4ea(EK1xU6|!Uxw~;rVM~LhJ;J~9X@yaT+7yiv1u&175$q&>aLhv+Jsq0xE z^|>^~_8OGzd4f95Km)u_GdYN(f{unJ?!a#lLLn^hnV4p}ipl$AjhU=(ptOiLH9k}p z&)MgLROPIp=~1%OHRaIxj@xgc3oHZh-uNSKLbErgO|y47M-w+3Invsx-+LABR_~?< zn2+in&(@~WiYMJZsrB>3SicS(2)2UGdn2x$awAt(X71`&{$B?Rv~J)56$pZP>ce~w zF&1VBcmLX?x#O9E-6a5fkI$RRn$Am}C8^&!M1`-P_wEjSNYsWdJOrLkEfbl0-kZW8 zp~s+@I#ElT#7CGgxH*}Q%e;eCQ=ip41!R^TTS|94D2sn~AjYikscPTcKYzdBJI=o^g!O9cH zWi#e%S+EzUx(;t{&c6Ps`0M$-(>+^MuP@e+L)j2iG-oB(`5+nC7!JhEf#C$Bo(ok6 zRIEL+HR2fvd9oiFQ!9TMLT^*jpo4PIIsAMr-Z}S?iL&kc?9a?ZzBKpN+O+>O!-EkZ zV2jwlfD};Q475&N%7Zhtr{5Teifsq2T0{0QXfq$)thg$=^2g}Y%tDd`gIB1rOakg! z(`x^*CT|`!x2f<5hlXnM?tAE7`y{2hq~2V0lE75bbyeX+|JEQikF$I-Nz#us17M!R z&pAqz=CqPn??UG%DIBevBidUeWKNHZ%;dyxel8W_0{howJl@j8j)k9A!N(<<@DS`0 zR0oi_Bo5>_sw}&z~FwXNRXOC zf9xwx$n%#4^ZslK8Gvr_qfP2~GOVTExi}N=?6~U`m!Mc3CQ^DxDHY$V`=wUtKhnif z4eXBL0|Ie3y!m6TcxIG5&&1_283NHO9w_q~9}+B>L0|eyZ6c=raU-dNDWq!F*p(f+ z2xJDPsqWYa1$j~dYTy*)_YNg1PC6S`3p5mO4ZP91USdxp)5B@z96`ye*RXb)i2#P+ zBYzOlL4@5yi$~POlgwTZjrp80Vqp`T+fMvWJ9mZJh`XF~l?M&$j;|t4>Z53mq$E0=lPItiAB|>rVi&4Fwu?-rNi`*- z&MrH`9=~^szFVBs$W<@-whzq-SW8pC_TXh3(+R}TLJl|v!hb#eFhp$eyP9PaLxO`> z1!Y~}aosCZrB+ps8#i0xpv=`g5Xc_>r-YahUA(!k? zJam=Q!7M3~y(Oe0fH}r1d(v&`EkWYvE>SQ7B?1BT{_~fP{IJMe>yo-gJl2;$ z1ci%e0+cpJP$*_AhY?RQgXyK zLN0cZ0iV?)&AbBx82R-i`ibUuC!n!h4R${VAMosChLxR9n({a^l5$t6`4xia+1;pY zz7keAS^R@eaL%Jme89Z}nL~bXO#lQbRTA zyV{pPluFaJ({r543TVv@ey)zLTU>~^M~@%3x5Zv0>5))&&meXC?n4Eb)9X81MPmRi`!FIk~?!p8ZpMijD4Sx$$gzu0`^3 z%x=ttdW>yb!h~iFOR}s~oWkDW2Xj02(O$GQ9zMHeTQE7YSdOX~w3gZ5s?4`#0r`~- zCK$h!C1pP6EwJw`y@OMrNSeG9otrcD(d)&xdGYQ7I-g5{ACoE|iFkJ7y(7S9(FA@B zFb@L5{X)g7Uq7BKw9brgvH4^Z`hl-=v6x-gYo}6f&9OC}1;MuDYi{M)P@(x&eeKb= zR#aZ)tFSzQ#@9iFBp6n*n!(2ZT@bgYOj9i)$aDJRY}n=0(lfcid8V7N$nEKqz}Ch>%*327t#>F zm{lUegaeDdH}lUg@w|da@bsl0^G7=>*l7@4B59c=kUxsB-vcUT(;bh&hVSI>q4;Tr z8@>4o-&_64H30)kj=qB+-z?p_r*a~ocrY9LLHXWJus84}ZAmh#=+t5UeK7uY5k;p3f43Z8z73`P%Jj>0DRCYan?EI*Tn~>0%m~$-DIa z;koQXO*U01M8dANuJ6LqX8NTw+h%dJcXCtd0*XLRwst4tDiv;|$w; zEzaB^5MjVOm$&;?J^i;37gNo%A^8VKFW#={x^ZCI!1iI3-oj%6O^e#PoV}88Y!sPJ z@~JYF!|L`>NL`4_!fzU|UC;lx99s6w<3G=v_~`k=NmWjoQYob^%r6MBQZ=yRz}@k$ zBSM#@`i4yTX#E*K(^h;yjbdyoP(n|lO;kw)QKItmmQZt+mDQhNs#yR@S1DB13uq)fr zpBSM(K{h@6X#ci|iQOm&A!p3yyZQ3R7=PW;G);2uF1wouYz^IVJpK6>1LJTmU-n2_ z;hGM?(y0{yF`DI)cF%1PIa^opA}Hj@R+hq!G#w2r=!*&|3$=E$Y-{@$NVv3 zcbTVI+^b=gw%ysituvipZU=rMhg4!#-N$Z=J&^F5W}61S=mu;@(Gxf|uX6*2yMG+0 zQaeAnmW6MNj9eRq-a(JyQI|ygBA3?4mO58|gE>$G0R_adG*@Gt;aqO@IiK?!cuDxp zZ5EcJ*x(jAuVsH6eWudhM6cX8Ni&>9pQ{vpQ=NJ!@}QH`p=@-_{L2rw9a&LKZDlpz z_;3+R1^dE03wG>=PBrp}F9>tWsN?7nMo6y=9M?N$$nkpAzth^9%1FA6jKuBzd=hyg zvHYNv; zQQ(EOTsEl|M)d@PN6d46wnq_ZZ5R5j!Lm%vzJoS4Lv}vtAX0#1`k!+^EGHafEPLM% zQ*xJlu1x6u_tuD}fVVR)0nM_%@Pic9>`Ct6`ca|iFTJtD-Y^yOuZ>!>i4V9h{+Y`<&QqnhV}yocg6UT%oZWWG`+ev-0V z$8Vd82s(IAI$pU9S-UFzVus4=jm53X%KYJXP;}#?4En0A%QQtzIr3ryY%D|@7tk?3p zvmt$-qQW ze|)PSH88>x-PWr0T;kMyUa2CDNzQJ;N`2PJY1uE@d?SaNTYl|0^W!jW3D;BN(CQor zdkq z>S__XG5w>2i7{45?k4}V4gV5tEpGeA)8!t~cov=q7+R#yGf~!U;SLe!`W6m`8^xZD zmJoBy1zPogCF1j!&1$_@0iRc*5;Vo$tK?UP%R~34^+VZT2VP9d7FucD& zK+wXL#^h%G_?E3&%l6~ODZ%RI`IJL5o4nD3xeMD;4$ei29|1m8P^A0d2LQZsmSp`D z-bA#4$PULT@fGXxDhtb`j2$Fbv<|OooqQSdfsyV;Lk{NycK^3(TjAMK-o^jDvx$%Q zc9es20IvZk0{^_is&`>QASV3oWlV~p%Y)1E^+WP&D4#Am{q)ArnWx};ddT=cfbsZq zj61ueiyr+pbOjpBfBKChj+QdFQKWf9qBz;2@2CS9bjpe#7-oMjAe~O-30-kbLOX)x zeOKvA(TUt7wB;1`_kcUbzP5{D;Kh^!L1&NI7inyUFhy9_y}`px#8uq1*#oXj*e9~j z(^Bwnl}=h@`1d)CFbXK7T}FSk@w!V8wUgltUc}bwIe2keDBD%Iv@Q9L+f1+YW?zg} zT3ToR4L19hHGM8z(~?j+*&SVQB{NRmmfqvGtKR9P)_HhIYhmK~dfmYM3M<*bOkTH? zXUN7{YIx}j<&1%6!^#RCz@O@4$B46#vpoz;D7c)RlzQJAG?P8dVZ4J{w(BcMAPva+a2ZZ6KO)%0TYTLZUf7gF*0>!B-}_!&}pyjOP^w+``<#mtJQ2 zr8|~d{q=nLROL1uGnHg!f)>&(`48T`1NL%G5OB?@a?kb6Zt{PhCwR0_(87gq{U5I; z7yFFgu#)(XH9&n0ex2kk_MnT83v)n^#V8Yx!)0DFes@q>tr*w81+Uy@FzY-_laHC4SBKg zH^kz+`TGoATCutYzy3(kAzbT!9_olxjB;6`q!mbETL={?8y>R>{5WW-ocGrY8b$U? zSG9ITL+zh-96VVb)HPt!vIot$ciqCjqF4|^b9LO<_K;BPSfcaIw{%bH(<_t7R( zxsj`-g=bGrh}Mk){Tf>-P*4wAYAOxocJ6^=bP;IHEb?03My!O>6`p;K`*pA3gPE1c zUYXD3A=zi3t8uLT4nnT3-ywK=aocB-VWxa~*cmy?f|m;|Q!9CXI*VMH#dJu*Tkn#+uS5Tr7~`W9AGoqsKv=W zDd@on1m|hukuQO8QBB+wcVc0}J?9Ui3XHr_4nptwb@gxX;Ji0{%)bPtd{0t7W&nvDFF0E&x_$*-HNB{(Kx1aLoknyYT zk5v!-oQ|t-n?r|heymnM8`9DL8h1vW%GnkG8Yl8%DrK1g8hRQ<+KA;TEbl1q$>nN2 zbdVVFImnZI(!jW`?0_a)+XR1Y=QNe_lL_Qy`sl?=*C&7T2!E{mbYc)@xUif&CbNd8w8SesN0y{tmRsLwUQ$Gf z7Mnn*`~3UYzCGa6E{K>RM7K*-5yWmM2c)Mx|58y)5FOz1|Inxe2HD!`Jz`J(V?^&A z(1~Njl$K{K$6SU$qni_$qFI9%Qwe?R|IEtvoo8K6iq!(Z>!fO>W#m67{brARC^ z9x@Kn&L@V|5!TBI*i5Jq%xZMXSXbl%|D=I2Z2pFZ42}<@!Bf8Xw38;acxYy2b5@Jx ziW!xxTlUh(ve>gh38N{E_G#}<>PO1vJfzpRe}?T_ zzd%DYcPso|%E!Q@q3U*{#ttbeisrV=m6%}jW7{by-kdkPk2UK%l)Ba)r7Cw&-#u}- zH3ZXU!#1M7?k-MslA@Uv%ap@IW+ESm^%r7;AI~YymMmJRW;lgQji`eM|D(V-6_x)4 zJ^+Xb$q3sGprdZn?Dt~%eMyyL<>ys2*Gdrv6S@IQDpp@ONpfdcnO?|LvGqn<4}fee z3vXsu9ncirze1Xn3-SwV^1Oyzog&COLN|)sYb+lGu?2dPbD0U6j^z~%=>B^QzuXOA zn}MK}$$-Cl>?-XjF~ghBSE~-rI8<3+NNFS2tAxMw3q6_HJ-d+v`hpZh6qg1CBY9d* z<-j=f33^tYP@yL_|K?aKu6%}d&Hm~LuBR_t;&x~i{5rUD#lshaeaqy;EZamku$M6= z$d*S{+nv1uXiS4Akj@28fbMHyfJvK|()fI#w&fgXp5tenUJWZB316;bUrjxcS4sCD zxnO1i&pL|{`0OwZuqar(whr=ML$29X0V)nfS>Ao@)xyb|*6n@^QgOel8;-_d=pl^| zYp<3i2aIQb;%88$=0M0}Mg=<+uq;~L{gT(><)n?H!m!2*Y)^x{YeeGU(v6Tbi{vQ1 z`GBkLdbQhjzkizN2x23$>BihnoY;`Jd=Qwm0CvS8li%6 zH3A}U#1kx%FIyFBmGSrK$9U9|0t={0Mqyb(Z}K&r!|wpx?>1d5EsGzU2F-8K%*OMz znlqz@a}uu{c&1mL30xw$*L+9cL9;b@Rxd=Irb$Bhwc+q!>xz%;&o6f$fy- zo-NL<%Tn=kDYzHk*Gg*C)^TwV z55@(9sQpC{K6B+Ln&HFcgDqGYBUaJve6lc(Ew9(Yy1);;bJiJu@+m6Q*-O339$1o0o0llm2 zim9GSB_JZKw6X!%Z@Pb&7;~uMw!}C741>cUdOD~ff27Gt_+E*x4n4=@IL4UE7bxj= z94L^^A%I!lj&Tlo6o^+H<#5&& z_6L4!ui_W^N4T-)_9q-OANp(J9ftIW>~*}k*WqtIG{TK>^8M1zxu#~xYuZdMD&ti? zO0x&>x!e=2g|OKm9e3h{UQsZZ>2!mRko|*iO`UhCWcff#v~sDmtgr5H1EwR8`sQ&K zN?ygm*`*)(paeb6mU?^SH4b%`{u)yF9tTX*vUwztprldUa*Y@* zqO5seNGu^m5EA7_nd}NO*50qrSaJiX)+EesNs@XsSLVN0#=iBx ziIgJ-UT5X2aduvOzb`#ttDsvkPNz)|6{C@$yQo7pfT}}%aG$u#I=b!{^ z0Ji0)L8hLtz`>m5oRyB-?V3oI|Cy+4>)XfkfV`~F1qwzdp+<4#MHIfZUZOpX8J<4U z(@MKUVYo>ge>*K*Z=0^WJaejV7`IiZ!Xa*T)XAj#&VtF~(VnKyvV7Ks$^1>-MWa$l zuQ(n;Q&{@R8*#OMgxhVm^!Ivr6_kF4z}^R7eIs2BN%CPE06_|wbfVM~AU zAZ@gd{xmJ{EM2z8HL*S~sp8`O2XO&Y^2>qpiqJNwD`i8rfxJK#O%X2_f-!qSJB6K8 zYE84*Nxn7M;BXh^uNAhexD=$B0+?J+u0jC;5q-O6v!{_arVq9#>AbJ%21#<-`@i_s zm`a|%zUHvl@1z$d$_7wgu!Q*PhbjqY!o%b<99)73llKi4eZ1K|xEyp0A5MIQGVF$s z8O@R0<6L*f){&q6zm{b|T~9UE9t@73C=}b0_@T+8xBwdP6k`bwx$#k!rRB--mk|c* z9)iA92m!jcplGv=x{r1b`FHiJ`xCL@EAk}DncH&iz-VsC4+5&$BI~tM<8~!}iowbQCNt@j&5uFUzzICtETqT^WRp_}LURZhzTVzg^W=D7ugwwcq<4RS zzWJ*|ETe6Zy(~biDQmt?xj&)C_gt91rrp7IL>et*r{Oyvp0s$mpMNDK7jh-cQb7e1 zdkw!AmY;328BUBi8 z*d^VswkWs!{&mzzWK$y3E`PCb{Jrf+ws!_`6WI0V8;Zh<`=oY!YV|C%M@WXQssNUl3=8_!Fx~;OBOUsB_)3E+9tI*0HhBa(NPH9Y!Ca#%cV4xk z1;842<20UIdTDf^ozekk6W6H1_hyR?n-ZtFh~e-n!|N^A+!ZhT-t;-5R#?>8)7@n3 zd6jbZNP?>QeW2bJs8YdAzovWQFL;#J)2es)$IY@>a_dDi2yw%MH0n;f{Kg#_SWhuf~?S-KPkwPw@n7I}EG zI`CA8I`I6~7JLuFIoKjkUB1q|Lc|0?`x|Dq;x_?6)4ceoddI3A=J;X3|EF4|Drbaq z107?Y>Xg9a*()F!5!2_u#UIF;6h<+(m4sM7|+P94XlN5;#({#f8ixh~kt^ z;tWeeq)(=?%xzjn zD{xpMHDr%$L`k`Z_}cOgAoqJ;l+d<32Aa)UVVNG4Rovm#S_kLl#>k`T&)rCK{3oRT zZNKEjDRuCne3o9*q)Ty-jYiv}2R_0+pAg=NkxJH}IN+Wsl?MRH zCb%0+xZ7Qwl@kFe6TCHbJMHEh>G8Bt^w{!F8}Whvb@Ldg*4D|NzxPjtimpRu(O{Crz%sV(?fGS(z?1s3$HEsFZV3=^?GIum7D9dF2zJ#*MxZXT*(%4@m{1Ge5e7no)X$yfYI?U_sm+gDyd!CQr_qfFo zA925S0W;nu^|7dNcq{he5H*YrE()8r;2dG0vntOME_+LGR811+bx?ZJ2bIUcxfnnk69p3afqHDw$TDyzHtMC zp>)E*r87IRF@shTw@=dA`;^xJEvCAQ>d+MC&CNTMmX7dFXil>@{4~5`(U!-y-+FEx z4E~1|KTgMR0BZa z`A{gU`S+nn*NRf{RoQ*3F-Jr-oWJ8TK&lCXH)|{Lrg7Du@9!@>we;n{_xr;~HG&pH z4c0wqftMcxKP#ny2u9#7Y#d4;5hHu0jwyA2++dcYOQW#<^u5GluT@eGSO$14=P^j0 zxM0F58GmokAe%HnQ44p?i~Ba!yJX+TNKwWcXn-L~(NPJA7=$?4Ap4C38QxKX#TjqH zsKx66Iy?vNmCRL7bS`nY&ROuyA9hkZ42Y9z^VdQNHkh&2(vf7>X6d0qY&4{dHwW&|!J(9By|2u8|OT z!Q5J0#|J%9h*{}-E}2b*dA6i2kF;1$dDNAXTb=J0Rj-aW9`TVpW8>sZSIh5QT4-Ic z%V*!-a0-6@uw;!=ASLZdRYF+*(YY0o9tjb@w7#`*u+6gI8s%MMLlym>CASPIkmEOu zyKRG)a{18+v8sl!9^0upY9)3bmesN~}Ab>@?n<)VYriB3iPf4|&Wsxl;9{T>|3M4IX!8u~7sY6jN>oQl^D z&yA5RD*k+(NpxFSBeA;hyOJh}=cMvPV|}0Nmt(ip<*acppyQ1b4ypWEmm?Z#SVoj8 zE+b?rA2)%}{aUGgfPmWa2*Hs)cO!cf(fm2Dc?Amd1l(Ox`6yC1-0tR=S1r zhKjIJuLFBkacbtYy15(%?Rr72`w!h-B8!a#^T~$z%EBaS&RYsMVF4n;W6a2N3p0tb z5PT1nz_e*RwFW;UN|7o4og3U{#t|>=UPagg6d?IQF7-Qmf{yWuf!tC~Yq9R0%26ue z0}(!^=v%^-5aiYBS ze7&NIo=(3lqjhtfE20x5IZAVND}!N+XJ+)+W{ zmTtFbv|K;K`XC1noC=~%GrmS~+Jr~$;%UZh$X0mOvTm%dEJD>drWMGQYsrL0-h(U1 zQT_|DO$Te2vZJayLz;&@lU2KRReo({iZj!wNqr9b^=to?Hg>CnQYbG4XqJKF7*W^L&0LvxK!W&N4@O8%S4KN|* zOCw@D1#5MB;c(uhTs#ww|Eh^@oElzkaoqQMZ-0sQF~7@VFV@s%C?9Vj{fvRuR}&L) zUBh@0kQfZv=5psSr?hMDoazGI%7X|CQnEVz5qy{DL71Mr}8$B^OfuX=Q{4y^eaY$h^iHLA{eJmvL)j8xrE>OT3!^H ziia9C1*(UI)+?gXknM;qwcS<>AwKBg#wdDJ`Q+@3~AIZ_>;`GV0 z>7z{H`oCs5C#b5b_QS=OejxwB)DNs=;fNmqNsngwJH%1{zXu~rU$s`EIC1#z&)(iA zL&HLs3tcN@V^y=IaM4hsgL!d%FHGJKTjFVZa9$P1B^|%rfI0l4hrK6ylzBfFg0t4h zw{S>)3hr#p@^gK$^w&!L7Q}ZfGg#?3E>-b3INR(!Zd|Jn{tC!v&QWEI>tK)Y=lYp% z^v|gJaQJ@kZ@)!CBKUYqQ>1PNh_ml5=De`pXfy!#Ie#L&^L+p}^H!dfS8|W(cBN0< z$zrLeF)8-F9#VMZ2a{_NKIc&0Ru{2M9Ot?$QB%g(@iv*DDWC|K{&7w`M+&_sMCz>} zMNlc=R=yoDX6cjNVqI8}v%4ftCsbJl^Ilu9uxI`84jrfCq|$%Mgf3K#WyKz0giyKM zuV5$l6NuzQY;{{|5G+;FPBO|SxEsZjvW)24@uB5}0Z?MZ_o5?wh8Eq4qxj5lQX6s& zkz4l)I}W>apr|{w93xeu0CM2doO=LH`t_lyGlx0Sk0X5dopZqP6>8)P3GN#psMwvE zjN|MFgH4A#KbV?R12bPLE^tcDz+nkYNVXTt}tR!UN5xZd2 z2}He?n1q%kJ^|Ol!LJg%9pYp9Z|&{ny<<`MrqlKB&#qq~1yQEtVK5ayDOH2mvwo=D zLC3@&@Og$j>)JlJQ3+xPL$V8LvL)&ghEqY3JVo`+SrSCp$r%}k^b)Fms!q=X6N05! z82W}UaYQQ><|!I%0IH|aylfQfKC5-(BasQa9QDvsg~{AyinY&w<#wR0sk~$P5BQ#u zZ@!p|pOp&*(k(d22AL!NvWAtEF?=r7QHNu6yYh_kX8UPzYOG^M+-op4D-){=`OUUN zmznQ{Y`#a$eZ0k}cdlTaF(vv%sU zk#DIE8h|jy++#X7n+xJ$Mo{VnnFk11Y!*) z12byz7yN{I2J-rqDnuN3#_{#;Fb8L_xbk#guUmSKTf`|f2lwB zo_5)$75GB!L42nD-E^6hrLi5+`l$2RsVqZ`8jmIJiXq+3^}>1B_a`}pyvg*dscpaK zXd{!Hb6{<<%92a{gX49gaa{e0l2za@xq@jKeDowCP0y}Hdqx9MS%x_RDho#nSn{3v zK{5mUEWTRGEf93uk%}r`)xC5Z?FN+)696}4)71n$q*5C)UnE>Jp_1SOa%LT$!%IM% zp4m#}!p;w71MlUtu3k@hBt@l1XwJ`)=T-K)3WaCR;VuRE8pYvr0hvoQqv)ez?+=ghBb_bd1~)@PUu=9fmExv zDQT2=w_i~tG5&a{ry3Hp{2PAo`Yo6<>>ZrDIN_v!T@?H%FqK2u{~$hpK8}74jvB_K z=9u=}@5fqEbht3J5U{gFTMc0e$_9K6)S9Do>V=a=M)GX(!CZL;`lDX7(tX|FKLkUUVI#;RJ zwbPhjCfhf-Kfz6~ZxeShf;4us+aY_apgm!inYb4F6r?sK0`h6hvTW20b(LeO0LD+$ z*4{|Pj%f%ufHqrfQ8x}nClAXXVOhYCUFjd-E`mRVr}?xZ$i_4sS$o5hvS*;nvMSII zF2kkl=&zuB+U5wuPGPsQma_JT0H9M~RsbZWkzZI>C>*%Mz0$gCQ#ZBi1XjY!^DG&T z17984=wYlK)1?va84sRk?Lc?v+;BbK34GPRfz(E`d$(|*kQK*`DZ|f>@t%RT;E+ZH z<30EY|4~7Bs)f!1OM+@L{g5m+P>wIvvm~QMQ{UVmX^yzpCE^lu!H`9`@}k0L@odf&75-f}d26ym0d;@9GuSwPTMb z?`>oKdjm3jvcL2yYxx>3y6?IAmN+ZBl<{6-@)h+lsI|*>ml@8s0&*X@-VlpRE3k0` zuM+KuvVL#Yl;s0tE=FOz5y8UM{u8*|1=vHbX8Yt9RkAzs7u5)KtvQXSe4ER zFh=VS4PafVVnn%(^y@$K2JqxKQK7`0ILNr#b{A5W@Ce)-6oL)Qs?Ewko2nHpjsdTl ztO%wIMWc2{?ctmmLc6eE=em9^cZaGjFD%Lp>=Y~{jX&e~l-VNWve`QPE0E}YPM|JZO$cs8jlfj@5e;@&s~dPu;<8p z?hDW|7J&Wp>2B{$#Ww$^aTUx0)$PoNf8u{MII0w2Jf**A;Dsg)Q|o6uKCUHZK|h|V z{|^(UA9qRujc7$moSg>>Ve+V6O|&8M2|SuhA9oR*!b%4j_`v(_aq_iCEN4MX_CfDG zsi4UgTj`#QBw|Am;DJkI!NNB zk>2Bl;D!sE%cEa345_=n32E8LY20KPS;fz%qqYf{7{^AUZl)t2yA?wphk+cZ4P^SYs`bmm3fCqdvTcH6}PW; zcW!mn9kP^2E=iO=GpJF(Os-pbweWn_eWcF~W9)PP7%(n^>3e!Lk?|U755KRt1W!-+ zgG*$_D3y$2V|vxKV$Rj9zVro!$;fq$8lRcYB&%g*S!BExhl6_ka$@HEX zKS#N-fm^eskYYsxusdT?blS=C)1x3eRmc;8*9A**hAj-gKuecw3>`-e9hsV0@_cIM z$kNkk3Hg@{c9F0Bh!oR<{FE(PCPg>QXHatAqVUw#|1`G2K-Rn*J&*h^HBLe<#X$0F zR{sH72j>#e_rzk-B9!orsNdlSyCsLPbwk1v{AuAzCYw|r9FcZ>crta&6 zRl6xI$#D9>-kopp1$0GfUt+J?Aq!&u45Kx4i9KTRvWW(IJ`YJ+cMO0<=oww4DN=C* zD>TVF0Oy8tVF_A?wtL(s8mC@+`Z++eL61)WyKwZ7)b;dRHKIGMdx zp_;_xUemC#U?67f1Znn;60Z8i(LPnZ{o6TJF4o9#qIKmH*cc{A5g=?Bds>}`{0{!W zNTLw=7S)_i`C*$=wlr+JPnTV*Kvr^?_H;DEdLAmBEWfdY^Un zv#m-WKNkojru<*1tPh~FOC{pit=U6}91-y~ft_z55#XjS#l^j#QsnS!?B`MDqLJ%JonE~ zn6%Q5rfG1n@7}ZD$N!cO!Y27Vfew5*WT)Sy&9>* z#X`ya^L<07U~|iR-LH2-Kh5u;Dyag_XeX0i7vG;K9KN~4R>c$;Y5k~d0^~a~I~{@O z7yyX*v+O9QS5#r2*ByO;xHEAwn0{C?h_FYJfv$?v7SkTHil_cMf4TtZyh!yBksTS;!|sq>pTB%9F)T!b6Y zt;N>|v^wm6l2CRzZ_btS?bi+R^CIQ;Y+_35yJw-qYpMC|_`uBBGl#0E_i?{j8Xjawv?}{gA!0jkK8<{JIPF#5GPJz~02Xkf59nV) zqC8)Gg+C8V#~KeT*sS~jxjAZJ`d}hGpY3q>{!Z3~n5$@+WsPW+==nV7#%Qwv03f5` zo4^NUpZYhrS+vVe!w=yUH~+ z-(?a6(mygVpq?vrc{rMIM6o3^b7#?|0qImN&@B{$nb+D8D*E3J)5?uD#nSJ;I+pA> z;Jpw4h(PJPz`}OTGpEc7q5N}KY=*b(uf0s_BYzScU8K6U__qQ;2<5n~v?PnVK#xFPlgdmUFEJ0D>ys|5&3SAAX<8%w~^Xf|-iiY+7V1Tl< zXj{5~x#b82+!vg4fnV<$Y&kmNvP(4T1pY*C%X6Ez_~(N2UaNvXRRblz-6)B21h7XZ z#2vtJvo0gI5M>g`MsXc3e@IC!xug})YOrXG8vg@r~2Anxk!kOwa zd!6oo)rf;ehCe0 z8=L^jCvKn{x&%@SLjX>b1N7ohmJ{3o#8np1S7o>aqhLaUPiE;C;(5QT#ZCt>8H=YL znkkN8j#thdUI!pJm}CNiXu4wd{F+#nR!cRi47!Sak}fwXk~p<$5*XB(?+o46uJTUF z%MMPQ{k=ilCL}iIBM8k#0b=g@@`S;j6fd`&6I&r8E3kg^JGwi56PY(H=rK~IlB+`j zOf{(21o3O}_t7me12(@IFoi;Sbg&|Sl0VtUbZiorLB4tD`S*(3kGK||aC4Y&Z2MfK z(D!Lww{jWF|GghHY!}zh`hR?M`^bY8y2K4tqLK*KBrh0sg^j;!V3t50Q<6m2Nq!Ge zSS?;tYb#~kC?v5wB9!?1v0B>E<-178Q``+iylxb%NLybt!rX%!Fm@#X zg^Yke?9vZ_cCNplQqM!p`d7M+J8rQAnw(QGu{97B%%owUs*uI4DAa|xThLUt8@hus z8+D@1H@@E6`qY2^q^u1M+(Oj)E(kQJ+%KtdfxrhYIVyQk;Lm4JAZ89fd&VxPd*7Cy zZ9FK;qd~_9!l$c_V7;}gcMDr6Ax3yDqTK?JUV{H3{X0ncZ7+Yj6KQl(pvKM|3T^Z) zFyN&Hq|&_vTpw(GOx}mExGz~r{=tv9U~QGnEy29GPYvcm92^MAdLU?jMrz*wdVA~F z|Ga@L1+q0T2Zv_oiMf_Vw^WcCC@1xFxc}!9@Qy8u@Qy6Ltlj@OYi-&Xm^J1Ocd;X8Wm3e+O`U{0K#sCUKw)wu!P!$(bWew^BR4*tHpr7W8o!4BfjZr_bH zc`%Z-5LFm$JCJvK>*uZA;cig9?K_OJiQivliy|@~0q$j&|sSyJco&J3O?^h#5{Ep^10d<)|K5z#GAZ6Y-=u~*^ar1}K){oCCg5&|AAZrn~cDiLF#^l3MU!f`{VccB0dij0M@AE!zli76dD9<^OH5p4_LxZ2M@|A*?`$_@)9xl;4+&&$J#v%&KrCt*GU3gxxDnFJ1= zt;b`_M;SQ74{ny)lcDv;4D>RP(I)E}Qr-G_ZC(hnRQhK_4gS7i5+?=xNP?s*2Fwq3 zH%u?G270vekN&g&Dp34hlE|ItI71#2;%mYT5&Lc_cgHU--Tyo`^c-{RM7K2O^8Nl6 zdQ!Oj${CXbmA>NR>5t`}U-?S)NK)3X&MvQM@_onOKMLr&Fj~S7E1_F1Z_+S2M^G}ML_s?! zXi@=7O`yc5mwoFu|2(l@D+k&u2snp8M0N+vP22(9{JJ)-Jsyd*i`UI^vWU38Qh(&;)xE&Dm&(AmiJ^pZkxaidh zgyHh<-M@ne_5Bn?OK=|RAd zPMec-2;2H7>Lkc%nI7sU+qxK>q?q6+m^w!enrqbiV1UK0g?|8_EwAjcxh=4`8^GSJ z1%a1cKfs-r<+wij{Uqqayr_vfg_SteWXth+Le4p@k}k2P}bQ2d^@Z|jo(SwA{%dlH-AC{#GBMN|XS3+M<`!{{GulL=d2jX4-z z?SP+K!Jp@a%T#|lDIE768o&i%4A#p=ufa`R6&c09KY;!jehPMJwIj!e5hm8GID#Ju z99aA2rk6AQZ+G$(D>%LV6kET}%}x^Vq7f9g>Ntt%`Oa7ey=UCIg}=|L`Xf@hya>(B zHji-t`j%b;eNN^E%$*7V+nE0UW7)*O{%$TeDEf(BmHGPboBVb=vNn)i#S5KREFOL6 zng62EWc4G{5Hwi26$2x&2BxVPf}pe8))%qngm()e{qW`=htBE;1Y1CbYT+pA-|F|TT_ep$mzz?c%yAJIptYdXXj@3qzc_$eN`hFgNR;Fp@JCFV#uvqrSb@GIC%YCw^{USYkI{hIoyYk-#<%ngpc8cx3WEOyQg5*soGsmO2AojGsv28? z40K&nLn4@9Zh4S_^>-w{b!CVthPl-5;UplX67*V}`d{AVriA0qc=Kie0B9KRg)u5j z*&w{1+hdz)skZR%VgCDDP83g~NX|vW3;k^W{e3}z35g_s(T^UVhnVtMmu)K%evDg_DQn z{*yCp{Y*mur1&I`A@$xQW`$!rrhsa z7AKH56YtziQ5!@}jZXWAuHzb8tw|L6xrl{|^IPK}iOnn^#oV&t>;B_gPv0M>+88LS zW>hKSab&6&Yz=B6O4|EI-^PB*k*a7gy z?ck_WjxMyn?a+8=RV6fL2*Q}LskU=60YLkGY0#h5FRGlhO0fzs+VtL`b+O7NH5^2c zjlSxkKllFushwAWUMv(!xH_IO1noo^fCVgY*2w|*H*SBbnP{DOW5ED(efO^0 zidQ+o%9*$i1zf{^xH&bMW2kyxH28j6{{-U~5*Eu_vQZPCV8zvP0d&P(SPb2<6lQCBo! zOJwgI48Iw*(C2)vUKg_p-U_pQzq_f|!17B0pLb96#KnLAI9lTNXn1z};F7Yx3l3!j z)Yg8Y#-5lng(ce!;!_eu!E6wi!5A)0I~ZMrgHFK`>WFIBF|y^cQo zX|zn3YZ;_)M zF`9!kg&JTDN?fEz)*N<&u=AGyTu(%Rr8t*o9ljE`9Kah zJ&4&Z4m9FS`zrw3O^fscX1&*EHf}&W?mOw$^YcH%yKFjVfm#y}KhW_)C4yHuNFPN0 z&SVc<`I!Q%#1V1D(|+W}#^sbRk7o`+noY&(J*Tl)C$mm_M(Ps8WT>^l45*FG3v_9s zmq`G*^&Nv5GSwOnp`&DI@H({)fnTX1RxPRu`pCOlK%&6E_Bb>@pt^rHPA@z{YIC1pMRh>l{7A1jb2 z-<~=5Ih7im^Cr{_#A-q3{4l;75Ut0?){6lI?AWexnym6hPWbg2vkNG#5qV2%5e5C^ zH-J_pJW=?YZGDu%@4<`4y9Z9cx-o*)H4;78DW+Z77y8f3AikHxB-hH{+=WwJ2<(wE zK?*QuJeLm4Hj*&B{F2cO^f|=#;LStHxAUTuLYxF4#*v&bqn(5O z_l{J6><7D1grhQ|Bg^JK-Ru5BLt_JCpIDkuiO(^}QMWugMHzNiRZu#c91>v5&x44< zgP@~a5Q4ZGYT-YfxA~k$cY}RZz4kP<7+E26F3k}n&C~Pj(j{9+*mHP=>46^k& zX$44};57#!a!fm$P=lgg#6Cns@YK+n>CKc!mWmW{zP>@9k|Vglmj+a~-*!z>9qVR; zO7WpdK!uZ`Q)jktr-}AMQs`?^{=_2bVm;PVm}&Cj{-{Gy7p3eVFr_H~=k}-;WlM8j zQ_#_aU8g)U@e8$(^`=2@5F~tkJM~T=trvaA&gcDSnD+NF$m&4?%RkX?HM->pJzyq= zo{hR@u-lFxqGd%zoi_sy2{>@XnIo~HZ+`~f>UyN;3cOx|I@p;Zh)ystbJCJDT)@@o zWCMb~DmK&`J9Q*T*S~M93(SG`^x(Axn1^yrya;LtOQ*a}YBt;5LN5l!bRlNE6ae!; zNKcD+%pFxXZLRu86kUN_+{SlDC;(z74$DM>*Eb^hj(yEvpjx=J^)UTUxj2#e4)YPz zS+7P=uufK3RAjNY;Hi%2b>1|!vb8juHWi|z1V^~+K_boKk8K}sCYA75OrQ{yhPRi&*)M)EDK5Yg~Q74IPA{K6fl9L3|xurTb25|p& z&8}@gmIEDe#$CqlL)&_bSZt-x{Z%^eMH}XVniXG75DcPa572Nc683^iR3+|(Z_7hb zi6!~I1B#juM1Vq3@Da5z?y6=Ri`^i#CGVQ)<<;L&5IlbeU@kiHAOCTINB0v))Q4XH z8k-3Kiy%)PA6k~%=k!|C_)vfTPkSfs2dxc4QsAD3p!CME{Ti-Ftd(T0_X_rr5`{#3)nc;;FWvN%GeZkad%@bP7dnaXs$JWa}Sq3)FzBiI!{V zl=#Blp;e`3TDn_29gQXDe`N~o3P}f{IeliITc6On`UOC4a%^0ix5V|~vZo*>C#3g( zHQjQpR1%031(3}-I_#%Erl21z9|C}e3U=B<9HP`u zN_U%SE;*g?Jw#{W{}{Sng_OhTo&uA>W%11=ANr9ZG*kmIGlrma=4lwopwfB2x4Rj| z_2M1?WDY^+E(PFMPO_7EqV{O55{|p=M0B#vh!Wx|Jf~6Uo*Q{k0+9l)%pr}vE5JVc z?->}wm*+7V&tTdK(zm0O`W*97NGvoD>aZ`)>s064uv(2sm4fD7cJ*c#VXK5L-Q9!< z`($TQp4bV|QF5{7yTkEA67Y}g3G(~DfHqlX@Xsm{UzBkl>!1Og2JZ@q!UN~ z1@@~p;2y4r1^h-5=g$nLCF)kHuQ}8d!eWn{yG9pFew0(|^Q|a=TB&_kKe7JDMYd$V zYx-ARPc5zr$fkS0Rjhn-gfhk}zX;VpmwWG>w0L91Adty@r^rI~;dr#ZZ3cIm=%o)* z2jkekmjOUFl#%xEmPsz^Bfjj)xs79SIMwum!$rj0fSz%k$Q#0GE5$anvf=Td^&e^7 zrWpMlr)qG;C-uNI3QNoYG6>G_nl0FAa=>qyL-r%5KZZj^Kl8iujfrX0KwRqfJ^NaG z5q5kr^tVZTzCnNXW`j6i*3$@c%U%06wL+|~ZhCXacc+*F zpe&+GbtF+iPjq&4dt`jd9oBqm<*52dn-Jka&TK$R?Wd!Q_O^-K6QtdMbo+HKgaLIH z)p9w`#$RY;NzXXc7f2~4sis~&r^%UkN*a~nd8QP`)L2f<90-#WcIdg-mU^g8oF~TX zT_q|CLbmqg@HZEV_C0=0&g>GWo!-)ip3^+Yb9tlcKk6F?!ld$FeLYm?5<w=T)ayR~$*Rz1Ciba14v0zni$-L#d_Hhw#IsKSR9KfKQ46?c^7>fR zi7(=uEybvMc)!x%A7i%5586o%-inG`ZD!=-c`gajIJXYcy1EsmH~cdygDti51kG>r zhHpsa$JMc<1|Z{jdRUNWvU{dLt?jAe^z`E}X$+$3uRfX&J^t-xZ-bH5w^yJl_#zjs z_32>xp;n#!q~X=vGOOU~$SO<|fp3mr409WIPN9b)VZtw)HXyU9fjT0Ky(7}TP^uU+ z0i{HiELMkNCvwM7$DPn5je9v_Xm9{E?QqYtqbRzuS2>t$h!});I1|SK@@T0Y#%vmz*$X%48 z4k+H?9=C*2XRt7J?<23`tT}S^Z{7f|4ug$@5%ks9@(0O}{oD>~eNyi4jrS8H zW4N-yqV)og4_KqhRW4YS(?U)Gj5_ttltS9}Ljwc%XnXPCTgtid4!#}GL^BCUg%D#w zOjogLE$!g$2Oz-f4$h$lG;e#;gRd6u5seT`nYin!tl1Bl&8N$XbOX?2YZQkqA&_F| zWVugAdqJlLDom4fRXSNWNaWXZ+*TO!fj12srD%wHedM{F#Exp|p9#(Zn!$}-h~}l5 z{`L?Ez0O?cS^u7ldryA6UTq6L9(fduPQ-^3SI+*0WRhCR!`-jrmLQ22%E3uoof`wu zMwQ1nJ)6@(pCEnU^&@JyhU5Tip*YTrLulc3%H1R;g^z^d&@g5K&-wqBs*GyiUON$G>P)96S3V zvO{i7mM{rKGbB<{lN#s1j0!E>2FtN&G@_#&fkcUg${Ai@_G^GdNcZ+`iSuaZ1;&t4 z{w|;9yTDuxd~>Xq{~*JGF3-@T;|`ZUq4-bb0SXS0s^LqO4+bzsQLFWQp7WN-kj~l~ zvOOxbzOVn(dx(ft+)$ZF!vXQb3Ze}`r0h|>T!~C$*)o~!uKhnPFdZrPfYjxWFC1Hy z4~^`j4z}#$K7QNcTz(VGOxUHwZxH?i@Ru9F4LH#UTTI-LpBi|>1N!nwUp78a5}ou? zVLG4eG`w0NIJUg zuosQcLG{8iyneitoeA-7{N5V&g~v)H?v`(*UJjqL1gAh%x%g6Gyp$z7=PtS95w>h3 z{W=6TC$xNU_Y+cg?;>+RDn0@U3!88N<)b*z1N$VTboH{6UH*fzyww!(JO1Mc3%J-ZAxRlpwf|9(UQ2AhaH+Vp;+DJ<+8XDxAC4$3kMD zAbxe_?S8c0I2w|AW9Y2hfwZR>K1EDOSzeqiM2bu>O;D=w2PLn#4;-mH{%=st*^g3E zuejF_uD}@xghYJPI9x0}$9$h?4AuPey zZblP=F6Y}h`E*(h@Okv-o^>eMOZQ{)c25z~U|d({Q6|m)I>BV&u^hq~tMt4` zL*iNk+$b8Pcqo2QVec>pv(43dv#0;<6lb%8#!E8@f3oR?sFo(n6VF_`r-0zHQ#SnX z9r{e0Wsp2Hw5}1%EqC63<+BVZOAw%tQmJ7a33(misJ+nr42? zTY;PBl`P5*-fg65DDH4$9^RCrwEU*br$Bf-Ct}&QF`wi6(sO@XxU6ymCt0}kYz#{q zA_WFK%QkxcN;o#S@4kc&Yu7$v&TvE~M4_-3L{QVX&&>4|rWeoxYw^sxuM$O(#zsx&@ z=e7wYkB%RWjJ7gXvj?uDko|qlL8^DfJ1@s?;#eV~oi|4Xy)W$OJD@AP>lft`=<-w2 z%cx=WMWYvh3GF?Ac-MfA=*Q90|-PDE}7gJ=q8*dPG`EZt^P606cyC#ts07LokO{`OS_+;wTPil6izF>{lR3K;awYEax%o{w5rTT$-${bRQWtwY<|f zI>`yUD8rLZ%ds}xnxudA#+}|{2L+{{kcsE_(RPg&jR4Od9+;F&+%^G`p+G$Fzo#pj z#d3-Gkl1G}YK(vVNCw~)%G}g(fm5<$ZE5G&-e5e232 zC*U0IqHhehW#B8AT13?h+4pp^@t%N~n%`>TNsFhe^W(m$s`TlyX7-h;Ys5$b{1#Ug zkDB5A5CNl0&}_r~2t_d+ItgXpTka#6JAY`NM@QI)ZsG$NEcY;_C5Q~PQ+hNyV_8Px z%_1YooB0RInuK4!m{a)7F3zsUVJ=k8z;ZqwM4sFM-O6m#zNgc$8$?_zIEf=y-KkL5k7cOSw7#=|IJp4XtIIxIfyDMf zM^;bhiHVnc&RzX6xu@=||A^!Sf&Sk1d(NEag;;m7RZXL*-hl|fk^)%64A{LwW>2fm z%rt)#?}NI&Io=bB>?Db?5+*aEnnKi)V@ces2e=Oujz&KnbuBz`wzZiyTWlixxx?-g zS6y%bIn1~=*!gCP-N2Mavd71r%~hT_ablI}}|o+5h=bHS9l01DXyj zJi+8=y}qb$Tu43!>{G`kp}KYtbFO?=ll7V#!p%s|;1Sj+^6OW?2W3m;s>T5UW1yyG zM2vDd`K-(Py%j^(0CO^L<$U{Ij8m1v!^x!0^O$)TR51_uwjLA!DA~Vvt(JA21}65+ zY)tl3tZL7$*G-?h&%vp|sm+kgp=mvUwP@I7|HG(@+1E3LpPloFjX(wibl^pd_2l@nZ4Ac%NlyUx8w7{7{T zlQh1C9tKVKg%#KMM=eXGnWp%-%W{3Ik(RWhCMKnk zB|`th)=x&Rle$9t$QQn|`9&g*i{1wDe~i9oL;!G$Co*{MxO` zYa||52UwwoSd*Ype7aW31VGHoLH=ip{W(P#KWmanU^7w8DW8Aej{Q8>(yom{Br`5| zU2j*@Cwlu07~oI<5nDCGEiF@xliUHhb19AvalCCjQ>lWHJ>c2CtViQXtbu*Vzx!;{ zmt*Z#YhQH&6v(vZ4b9%bIqrqNkI{;xvqkHSd^+8b4cK795jn_)sojc-&kI@@OEB^4 zWHYVQM-Qq!u)tK}$-)v$j<_Qk-cn3D#`{Y*o+Fj_D(_S(J3Cm;ePWU6Yg)OQjG;Sa zR;LDSZx2sH5y_O2>4?ivD|BKo=_7)Ty4a1>=0jwMXPK{dO62es&5pix>kz|cV5`*= z3^1*+exyisHd``3gLE{)cbDMk= zg>iH%KN;J+hhAMWR41Fc7v<~?x-tXzRYK;_Pq65!hY4Xe7<*pM49Apg+Ww<2%8F8G zoCOE>^gYDK^5Q(;*gl`KcibOFySbU%JBV2c?O|!#cI*zfzqf4oo}eePAaA_3FNOX0 z*1{%N4UmxXZ4?dCqEqr~$8Fe?%+4|9YDA@*!ZLI?Fc8{hye7_=GH;%wX(sjhy6xlV z|C6pB#dEx`@b(m&bUYdOguxE@R#3y%t4=e`#AZg%kG-qK7G~%d+V%}yxt>GeNf`I6 zt~`$+wI#Qsq9la30$gi;n@OPgM{CmQqF8o%y2Cl)k@(s4)+CYueCNHmp$^d-dHBwZ zo-yzRqk()~>M!&w{p}AM6uBhVf_@O60X1W|mg!l>U09g4l}TrktCDQI`?&yKACH&s z**LJ$G*q70YM;l=0g?PVKMgIq$P@j*+&|rw}6H7NbPWJ5l?d zb{FsAr(eotzu`+uEE?#TvR5G*P^;A)efq`uJfJK_#kzHdVXhCETxV;aPT(@~@s}iZ zs#TJFuHqLkk-YBs&RjG3iSE3|l+StD=m;vA&L`_s8TGtlJgWW4-n|*~t};1*@4+U^ zku6*$E5K%HcHOR2obyS!s4zj{S=p+>DBbBejd{U0rYygChm&&2BFOmWOVksM)|cM; zmSWxn^ve_l{n}e(3nVFN2&$uxTIx^Y49|@7Qz? zH1E2h)J-Qc{~e8-DTKuIhEApy*V%m=&~(rP6AVU-IY$*bB(B%8UL+rf4!qX^V%V$} zF*2%o4>@8z?7KPaj)mS!GFpRhE=28Ir$pBa*NusFvBz4~*x%%)(j+%GIP{k?+T?1E zhWp=K*0`0k`k+b3&eusqjor#)`&$jFx@^{(bi5gFS7x>Zc3Xnz#pukUj3LR{0v`U$ zfQb~-*!g6O9h%ULxeRRHY>sTXz>0=*SA?4`wiRYI-qlZ(8w6A3)Zyk@QFqM#9OGHW zk2LT8dZv$ur^n@M%ng3jHKgu!Z5yo8UnxK_S@MUzwa)&Mc}o-|JEuuR%FEX zT063R;J@-)3m|NsD<{wh^~V`uv$X$Xt#+N-y=nBzNwt&D$}7o0z~Z3Pr%d;eBe$TQNT&Xsp-6}0;|JC{cS!|YwMw|5L zu@|EkF%>XM~X{=78Hpu1BnOOT6R>OU&Ay2mR1?m(uRhqt66 zCO&lki5?dRMnx^GE?E&)NVq7#=zzZB=xKacJ(S!gvT5HV!par;ZzcE_#~k`%Zbc0mIxGD0Z{qV%35u{+iC%BeJ=|ZEuNwu>SR_UrBYc4Q-Hc zaP$yuhjM_(99Ovf!qXA?LO4_^G-iba5wH6

    u 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

    QKJ>6d+WmkAQ{P;@jd?dw*dM$|r* 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

    j$22*{9rAW^a(b(A-Q6`^hJPP3`cIes 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

    G*82@M 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 z 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

    myWXzK*%NNJ@AA>{m-I1NQCjDWlP&Vj4C|b@ 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 C|pI}>WkcW3NsHB7cJ??F!NZO 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

    WfRjg;gE=Oh$2WJwx=JX{$GWP8rUtj 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

    Ml- zASEH(x@TVCZzZEV_4X=26yBE2Kh#|K=e!F0QfSApjRHy#)ZS1FYjR@!--Y(a9N0vN z_Shm_%DiS(XqFRmY1)0xlk!!s(htx|viV%L#%%uh^mJmo>Soni^jC&JfrhvYDL$VC z!vPV19boDGz-q%DB=vY{a(n+DLoygXU|o}fXuQ>bx-C%Qu5|NFya&-Wdt&n_+2@Su z=>j}r!oXR^Xik06?S)$9+}rqcWUl7c%-4afj%Whe0Lp=1oKF@{qp40bUa6ff0V?@B z%8pu#BxR>^+mj4(N{XfQ+bt}P&mAM&mJ3o+#GF@0GXkI|**dbl z`f%?$mf-j2Kfe7i?5hEc8wOCGzB1r*T7obBD9?X$SD?Q;&KS4Mpe01L(w$u3t*iWW z_Jc203e_^-w&NKinF0Ok6pmIFuZ(kSK%u?|EQgrU2eP3yc_|uZtXrt%2h2rETb&H*mjbm9dV{-k5s&z2N)rBZ-&? z-{qVbUW&}tpT_M^GkBIfV`5~)Xeav`m~WmR2n~l{0lceJIFNd3mRT~{)NBUQJSk%O z-@E(0A~vDN3e-SUd3HaBMT1`S{G?b2xY}jB%jw3jVdFrd0SdU4_0D7(wuJ%BZgFu4 z-c7mRL23WWuyMwLL5+A`^aCh+3_Xu^mbksKLVGx|LgVIq6{pN{gx=Pa^M77PGLx1M zv4(~`xxfx8H+FrrRL)zpR6^v=`KyFs2l-lW;0z@IveKiWgLlcvK7$FFB=@8ba&9{h zHcZ0)=c(&4$38!B=4aQ?&>%bjnO+7q&2mY3bLwZ~6!K-A&+Hm4sCr*mjNpx41C9oLY7^Vm@4TI?pPgba zL!$+nclIg-ThiaARO=HmV@*~dZC59DK7dE$j9$Cx#^)>$Z1N@3gO>KA zz&%j8Ye-gTyYeR5hBz0f&^MpUyFYB3+N^lB!h5EoHd!#mbj2 z$;g#MUdmRyq?J+@TMBxgaw+8bM|>zm_7}rW*!wX?I}^=uaolkP#%~+8^IGWR z1QvuBPD~C4&(|IHf2!lhLd2w6R*?1k%p*Kf`mu+w`D3wI1PiSsGC|{BB^R!odY!59 z;MW%WleWvGyLSDS1u7qh3;8Y(!}fqh_wG zQ5xbHR_LmqJ?M9qP!hj2be8;S%fO$*>5y;2^BE`^9)NwQTJN$ltOAIG^E>gc3a%k^ zw6pF-1aq~1uY8m*`=^I-oy7qUGuM--)srNg9dU=nirN4Co0iB6QAw;x#O`SI>!2@_ z^XrsRs)Cp}jr~?<9V}Vg^lE!o2UBKX# z0~T)SO35NiE;t_GqAabcfAzK4XtSNhSR-^X@aw(((7DUc{`6iLH@@JzKKcS9ss%sJ zGguMAZVP1lap9@C zvyq1-yV^!$@?gx3gyI>9NgiIuf}@dv{wN*%=Dtsmi*Fy(Q8e*(ZGnFe@2I(l-fF5; zpSLh%LuzX$08-zRv*U^L4iNm&VYm5hQ-CM&*wo&RHrp7H=0kgxKYnyE-yofakK)Kz zqztnF`|5B6K6OP8I8}eL92Omo5A~|;X$#TbxZcC7xix^Fmjf+)OH{anm+sFj%*X8V zsV$Tcs-uEZ&hg1gclKXn(Ycrru8@~V8^&2KE;&aYoj2Xoi{Ikdhs3~{MnF4G5CqJ+ zNRW7BC6kz41CEgMd&&%f(Si7FpAeLbJ-OSr{(J%$Bi3-i#sQ`ViXcVG>T_NhrUQAB zYMrOsuE%`M#s2-w>xkWF>u7!6f;A*vs)6}r-dFp*RyXkoC!Vz`Oi2H6tuCW{cbmP7 zMk)UH+$*d5ePCs|;P3V6KKHNU+*3S3o471;EVoct8G*8VsR9V7n2^1m0g)jiVTbMJsB|pjL`Y9Y|6BXpN}!tslbi7Ayv` z*=PUa?<=e|CV4qc-t!Q--t_*)+f5m|D$Vd%6zUYBPPfuuoZYqmGNsddQ8+C3G2`Q- zd?(j>$)JZBu0e$TwZAMd^luyr55l84+CXM$ZDGtJIj z4bKyVYrq`K=l*0tOhKQBGW!_bC3YM*eoxbu=<*g3m-oa~w`w?E(9BPolRDS(_SC%( znoMJKG7goT*Hc~w;bPq$L3WZIPnG7- z5#;>!ZlQZbR=AfvPmK+BEDfWhMVu{vJs;rhGp8f7s7}qiFPnyGf3&`BHxf zy^C^SYeiSu8-f~!%XP2K{#T~3Y)(_kXwk1)jdmpMh??nCjd*n{dRv7AWzGmUNvyN$ zc_AkP7fcldpPIxZSEyRLyQRMqAw@oKt?x7L3_<9qa8`$ItAwJ2wOMftjLlIUh4sXv zcRy4=)ptAo=8^$|!-&2%nM~&;Zj-JEVk%2!BA}*+f;N?xW}Vf~JO3r!!Cs{4H!g-> z(ZH5PT?qouzB(T0@g1^FYgJZkmK>dSqQ1>`4^rtAjr5|Sln{FT!z9FZNnTqEX8T<> zy6HH!l*e|+EZ!Vi6Bg~K;Z=-&+3C$o@pFi~U_%7j3<;r=X?8mrh$XJp+yyp5reo#d#lXYc5}B?G@}Y^Z}msapiScblRquB z7+C5-pYvnALtwx`F84|#YVKtH;q3G$?xlTzxjqFM)EK=4WWZVCx>HV4B5FuE6osl( zj}4C+>rZ_za;0qudk>kUYG#9L9-7nN>AeX2|stVR{F0Wd6I+_dsII@ zxgH0Y?9;4+Gfyikk1==8c{ESgtRphA;~+Rr>_;CY6SS@2NPR^Lic#DLYUIW=23f}h zj5{{uQT2qy9LE@s!l7A|rvgqYxhCNtejW==l-rZjun;Jf0U#GrIWMkX*L@P-*jo8+ zO)fd;P}5AIVmrnP+cx~+ISzcf==IJXeOr8!_vBY~`x6DcOO^I>Z-F!D$QYA%Zb}M{M@$55%u|^?>AxsD~y(@c;rEtiOz~@LL8(^JV-z{ zXFDz2Lu89*^ZE*YCcFmCHPNCwf%OF-{oSpRg)bp-w}iED4bUA;yN+h4W!mpmlrB0T zRmp{FwHQ!mz_$9cU;0nagFOStRqJbW`|VG+9f1p0n&w*t zV3~e;HlOp;o_6*r6J`Bqa%e(?K*9P0?410+qZ`F5977 z2shLQzJ8Q0eiZoBy7;Y*4AItj!Op(;bz4RqS;Q?ojy&r2$?SXmtc1IE_;nl}L_W*B z0r6VrjB4j~29{Aw&mMrVagbi|GI z5;MYif>g|if+uByG>&cssH4&S#knijOsQW*Xgs<1y))Jh6^%llG&Oaxz%46_9S;Hx z3-MrlCG3(if%|m4u&z({)&s^N@H~wcv;mA+G(Z&n z682bB_#@%eyF3$FHh4eX+dOP~Y{yz#UL4*h_sd8&0`qP3VHm?L-HUnW5Ftw zm99xJCqG*uqK?X=y~b_ZvaG^&GY!Pl)2V~NO(tqhUr;x8fO3%~dHv*Ydu!M*T)3pS z2k+y5U-pZ=*vje%lnt}MhErJynWlTY5+OGGB}WI8YZ_QKqC?lT3Sq6Yanq^f?dXfHG^#04*Q5g)4o^U8t%X| znyAHW&6|0mG+7u7#7u+LAvlBiOV@tdWzGOg4T_&{7n8kT6n6t|3WLwt30wU|{Go!N zVhtTOzR8PZ6?hlB93(uHvz?CjtTuOdYlFt!pnr&H%3_~Cic>UU+;^9lTmq0%7>bzu zGd{%WPoJ|O?D1YQ-S%V}@aAwVAhdwMQd^QM1v^KA(9QQtNWPOR<0mV(WGt9zAdrjE zs91j|RyJh!RDa_$^)pjMcH>6vyHG;r0IPWl6p}95`@z`bq>EEGOuVELwAq&D^WS=X zw93{5Dp+O)xoG*lq7>MjWT_XXxla<3LuCLOIR{jQ@<(3UI$7Gq7|wUHc(Sh7eV=ttc3@g) zHMbX^cg7_oWuYz*4yfVRnTsH$x@%#yfgI-ZU-4gsjIie4Bz%@i8ciIuQC*ir-2Fhh zw~QcvFfp8L?B1S)Q%vPts#|nS-4k$-9()^W^`gVks@n3ny}QH_|6~MA-5cM?h9rPJq^1nz>-|(d5E2OxvMNHN)z_mjPOCe{^ zQ|aY`gnt+~cQ)vJL{y+41o~tqYN@J3L$Kk1nXfR2XuKAs0Xr4#)LCH6Vs;ZltsVec z{PujoTO*!x#Eq?-&hcuU@1GLQANCwwHLYd1_v5Nc?;AssNuAK@2iw^SkJcJbw37}o z8&I-}d$xNk8tsXX%NekPH;oqiGiLu-oQ@S^?*U+SBd4q!QT5_v9AHTIz8p;j(WE;! zXBtoDabi>niB?Y`^Cjbb&u|6XyEB?Lt9Da}3zZdka{FcC2Yu!t1i6=r4-T?rS>bSf zHi|Hs5{ozAI@ld<1}fm-R!i$+y23w$g1asKvtss z8i({H&r>T*Us^sD0`dH6;o6~xkJ_CCfNjqABr-1#=DxdfjZy}H?Vo#l*Yoyd*B?>| zyTegmk=a;x*cbijJ7>W)K7S|#WiDfj){UB9R> zdEFWg4|X~|auV=5DoJ?kq6j7hF$g%!zZY`bk^ws1Zw;b1B7q^29FXk{oGy}6Q?s2O z?N%=zH+NNpiyX-Sz%LzWHMjtEqR}&JrvN0M4>M$=ifRVzW?I|9BPCK(`|r#A;p%^( z-7q6Q2(H@)H`#UJEc3J$dqc&>`o05iTlk7GAx$t3(ExS)4-ghQ4%mSaxyj;fIDao9 zI79SC000q{6;RNJ+C-usyJ<~K8Ok9EPNQQ=C=L9PzA)w9uT7_@E78b-XGkoX;#DLq zHL}-+oS9>$rmRvRwJBgwwZ>Vheaffce9cOP@W^NiYl15}faC21+gx zEO%dX$OakD_ulm|u+eTF>EA9=77pZ)3$m!{Ct3hV88+!{n;Rl1ZUQrujPI%)j%PBY zys#!W&()*5k|h4J!>-3%kg{R?`gbmXL`=}~_UyNRFOx6e zs!D)8N1=(f`dOnPoGtJLI*^Z%_cBd0UoaI_lkI&6a9mX=P84!LG1kJ^8aMb^DE zw$O($k21jBcUN;^EZUukm^{4Qxe<_!U!@jO?>qWBvILroJL?mAe*XUBb=SHiff@9| zn8;7h$zYOuvp^$7PD4Wzv`w-D{84qV#*QQPKJ}fa%LCaD!4SzP&_aHowK@RAzC1LY z-d=$5h*4!>AhIGOIf(s1HtnfaoS}@1I&PR)W5Ef>Dqosa?hBwcBKCrWdeC4-LQ5(|z-Mb8mYq&b@!s-Yj_MAyU>pfNOaW`|$g zx2Dv)NqJLn7#-2SU0};@_Ur%@4(3|1+O(fYurs^G$wPG&+)Lhj=10MEai4L2hRrE$ z&v%cX4f$WVTpW3FdiqXy0q`XuaGLQ>4B)VyOq`!4&vwTT4V!?AYim%;rhRR^`dJN+ zUj}x154Ibjo^%WphU!-yp>w!=oY%AuihD)gfzd_+cdNWl-LbY~EaeBl3OpSE=WCWW z4p*VW%9{)3sZw;B55e&1-YMlS<~yLVUR6hY-REfW;fwF+$mT-ycZ_O_ds#xZ$K>&E z0L=f}iXIok@ic%1VUZ`Wek4x*3}y+;h2~MEj~s=y2lB-lqFypWTX}PAP4lAa827~F z#JgrXmhPm$m;+SNDg6V;*v=@%R~Rc=&6Cv84vk=x*RBWpbHCM<%~5Pzrya~Ux{0td zDUD{)NQ3(AV0JXGwI4})BbX?n&qv^ggK44Eql+1ibSX_W*&w;nOmYV)A`@tEX$`36 z<%Pb)^(Aa#fup+PxZ4Jp*d}~dONVeKq>iKgW0#R=Wx7iDT}(GMT2cZPTa6_zn1@Aq z@lZgUu`WoRRvX%2%!kW9DRCPWzpYsJjD6Y0I>|Yk4nSb=TMMGubfADWT_Av)j5o^f z?%`2A8nXV!CdL@)hHJ!M2CH-E`!#om-sYCZ4o1R{gV0xM;@3bZ<6?*tv=e_kHjlkq z;Vg+Qx-Ov$Q~eR-(Yolt{sH(AWo$3cwoCwFIVg}{ID`v+Zt}n)GFI1}Vo}>3QrF)3 z4~0?s#-5(m-r!VkEuprqNhp`%j1w{bFnW(?5IEn!hYe^(D?Hfoi;-X^&c%xti8HaN z&rjExYn{0phvlGKR$3&1xCvt~NtHD7+s;|Tb7xqK@=1%t*WZx?nmx4HHyuDXp zHn~2odW=6`qV3;)sM*L+gvdh6yM={7i_LPWWq{vLbW6;1t5#E4i4e zE`16=&aML(iX57|1H&EegVd<8S{C@NT3&onK!i02{!-fq0Z7PqVZ`pQejMf7b~+9AxME@04~9nd5M^31yV4y?=DR^+`1+B=uXZZU zrh<^(7wa@E%f7MVIz>fgA3o!!&b_FjkP#zrP()a`V^<}WDxgj@@mK?y1S)WgMMFa4 zFYMgOl!n@u9X^0uOj|`LVqYaR>fRIL7>|#q)EGC87%crUnp_2I+3pGOmR4P}>=+ScL&oCe&sRJho2&M z8*AVZ|1HOF7)Mb~>8f9x<~%CmTJHIZ)@|K7PYpsc#^;M6$4#CEEE<;e6T|x; zg+n9#rxJwStY%fZE&toxV35(_B5)|%uO`q-5PVS1vvqr|N*`N(6`K)v1=P~X1&LMYsu#Ni`{D6|sQ&|4EO;tUw%(ZydN zmo&S7!fpXS_+$ZimA+`evul)(Z1Lw-w9Xjr-wTwrINT^8}X-q$}uhwm{RHZyE&;O-Tgv0XpZB#(KpUj7!`cPz~; zI;Q~}nbNk#hv=@y#2%BvaMMLXDBK8q6zNzS)CfXd>M{%-Y^+ykT%Ssurb|TdthicP zA>-z}>l9CbG5Uf-nIn00<=akA_9O4X+A7Jt)$zsj96irkmmxLUDMRe1d9R~Sa z--|{IN<23zRn|dm5F<1;h_7CSb2r&e;K$}rh*pGHaZy9=*TYR1AH>H zk3b&*N@3`irlJoH#=D7PjDdt~4s+3Nyf=I720kdSTM!qA;0B=MG^=Xq!s0ZUv<3Or zpLcP>oW6mBNM+rrO*L;>HdO0fKLMh~fOYQ(EaMimHD?f5=G^zca;?aX8F*>hZ%#`g z#2V@{>`x1{XTG3EeI3-iD53 z(R$h%PIl&dLiaAQWuth#&{w(HD^eIz5sW)PH;)f3T^oXNm{{iq_u?lOTyrsXbM*Gka`yH847crp9SXO-9g01^pRU825Tq?jnk0B&6eNbjM%IFs-%(Iuy2 zP^L=L1$;ohNLQ#9Go?usX*=^$BZu=-)7^mONIr!RajRLEj`v9*3>N1UQvy!iLEJ6o z>&gBG@abrO=AJwf_BVv*D>a_=W?Am_Kyp*$vaTDiwJ#ZrA~G0!hv*cjG3Bvn_k0I5 zi_s48kVjM8$si%v0afaJ<%hp^ZBBL0iAo5IREJJl>Piwr=a1ZwKQ{2L~nDo0ssfe}N~?hkVi>gnTBpL6f{?G3Ny z<#yI=+Ws@wt`kA8BgZ1&VJ{DU>wiVch14&e*3)_xs7P zO)1T10ry1?f++Q6HcPHOr-xmm6vbKv`MO7U$BFF*&@{7semYB5$52{_VB@56r~3LI zX8AGN%py1})y@p#AB$0Ck!CTby4aCkpmI{^Mo@AY1$TRZ$wW2S>4z?-jL61sfajkM z*xyV)Z}cL|EH&b{`$##U(2n`i?SU;tyiO)0|Nb%DD#2-vtreGo9N2VgDZw@(Vi zHKNS-R&)T7KTg!gJ0vN~=lqP=p-dTJtmhP^%`E37Zkl^9*V+sq2U}opX~r*IH;zB- zFy#hWY)qv?PzFDQu;6BaKT{Cmm&27p2f}c_jpOiF38x$i;(t<(LZx(>FCHTH zrrs03>$><};JzGNSJP?vc;7el=OUY@!TZa*R?zs?huxE~*McROX09OhwKA@nANfZh zt-B8f$F(P6>3-s_vz8jAEyv&v`mS99QVb=q6vhrv6Jao1)5XQ3b4hnai%42pTC-#n&+ge~9`S@(v(&ofc%MaLvk`O!B`hL`AAu9Vt$EwH?A(nb(0MoN%i|<2&R>yW z@zT*zaM~DE*?kN6SjP?W0A@I5jLwMoFkw6~ZM)Q!)qfb;V@{(ds#oc?T=qnQMVn7h zP&4Evd(w&vMm7q%1w@vFCPE|ZB@|#*&O@rv!Bf!m@T)|aF$eGY&Cgj<$5!iEW>1=K zOg2I{>|FE%$>w!Og4FqGrl2t7F-n<$F5wh52?yxIZ7@_sq9M?b1lIV)e7wR=0*qv` z+@^qK6`S@_<^#UU8QQ&B7i2e40D_S*GeZ-`V>^w2n&T`;b9K8OOvN*CxTfCNWv(A~ z6ZQo(@C0gVjoL}wK;`}Ygw-K7c)b-xbQ8dPz2o68+y1!HEV!x+UtsZ-U?{=p801Xi z1Q?>d8G?xEQ%9Y;*DA+idboOXi`W5Z z!eDWK_k=l{qw}r->Pl2}c*hQ6fBc1mD8g#bsq}GbkCN!=eK0tQEALL-z5^mIa5sgy za7T*IayaGELp36+V{b709HEhUQ&YOkd_cC=x_+Z_dV6)OvKS0_8JM>UpjOM%wsU%# zxelhJ2SulnW6&!L>LWJxtD`)PHQC@c*I2U|_@G1+EJiRf1GF}kUh8_Enn-+>(A1nspSl zGF>9rDHPsOw?z=8a@i%67g`I*6xq;Phyfr1D9)?JKMyd%GDbx4a{x5YyGC+R10eg- z4AEYYjP>=>2o72!;CQt20*nL-|Ik?q zO1I1yG(aF|wdM0L_y`p=(%uwEE)`9BlM+`_%>;tYp~omF)HD}=yt3?+6aA$rX&x0F zghc`f7kUx|?qLU_U`H85|1ey;S;ss&4=gcM(`88F4X1)`1FFJ*rC>6O`FfCmrOXB< zMqEB;p7F;3rpQkK2wZKT?EL^4^e31T*}TT$2*Q;n|6>{f9i)kNo2#7c5uVgu+w;1p zytJk>^cSum-L*jVd9UVuMcyWs+RWk+4g7Cu276zI23oTxuhPlc+7=X2`LQSks#kDe zvihJsHP|^~kNRvEUYq81y#N*qT>vzgdStqKJT^kp<_K7rxa|8DbdE=WX+UN2RAbd< zSEo#rc=Z;^60N+P_0)0rWUqHO=y_tp)A6pW0nbF|csGdwa6DD_^YgP*biu|LfAZmS7JgNYvxO^y?96>T~^*{tP)kTFh!-(vr}zyTgh+DNcb23j?!EO=L10y};$h^}ON2%p)90?9kBRD^aqp z>()baoiPKRXfP0KVwIxR4Y*B1O1ihVw(Kp~Jxx`lj77H_lQMB`qxrV1%)%hiZ5V$s*$~9=FW)cN5}p8m#Kw$e@89C|+y*bE z3IhEZPT`M#25beFZR^{GA6kNzK0UrxBI~h+hO2iMbmq^kr(7`%j>f_D-Gl3Ud&~LX zw9?P(BA4c7{qEx^f!ih$9XqZHdMqETGJfFDUyuk!*?t-5UnR85ZF%VPi1<3FQ1@io z`w`mwc--aK&XLs>9h3$?_0(Mx$6TvhbOhzo1IC>7Oe|exRtB1Px8d&5HR-)knD=HberC=!tYdSU7TC0w5=ziU{T)2 z3Kv#)Y`bR7M~X5Y+5FVT2DsQePVCEIOgES3fvte+M#|_X;NRO1ZXY9mn(SqLU3CD# z&y7_&5Zmwp54t`R4p1C1RUvTHK&V9IJ~lKk_&hP8=Y_<7@Q%Al%J%9d%)=ztra7J) zq@-};anLpYUbt}!ka#<{T|tTwe}PbQocU9YP0Xw`Spn&!TI9rkwlToLv^~cGC-NUS z7n3H7hXk8xC?elS$I9<3Ti?jc60aXR4VEo(BK{J!#G)on0j*T7&A7~c@@8mdEjmp`E#b642C1kB$W8kk#OK1PZU zf|?6g|D78)J;0^K*Wwsj2A&>jQSu@pB5dmm;8Hawjv-bC$$2I$3a=0{nKDibJq0pQ z_z&r>td7WgL1av-vvnxb{o|jUqQu4J3AvH?p2&g@&b!2^QZQ@>xH;%yZ2|ml8|_(u zBo#A#y%7xT?8IriX9l`ID&n`#tOqbr@O)k2mhf_e7DDlYAZ4Pc=s(}!)#TV<$nCFL zZoO*Ti!gZ<&4Rj&uxNM@^%h#J%~~=W56IXb;!)cWlhgrP7`nAGxlD*El?0kX%AlfS z+TS>WDNVLU1lJZQuV!dbXj%n82uU~(_it(|gMUZH`*=mPA^ zlvVaXDxVcmDEW#MDk%hphpqsBlIfQC5dEi_Q-M`up4#y^SZC}138qA->*W=uSrc14P!goR*N z#@1{RVbNOK2~x!Il-9^tjoh_?ldqSt+e`T?ZnrZ#}QK5J6J^vCk#751jkDzl6P zX|2GR>hflO=fvE(okbp*qV%tTGEaPe&^l*c?s{l<^aW&Dxr56R%T(1ovuo&BR>BdplM-txLD_=X-&Bu6{sFl?dmstXe z2#a-z+{B4>MKO7)F^}n@MUa3w27F3yAD7dYmqV+-RZ7TSjiGKTa+5lWsvl z$2OL#tGAaKpT(Y_iO3^ogf;kC;BKf=B`tmYu6Xwo(cF4+9kX&ivkR-cB5`E{5hHdL(fEi zrAl)pz<+vR_S=owhBWw23{Q=EW5lfI8_bA)R?ss#@TKIbKiKT0d*U;URQSMAHGB5K z^6LNrmjy5K0MrFeHCXF$Wpr?$Vuf^KkE_42QZm#6@MDOvHgY*6y|y0Gzah><8~}(8 z(6VDX^@?1;x9vWE4Mwm1#GDC`QJ*dPiGt(vY=v30Vv**wLUqel%`;oD@ITRNO#>Xj z;Iy*(yDiBSVT#^7o`n-l08hKz{MoN<19lZ>a){8=Kva4~ zVRBK{YU&qz8Tq;9@G5brzS&CjLJUAc(g?U&_HMkp4nLcoZF-e%=eN9z&lX~@*l*{d zY6MZllz_Je6=^O6Rszu=2K4ddljpiVuo;)65lK7jccTv=i}I6=`xOA>r5B*jR=k1l z9})EerV}wQ;ZZ;R&DZicKV{Obq@*jNC49iP9oH=iYxPS|Lhc-{f@H*K=YDw%$Svs< z50!M>jPc+Kckk00~&1;}f+5w2pxUy}mzjPvhe|#%Ub6)g zAZ%)vAPF+S%jM3GEMW^4;hIe5K1b7wPaQY%E?#rkAw?I!ryGPA6Yn*>LEq)keKG>_ ztP?n_5=ENx29h{GgTUZv%_9J2#ej?Ge$4B_^5=knB$ToG7Z>0^6T*KDP~c&i080+W zm9B{D3-}LsjC5d0fS%TyK;(@Eg}!r)=50{|x0~V0{OOM($bCThXYQ`*t2es25XBXK zqr*)X5|t}Re{D&szXWDAlrxB(eXX2Q;F(>xb`Lm>2zW@_N-I<1y2l&wKRSTD4K*lg zC%>w3tl&Y0`hz5kuW!@Wz6Y&+`)xVI5sik+!!uMvpaC)6k!bi#-2iX+30j;@n`>9+ zqb_@{wRoyI@ksQGHmc1L?df-BNpMyg>4Ay^n43OVCkNSO2l^u{{t{4ex2LlYFbRXZn66$LpZL5Ti=l5o7c@r_O|4Am^`p!HEQVO#Guz)_< z@F&yqN9I{u=UHT{UcR|63^nwgW(Yo)o)9^&xbclMc*Dg zbpyzC%Ej7N1~46Ro_ZxzB&E)2hYmFFrM1RjhJjzA#Q%r4XFmq^`XF0^fpsfyU9x)e zkC+ZHHaeQDsAO~evF5wM~GsNwg7YuIaUnGL@ZNN zMq*`7hN!FS+qWJ7t{B~|wzD$2rT#qjluTSJppCeI@2NtoH@xUkisBTK&P&Ry^YC8g zd={6N9@8tYSft%Z_nBG8=@N-8o8%`d10lnwPf1y-{255Dgh7oqb2a2Y>YYCWe6JT~ zZU&NjV8EZtG09(r;J;pe-yjV#IpGG9U6G%oe>{*auTir?$j}%Oy{~pSPo8cK+C&M| z?<(F(7UHB@20JkB*1Z7JFM`UAgkvm_%KU7pq-1TLfk)XNSZ;Ax>s-LH)30p+MXj-U zx&JX?txcJom-uVU$OQkQ9`3d7x*KnC$7jrHOeT@ow9?%@(X`_W&KhQM)GEq(vIPz4 z1G)*UM)Gc8tE)CUq!Ss$R^;osAK?RQgu8g&0MdE zRxB?sMk+}J=_0(g;>1=ZLydlGT*F4CipGFd?}>4-lpAZs70F0xhZ)dPqbB zrywJ|#yK`IF(bG0ZVWNElc=PmWZBs@SQvGKK~akrALGBu<^Q8^!0?AX!7WKI9lkQ? zG-=LzU0LPHWxhWYzBdNcxjnJZQ~~EAfx;j_HOD5|0XZ_+Y6P6YKL^iipg-%<(1vUQ zPuSkXjpxlQ37^*-awWua!w2m?!35aRWP!Q#*-SLjZ^{@80xM2E?VHr!$t!TuTiO}+hmq8f(;FIu z8zj){)`u`-)ebbc#g|uimKDs0we~_F^tp)GYJJ@nRi5m|BgRhNg34Jqn0s^0ex!z(Fq#h(2Sa z*U114UBL+d-n^9txQz^I<;F_h*BBU444?5ryua6Dlq=$nZ}w6wQ#Y}D#bs?4NQ)IB z=D!VA(KY?htWo`$kIDY3%qZRwjCf`Xyw4V4q;mj=@qN2Gg8yH4`EP|VG8I9dy&Hri ztgqJZH66vLr4@@#Fc4B}obtTw4opW|ibrqU=M-e&E{FD^cuHJyFy>XPt4b;d1Dexz{B5Q2XjdEO{Qm6;}bD&9_&YsgJmz&2|+UG^pw z3>P>%1Hb2I;-vGt;fs!wS-|o%z<2rT+$r%gf-O$cLZ1?B9!?N`9t3NE@}MWZ}2I{22{;rTpip-eAbi zyA2Nwl{k29@Sb4J@1LGCUlB1fDR?!2$H=o3Hr76XNR%6>LjXzUT#@q<+I2}eUHiSkB3D} zd{Jxxbx-CcFVUuv26!=dTv?DpMAln8@iq65IC%mK`rxhFpO5vxuKkY;}$Ga z%i>IevO|C&C0ktYu`6;dG1&F{bCJvw*5%~`VM3YxsyMZ3?MQUlGy6~lDXrMRl4mTZ z@vqPYAc9m5WIrt*5Q{H)rj=!W19dh;Lx;4UYR3rkL*DQP_;D?4`GGmNdyqt1)6!ep zz@z2rcQFAg4juKTGL_6T)SI4i2}an;H}1THpp>?d|C%W`&x$DmPTVpF4ccYy#-Flu zrH~w}4HQe_2;7Amt*66TJiSO=C;#CXXo0})1@Hrbsc1I8rXu%H)qlAydzg)75FtLd zNk?ZXxF1l`t(ps^V}F___$(n?<8BF30VjOVxad$2IqN|QrEG6mme(yo^ z`x;&V4;yd*i#`FssddeZ+qd@SomRNQ34q@Z$@9O41Bw%Wrlhm6D*>@_ao0qmA+ z#y zZBq)>gdIJvp0^FXdM7?}N6dcL3nfm!!56NC%n^K5C!^>W=XxRVgEB6k40;r*WVqQT z>Szf7HQ3%!Y^b_28g+78<1uf6&S2086#=@3aaPbBmj@pL5S7K74tx`{E+!H*Nv~X zR(35x5jkDoVri->tPQ^->d+i7IB&CCuo3*gQH1O8>+F5)&H1ZF|#YpSTA7b;)cp7uAD6%4W} zy>q?5mse6jE*fr=MKG;quD3+`wXL8MtF}dyTW!Z@YC+JPo%y{9GGwTo%acFtm}EIc zl%q{D(j4j`i*{6s3U!EH^S8?ux$nSb;CPoimCH`!Mf zSg)$pb8IZI{tm0)c?AO&9s^)AASj4v6SR3TnkrvmB~YyOqxG}kS`~!Z`rCK1c9krW zfX>GcfOv4)t-V{FTz$G?^kY|c=%g$U zZkAi~wZpIaTB9M~mCa;18${9K&l0R1_BVMs8glt&5w1*A=(P(kGo{=RjifPE9-O5p*hFrDkZcad5Jsw}mQ zJUOVP!y_2J%54WP>B0mZWAlxQ0uBd9pLqVDTIy$YR4>~>8NgNa&G55DV=Mf5$l=&j z9_OQchTY5}i3RbyK!B2=k|&z05L{QBD{E!Vw`(#pH30~_`X9FkAh``-v)`#@JzFK!Ypj{5_$hD|pUUgeDeXYvE8Z@n_!vdCasJAcBc@?( z(2*NZ>K6Hx<;Ypx4KgT|mny#btRp*OS=b^Qa#yWSS9^5g<<^Pk#ffBsT>j2wRe@cQ zn54R?2}&TexH`G$18+FQJXx%xvd0+zQhcVt*!}KWFo)T9YHF%J(NhWRJz=gY=T}!b z#YjzE^_6$cNN(J)S+nmqvu2hM>>Pn9Jb+iEv}*Znj+#7mRW#}skJRL%8F+msTsZ2_ zdU!Jzg+&x0)dn5a(pfGSLAkPMxa#L>O1xG(x#Gu;{Mme*THgXcFvAJ2-LSL=opkkuIhm<~LxZ)B+|`#&$sjAvvWY0mp=;wO&0u2- zBt3GkuFVhPDq8?(Mh&R%_p`t@1(pL;3ouO>K`%}hFuWtdjzSbH0!Rsm{{^l+N&PG^ zL3xC`=r8|2YTcjJ;yLWdVb^Pe2jS%FDf??H{CO&^L-7XLbOp*Pa!PVVZ49{j3C6nQ zvVtW6r#>h_okSUmZB2S_BeT}6$@inC+9|xI_qKh>wijGAOyz<%=>hNcT?YJpC(cBwOZJ~btT(&XXDN#>P&u_TT3+A@i1QK6Gz7FVuG0zAPKGD(ZR!v{s((OcmZ2_i#B$HMhL0IU**{8T4&6w=7n+w_b$;V-IR||IW=!Ng- z`F_k};3~%##^SJ&%kInHk3lVmyp1KwG&aqHK5gb7UmNlYR|ZY^T@z`{v9|3F_kESt z(@pjO6)}OC?^(5~cgg|OXE(uDwKcCu$cb+mLgJq>dtlilmz~^gN?dFXeA_CW+4L+r zruEsRP$W!%ae!g?5=Svm(MiGB!53gidO}hLGAhbUzkdm8Vx=c17XSpLpJ1tgjtEfu zSU`KtZf3r>7yla!VpknDLx2G^2Bgony9C!7%=XbY8o%UGwAYJMsXC-H6voU@81=62%f~CwxfrC4iLhQ5~OJ+8*hW4 z9ToQrB#+Z(wXN4*eO2ntu9720BN_E=uJP+_ATv@6|P;r*7}Q z=q9#<)fejQdrJ4NU9u>31-7jRlS}gLM^U=|l z=PGDQ;-)fOfU+fk)^^;qHk8H;7<82$53d(cO!l(R*4J)+13>yz!ma_H)CRd#o%D-c z$Q|Y#xTH>(350sey17v3huJB0@XfzrL6c+?R&h1C&3Khq>AfUGg3K9S2cc!im2EkN zxfUKCzI`sVGn_@8VhoYL>WIZcu2$ z@6jR237BfbOlnc1k_%zZb>ei5Fq0Z!#JfO0M8=D;GO-S&vA7cU0 zvX7oz)qJWXW7Yi+LNlmatn(H?bqR&qn*hT;VX!-08_e*F3v@r-{sgQPY8^e)d49p{ zIn~Oa%zjwbeo0Bs=%wF4`~M#WFqFxZ{26{|@2#f@j8rV#Ul9XV^h^LSd3W*Cjt^fY zRyOxbS#kd%n7#YR=)DZ$&82cDQ#{)slqjdN<;BU26;Cy_zI}b%=aH-A_}R;NCGi#^ zny%~i(GUBz{%78IH`Q+37I9%%4!RkAY8p%#E-jvz{C#|&m+5PSP}~59l00DE2c6L? zL8$=2ghktXBm47Dz?^p4O0^vT+WhGX8p+)b5T?}&v|+H1Sns4wpqm300+gd%9eD#V zQer2p6VCqBL;vrQ5<`~E(ZArxg38N6M2+a|6VK6hN-Y=Vg16lKm5Wzd#K#1A;3~ue z4G>z1UQ@V0_#o3GAXbR*Ku8I)T0n<(AJ3100XA~c%b>BZqmHXiVV|wi^~;mv0UwDJ z-RbY<5dn?umb18*2-EQT(Cozv_RS~k5q&uNdTUXD)_5=ncm{Iiku@XX{Pws)$m9`E zUQz&-ZB^~kzdTsNCIJhM0?SMq<+< z(Te8cP<&=_m{-Bb&Y|{yb$@?HF&FQn0T?km%?e0|)>Y z{a-W$*J|?O<`C_zT%P*InX?7gs^3-d3IBQz>C-%Lgn9S?ZBD5SAm0(Mk-c8rdr<96 zZVMc92tf}TM!?c`*bNK;`$lDEy;RI63Z4N87-zT$0SC|!;HbfbrC_2qO!lwUKz^Nq zpuFK&r4E=tDPHSR7!8E`?Dst&wK(MfpX=ShOjB>wjp_UC{7@HXx*F2LDS z*jV;2myv^~Y+t3KR6@P7p&9*p%JN*}{EcfGw5-oMUNyhtBK&RQ@=`2Ab^1F%w5u>9Gd3lvsT6$`Q$!CAF~m*{p0DYXcgQm$ z2z{#`(;XifZfLr@bvK*X9<-=5ACCgGOz2B(Z7*MRCB3urX^qry*-~J7zg(-4i3I#ydJX{-~uLUe6JJX;=jG;Jk zA;f2Z1tc^s+y4I1Dv)?_TpzC|VhvACslu4HV^4|zr&AEcnC0R*E znME6}%kuV-884qx_GuPoM=0n`WT4QUA3S?0yUg)Eua_Y}9=W;XIZ|KF7}>g?bQ=S^ z!`1>nYOMAtBT^y9iy#w@y({X9sKU5@ z0&iUMmMh5iA+9`-A#tsRtQI(u(G9+G-254$vB>_L7m@4{N>&2d9}LuS7FA%Z{gDTV zWzBbE6V)8A$^_mo(jBy^=Kww(WGNywIuL>k*j~K30f%{2Qzu=zMf-F!3R((5s^+{Z z-&2{+o~sxv&10&PtF|}hnwL)*m}9`}Q#PT+v}W$jsr2PI^tR1^juI@8_m6^px961M z^>J_&=^-5kuBbqt)zmH^CnpDtIxcYbcwG+-VGM`?S9bF;Su3R#;OUqL6l903CfSXnezu`*;E*-dh2XGTS= zy#W46XV+6#he^%Mql4oDmGi+(gi;iM1S^c=suTn@Q_gs1ohBqVE9*ZUMgR99WhO&5 z0I!zo_tJLJ2TSmz7q~OzdnxNpYiy_^qYAzk2s$;z=Y_;d^@57;GpuymG7d%zw)GMY4dj&`PxQ&S z_a#rWDbfp8ut_!$8@$x$8-Jbk(^HW`Es)UEJ@`2#^%m&4pov{PLa6JM9)hOJmR1W* zT1vu8HqH~v-$Jv2M!SdP60nbQdvh1Ot_D&Vt-=Ke0#S>AKBU&MsQlDrEgFo;%%D(4 z0eWFw<+}f?UqI3w2OKH>ILPWcz}6^V@Rf;g^f(PNHOs;#VB11BS!GgrZl3uL67N6#26aJ%I`u zW&s|g09oca8B>VUfXNmBbE_*x^DQyALFYqP;C#V2B;?|kZUIiTXY-RDZO0p<*28TTV{~i!Wvi|U)Im^zE-wyUuI%>!GSO=^F#vhdd9)=Lbj+$m`4QvmDYtE8LlecAl@c6Zil?kg z$Ky6TyNo!N-WDRa*J>xA(GVFE7C!Q~$Ooby2^Dv8ocyDO1*0EdZ#pwMusiH>${MK(DweE0uND>0mOLe38l=_?-U53&m8IWt5W~pc{+=3=j8t z6&oLO&g-Od)cCntm~nv8cyc++B@G1)EgD>S>U!cfZulwW5r4@JJineVyI) z%e`*)#x}Jcjre}@O{?Y1&-rR^X6mk-pQ@Vc+ToMy%Qn}oceavumUs0RuTA*sUm>k8 zr4|l0>lC{#d#A7OItTwyfV}v--6XKCdU%%#uH@$WBkA3ibkUDF@zit3%a-5PHa0jtXU^% z%YH|D=q4a&VL-zlZ^gE|Wzig8d^)^VT-Z80dEyso=iw|ERd2O>*?OQ0f{L;*;A%E7 zoR-ZF_)`p4xH>02%%VY_-?1H}2K7H#4#+}qm?VUIZk3qfkbC_ZV!3vsL7wZh4s zWUR@Oy5|I2ykhAS;~5?QX76lm+NSc|q^PHqjWeL2RV%dHC!*TL%GY%A!ujIRDE7tx z=asEpdvwZ^wR=k$s-^l&%W}+rUKm5yGi7?qoa*Lvo=z0A_KG1 z9%Ta7k)ObYf7w{&dSnb1^dBT9U60mc0mn@umB*E#RNw_0(K;x1pMkswg|)GwMUzgs zAUAcH;t^{cBKni3AS$F}tAy*)w>!At`4cqH*GvT)z$PJ@L9I+R90la1er8cX=jML_ zw*|ziufmTqgo0vpO_VtwIr9-&cz}#w8TmqW_OywI?%x1t&Y zf;+*#;zAbD?q8E4%ApgQT#AqtFWqrnduN|y+~wWu_C1;YTSDOowr?b6nQr#`(EZ?y z*L~u9ZddTiZemvpatSglc1Xm2;VcTh)a9rrITPQWwf2CLQy_Bw;|P9IU9+O|9MXB0s>l)|7;` zF=ik0D!A^0Q{2iG$l_Dp`|Uqy{jLBrlaW=BAcd&uVg@l^U-Hw)`NAPcmiq&WD@~f` zX+r#u3l5;TR5}wU>VbFoDL(E=(T;Flhybc8mGd06Y)w*|iFD$2q%ZMz6Iulr0&;{i` zQM}QtQd7IV0rF6~St&H+G+a8xk_v3g`G(p#r&%kyXf(J?-WG8iX6VBE(3DO`x4w`a z5Qa0t=gW6{F0|hwh0{G#1FW06f?{K1X=hpLS!L#?Q^ifv-;3whq-~r{CaRmQ22RU27odgJ>!tIZkhHG1 zM8Z4l&U^!xCFXk)8dgl5+i#tR20A>X#yGF$x;SnYFm4tYY`i85*z86hP+(f^0)ed~-#$|Z+o98!1b5;R97bgoGld>5WSvWd72Hrmvk%hTkw%i4r z^A!VYkE*HdpuO)){r`^Rkp~gO$Z8iy>&_moZjDk|4L7@@wO$_YdwT_G;#drN<@{0E ziUdU@`h*&;*bqdgBHOy7gJ} z6;5U>iW4U0{RmD02%9kRMbI+`c-nm~_yUT24>)*J-oG7S9Gf2rD&`0=MtdKO$RdR{ zMbU;e$`CoN1cW6yQZ8US>3m{DddL5S+es3o7Sc34ueC$xxt1We=<5^gH2^me2{bD9 z)9^_G!S=={c`!9$EMv}i@u*WLA2Tpc-Sqo}2U?^kFgn&BW8}AiBMD_Q)9e5=pLC(3 z1puT@rgM1IHOBC~iZd=mz%|oW7K_YRk=kbn#qj+y8=O8agXjS^z6ROXm6!hT@}c*b zP${kmG3I!_+*o^9S4!0{31iFm2Rtmd>U{jNbN$lG!zw@I#Z2j&Xm z9?qgJCET$X5mgm@_F9g2TJZcM~Ni`J=Nzm2rvgo{3Sb5n&bK}Nh*tu*kSs~z7qnB5 za*oOvLqq)={Oj1FTclv31f`&#)AUF#w#>a^bbDLjS&vA`< z%Fb>9r(oL|#3b&i9~%as>HX>#&TR7qpeOQVgJw%b#yA1hpxSaf-T^C{L{yi}Ybj~v zlRVwZ5VXn~pHS{qUH{;)JPxZFWF`vo;|V_(Yh~Jp#Vct}{Q~8CFN$#QRQZ2`Fkd~C zF4P25uq0)zB=4|O1Imm{B4h>Qz+^jKetv&hE8KXZO)tViiptYn)eHOnDNuLG-k~fm zZ-VWW5oo119Z(aJ&LtPMR+>oJV5R;6S)D4%1Laws#v-dpVaSS%)UN}ldTj!G+JawK z-}VyI^>LyKI%u7X6{rqwG$poPhdK5gv-f-45HD1c&6pC>UEVah4k!@aIPExdYmZ)* zV5Pnw7f&-QLV zV#OWCa@%0lJ2gE0+pcPv=r*mQm+WabZXB-1zLIpK{qdjHcJ8BRX@NB0n2)KvgK2!l z@J!{uW-9X~lexZ|VY52xikY5Lk3U63U{%>hJIImE5S0GWvfQGI(Hs7dbS%%$_G@6h zx^(WHA{g0nT)|eb`&-@jw3981KD|4D;B^Day=GmTUF$(9edNbeke>dkt{iHEkT2rw z*gf0|^r)*qP+FCos4Uc1R9j98Uc^OgA644Cp7jKzdXOiW0eoO7r<5i@Tn(93~dJLsTi`&&ZytCblP+Q-}-T!anr4Jg~pNN z9sjHWF+{OoGm6k6aU;#5S*SuklD`JqhrbBrZe~3$4tHbE!NA)%?PDiPgIT7Ln%j|r zjlzbMyJwQ@v`V?@i}Kuu$85t2X}(@>HKr-u-I{$~vwl2T2(?wnVqOTTVA&`9NW}Ds zy4a|@Jr%;Kdl|(Tkwi>x-pYc&aa@xT^|!1*Wq3is?l!)9_4g<=GcTFsX{0X|$q-$! zCov+TvVM3HOKF)KyM7NT-BmUW@x@ZIPw#rI#K@$D__=rclDWTw!7x-WEtmm;8rrKV zCdi@ECOz%lH!EM|<(+d7H+UnwY2@_)F$hb`q+Hn04$q87nyCe`q}LsIsHM0Gyq5+l zUM)8gHsdfD3d2zUOobawN8d|EQ;|0m`NnQ&mWl^iKd) z;!ja*t^l(}IHK1EEvyhi<4XcSiU3}oQ2{nuZ zLRo5j1@2ltVwaS*%6Ob+8a>QPv*Ua-BpZ}hkd(HA}- z8KBJEj=rw#r$Yoa^aCy|xYKe#N z8lGfi>tj7QVF#0|@-%bmsRON#3w^k1D>#&P`vLrC2OS&Br~5_9I1A)JK#(4r3UR_|p5(IU$rr{|%lg^JK(OWcQsV z+;>?NgZeA30m{SOR61<5ajVQNOFKjTXQc(YNRFi#>>rMosA{M>`%ZL3&@SaTKA7P^ z9`73|kTN$OM|l8c^(OULI}}Km6c`yB!b8K(%gj%P96+3xW zw7gw;v=_42TOi9MO@Z^RzyN~=RHxYs2Ky*QBT`_puJe2Y?#=LB^Zkf<;2A1&+EEw5 z@2>LKidSm+O3%bJnC(S4WAHjYjn|a<*TyefZj=B-UjT*V5fK>o$1g=!hIySr3T?{; z0Ddr*6ff&r<{)D@I#A6b?nOYF6~agU6qeiDTB$)|v~*CfV)p`Uc5=ZhUFB z^P-gj!Vmb_%16UN3597@KUDiri`(T#e_S^vEC9n}*m7Q4${nn%OWelVp0X}EW-5^i z=YU-Y-E0u>n?$y30qnahCJG^2zx}n{aP5+N*o<>1j=78v`otTlzf_S<_$8_Vx1T7jP<}v(+}FO=zqC88)tIAXtJEz(G{ePKI$a?qj44k_b1-Yiarl zNNEL!c8Hof>E{ShVM!<7+*Jy!jSdDQ_H!L$yt2~Bkif}EYFsVPK;fT7JNA(05m`H0 zF$C{@q{us2KB!K;mrPwxbsx;bP#tNtm+QM7LDTUfwIg*7NLK_RbJ|aB3iu`c{*I|i zi{YM9>7z4bL{^}WOszXLy8>;#QVNcNOJW+QKWt=}RwrzSp6^D>@IHe%mns~A-8u@> zJR+7c+|%v5$fcZbR@Fb&ysF>My4r| z#c&?gRf2C;@BF;g$>w1Bs)GLaEcJBDUjd&&CCc8&7&qK@WAugj{oD1NVHa?Kn=`&8oT48&X`TcNy_o9UF--pXEIk>oZ ztjzn=!l6)V3d5b@7)hec*JJ@?hO`0?qvBP+vzCU5YIQJ-^+UOOKCuT%GE{_gYe_^6 z-7X5ekm%_jp`fTrZt;RB`<7fPoa8f5m@VkmqSp&)#iPjYHC+{fw6c~w;t$;>Hx^A; zWn{^3erzRYL@DQBmcdLw*T-#ZxXpo$oAvCnHNBw%;R+a-oRUsf#^K+6?1yKw++ApH zZUELZO-}1$B)kj8Cus!%3}I*BTXCQGK749O29IUjh4^J3EXAyoi!qDvAL}mogmyb2 znEPiq#qq-Mu#KtG%rYMz1e|RGyPy;`GD-|W6?H3SWGe{j$7wGxyI~O#Sxi<;W1vL( zM8NM8aysv73Z%3HeDR{f85jb^1TuBdtF|4s`OBP7{VhV973cog_IoXM;X;5G)fW&i zP}@CVw03C#S#xYSL`;7nEUXm1k&rT3Y@|xBil+`|17%hn>|G90{q|6k)wdlZPA@*F zmHZSs#VNSa#mEg&C3!>PX^gka7ZA9#nu+x(I~{AJz+AZ%74n7XQik`;e+EfUxjx@! zp((shVdlE{ris7E#(FikIXi%JisY-_M+Pe<8J>fHvT%ERAktJOWY4u(X7akbajrcY z8Wzh&svSO=e4j>cjnC?11;a^m-#7w%|l`sgoq= z(u}sJO2cUUFXRLV)llBI5hRQ-n?s!y zTUzjd-J$Te2r@Q;_~|5VQQJv2VTZ9z|8A1p6zCoOV(Py@sy`x!m&A2}xJi82j}pb& zdJIV%(r~$%zu75wJ^1ecY0)%TVRi#fFiKia7(dK;e%?+>?t6xYTIDf0benFjQrp+T zNjv;~iHeZ8SKLP7oWCA$Ag=3$@ubEJOD5ePQeHv_v?VCcpojo@$H!{=4 z)UvHl)4}K=5Qv*fTnd~k@h!NIEeg6;_f$J)6m~ZS$?FH>#ePbiCg#*?HF-?G;R?t- z?j*9|a`FT$SR+6;WzrJp_s=yEQ7t_ka|TYeV{`qx>A_zk3XIf6f$xFm^hc|I12LdHh_=Ms+b*!9d_j`iScnnB91lXf#)@{- zPkp)m{js(*Shtd!kXfAxR`F@qc9zAO8taxDNOO?)U!eU;YI52^(te|o5W{+i0Hn_MS$mMG|F%zzG|t1_^IvAz+sA)V++#|z&{Jn?so(E*@m~* z7vWw<#t~82X{(X(HU8$_+Ycm!oCyQ25_kUM0_bWV?U$2p3JRP*pJ{vzBC2~?nZSxk z`)m%#%?LRx<0ae;9m%=7hy?mabbhPPtWVslgQQa^ z`aDJg@g<|wq2eKG^;fyP6(?hb8Y(~uzw@iyw(0512AljDJ{(~ND}BHdSDcUs94cjI zfY3{ZyabZ7`6q}XM8TLf2E9*NGXy|NY+2*zCbjFVouHtfCD^R$Y9ZI(A1e{GqB%F- zde9~f+Qi14i85kK1W<;(y549T;w@=bp$5M-Ek*z@4?K+y?fXOnF7M~0$gh#mpFo0J zFZmgnaQfI0%NAw#z5;>@?<4nAI)PLxbAYdsnqmN2cofWuDXA&QfmV-c2WEp65OMzjVy+b=oQ!N5H<##vFRB^}B%0?N zY&$S~)J+*N6^9bYqSqd@O^vJy`4D!036sN9`99inLu~?t=br9!Cx{ckt3~ea>8~yS zj32>mjW^H zTTU>D0zKRxzs}#no^``{vQZJz$tp)V3M@E%*~7pT@qiEgN($puhp*TqOpfqDWsUC6 zdQ}Z652J{~D)J&`lv7$m-iF77Op~eSt@repYXigzv~{_Su@!lNSgp(RJ&YDr*Gp54 z>e>2b#*3fQXHhPlUR_K)rjP~PvRGsz-0tUYi@r$k`n0U~$?Qp9+6!yR-T;2FW*J=A z4ZmWZN^xpg%PU~f26N*DWE_tq(^qD&4~Xy0H~uI>Bs3^-W&pNBy{7&y2&E7;o!KfY zhk9lvAB@K@o~8^hvx<@#V7Bnxbhoiiw1V{8Ph}sq0L+IS38QdFk_%;l0frC_M@0he z-vvTXnv9T|sLkV%@o3jcAm|nQ=!+Yc75Vakf!Ai@125J;uc;{63zV$M=E2hubQE%W z8k)C8x*IE-egr2kp#8QX3?uZ}yEx{?TD)I7h{y5{pBirz+|TUwh>ZFXQy&Lqi-phF zJ`al_e>CBP?z_30ilubwAM;o#NnQM>_t44Fn7MXdqE^TOoE@rf7(>KK^)SR?ZcKjD zS?8IB(@K_9NR7Kq6g6qgBXcPRcNzAhdD}T1?;A&@0(N$NupyIn^2%d*%XI>?UPCnx z$bL)ak6t+hTP-aK-J8zpRwV`kh|w&)n-33_$8PEYMSryF_U0;o$ZCH2F>hA_+n-%2 z?ELl(6THV+@+G`t{sd`3V+r|z3C_PkM}8M9n1S_GQV_d5EGcGK*|^4lr%!>3 zMSF8DX;iG+T#h@aU+o}&-Lw6u!6D(qB+Zj%XQr~;ioN@1;!6jbt;%@FH+;9T(wBD2 z0aguqZ%)AuAusGD?9Fh2_>6C4M)1-#Umu2!2IyhB0e`TB7tdC0zTlaLsy}f4;i%%m z5Lr$IzT02Fx=Y}}HZXVl=;V8j4CzT?{UHJ&9s$1ezn%$lX|i8}c$Q(}pP6?2Hr%e! zk7ksN^_6eGLc?QeWHZUh-Jz|qfi!(6Z{&a&^I;0 zq0iLaU)SVa@)%?2k1Q zAm8`&F*g^mRvcHB$WmGWYIiSc+}|KY*kd4g51kS0W!}*l-KW0+q!BSddT%!(Os4(! zc=u#KN{{MEhbox6!J##2glL^(L}4uO^g~gTV2D~G7Xm$h0Mts!F3Q2_vvo&ILH;F0 z2+F3?z@RL4`>>7h?#x=upBqLa%v=f@<(Ja=wN#xFBd1Kg=$LqcGakppW|h^;^UPEh z93=LZo8#NY7Xa|DhEs)LXh6|Dfx4U!;Epiq2rN3Wju?$S1$d(6Zt5!K$-l9#+xV)O zqT#mnBu)>4&Uf(>Y(al9$!0z*SOGLx;G>2`6zY%yzB5D`J}N2-o=^oub2&>A-F2+c zz!{b~ZH|dC=`?LmDQCWYbOEe3v-y4DmMSC%WB+yj{P~LG_`>Leu*5BZpV&cQbU|2J z6IeWmi2tWt2$JOr;+4hGG^-1z5~lq0>&t91CO2-yf^hhqqa27$!zYea**});YY?B> zaCyn|=f!I91S5b}gk~?n-^V?NYR9mvX5-KnofO&VomkGa3jp5{*nc zJ&DBL+;0honSvS)gx~d^ySaaR{<3sCaSh&|{LF!X9F}f~h53o3 zZ*1nxP_-A#5C-hr6bb-bzzBK@`&p~%9&n;DBB0^LfL!#2SB4hgC6A=A1wd+SAuQ3S ztD*NZGc(`KaWrh5`-3MPL-l=IRN!9^P=<&PLaESRyzN^mNF98UPBYWFHMh&YZtEVh zrivGh%GU`GQ+28WMQW4KdG#u%<&$x z6gNvd=$SNo*?SCP24+PaMku=KC+%mIRsY_hBl!Y{W>}yeOi>ozC1I#Rm}^z1l2B++%P&NPI^6)597LRL*i8J*Ax!p^3&>eLLa&l(@tMr z5&*;6cRMpmPdr_E=_IOip5nj#qc}m3eF5P?42YeR>-ar+3{6_;ju%^rI4$|-+7?LF zgAfIiul{|?gR?$>?tTpfmZHPbs9|0E21b}xKcrBcY;pbcXD`4H?&>>ov`Qy0kXKH7 zs%AaN@R{ju<>p{`GVfBRzirUkLIaHEgEP#V^F4P)^54V`S1GX)ip@T7(JVv09An$7 zqIP!F;r2zHK8oAALgJoArQ2#P=i>_CG;|o>JIYVjj>m%u_yEyI^YxnnW-F3;Aw7vd zYO!yav@U>XMr!N~klsIeY2OVxAb38&^4?Pn+6Nm2m6P(n?(83fCskxBie&tAn7_hq zMF-et=My#l=K~pHu&T`v27>37gmbQcd@r*aH!QXgGW#MgysQ2N{>vR)f*R;wa<^#> za{Kcg?RsZq`o6Xu{Vcb50!IK(HTHi9`x0;}_pW`mjcp8-p$yxU%tMj6ZA|70nIoGb zvuKbq51AD*tIR`0WJv8)<|IQQgbE=fQ$+vuWb3@=`@ZY_UstEAbDfU;?B_SEweEG_ z_v%-jnz8sQO0E=P-+y}M*z5cbcl#>`6GRg3WUq&A+BAs$NDnSSKv(Dju&17*JEyU| zB#Y?LpSwQbM1f8_J$F5X(@rK$zSgdzQKq)Mq^aOs6KbD_7#cQ+-( zo$&rykh*_jN-qaAPH66*S=dkM9-`r8NrSH~|_DZyzpMxHT9< z7At^Qf`!Z0I1v9L#u25mw}PHs77OB4chaS%nN7US=De|}pz#^Vrh4R0o9FE=`5D)D zyXIa^Tlr0qE|mnI)rPlaDjnVG!lG$yCj^TBBwg+H%KALFO~QmPiAFrw$}pfjoi)ZU z`OxV`xE<0kJLlWLvpdPsW9hNSCryMeWUyH&NsM^Tpai}0>kJrFJa2(2o9Us=p*4sM z3MBBXdJQJPG*IQ;Nf`blMzqI)$Eh6m)X&ZGXx+E!4|vFEr!^)1$&RKNFhy}y*M53l znYtThd0sb7Mo(Vxth8mxJ>~E+oKpW zbD6|jtfBH|CU+}priDG|#-ekx9}2&&GxW8JxVTrKFrRG0JMmJe-o@Dp#Ca3AoKxw7 z=~REd46bE&fBmI0&NLDm#y(1R6%@MiisldIxn`YcFmIhs(Lnhu67uqfDyzt599?c- z-OY~o>i3E|m$haFr`u56x-;#sD!TM`wcT4d`av!Hboqgo>C*9Y_YLyoav#m7oY2&k zN%`s=5#DA_rEtob?#Gd3*)uZRIb4e@8l(*c6~&On+-K$hJLsdo7J`1k*o5wKTeaib z+9%6cgp9Oo&O~O>{-68h zT#uZWhib}y2U*#E9#%@M2`&-qS+`(5HZgeftRU*PYo^eC=Sy76 zrB_$JyLLa=P>5;RW$;>%d{I5Om#V%#|Eg8H>Wlfe-ZI65);nJVCt3pONIR6Cd!m5< zZwA;x>9pZ^Qyet^3g2^E-_=jraufMVyxn*1cma1X;;#i@mi+zwN9W;o5;1>t@c#X= zb>e2g@*!XM>Ue~}XAq>iqXHr?tc%kRYL><%GNm(pA`djd&zT2`2$qiAR*)2Ow4)J_ zq;YB3`%ofNnT&Qre%j%9aM2if8m_o&md5yiX@;o&>yst)^(~8i3c24c-m`zu|9u_j zxwTTlm$eD=wN*OmstXg%6;w;J%*?pI9~kHRvlsi(Hv2Ia*66u?0Lr?NCmn>w64S3! zF*rSu-ZMba!fiw%SeoN zdYICrhVUK|*5OW!4=y>_PgXRW)4!OsC!Q)K>Yyp+z!@Eea5YTgH>0!J$JSHBCr+~H zoIWC4p(W0Lz7{=5NRW`UK08jIdhR-ZQ~N}jymq1hi@cA4mX;w4N0qKbbLbsYU{R*< zBsJe}qCgVHI7tl5@;t-oJ1g0I78n#lh$$zc<$CJ3(K`c_z(q*S1l#|qu(lV>UoHR| zHAeE6=4KyxjK7Rn1mfXtww+8J$3O*NN_C~L@KkH+2zjc+3TKQxlAshMr1gvf|V-MiOzeRNP= zz`=3(!BUECxk_;VgkvUTLtaIv7vH?CO{g8Uqn}YPl{pOwnmIMace)pMktM+1#z4eY z2S-)`M7)>Ej4nYE6SxuUQ3qsGnIS}VX~iW*aNmPTSe{i%>*B@7`OM6I@N;mAzF*yCQh&9g zzsGqKYXsYUMBlJ|;Uvc^{An|N#-C}&@efjCIs_B-ynlv!%j{k0i!fWSGdsRPp)m3F zxWB63?rU=0<50HSpT>~V?CRhO%&70EjPmUE%-GKGc|aX|3%*u6+?{)36y~3t0s$TG z8^s?{*PyzlS1-``2_Aq9e^-OJVl3zdrFtMVR{+9%YzBHI!mHWg;TZ9&HoO11Q>f5- zErG))AP}X$>nSo8Hnu$F`?)j2!sUHM>R}ocJ4%5!wqs;? zF1bX6M;H$nm2vL9-xX<{vH{U4aROb-i zkGI^=7f&%PxD|rSV?uNJH6@sQ5VH4`L&CIUw2)rMNx$1{4_+33_PTIVg!VU0@B5oY z^6$T0OQajCTc?-QxiH&m!tf2q>>@xH^H_Rz?ySCG>ZIFE)9Q@r*>I$614jz38^2EU z)obhPn?&wYyj%`G$R@zy=2U4qbPtIA6)?Ow;^s~5qcoG++uMuyJ2o0~aelq%EkQ(8sOd3p9wVm&Bz7}}?7)p9ZuA*st+k_2}qS>jUvHw6J#hokgD=RP8a$Jy(yl-pa6+C~N=X$TYN#N5r{O zfs8;Knf@~M_P$dzB1l>;pR1o&MmW(|>7)!dgBHeF{yDOS2=!feEi+*nrkcD4VV8x1Qvgh;?=f&911l?A>F+VjLYIV zfY!x)SLYI8(puYow9VBjd|7~q+&xTScIibYK4SMH-AMkijtLbOJJ_G6gFJgK&w zZ1bU5#4O|L=jwF+jED#V)eJSY!ToB!n3Vq3^b(iiWkWFaPJhbW)<;ZnahTokDvV)*5;C_+l}u%(RUqr4jcRmJj-Dug#YGMEIJKY~F z<6nS;JH-R+e&WW_6JAV=Y;1+D{sl&bC)Yy=iT}=E7%)#Z=IT*8Dt?F7FG@MM->aG^^++3qQc7T{je7)y1hU6(GCZeMc(%9Mox7q zeAOtvAbd08(Ji^IvI;=p*C|&iB7zF*>9fh(i%cHLYy=aOmd#XeHZbg zG_rx0MBhFD3_2ZX(0$_i0==q$Z#E!d@99geW&IoLkw0KGP!48h!23uFqTEIOH0?h= zE)4m&Hiw1&rR;NBx%56O+Qd95lM2SQ7|qqqh#h+YLG;?sGc7XM=a%HX#u=MQx^NPTYub )qIeoi*3OR#z!Z*6{QSRJ7$BloEOdl-;E#L;75EstqN zv5q}r>aBL^%2ts#X&ievlkJ{tI!ydg8-!Y`rW^A8vUMbs;G^UXadrHb{ zLRb1L*zq7k-4ZW{u)-AcQ8B~65%W(p=~u;?sZZUU+}#E@l0miW@N_@;r)X~d`eD$T zsZ?*US-yiX#QC2??Ws^abe3j&_edOIi1~f%Ox?xfuC-s7DVKqjLB)x|+rk9g;O~rM zz5hP2zo-c7_0Y`LrwJIgfsOs*hKD8T&T(ah$LIFJ$#M`k+#MMAi4^hy2d$sfREV0@ zxZk}Rb0Z1b2O2x8wewz8_!zjj#1Yxl%a`iSBHBqJf)Lc{#!F-m6MuS+0X%khV1?_C z9WKD6$Csk*v(k8nfRtNcq+%pI_2F?@1yk=h3_w2l==@s=YmWS#7RvTp{ThTTHYo*z zdO7{bfpXiR(GA5NNL7oV3?DLU*P2N@gIF8XLf+fHqhaZ1gig;LX7)FRkNl1S9dJ1w| z5GZ8Gd1)$T0S`g(=jU78hb{C&fSbXE0*osO;W(OKMk3TvD|g_V|A|}J00wUVv@Z8U zsmzFh?wd*&i^y~6^WmMx|3zikLjBvWW$*S!=J29`lH@(~+^p{6pAmTGR$#`<2X=oP zrMGps1EP-Gd~S(f?A8&NWB%Q#Fy8`liA+gb_dY&2py@|%SR->}0gAqL=gytO`5q9d z%wV)AQgXo{YAj5NkDHpBI-EsG$rs=*&_!fq^hgL$y5B z+-wKqpF(BCQ30Hx5}_*UnOF83_5dmvGPhLjTQ$55Fa?V*vwEmRg};m{aJf(tfefZ+ zlXfx+J*P%OTo)S_*tkCN_@jJrdFTWUJ|4YepKaj36&essxpa>5h){5QA~*IdKQd7U zX=fT~qAGafej>EiTDXRCp(%T^$VjjiAUn|@Xq}k=#QLfGG#n6nkOo&rJ=cf-T{VqB zoY^XNiydxoXl(H69rz7xWNPJ0Q4ejNqa1WK9LHre+n~3ZVesxO* zbd}GD7!||;A+saokd$=X!{>0)7BWd@W#JHtfwbTjpe4S~?uR8I?kLb7Z7SOWaGx8v z5)#8K18056D>`i=3dp72fT4=b>D5^vlMoD0faRT7E{{6#z*26Y)+;}&;p*f4>W=`N zuY0YU8~24nr<#ZK5NeG+c7AdF{BRxMwO^9a+uaqoB5lZEgUaA&eOT^#{FLtBBdd(O z-{2#py_15LHRbI*i<57}Yt~-EqiS)JJU<5&5HeB{84gp#aT?Bg?bp1tUSDzzhUYP(tin;4E!;TG! zGNi;v0X-`l#NdBW$)STazwcgWse;ZM+Q86uV&^@;AGsk}xfOPvhd^~_^HZcXi>NuD zUg}}0Ya}Z;)Yo7fT$4!ERP7>N<0~&CW8yj4S$bXb*s=C!zqf?TNz@#YB~gqO?#VJu zhiIY@pPc3c7z_As^&leQ66&G7py{ypT^6`vE#pXkA~#j8!XfUNs`u8n;6{HhxR0X6~RaE)rUIbUN*yumPcASU=TR*>!ddpgN%lZ`@NY#7&dQ)Y2%_CJ+nHzVndXt6}8#ZuCo?Q5&~VhIxH}@HV9nh)++TN5L?h zgtM=1)?TbaCaoJ6-R4j$-^HYL1Py+J+(6nZx7?*J98LiI;yghnctllAhJ1Qxz^uOg z!^0C^G^#1eJ+!L(oUXHxu~ggIwIR2XFA7E!CIhd1z}_Z {tD?p!|*`Vnfm-*l*I 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

    LnobrM6vjkyZ5PKHS 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 W?Q#QB_b+gPKZ_$ahf7UdBK`}`OO0Fr literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/guides/newfile.png b/packages/docs-site/src/assets/content/docs/guides/newfile.png new file mode 100644 index 0000000000000000000000000000000000000000..296544e0488c7dbecdda8900e1dc0f7effe2d59a GIT binary patch literal 14583 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 literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/guides/provider.png b/packages/docs-site/src/assets/content/docs/guides/provider.png new file mode 100644 index 0000000000000000000000000000000000000000..95dab5c87da70f23412e688e52db0f5a9f273582 GIT binary patch literal 32691 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 LnL*wOhtU5AJs(1` literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/guides/thirdweb-authorize.png b/packages/docs-site/src/assets/content/docs/guides/thirdweb-authorize.png new file mode 100644 index 0000000000000000000000000000000000000000..4b918c7c4977e93e625c2765a5a0f158f12d70ae GIT binary patch literal 185254 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

    6gu!(U} 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�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

    E+Fv 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 CyBfcA@vRPsp) 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 Vl~mSR1G^fCf}G0zLfPj&{|$$LW6b~n literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config.webp b/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config.webp new file mode 100644 index 0000000000000000000000000000000000000000..68d286310e507e85f1559184ce2b61173fa86e31 GIT binary patch literal 150073 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

    jIk{jl#@gOOfkVDhM%;00Lo~HrqGKU- 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 P3tl^nEsd@jIGy}2)2Bs) literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/docs-logo.svg b/packages/docs-site/src/assets/docs-logo.svg new file mode 100644 index 00000000000..658909b1a84 --- /dev/null +++ b/packages/docs-site/src/assets/docs-logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/docs-site/src/assets/logo-dark.svg b/packages/docs-site/src/assets/logo-dark.svg new file mode 100644 index 00000000000..74b63e542e9 --- /dev/null +++ b/packages/docs-site/src/assets/logo-dark.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packages/docs-site/src/assets/logo-light.svg b/packages/docs-site/src/assets/logo-light.svg new file mode 100644 index 00000000000..07be42d8fa5 --- /dev/null +++ b/packages/docs-site/src/assets/logo-light.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packages/docs-site/src/assets/taiko-og-bg.png b/packages/docs-site/src/assets/taiko-og-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..498401afce367950c6f0dbd08736b15c08ce515b GIT binary patch literal 1422170 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≫!M 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%0Arc|Gl=p{bWpk*rnCx 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

    buTDwu# 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

    fe+~0G%>+yhkr3yG*@n`nW28qQQSHkjc1aJt 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�zM>}K=~z!Kkl@B+&7xN;{l2XKt3 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 z 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

    EyAlIZ+;WPZQ>^~|q`D}n!V%uVze7x6DL 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

    %ov1#tZ&6ma<|9ORvU+V)u-( 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

      5-}7|J=g&pZ-qebh_VdWsPxOy-3c2PP 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 Vh>f^|+cE$E002ovPDHLkV1l<9L?HkG literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/taiko-og-logo.png b/packages/docs-site/src/assets/taiko-og-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a63605d14de05f7c1355e3e714906ad2286a6ff0 GIT binary patch literal 11251 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 literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/components/starlight/Head.astro b/packages/docs-site/src/components/starlight/Head.astro new file mode 100644 index 00000000000..2913899e712 --- /dev/null +++ b/packages/docs-site/src/components/starlight/Head.astro @@ -0,0 +1,18 @@ +--- +import type { Props } from "@astrojs/starlight/props"; +import Default from "@astrojs/starlight/components/Head.astro"; + +// Get the URL of the generated image for the current page using its +// ID and replace the file extension with `.png`. +const ogImageUrl = new URL( + `/og/${Astro.props.id.replace(/\.\w+$/, ".png")}`, + Astro.site +); +--- + + + + + + + diff --git a/packages/docs-site/src/components/starlight/SiteTitle.astro b/packages/docs-site/src/components/starlight/SiteTitle.astro new file mode 100644 index 00000000000..280f48c8ff8 --- /dev/null +++ b/packages/docs-site/src/components/starlight/SiteTitle.astro @@ -0,0 +1,56 @@ +--- +import logoDark from "~/assets/logo-dark.svg?raw"; +import logoLight from "~/assets/logo-light.svg?raw"; +import docsLogo from "~/assets/docs-logo.svg?raw"; + +const main = "https://taiko.xyz/"; +const self = "/start-here/getting-started"; +--- + + + + + Remix IDE. + +2. Create a new `.sol` file + + ![new file](~/assets/content/docs/guides/newfile.png) + + - Give it any name, for example `Counter.sol`. + - Fill with this example code: + + ```solidity + // SPDX-License-Identifier: MIT + pragma solidity ^0.7.0; + + import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0-solc-0.7/contracts/token/ERC20/ERC20.sol"; + + contract Token is ERC20 { + + constructor () ERC20("Example Token Hekla", "ETH") { + _mint(msg.sender, 1000000 * (10 ** uint256(decimals()))); + } + } + ``` + +3. Compile + + - Change the Compiler version to `0.7.0+commit.9e61f92b` + + ![new file](~/assets/content/docs/guides/compiler.png) + + - Then compile it. + +4. Deploy + + - Change the Environment to `Injected Provider` + + ![new file](~/assets/content/docs/guides/provider.png) + + ![new file](~/assets/content/docs/guides/transact.png) + + - Then click `transact` + + - Finally, verify the smart contract using [Blockscout](/guides/verify-a-contract/#verify-a-contract-with-hardhat-or-other-alternatives) + + + +## Deploy a contract using thirdweb + +[Thirdweb](https://thirdweb.com/) offers a streamlined solution for deploying smart contracts to any EVM-compatible chain, including Taiko. By simplifying the deployment process, Thirdweb enables developers to focus on building without the hassle of managing private keys, RPC URLs, or deployment scripts. This guide demonstrates deploying a `Lock smart contract` on Taiko using Thirdweb, highlighting the compatibility of Ethereum contracts with Taiko. + + + +1. Set up the environment + + Before deploying a smart contract on Taiko with Thirdweb, ensure your contracts are ready in a folder or a Hardhat project.This setup can include a Hardhat project or any other structure where your contracts are organized. + + For setup details, see our [Hardhat Deployment](/guides/deploy-a-contract/#deploy-a-contract-using-hardhat) guide on taiko. + + :::note + Before proceeding further, it is required for you to set up your wallet. For guidance on this, please refer to the section [Set up your wallet](/guides/set-up-your-wallet/). + ::: + +2. Deploying with Thirdweb + + + + 1. Initialize Your Project + + Navigate to your smart contract project's root directory in the CLI and install Thirdweb globally using `npm i -g thirdweb`. + + 2. Deploy Your Contract + + Execute `thirdweb deploy` in the CLI. This command initiates the deployment process. + + 3. Authorize Your Device + + A browser window will prompt you to connect and authorize your wallet. This step ensures secure deployment from your chosen wallet. + + ![Authorize Device](~/assets/content/docs/guides/thirdweb-authorize.png) + + 4. Access the Deployment Link + + The CLI will provide a link. Open this link to proceed with deployment via the Thirdweb UI. + + 5. Complete Deployment Details + + - Fill in the necessary fields in the Thirdweb UI. + - Select `Taiko Network` from the Chain drop-down menu. + - Opt for `Add to dashboard` if you wish to manage this contract from the Thirdweb dashboard. + - Click `Deploy Now` and sign the transaction in your connected wallet. + + ![Deployment Details](~/assets/content/docs/guides/thirdweb-deploy.png) + + For a more detailed documentation on deployments through Thirdweb using CLI, visit [Thirdweb CLI Docs](https://portal.thirdweb.com/cli). + + + +3. Managing Your Contract + + After deployment, the Thirdweb dashboard allows you to manage and interact with your contract seamlessly. + Deploying with Thirdweb not only streamlines the process but also enhances security by supporting browser-based wallets like MetaMask and others for deployment activities. + + diff --git a/packages/docs-site/src/content/docs/guides/enable-a-proposer.mdx b/packages/docs-site/src/content/docs/guides/enable-a-proposer.mdx new file mode 100644 index 00000000000..e9010d85fa5 --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/enable-a-proposer.mdx @@ -0,0 +1,37 @@ +--- +title: Enable a proposer +description: This guide will you help you enable your Taiko node as a proposer. +--- + +import { Steps } from '@astrojs/starlight/components'; + +## Prerequisites + +- You are already [running a Taiko node](/guides/run-a-taiko-node). + +{/*## Using `stn` + +1. Install [stn](https://github.com/d1onys1us/stn) if you haven't already. +2. Execute `stn config proposer` in your terminal and walk through the steps.*/} + +## Using simple-taiko-node + + + +1. First, you will need to have a prover from [the marketplace](/resources/prover-marketplace) or [run your own SGX prover](/guides/enable-a-prover). + +2. You MUST set `PROVER_ENDPOINTS` in simple-taiko-node `.env` file to the your SGX prover's endpoint or one from the marketplace. If you do not set it and leave it default while not running a prover, **your proposer will not work**. + +3. Next, set the `L1_PROPOSER_PRIVATE_KEY` to an L1 account's private key which will send the Propose Block transactions. + +4. Then, set the `L2_SUGGESTED_FEE_RECIPIENT` to an L2 account's public key that will receive the fee. + +5. Finally set `ENABLE_PROPOSER` to `true` in simple-taiko-node `.env`. + +6. Now that the proposer is configured properly, you can run it with `docker compose --profile proposer up -d`! + + :::note + These are the bare minimum required settings along with a functional Taiko node to run a proposer, feel free to customize the rest of the variables in the .env file as you see fit! + ::: + + diff --git a/packages/docs-site/src/content/docs/guides/enable-a-prover.mdx b/packages/docs-site/src/content/docs/guides/enable-a-prover.mdx new file mode 100644 index 00000000000..de25c60c739 --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/enable-a-prover.mdx @@ -0,0 +1,58 @@ +--- +title: Enable a prover +description: This guide will you help you enable your Taiko node as a prover. +--- + +import { Steps } from '@astrojs/starlight/components'; + +## Prerequisites + +- You are already [running a Taiko node](/guides/run-a-taiko-node). + +## Enable a prover with simple-taiko-node + +:::note +The SGX registration process now occurs fully onchain! By registering through on-chain RA, TTKOh will be deposited to your prover's L1 Address. +::: + + + +1. A Taiko prover needs to be able to generate SGX proofs at the moment. Please follow the README guide on our [raiko](https://github.com/taikoxyz/raiko/blob/main/docs/README_Docker_and_RA.md) repository. + +2. Then set the `SGX_RAIKO_HOST` endpoint in your `.env` file. + +3. Set the `L1_PROVER_PRIVATE_KEY` to an L1 account's private key which will send the Prove Block transactions. + +4. Set the `MIN_ACCEPTABLE_PROOF_FEE` to the value in GWei that you deem sufficient. + +5. Finally set `ENABLE_PROVER` to `true` in simple-taiko-node `.env`. + +6. You can then run your prover with `docker compose --profile prover up -d`! + + :::note + These are the bare minimum required settings along with a functional Taiko node to run a proposer, feel free to customize the rest of the variables in the .env file as you see fit! + ::: + + + +### Approve TaikoL1 as TTKOh spender + +You will need TTKOh deposited on the TaikoL1 contract to secure the bond for the proofs you generate. + + + +1. Approve the TaikoL1 contract as a spender. + + Visit the TTKOh contract on Holesky [here](https://holesky.etherscan.io/address/0x6490E12d480549D333499236fF2Ba6676C296011#writeProxyContract). + +2. Click the **Connect to Web3** button. + +3. Click the **approve** function and set the spender address to the TaikoL1 contract address: `0x79C9109b764609df928d16fC4a91e9081F7e87DB`. + +4. Set the amount to at least the minimum bond amount of 250 TTKOh. + + You will need 250 TTKOh for each bond you sign. After entering 250, you need to set the 18 decimals that the TTKOh contract takes, you can click the plus button and then select 10^18. + +5. Finally, click the **Write** button. + + diff --git a/packages/docs-site/src/content/docs/guides/receive-tokens.md b/packages/docs-site/src/content/docs/guides/receive-tokens.md new file mode 100644 index 00000000000..2df3b789add --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/receive-tokens.md @@ -0,0 +1,24 @@ +--- +title: Receive tokens +description: This guide will help you receive testnet tokens on Holesky and Taiko. +--- + +This guide will help you receive testnet tokens on Holesky and Taiko. + +## Prerequisites + +- You have a wallet installed (e.g., [Rabby](https://rabby.io/), [MetaMask](https://metamask.io/)). + +## Receive some Holesky testnet Ether + +Taiko (Hekla) is currently deployed on Holesky testnet. Check out [faucetlink.to](https://faucetlink.to/) for a list of Holesky ether faucets! + +## Receive some Hekla testnet tokens + +HORSE is a dummy testnet token we deployed on Taiko (Hekla). You can see all deployed contracts [here](/network-reference/addresses). Navigate to the [bridge](https://bridge.hekla.taiko.xyz) and click "Faucet" on the sidebar to receive some HORSE. + +## Receive some TTKOh + +:::note +In order to receive TTKOh you need to have an SGX prover setup. We are working on an easy Docker setup to run the images if you have an SGX machine, and after verifying that you have an SGX machine we can send some TTKOh. Stay tuned for that! +::: diff --git a/packages/docs-site/src/content/docs/guides/run-a-holesky-node.mdx b/packages/docs-site/src/content/docs/guides/run-a-holesky-node.mdx new file mode 100644 index 00000000000..0dc1ef50494 --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/run-a-holesky-node.mdx @@ -0,0 +1,61 @@ +--- +title: Run a Holesky node +description: This guide will help you get a Holesky archive node up and running. +--- + +import { Steps } from '@astrojs/starlight/components'; + +This guide will help you get a Holesky archive node up and running. + +## Prerequisites + +- [Docker](https://docs.docker.com/engine/install/) is installed and **running**. +- [Git](https://github.com/git-guides/install-git/) is installed. +- If using Windows, you should install [Git BASH](https://gitforwindows.org/) or [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) to use as your terminal. + +## Steps + + + +1. Clone eth-docker + + ```bash + git clone https://github.com/eth-educators/eth-docker + cd eth-docker + ``` + +2. Do the eth-docker quickstart config + + Complete the [eth-docker quickstart](https://eth-docker.net/Usage/QuickStart/). You will need to run the config command: + + ```bash + ./ethd config + ``` + + Make sure to enable Grafana dashboards. + +3. Expose RPC ports + + To expose the node's RPC and REST ports (for a Taiko node to make calls to it), you can append `el-shared.yml` and `cl-shared.yml` to the list of files in the `COMPOSE_FILE` variable in your `.env` file: + + ```txt "el-shared.yml" "cl-shared.yml" + COMPOSE_FILE=lighthouse-cl-only.yml:geth.yml:el-shared.yml:cl-shared.yml + ``` + + Keep in mind this is **not encrypted**, so you should not expose it to the internet. eth-docker offers a few other options that you can read about [here](https://eth-docker.net/Usage/Advanced#sharing-rpc-and-rest-ports). + +4. Start Docker containers + + ```bash + ./ethd up + ``` + +5. Check your node is running properly + + You can visit the [Grafana dashboard](https://eth-docker.net/Usage/Dashboards/#connecting-to-local-grafana) which should be running on `localhost:3000` to verify if your node is running correctly. You should see the chain head increasing. + + + +## Video tutorial + +See [Run a Sepolia L1 archive node (YouTube)](https://www.youtube.com/watch?v=7Lg_cY7iP2o), the only difference is you need to select **Holesky testnet**. diff --git a/packages/docs-site/src/content/docs/guides/run-a-taiko-node.mdx b/packages/docs-site/src/content/docs/guides/run-a-taiko-node.mdx new file mode 100644 index 00000000000..62329b806e1 --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/run-a-taiko-node.mdx @@ -0,0 +1,243 @@ +--- +title: Run a Taiko node +description: This guide will help you start up a Taiko RPC node using simple-taiko-node. +--- + +import { Steps, Tabs, TabItem } from "@astrojs/starlight/components"; + +This guide will help you start up a Taiko RPC node using simple-taiko-node. + +## Prerequisites + +- [Docker](https://docs.docker.com/engine/install/) is installed and **running**. +- [Git](https://github.com/git-guides/install-git/) is installed. +- If using Windows, you should install [Git BASH](https://gitforwindows.org/) or [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) to use as your terminal. +- Meet the [Geth minimum hardware requirements](https://github.com/ethereum/go-ethereum#hardware-requirements) except for the storage requirement because Taiko nodes will require less storage (at the time of writing). + +## Run a Taiko node with simple-taiko-node + + + +1. Clone simple-taiko-node + + + + ```sh + git clone https://github.com/taikoxyz/simple-taiko-node.git + cd simple-taiko-node + ``` + + + ```sh + git clone https://github.com/taikoxyz/simple-taiko-node.git + cd simple-taiko-node && git config core.autocrlf false + ``` + + + +2. Copy the sample .env files + + ```sh + cp .env.sample .env + ``` + +3. Set the L1 archive node endpoint + + First, open the `.env` in your preferred text editor: + + + + ```sh + nano .env + ``` + + + ```sh + notepad .env + ``` + + + + :::note + You can use any Holesky L1 endpoint. + + The Holesky L1 node is no longer required to be an archive node to run a Taiko L1 node unless you want to prove blocks past the last 128 blocks. + + It's recommended to [run a local Holesky node](/guides/run-a-holesky-node) but you browse around for other [Holesky RPC providers](https://chainlist.org/chain/17000). Keep in mind they will **eventually rate limit your node** and it will stop syncing, so a local L1 node is recommended for a proper setup. + ::: + + Next, you will set the L1 node endpoints. If you are running a local Holesky node, you cannot reference the L1 endpoints as `http://127.0.0.1:8545`, `ws://127.0.0.1:8546` and `http://127.0.0.1:5052` because that is local to inside the simple-taiko-node Docker networking. Instead you can try: + + - Using `host.docker.internal` (see: [stack overflow](https://stackoverflow.com/questions/24319662)). + - Using the private ip address of your machine (use something like `ip addr show` to get this ip address). + + After getting the address of the Holesky node, set the following L1 node endpoints in your `.env` file. Here is an example: + + - `L1_ENDPOINT_HTTP=http://192.168.1.15:8545` + - `L1_ENDPOINT_WS=ws://192.168.1.15:8546` + - `L1_BEACON_HTTP=http://192.168.1.15:5052` + +4. Remove old testnet volumes + + If you ran a testnet node previously, make sure to first remove the old volumes: + + ```sh + docker compose down -v + ``` + +5. Start the node + + Make sure Docker is running and then run the following command to start the node (you may need to use `sudo docker compose up -d` if your user is not in the `docker` group): + + :::note + This only starts the driver and l2 execution engine service, if you'd like to run a prover/proposer please visit those guides. + ::: + + ```sh + docker compose --profile l2_execution_engine up -d + ``` + +6. Verify node is running + + #### Option 1: Check with the node dashboard + + A node dashboard will be running on `localhost` on the `GRAFANA_PORT` you set in your `.env` file, which defaults to `3001`: [http://localhost:3001/d/L2ExecutionEngine/l2-execution-engine-overview](http://localhost:3001/d/L2ExecutionEngine/l2-execution-engine-overview). + + You can verify that your node is syncing by checking that the **chain head** on the dashboard is increasing. Once the chain head matches what's on the block explorer, you are fully synced. + + #### Option 2: Check with curl commands + + + + 1. Check if the Execution Layer client is connected to Taiko L2: + + ```bash + curl http://localhost:8547 \ + -X POST \ + -H "Content-Type: application/json" \ + --data '{"method":"eth_chainId","params":[],"id":1,"jsonrpc":"2.0"}' + ``` + + which should return the chainId as `0x28c61` (167009): + + ```json + { "jsonrpc": "2.0", "id": 1, "result": "0x28c61" } + ``` + + 2. Check if the Execution Layer client is synced by requesting the latest Taiko L2 / L3 block from the Execution Layer client: + + ```bash + curl http://localhost:8547 \ + -X POST \ + -H "Content-Type: application/json" \ + --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}' + ``` + + 3. If the blockNumber response value is `0` or not growing, check the Taiko L2 logs here: + + ```bash + docker compose logs -f + ``` + + > Note: You may need to use `sudo docker compose logs -f` if you are not in the `docker` group. + + + + + +## Video tutorial + +See the video tutorial [Run a Taiko L2 node (YouTube)](https://www.youtube.com/watch?v=l_tVvDcuK5o). It's for a previous testnet but the overall steps are the same! + +## Full simple-taiko-node CLI reference + +Make sure you are in the simple-taiko-node folder. If you are not: + +```sh +cd simple-taiko-node +``` + +#### Start node + +```sh +docker compose up -d +``` + +#### Stop node + +```sh +docker compose --profile {PROFILE} down +``` + +#### Restart node + +```sh +docker compose --profile {PROFILE} down && docker compose --profile {PROFILE} up -d +``` + +#### Update node + +```sh +git pull origin main && docker compose pull +``` + +#### Remove node + +```sh +docker compose --profile {PROFILE} down -v +``` + +#### Start and remove orphan containers + +This command will start and remove containers that are not part of the current docker compose file. + +```sh +docker compose --profile {PROFILE} up -d --remove-orphans +``` + +#### View grafana dashboard + +```sh +open http://localhost:3001/d/L2ExecutionEngine/l2-execution-engine-overview +``` + +#### View logs + +```sh +docker compose --profile {PROFILE} logs -f +``` + +#### View execution logs + +```sh +docker compose logs -f l2_execution_engine +``` + +#### View client driver logs + +```sh +docker compose logs -f taiko_client_driver +``` + +#### View client proposer logs + +```sh +docker compose logs -f taiko_client_proposer +``` + +#### View system resource usage stats + +```sh +docker stats +``` + +#### Compare .env and .env.sample + +```sh +sdiff .env .env.sample +``` + +## Troubleshooting + +- Visit the Discord for help on any common error codes / issues. +- View the logs of the node (see above). diff --git a/packages/docs-site/src/content/docs/guides/set-up-your-wallet.md b/packages/docs-site/src/content/docs/guides/set-up-your-wallet.md new file mode 100644 index 00000000000..64cb5f31f8b --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/set-up-your-wallet.md @@ -0,0 +1,27 @@ +--- +title: Set up your wallet +description: This guide will help you set up your wallet to start using Taiko. +--- + +This guide will help you set up your wallet to start using Taiko. + +## Prerequisites + +- You have a wallet installed (e.g., [Rabby](https://rabby.io/), [MetaMask](https://metamask.io/)). + +## Add chains to your wallet + +Click **Connect Wallet** at the links below: + +- Holesky testnet: https://chainlist.org/chain/17000 +- Hekla testnet: https://chainlist.org/chain/167009 + +## Add tokens to your wallet + +Find the token you want to import on the [addresses](/network-reference/addresses) page and use the address to add it to your wallet. + +## Troubleshooting + +### The add buttons did not work + +If the add buttons did not work, head over to the [RPC configuration](/network-reference/rpc-configuration) and [addresses reference](/network-reference/addresses) pages and add them to your wallet manually. diff --git a/packages/docs-site/src/content/docs/guides/swap-tokens.md b/packages/docs-site/src/content/docs/guides/swap-tokens.md new file mode 100644 index 00000000000..34b92e6b27d --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/swap-tokens.md @@ -0,0 +1,14 @@ +--- +title: Swap tokens +description: This guide will help you swap tokens on Taiko. +--- + +This guide will help you swap tokens on Taiko. + +## Prerequisites + +- You will need to have some tokens on Taiko. See [receive tokens](/guides/receive-tokens). + +## Swap tokens + +Visit [the swap dapp](https://swap.hekla.taiko.xyz) and follow through the UI. diff --git a/packages/docs-site/src/content/docs/guides/verify-a-contract.md b/packages/docs-site/src/content/docs/guides/verify-a-contract.md new file mode 100644 index 00000000000..579fe2fa59a --- /dev/null +++ b/packages/docs-site/src/content/docs/guides/verify-a-contract.md @@ -0,0 +1,33 @@ +--- +title: Verify a contract +description: This guide will help you verify a smart contract on Taiko. +--- + +This guide will help you verify a smart contract on Taiko. + +## Prerequisites + +You have a contract deployed on Taiko and the source code available. + +## Verify a contract with Foundry + +Replace the contract address and filepath to contract below, and then execute in terminal to verify your contract. + +```bash +forge verify-contract 0x526317252e346978869d178081dA2cd10ac8b56D src/Counter.sol:Counter \ + --verifier-url https://blockscoutapi.hekla.taiko.xyz/api\? \ + --verifier blockscout +``` + +:::note +For some users the above command does not work on Blockscout (currently investigating). You can also try passing a different `--verifier-url`: + +```bash "https://blockscoutapi.hekla.taiko.xyz/api?module=contract&action=verify" +--verifier-url https://blockscoutapi.hekla.taiko.xyz/api?module=contract&action=verify +``` + +::: + +## Verify a contract with Hardhat or other alternatives + +Check out the Blockscout docs [here](https://docs.blockscout.com/for-users/verifying-a-smart-contract)! diff --git a/packages/docs-site/src/content/docs/network-reference/addresses.md b/packages/docs-site/src/content/docs/network-reference/addresses.md new file mode 100644 index 00000000000..72a378d11c9 --- /dev/null +++ b/packages/docs-site/src/content/docs/network-reference/addresses.md @@ -0,0 +1,61 @@ +--- +title: Addresses +description: Network reference page describing various important addresses on Taiko. +--- + +## Ethereum (Holesky) contracts + + +| Contract Name (Shared) | Address | +| ----------------------- | -------------------------------------------- | +| SharedAddressManager | `0x7D3338FD5e654CAC5B10028088624CA1D64e74f7` | +| TaikoToken | `0x6490E12d480549D333499236fF2Ba6676C296011` | +| SignalService | `0x6Fc2fe9D9dd0251ec5E0727e826Afbb0Db2CBe0D` | +| Bridge | `0xA098b76a3Dd499D3F6D58D8AcCaFC8efBFd06807` | +| ERC20Vault | `0x2259662ed5dE0E09943Abe701bc5f5a108eABBAa` | +| ERC721Vault | `0x046b82D9010b534c716742BE98ac3FEf3f2EC99f` | +| ERC1155Vault | `0x9Ae5945Ab34f6182F75E16B73e037421F341fEe3` | + + +| Contract Name (Rollup-Specific) | Address | +| ----------------------- | -------------------------------------------- | +| TaikoL1 | `0x79C9109b764609df928d16fC4a91e9081F7e87DB` | +| RollupAddressManager | `0x1F027871F286Cf4B7F898B21298E7B3e090a8403` | +| GuardianProver | `0x92F195a8702da2104aE8E3E10779176E7C35d6BC` | +| AssignmentHook | `0x9e640a6aadf4f664CF467B795c31332f44AcBe6c` | +| SgxVerifier | `0x532EFBf6D62720D0B2a2Bb9d11066E8588cAE6D9` | +| AutomataDcapAttestation | `0xC6cD3878Fc56F2b2BaB0769C580fc230A95e1398` | +| PemCertChainLib | `0x08d7865e7F534d743Aba5874A9AD04bcB223a92E` | + +## Taiko (Hekla) contracts + +| Contract Name (Shared) | Address | +| -------------------- | -------------------------------------------- | +| Bridge | `0x1670090000000000000000000000000000000001` | +| ERC20Vault | `0x1670090000000000000000000000000000000002` | +| ERC721Vault | `0x1670090000000000000000000000000000000003` | +| ERC1155Vault | `0x1670090000000000000000000000000000000004` | +| SignalService | `0x1670090000000000000000000000000000000005` | +| SharedAddressManager | `0x1670090000000000000000000000000000000006` | + +| Contract Name (Rollup-Specific) | Address | +| -------------------- | -------------------------------------------- | +| TaikoL2 | `0x1670090000000000000000000000000000010001` | +| RollupAddressManager | `0x1670090000000000000000000000000000010002` | +| BridgedTaikoToken | `0xebf1f662bf092ff0d913a9fe9d7179b0efef1611` | + +## Rollup contracts owner + +The rollup contracts owner can be found on the block explorer for the contracts shown above. The deployers public key is: `0x1D2D1bb9D180541E88a6a682aCf3f61c1605B190`. It is pre-minted with 1 billion TTKOh tokens and max uint128 ether. + +## Taiko Labs' proposers and provers addresses + +| Name | Address | +| ------------------------------------------------------ | -------------------------------------------- | +| Proposer #1 | `0xEd1bA0Ba5661D648c7b3988DAC473F60403aff1e` | +| Prover #1 | `0x7B399987D24FC5951f3E94A4cb16E87414bF2229` | +| Prover #2 (with `--prover.proveUnassignedBlocks` flag) | `0x8Adb8C4d5214309612b53845E07C3Cb5BB4E8CF0` | + +## Taiko Labs' bootnode addresses + +Find the latest bootnodes here in [simple-taiko-node](https://github.com/taikoxyz/simple-taiko-node/blob/main/.env.sample). diff --git a/packages/docs-site/src/content/docs/network-reference/differences-from-ethereum.md b/packages/docs-site/src/content/docs/network-reference/differences-from-ethereum.md new file mode 100644 index 00000000000..a5e5cec40e5 --- /dev/null +++ b/packages/docs-site/src/content/docs/network-reference/differences-from-ethereum.md @@ -0,0 +1,10 @@ +--- +title: Differences from Ethereum +description: Network reference page describing the differences between Taiko and Ethereum. +--- + +| Parameter | Ethereum (Holesky) | Taiko (Hekla) | Reasoning | +| ---------------- | ------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| Block gas limit | 30,000,000 gas | 15,000,000 gas | Circuit constraint limitation in PSE circuits; addressed by zkVM, chunking, etc. | +| Block gas target | 15,000,000 gas | 60,000,000 gas (per L1 block) | Assuming an L2 block time of ~3 seconds will have a ~15,000,000 gas target. | +| Block time | 12 seconds | ~3 seconds | Allow for greater throughput on L2 as it does not threaten the node decentralization the same as on the consensus layer. | diff --git a/packages/docs-site/src/content/docs/network-reference/network-configuration.md b/packages/docs-site/src/content/docs/network-reference/network-configuration.md new file mode 100644 index 00000000000..3f82ba38557 --- /dev/null +++ b/packages/docs-site/src/content/docs/network-reference/network-configuration.md @@ -0,0 +1,16 @@ +--- +title: Network configuration +description: The network configuration page describes many of the configuration details of the network. +--- + +## Tier configuration + +You can view the full `TierProviderV1` tier configuration [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/contracts/L1/tiers/TierProviderV1.sol): + +Here is a diagram of the proof tier configuration: + +![alpha 7 proof tiers](~/assets/content/docs/network-reference/proof-tier-config.webp) + +## Network configuration + +You can view the full network configuration by visiting the TaikoL1 contract on Etherscan [here](https://holesky.etherscan.io/address/0x79C9109b764609df928d16fC4a91e9081F7e87DB#readProxyContract). Then connect your wallet, and select "Read as Proxy". You can then see the config details for the network. diff --git a/packages/docs-site/src/content/docs/network-reference/rpc-configuration.md b/packages/docs-site/src/content/docs/network-reference/rpc-configuration.md new file mode 100644 index 00000000000..ce4f8d4ddc7 --- /dev/null +++ b/packages/docs-site/src/content/docs/network-reference/rpc-configuration.md @@ -0,0 +1,22 @@ +--- +title: RPC configuration +description: Network reference page describing Ethereum and Taiko RPC configurations. +--- + +## Ethereum (Holesky) + +| Name | Value | +| ------------------ | --------------------------------------------------------------- | +| Chain ID | 17000 | +| RPC | See Holesky chainlist [here](https://chainlist.org/chain/17000) | +| Symbol | ETH | +| Block explorer URL | https://holesky.etherscan.io | + +## Taiko (Hekla) + +| Name | Value | +| ------------------ | -------------------------------------------------------------- | +| Chain ID | 167009 | +| RPC | See Hekla chainlist [here](https://chainlist.org/chain/167009) | +| Symbol | ETH | +| Block explorer URL | https://hekla.taikoscan.network | diff --git a/packages/docs-site/src/content/docs/resources/faqs.md b/packages/docs-site/src/content/docs/resources/faqs.md new file mode 100644 index 00000000000..7bbabe455e0 --- /dev/null +++ b/packages/docs-site/src/content/docs/resources/faqs.md @@ -0,0 +1,40 @@ +--- +title: FAQs +description: Resource page for listing out FAQs. +--- + +## What is Taiko? + +Taiko is a fully permissionless and decentralized Ethereum-equivalent ZK-Rollup. This means using Taiko is exactly the same as using Ethereum. Not only does Taiko support all EVM opcodes, but it supports the full JSON-RPC execution client API. + +Taiko is an L2 that derives it's security from Ethereum. There is no centralized sequencer or provers, all operations are permissionless and community driven. Learn more about Taiko under our core concepts in the sidebar. + +## What is a Type 1 ZK-EVM? + +The different types of ZK-EVMs make tradeoffs between compatibility and proof generation cost. A Type 1 ZK-EVM prioritizes compatibility over proof generation cost. + +Another term for a Type 1 ZK-EVM is “Ethereum-equivalent”. This term comes from the fact that Type 1 ZK-EVMs make no changes to the Ethereum architecture, whether it be the hash function, state trees, or gas costs. This equivalency allows us to reuse execution clients with minimal modification. + +## Is Taiko open source? + +Yes, Taiko is open source under the permissive MIT license (free to access and modify). The Geth fork ([taiko-geth](https://github.com/taikoxyz/taiko-geth)) retains the original Geth GPL licenses. + +## Can I ignore these logs from my node? + +Join the Discord ([`#errors-faq` channel](https://discord.com/channels/984015101017346058/1193975550256107660)) to see the node logs that can be ignored and which are errors. + +## Where can I find the deployed contract addresses? + +See [deployed contracts](/network-reference/addresses) for a list of deployed contract addresses. + +## I ran a node during a previous testnet do I need to do anything different? + +Yes, please update your simple-taiko-node and run through one of the profiles described in the guides. You can also shut down your Taiko (Katla) node and run a Taiko (Hekla) node. Check out our guides in the sidebar. + +## Does Taiko have a sequencer? + +Taiko does not have an L2 sequencer, since everyone can become a proposer permissionlessly. Ultimately the L1 Ethereum validator for the current block is the sequencer that can sequence multiple L2 blocks. This is also referred to as a **based rollup**. + +## How do I get ETH on the Taiko Hekla network? + +You can use the official [Taiko bridge](https://bridge.hekla.taiko.xyz/) to send your ETH from the Holesky network to the Taiko Hekla network. diff --git a/packages/docs-site/src/content/docs/resources/learning-resources.md b/packages/docs-site/src/content/docs/resources/learning-resources.md new file mode 100644 index 00000000000..9ae187030fe --- /dev/null +++ b/packages/docs-site/src/content/docs/resources/learning-resources.md @@ -0,0 +1,15 @@ +--- +title: Learning resources +description: Resource page where we list various useful learning resources. +--- + +## Based rollups + +- Taiko blog: [Based Rollup FAQ(https://taiko.mirror.xyz/7dfMydX1FqEx9_sOvhRt3V8hJksKSIWjzhCVu7FyMZU)] +- X space: [Based rollups and decentralized sequencing](https://www.youtube.com/watch?v=eS5s08sgjuo). +- X space: [Based sequencing ft. Justin Drake: Part 2](https://www.youtube.com/watch?v=RqgIEkAfpks). + +## Rollup terminologies + +- [The Rollup Glossary](https://rollup-glossary.vercel.app). +- Rollup training wheels: [L2Beat](https://l2beat.com). diff --git a/packages/docs-site/src/content/docs/resources/prover-marketplace.md b/packages/docs-site/src/content/docs/resources/prover-marketplace.md new file mode 100644 index 00000000000..7aa1fa84af6 --- /dev/null +++ b/packages/docs-site/src/content/docs/resources/prover-marketplace.md @@ -0,0 +1,13 @@ +--- +title: Prover marketplace +description: Resource page listing Taiko marketplace provers. +--- + +:::note +Any provers added to this page must be tested by the team to ensure they have good uptime and reliability. This prover must be able to provide both SGX (for now). +::: + +## Prover marketplace list + +| Name | Endpoint | +| ------ | ------------------------------------- | diff --git a/packages/docs-site/src/content/docs/resources/sgx-resources.md b/packages/docs-site/src/content/docs/resources/sgx-resources.md new file mode 100644 index 00000000000..d6062818c9c --- /dev/null +++ b/packages/docs-site/src/content/docs/resources/sgx-resources.md @@ -0,0 +1,6 @@ +--- +title: SGX resources +description: Resource page where we various useful SGX resources. +--- + +- https://github.com/ayeks/SGX-hardware#hardware-with-sgx2-support diff --git a/packages/docs-site/src/content/docs/start-here/contributing.md b/packages/docs-site/src/content/docs/start-here/contributing.md new file mode 100644 index 00000000000..385d2898455 --- /dev/null +++ b/packages/docs-site/src/content/docs/start-here/contributing.md @@ -0,0 +1,251 @@ +--- +title: Contributing +description: Learn how to contribute to Taiko. +--- + +We'd love for any contribution you can make to Taiko. Welcome to the contributing manual! + +**Table of contents:** + +- [Make a contribution](#make-a-contribution) +- [Coding standards](#coding-standards) +- [Documentation standards](#documentation-standards) + +## Make a contribution + +Thank you for exploring the opportunity to contribute to Taiko.xyz. Whether you're an experienced developer or just starting, we value and welcome your unique contributions. + +**Here are some ways you can contribute:** + +- Open a new issue [here](https://github.com/taikoxyz/taiko-mono/issues) (please check the issue does not already exist). +- Work on an existing issue (check out the [good first issues list](https://github.com/orgs/taikoxyz/projects/9/views/31) on our public project board). + +Please comment on the issue that you're interested in working on. Also, check out the [coding standards](#coding-standards) and [documentation standards](#documentation-standards) before you start working on the pull request. + +Once the pull request is merged to one of Taiko's GitHub repositories (you can see which repositories here: [2024 Taiko Contributor GitPOAP](https://www.gitpoap.io/gp/1092)), you will be automatically awarded a Taiko Contributor GitPOAP. Opening a good new issue (not a spam issue) is also eligible for a GitPOAP, just leave a comment and we will manually invoke a GitHub bot that will send the GitPOAP. + +You can learn how to best contribute to Taiko by watching the [“Taiko Contributing Guide - Community Workshop”](https://www.youtube.com/watch?v=xMDSHT5C29c) video on our YouTube channel. + +## Coding standards + +This section describes our coding standards at Taiko. + +### Pull requests + +**Basic requirements for PRs** + +Before we can consider your contributions, please have a look at the following requirements: + +- Any contribution must follow the standards documented in this file. +- The scope must be larger than a simple rename, or typo fix. We kindly request that small, incremental updates be combined into more substantial pull requests. This approach will streamline our development and ensure focus on core improvements. + +Specify the scope of your change with a [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) in the PR title (for example, `feat(scope): description of feature`). This will be squashed and merged into the `main` branch. You can find the full list of allowed scopes [here](https://github.com/taikoxyz/taiko-mono/blob/main/.github/workflows/validate-pr-title.yml#L28). + +Because we squash all of the changes into a single commit, please try to keep the PR limited to the scope specified in the commit message. This commit message will end up in the automated changelog by checking which packages are affected by the commit. + +For example, `feat(scope): description of feature` should only impact the `scope` package. If your change is a global one, you can use `feat: description of feature`, for example. + +**Note: +The taiko team will evaluate all PRs and may close any pull requests that do not follow the standards outlined in this document. +Please note, small pull requests will not be considered for future airdrops. We encourage contributions that make significant enhancements to the project.** + +### Source code comments + +Follow the [NatSpec format](https://docs.soliditylang.org/en/latest/natspec-format.html) for documenting smart contract source code. Please adhere to a few additional standards: + +#### Comment style + +Choose `///` over `/** */` for multi-line NatSpec comments for consistency. All NatSpec comments should use `///` instead of `/** */`. Additional explanatory comments should use `//`, even for multi-line comments. + +#### Notice tag + +Omit the usage of `@notice` and let the compiler automatically pick it up to save column space. For example, this: + +``` +/// @notice This is a notice. +``` + +becomes this: + +``` +/// This is a notice. +``` + +#### Annotation indentation + +For multi-line annotations, do not "align". For example, this is **wrong**: + +``` +/** + * Here is a comment. + * @param someParam Here is a long parameter blah blah blah + * and I wrap it to here. + * @return someThing Here is a long return parameter blah + * and I wrap it to here. + */ +``` + +This is **correct**: + +``` +/** + * Here is a comment. + * @param someParam Here is a long parameter blah blah blah + * and I wrap it to here. + * @return someThing Here is a long return parameter blah + * and I wrap it to here. + */ +``` + +#### Extra line breaks + +Use extra line breaks as you see fit. By default, do not use them unless it improves the readability. + +This is **preferred**: + +``` +/** + * Here is a comment. + * @param someParam Here is a long parameter blah blah blah + * and I wrap it to here. + * @return someThing Here is a long return parameter blah + * and I wrap it to here. + */ +``` + +This is also **okay**: + +``` +/** + * Here is a comment. + * + * @param someParam Here is a long parameter blah blah blah + * and I wrap it to here. + * @return someThing Here is a long return parameter blah + * and I wrap it to here. + */ +``` + +#### Additional comments + +You can use additional comments with `//`. These can be above what it is describing **or** to the side. Try to remain consistent in what you are commenting. Do not use `/* */`. You can align comments on the side or not, whichever improves readability. + +This is **correct**: + +``` +struct Some { + // This is foo + uint256 foo; + uint256 bar; // This is bar +} +``` + +This is **wrong**: + +``` +struct Some { + uint256 foo; /* This is foo */ +} +``` + +#### Periods + +Periods are optional for comments, but recommended if it's a proper sentence. However, remain consistent in whatever file or section you are commenting. + +This is **correct**: + +``` +struct Some { + // This is foo + uint256 foo; +} +``` + +This is **wrong**: + +``` +struct Some { + // This is foo. + uint256 foo; + // This is bar + uint256 bar; +} +``` + +#### Mentioning other files in the repo + +To mention another contract file in the repo use the standard like this: + +```solidity +/// @notice See the documentation in {IProverPool} +``` + +If you are referring to some struct or function within the file you can use the standard like this: + +```solidity +/// @notice See the struct in {TaikoData.Config} +``` + +#### Documenting interfaces + +To document the implementing contract of an interface, you cannot use `@inheritdoc`, it is not supported for contracts. Thus, you should mention a statement like so: + +```solidity +/// @notice See the documentation in {IProverPool} +``` + +You can then mention implementation specific details by adding a `@dev` tag: + +```solidity +/// @notice See the documentation in {IProverPool} +/// @dev This implementation uses a ProverPool of size 32. +``` + +#### Documenting internal functions and structs + +Internal functions and structs should commented with a `@dev` tag, and you can also comment the contents of the struct with explanatory comments. + +#### Documenting user-facing functions versus internal functions + +All user-facing functions should be fully documented with NatSpec. Internal functions should always be commented with a `@dev` tag, not a `@notice` tag. + +#### Explanatory comments + +Explanatory comments use `//`. There is a common idea that the code describes the documentation. There are pros to this approach. One of the pros is that you remove the coupling between documentation and the code it's describing, that's why we should always strive for the [minimum viable documentation](https://google.github.io/styleguide/docguide/best_practices.html#minimum-viable-documentation) (one of our core documentation [philosophies](#philosophies)). It can also appear cleaner. + +It's important that our codebase is well documented with **explanatory comments**. Thus, in addition to the standard NatSpec documentation which we should apply, we should comment the more complex things in our codebase for higher readability. More important than commenting _what_ we should be concerned with commenting _why_. The _what_ does not need to be commented for obvious things, of course the code is able to achieve that. We should comment the _what_ for more complex things to aid in the reader for more quickly understanding the code. In addition to that, we should strive to answer the _why_ with comments in our code. + +Keep in mind the advantage of having minimum viable documentation. Keep the comments close to the code which it is describing, so that it does not easily go stale or out of date. + +#### Annotation ordering + +There are several annotations used in NatSpec, this is the order of precedence we use from top to bottom: + +- @title +- @author [we don't use this tag] +- @notice +- @dev +- @param +- @return +- @inheritdoc +- @custom [we don't use this tag unless we define the convention for it here] + +## Documentation standards + +This section describes our documentation standards at Taiko. + +### Philosophies + +- Create the minimum viable documentation. +- Don't repeat yourself, use links to existing documentation or inherit it. +- Keep documentation close to what it's describing (for example, in the source code). + +### Writing style + +Use the [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/) as a base point of reference for writing style. Generally, don't worry too much about things like typos. What's more important is following the basic [philosophies](#philosophies) outlined above and following structural standards for highly readable and minimal documentation. + +### Creating content + +If you are interested in creating some content (video, blog post, tweet thread, visuals, etc.), you are absolutely free to do so. It's useful to get a peer review on these, if you need a peer review please reach out to the community / team on the [Taiko Discord](https://discord.gg/taikoxyz). + +If you are looking for some more guidance on creating content, you can consult the [Taiko content guide](https://hackmd.io/@taikolabs/BJurgF1bn). diff --git a/packages/docs-site/src/content/docs/start-here/getting-started.mdx b/packages/docs-site/src/content/docs/start-here/getting-started.mdx new file mode 100644 index 00000000000..c02df987c13 --- /dev/null +++ b/packages/docs-site/src/content/docs/start-here/getting-started.mdx @@ -0,0 +1,37 @@ +--- +title: Getting started +description: Get started with various guides, concepts, API references, and resources to help you build with Taiko. +hero: + title: Taiko Docs + tagline: Guides, concepts, API references, and resources to help you build with Taiko. + actions: + - text: Deploy a contract + link: /guides/deploy-a-contract + icon: right-arrow + variant: primary + - text: Learn about Taiko + link: /core-concepts/what-is-taiko + icon: right-arrow +--- + +import { Card, CardGrid } from "@astrojs/starlight/components"; + +## Next steps + + + + Get started with a simple guide such as [deploying a + contract](/guides/deploy-a-contract). + + + View details about the network such as various important + [addresses](/network-reference/addresses). + + + Learn about core concepts such as "What is Taiko?" + [here](/core-concepts/what-is-taiko). + + + View additional learning resources [here](/resources/learning-resources). + + diff --git a/packages/docs-site/src/content/docs/start-here/getting-support.md b/packages/docs-site/src/content/docs/start-here/getting-support.md new file mode 100644 index 00000000000..bdecd3b6721 --- /dev/null +++ b/packages/docs-site/src/content/docs/start-here/getting-support.md @@ -0,0 +1,26 @@ +--- +title: Getting support +description: Page listing out various resources to get support on Taiko. +--- + +Stuck on something? Need some assistance? Here are a few different places you can get support. + +### Tech support / general questions + +Visit our [Discord](https://discord.gg/taikoxyz) for tech support and general questions. + +### Reporting security vulnerabilities + +To report a security vulnerability please email security@taiko.xyz. + +### Bugs and feature requests + +If you run into any bugs or have any feature requests, you can open them in the appropriate repo on our [GitHub](https://github.com/taikoxyz). + +### Diving deeper into Taiko + +There are two main places to look for Taiko's documentation. The user docs which are here, and the developer docs / source code comments inside of our protocol monorepo, [taiko-mono](https://github.com/taikoxyz/taiko-mono). + +### Grant support + +To support developers on Taiko we have a Grants program which you can read about in our blog post [here](https://taiko.mirror.xyz/7Xr2sbMEF8IDoNj03bJflb7z-ErmyCMTAb3L5ef2hfE). diff --git a/packages/docs-site/src/env.d.ts b/packages/docs-site/src/env.d.ts new file mode 100644 index 00000000000..acef35f175a --- /dev/null +++ b/packages/docs-site/src/env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/packages/docs-site/src/fonts/ClashGrotesk-Medium.ttf b/packages/docs-site/src/fonts/ClashGrotesk-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4616077652aec9321af8de963f88005a7a1d5d45 GIT binary patch literal 61480 zcmcG%2VhiH_CJ2_n`9=9^a>-u$F=&z#vf`&!LS|IOI9Uifut)r`uSiT5SAGWO63e1D^AZhb@M-&FC8 zJ&CXRUR4bXDm=1(%4h7<5Myq8>l@Ou7M1_gmodHp53FcgZRnp8a`Q3VyTF+0ja7!h z{?Sp?#2z|=`);d@8&_Wc>Jzsz=Bs6F_XnLFhW7CHKYRxFF5$@S#1HPB>X%SnHonJn zt{&R(#x=D+;rqLcsed%~wHcn+cAv~1j@yABL=Aok_{3901H!}~=<6+5*O_PdPjuedg zif~K;eB~&IuJc(AdzGcJcSrvqO~Um%EJt-Mp3TLPCZ5lv=lGi}hyOQA;Df*=A8?eh@R5R^Gy-lE90rQcbVDYFg3uVOtwmYPE(Q2Qt zME(unCAxw3d>5OHdv~!fSrq>Yzb!%89ca5n?38ph+U5;BzT|^f%I5 zqbBgN2Wb2U;Q1=ff5G|BIDd)rM`!~-@Q0gd3(!LvC7#9^{R2Guvgjk=Q^2GrUd1_& zy#spT%uD6(JQe5J=+hlcBifL7ncC9Xnc9_T>u^?m%c4}r@jLn*@xFW>{iEeO`XcoQ z>XS~-=%=EuIG%}DsJ*W6OnqGRGvY03SEa90f1^Hcd*)|HFA#qV9wYuF9x=nGz#;ni zBDNF#hmL!3T*UEP9Dl@d5XT^nhjE<3LC?@{ci}KUdk3!Rd3uiSzo;C)$C=7lDJ>d( z0q1Qvf}}6d9}hrQD0n!YEqrB*AMgZ^`>INrFZ#q}9N~}=)A(*S8Amc7!u2`kD~>rV zMcT#^U9N&$FtJb^5$vteY`z`OZh{GB4L+4=N3{Az zIj+T-Xk(@o(T`~U2#z5fL|dX8Xgc}^&Z}@#<2We#Ukh8Tx{9e??!j>!bywiL4(H9N zKOE<|Os)Pc>%}Ms{X!g5#dyp3OZbM-m`!Ca{C=EQvNDXjap*@|+2dT#tNB)bBOjHf zNP6iN=|h!^%1z~^@>eCO@>CC~o{zXT;<<=_Mf_VEsGY2h&_-$Fv>Dn0?F?$|5Kk&-u>kDPuf2*eA4{!bsul~c=+SNkNZDv|G4_&%#YLFe@%UhOiy6+ z|M#C-@}MfvXw+`Df83&jQ7cdMC%@@}mR3Utb7St1wVuoit>F!Q*B8>&p9Nr?4r0OR zF`+CB{c8$%Bpm%_8d@xpMX_iW!(zcH@z9YHSrSWTDHzSuSUSsqc9q3+EE}3aE+lXs z%V!0wkQK3FR>DfbVdboXO=mM$C7TKTt(w)aS~iQ-vDs`6t7miBJT{*-utv6kHL-mma=7RIa|RDtQF|(WY@9X?0RT-x3Qz_Zg!lVVE3|n*nR8)_Dgn>J;)wn z53^J35%ws1j6J~~XJ?>!JPD2C8TK4I$A{S<>j1}hLkHRbO=1l*@||ow>){94E_Rsj zXG7r0n^-4Ey_;Xp_wWvWfURbmc{{tGJHH?V_j zKf8q;LYX(SBkWFg2m2SV;q`2Q&*F7_HXG)1`5ay=8aNIuApa`^op!PF+zUOanfLRZ z{6YRae}{k0zvU(=LdufbrDM`L=^ON^64f@q6yU`X{t3Xnrk%2HP33^(R``7=;r1& z)h)@bz-_?oh}%nU-?&G(7r3u;KjePW{bl!$+`sae?2+fu;<3}?5swR=UY;qQb)G9c zcX^)hJn#9Lm$%nsubE!m_;-!h<6hrPikVb5X~m>-lP-7%dRKU_@b35C>ixX;8{S{| zFrN&cZl7VFLq5lSp7(jn=PO?~-(24fzHj(Reo21w{kHl&?f1EVsDF|Fu>TSNbN-(P zxCKN6WCzR%=nU8&@N&R+fl~wP0`~?!9r$*Te^5ctilDtgXM)}h`Y|{qxHtHb;EN%3 zAvc747FrZK9C|wRtFXAR*02p>`@`-Jdp^uGxnOeV-oO;95=cj%V9v8kS{6zR$5up*a5t}0(kN9fZ? zdm;AgIN!LaxU{&ral>&Z;?Bo?74H!r6JHSD7~dJcEB-|M)A6sze-Up=h)SqUFecoX z@NB|YiQb91i7OKKCcc>XQ&L(|Yto*iw~{@Qvy;1%Z%lq8`BF+r$~7skr3R+1NPQ&r zVp>_+%CsYC&!&Byu1-%&?@qrz{f+dC83`FJ88>FUo^dHNEwd$aZ{~}cKW1sO=4Wll zI-GSb>mwc0CFthrw(3r0`)4o8K9c=Gjy9(tr!{9o&fc73IZx-D&-pT!<;LU|<<{l4 zqzf9nO0_pXF!g zcjuqUf3Lu;prl}H!QO(y1&E*wfx5NT+zgYfO`B&vXR`^zARFqZBtyosEz2cFI3)6k4 zub6)C^e<<`&1jjif5x*jzCr(UB|B1zm-b*3RYQt;L3%QsU!)%o(YyNTbs>H{GCq@E zG#O5uFx_^d3?IDugtTX5oz(EzXDOzl&pzWXnS4K^t}H=vGIka=sypN`(?@4Z#atH@ zCJp6%<$HvT@8Do0S^xe($PAvZgFTy*nkl&0)$LHvRG~$!Tl!o>_ zkAweW`<5-+afmviF#N~h`6-a&Oc$+3+2YV?bb1^?(c-}G0r=t7?!pa+3vPL?vU~bt zGrB7_9WA*1*M;4Mk1sBLrS!1j7Q;jM!|Cv0HhSNEgac<;qer9?m4uOixkl%tae+dx zE-N=XE}h5aWasJuVFVB7(K*?1(NXHa;AuQKC{V58-R(VH-L)MxCFykokM^u;Z*S|a zTv$_)Q8n;HPgnc0NoyAQc~%rAElctVi8@r%Cty#LXrnaR{d?z|cECF!b z4jV~}agp&Tbx>e%AqVQ9Fe;1|mFqztz);A8R9U&j9Mr&5JRmnSC+DGVqjAU1O;^vU zC@9&`)7{=&_Tco=GN~ddJ2Sbft9ildbt_iPZ1Qk*Zzx>Y)Mg6N*DS~=E(Fo34ZsuZ zX2BCIK=8t5GaJbFvqsPIOz64pXd_LWuRg?^quxyY`SbcYMMZx4$N2fj^o=)ue9-@i= zbzym>)D^Z;t)8pVbcA(FmE{Her6uW&Zd2swCequhc=x(058t3W zPPK_LL)eeJi8qq|8ylGu$(u|s@X{aU`p_FhIk=~z{XOYo<0(!lU`x^I6&L|98&P}u9s6jb&C?+MM9xa0l z1PoKkOK_szBf62o#6H}c2SrMWCjVtktMXFw<}4~S?zm>%P}8i|;zGV-?sg)Xh2B)vJIGc~8o&AoMP%fh1B?k*mS zs+N%kCy}I++CT#jqG4ooPGk<(`Jt1<>inWr{O2Ci7QSXnXQ%1Nzuo?M{VaaoG{<1z zsiyY@T>x_}-bLHFM#b3z9UY~K4~Ptk)aVrA@RDu2dg>M|s;pYjT(dlczhOG)tD3RS zIDD-~_cFCwpO#lOBR|Q9w;O()H_&0+C}7J+`3pglDbTQ}23cNML{~UBmmZ&$YnEob z{?NAl2aQ(`l+0RI>6&rd>UDcIEvTHaps}XLP}O5Gq1N$ThiG)aYu1>QLX9DV-*5YCa?)3%pT3hE8)VsU*HBMj76VtP^($llDO%LP@<={WsFAp#*01T613)r;+ z3mEQT`(T zhYSNpEBTQ$c@YoYMF+pB+4K_0rbv|cqFf$#&56Z7SMgK{ioA>anhO+oMF4O&&@lp* z6-m5tdb#N2B;@BQCdQL0R{XZR^%togeJ$zG>6@Q&O^n!b4+X($jLwe0-O0 zT-n%LJlP{8@O!8WfIVxpN7W+T1YM&D^(Z_YLee!b82wykV{xqyq4x7tI#6^}e6%`V zJX4Gj0MdXTsc&3dzcj*i`Q(V$i0h9YJABjarS&264Nv~=ug{-(v$?5%vNY}P6kTR& zN@h-SQeR8+nz_}Zk>O>HM|R(Q|A~X44dHL`b)WqD!FAUzZ2E0kK}tqZW-`Jh5{*mJ zDf9ykNe3OIF7%p6=p*SodUy?Yy@R{1ond;_IP>o_lhIv9T2FERM<3k`^w1)Cc()1f z`oL<{lDzbbwCM_J9;6_tq6^@`H<+I1+3md*WwYwnntpw*M3-6o!tYCSa!RG6jSYpf zJls4M&uD6uil0cx(j}Pw`MZ=M2xZPyzcN| z!?LdC=B{N8gNHqy;YH8v-KbVK)M6Out8GxLH|`Z}L$GfYcnewRhmPY5odstMDLn3* zZ;m|qP=DQX9Q6+MDxP z`|kYZ%{vbdG%oL6YUo?u^n0G)<`QW1ID6O8XLb&0G<7ox<+9nnOHKE8WtA&%w90S; z4pN=bqx~XJ7>#_s(P#o2m_FxIM_M@mP~c`zz0lGGw+_$Y3(A=^dJ$eKYIn4UJQRSN zQ5eQ3_e%pgC$a}Oc$lWf%q=OI%TJq{)?a5SPwK{d&>uwox&WOjAX*iTg70`_(}g!T zKX@lV_>4!G9yguhp=KB)cf5o66le{YC3jQ0k#~R>f33i%3dVhSS*gr`5S>1Nu+m3s zRMD#V=#Ue}+ix#)D>!s}kBcVh(Dqvs+|{V$hGWNgKQP_f-;c&>@9$U2l2EYR6GT}= zAQW=KIAp4FGY*Z^Xz=c~9{zW{It*Tr1aIDgHgks`$HJYyq~*$*$_)rQ4o@$Fldhvnzjzfi8%mrF;xmo=<#bqlI` z`l0kVUievdaZwKVCJX#s0yyIZlolPrY^|URTDrB_RN+;7cUugVZNodZS?rW89&0;n zjFfr3TMae_N~00=sX?54;DOOg=zNhu(R@MA=aTMosn}qUd6M+XemsNGi?j}6;$RCi zH|)BlXYNb&#zP(luI9IyI+x6zy@bwJ9}v6=i7DM?E?)(14$$$#2TU7Zb34BQ{P~`w z=zC}t)p&B~1KXX^pSvS*Z?umEN zm!5*zKG0*jwCSo6P4U)Y)6f6r_q^HF^`>dDOe5&dQi1#qbYd=a zB~pJ2Mn2>_Oa~=q+Kh3Szwc&fHpRNh@8pfX#5K};M0;28aS#r!dGpQg?jlui^9aR; zWqtn@S>Jc1k>`~`(`|!7;pd|xqc5@7<@e)--hqzT-Tmg95mIaOrLW{VLU|~ES*CwL zG^h{!w{+aP?bh}_H{9828s;%n5A3Sbd;nL#-IcV50eA*F=gblJ9+oor1AqbYMOgG9 z{DJ;G2YRH8Ev_))CD=R{`Fs3lSuYKtF}!q)JwO84GG1%E`E!+v?>&`WRH*CR*w$fe zcg=k)F}-BL(c~zPnWbw(CQr#tO3L){Xzb}*W_oMRqJ80$3oG42)nR}~VmaW)DZt4W zH42Fqq$}a*8Dz)CN9zNXAvG%Kwl<^Wzp$jk*uQFfoQwN)HKk?M*GWe&#b)pM_WG9L z;kqTwb(Aas{3Azy;6Df)h{uH?Zqw1M<7eQ&)jNh-H}w>jRF&X=Vb2!NeP8eETkNjZ z>+0{FlciU?FYW`3G)_SfLgE2NK@(D3NU;%=kVtcZ;u0NoscWFWqol!K)zjt@|8+^t zu3gn0*Kb&VeOByGBdzmW__8x~!;1+>QKo<~7=CZj6BU1fCK6F>lm?wit%_1>B6H)o z|N7zWy(_n>O}DB_XASlYcg`qvSHj^7h>i+J$NgB{D0$z8fH`^rw zSJ}0oQ}i?p$pUdGBc!rj?C4+9S+vOCrENoB&v1{fwmQ?rzv=F>>eA|(va0mW-94K! zljoasMq}&Z?D(viun&3Wq0*A#X~o6VW;v+b1@OYY2fQ%T1Q!HhWFwDC&|OBOOJHNk z(iUU(&SL54D2vbSS!jBNYiAS`RubHZG$NKyV>fyrJQL_0e!9aw+{iJCXY@jtd{6j| z{$aF<-7TJjG!goH4zU=?L3Q-qM&pI}xDaFWLcDV6Y^(n?$<5@wY?cBa@qlG4her$5 zL<6waYp;6f4 zqw-&HPigh8T{R^hBqHXIwEh&E#U+S|#lv+9t@v5M8EB@J;5mz^Ao9EVR%O@DG)AXq zCh+g;<1&`biVVz3NX!DB!mq)9hxgG_%zB|LuF|=1zS$1&FngwP*{z}eurqUJeq2KS z?5bMhiX{W9l1uWEqH`K+tGhf-Oa4jPu!!)<9+M``D6gEic)q(=e8SXeQ$sy{eJYD8 zXH&hL`!`FM8}rJ_%Z=?WX&$}JTxa@ZdSPi54>kF;344I_jBva! z^bAE0Sg`Ar4F@$huI2wUt>b&-dNAgyg7Mt=dO*OwO>6T5-69w6T{O)tu%Lg_-o=q_ zT9onijvYME^!M%Cd63D62a$tW)^B`Kp3npIIq^Cu7CKE3w7%$V!>3Pg-Kn`&KK-Qm z_Uzg3-F`SH!!c>JNeVUN3omvSyj&_p6Hs~cJt@;>M233>{9%22s$1fc^?#o->!kZ4 zzbQ%l^M4wR{~UR{G(#>Y0ziC^a-au6FTl8n!8HibMe^@WN#B*3KICWrUBD|ATr724 z-f}SyngM5l&p$8fU+Mh9i#6HUjXJWhtigonq3o%HZb4l@|S zl0A#g4ul7;2n-)M+o{cN>2vFA$=0IWq|qa6KYZaB8Iii$ZjP{-VqI=ME3M zQz(Lee{;3Y^ge|mI8;9x&yVmQkdGi}2*0)yM?czB9y2w3dV6y_{?9X5$92QJ_NBhN zU%$?;b%j^Y9Gl^NPS+%qp8$T&gPxv<%Az5rG-Tn5VIdoCfgGKqb1oqM*kwd zbmYf~jDpFk!IJ2!H*VR`UAUmOG*0y^?wt@-G1b*zNQqBQa&0axYg|2S@b#Xq&&o=! zf$AlJhf|~!sTRI1E%{2~;nPMn`gnavZWf%{8Uh1;ZFQVBCtDlDBkD_=k{h$K8k3uf zj~6dUZp_T2%Rg|n>8Axr4XN{r8yiaIr8XufH`4X|Qo3G#-Oimvzj#zgVWq_i%5OWSlXI{ zHbFFCs6v8i>;Zp?_=T!_pewb!FgYfBI6JSVrhB=ew==aUH#tVPsV6qNrt{v_)24+? z?VCC+$YWunr(ay$?$o-{qaZSC4^SFc^Wvwq2v`k9O8#U*4UCT7IP z&s!`#&C{NK+VqxjGxy%S+4SA!Iqk>W=a;&vSO(9(>u#B!yjf`0*EvcqPMTIwq zPD%EPP*cuFC|k`h@E?F9q%PM7LEHu*_#)2n-0l39E$6?b58kt^5j7E$A*CY7 zVyNes4fU61FI_r&PD{)6!-a*z`O6Y(3xoZAy!=!B)Sh1IC{H&xPu{rn=B4cw6L%{63M z`cpfT&61TJb$e}UYHjNJ+FHpgd1i9*O!RTWHInK1tB5&)iii*CtWl>R9rZ?4@dr2BQHlCXjRldj@MT0!__FG*z{R?R%UE?SZqSn?74N*XXvtOW8UPA z(V6-F0p5ZB!9ii+8clX(etJTN|I|qk;~e>B^}HJ8Lw^ZS{93a9;yf;+gk_$*rEXeM zO!(C3tfa`$P;Fd9U0qd4RZT+r9A4k&={Y$lU~-sm-lU|!pfHU_SD2bw?BVK?6qine zC`V48js2MewS`YxV>}>bxNZTLfUabF*FaWzz`Fx!GvjjVR3b`%Em0=qT+^fW;9e0@{ch7HcVkqFV^jsYPSto(74V>nbbaZRYB6N! zB+}OvpN(DIf*)9O-GMIC-^YY6-Wzru9*HE-%~1>|<%vFMU*3^{?gOTUV~cYgcD?kV zZE+U(T7;aYm@~0p2sjYFDcjfz4_~!vOXsRWw~w3@yJd@O^`(z&3pT^q3O=7k(La=% zt;-s#ayr!FSz9wDDK^+Qpr$G!B|gZ@|KOPF{t~k!G;mT_Si-`vAg|C7$+lYbF`3>? zz>G#bST5$V-=U^|7>#F)#^=Tq{~lC>ODAm$HRFF&X5vhZdqmy;Iwx~MTm;{8ax0wt8le#Ie$}F z`dOpY6dsAQfJeOS>ZZSi_a@Dpra+mM=>nM6qv=7%tLLeK_WDza}vXjr_9 zNTPy+$xH}$5}yiuRoX>Idmj1!0sZVZI6DfdW^u$*j2I`E&)x0`ZO+Go~8- z5O0nuI6(t4_Y#7KjS5_r&?`!Bz{7ya10QF=pPn?z%ULPrI3)N7N^>$osJ!i)o*s%u zt~f{0$PL@i@rYI)K`}`l@f?LDpHuLYI#eVdARPenIMTs3sx{&$92VPzxyFhG+qjoX zj(Z7u`VjOoXR4IwtWEsu25JnQT@Xxemk=kRFi07S_1yc<9sYpYC#4lSa|HtLH_Ln#ujikE~h?_l?Ex8^MdQ_SFcsJm#cu_*K}={4Qj{gQsIPWR=4rhdIvg znm#;SI=rc3)5fylcPfTAmJSb#PtXH%06vqRmYx&TjwVZ2vF6D|DVy?Y9vDI{5_JH{ z`gk79mu{Z7uwZH4$pgdl#o6?rA1_L6?ppeCSBszNr4*0q7Jci&Eq6X!Mdz(|KFb%+ z$>Fo(`%L@#w%6yF9)r_@`hke&3I0LU&BB!qalM^_Db2w>g&&=S_{Nr}aHB(cHxV;h zixYe}rZ_Wf#D|j|xX_`zKr<8ClqvJym{N)VWSr&pCqo9BIa%l6H-~aRmmA+&Dv6_G zPRbO1G-l*bH;YkSJ$FM0RPk!_N16xlXDDk9rw z&z`L+KzOEa!-Wlexha2dKG2{ThNMM~BP1GP1CVHBqG*I4M7GEj&jbZ7UgBtH0b#g-!?ZC&USYTx^eMxLsC&;N^?S1Zc^TC;u)13;}bE! zNX)CS;hHOm_3=sy7w#G_;wR#WBQIPo?&kysqPWPLy?nfpm&0TxFwzmmA;OA6aoOauvZ+mWqT3d>o@RGqMV#u?Fw$FHE3PCLq3&v8M_x7UY{ zUk+5rUlAi#d}GnXwdNjpg>>UL3pbi}T$sqeHd1>TNX&3tQ2cMuc$ngciMHe-UMWQB zi*j-nMI61HoKZ`mC9=e zyNBCvE}YuS7tAPerL-o{l>{~X?Fk|_eHs1V#?H0q|LL;+-@4j9u-?1GqW>E__ZZjN2iY4| zYZ7Izi^w~Lub=W0reYSDt!x@gBb7p)dJ;*+;{?eSiR3&~?xa5Rh&Mqzz7FE&rE#kh z!pC`akiCep3jEyR_lIBJDsx279v8yDB?nQ{n}kiX<0>>qT@0g&^)Cy6!?k#?&_DR@Lo zXOU%BP#|ASjaX)%5TJCov1tJ^?@M-N+x0d3vYXK8uQ(Phx|Urw{Ik6xAUycn-5d+`Qgo* z`Kt#^uQi)qJ3#NS(J!Sm*h*w&j$`+z0?}PC(uD}SM-$A$I?8L3Y7=)3w3byT*Cy^5 z_4rI%GP`{L>{8FaM0?~{rB#E92V{p0MW9PNiNWhuuTxeJ0n zh24i}eh7{6jyVi`De-2XO(uiFm}B!9#*}I1$}wdw22cKASEOLbu|?Xz=}v8BAG3v z<+HAPNHuFTF>BAad$MA$8lH7#*0AW4GQ3Xc-~{I5f(`~}K!Y5YoFsgh{k9e0bWh5o z6EQ%0ul5%d5j5RA#tZ!YoJ;5IeZaELOtHjiB+;p?E7eW+Q6(3~RY_~-j4ZpHB5KB^ z0lwi7;z(%9ax`Aao8b0%-L|22PH0)!Y}0LHP`gl(>**058XE55nS1FQ8zjv(-NUFO zndX%_)^VlymMWFMJ}$~}6}f)C1cR?%?#TYjAdfj8qm`1JkBr_T&-u_Goj~N@kTvBv z1B539#_49YriQ23O$E`1_=e4x5uL3yM^i{1O&hHgx^e>SHd(uORPHf0+t)Tx@@#To zTy|Y++SDl%Ceg}}#Aa!2vuWkr{H?-=flL{U59ISzJYtrlHXElsKMbG7OJnAc$c~NU zPG^!(9v*UQg^aMRW85qUJ_oYmr7?N7vMyKcB-@r~D(1fkf3zI=G5g*p!expgL^aOv zk$p){F{1j+IFTQ~Mpk2F9T%?)N_Fl|Q6tH{#TjyD+{kxDQGJZA6SmL|Mx)LNLU3X^ zN5+f`$wX`U<6^-pjmAtT7;GM?aR&X^woxX8hv@t!YMa{>VvWH>)gsjMOP@K%W=z}2 z+9)MEf@dcM-Q@%|G)=YZh%?TU<1`xu-^pHO3wC0jllBP^=S`WB z`PyLum8?6`oHIW}|KYZkeE`r(&H1ZpvP3Mii(M?ataj<-?`tExJaRXWd^|R-{Gl>; zpTGlmHP@Td%fZwCm$4Sg3tkBL!ze-z=mq5gJfNmb3e0st>VY@6o5A-}=bHYGf~Ek~ z?|DkCBI1u~Y#(Kxa-97`7C==k{5D0N*u9!mD3r*q^`s~JC% zRn!(}Z9ANn8I4cbq4S;ydy4!XoLWx~cY&>n(a_k3xcv{BYHDGO?a6e7>uFwGQQM`EA6HJs**eMEIKQq~}B}G0QAJ$88Q-iq?$RBw|d(+)g1&lLhaXvqH=k zxuZg2o#$zeNP0V;?+Nup9?r*`_es2mIV{jo+#zkVZAWxV&$;}3mbVoehfO%I#q3{t z@-p*VXj~?GkgUj@phu5SmD`nGecL!xv6CgAUye2;Thg#@*7&mJ@)Y9r3P^WPOd>mR z^UB18GSi7H}eX~sVH+K!&2iF(4fX>Y?v5* zh^`$IBdy4sJY_C4yuy~bH{;@rcqdusSLRQH6R%TfNFM)Z^HuqNg<2{zi+lm}O-k5b3w>0`2 z3|uavEIYpo<)t{zDN9j`grC@EZke@Mhe>AAs0n4ijd3ObHZ(dXq zK5uMlqWR_c#H8-|IR0j6#Gk&ojM-}OI8o)^&5Ww^!sb7tNLssOd?my$XZ$#d; z&2!(FpMyr$DVO&pp8H8Q8-;mB;??BxrEb2zI(MHJte#{N;J%RUBa&8&TRkYJu@b+PvxoA^@ zn8Ii&hR~PwGvtHGc@Wg@Vjc!^41leyi^(|!SZ$Ez+Yra<4x{^sSPQMK^16TlxYHf( zu(AQl;aSS!2JrGM8neEE3ribq;#)--+l~1$}Ad^P;W!2Gy4RSI5Vl)O= zrdRfgIhiA^)=8EEC#pHA~bcA5CtnFaZlGsI? z<)93C9;u}aWhSXyhRuA^xpEouoKn+jDnP=DmrQaOJ{~!Og;4-nIppL6aOV73UMj+z z+(#=$h&mx3GE~dWF*xBDLJQps*USO%%7-ZV(!FR$!Bc=wUVj4R%PUaGo+M=*3e%?o zs*zut{vMG08o5vvl-l>uYj9QR)SJa=kPIN~taf z6M9h9BbzOC=oOw8xKO`B(TC_M(;yy_<#!>TLAE4HL+(DJa5N((QYtj1uUKI`cMgkr zhR3gr=Tp9!vvSVg=p9Hh%-Iy{5P(9+E2DQpG=DQLh+Jn}pk2$WQ_73E%j+p+#d14< zRvn_9(Ld!D;MA+&YC$*08XbH;8r*ciCWX=5>^6yu<~Sma^KzyXX$>gHA!>-UTDbI| zwG9<2(N_CO!g3#w*9=kQh7}@nC$Ov?G9)vwW&Mzmc`_eRA8R-Wn*@&fY5YA*>1WTn+!rF%bQC6|r8WJ54B4~Q6(JB`p*tH~+d6jRCc zksa-1`>4SlWRy*|YLi%VB~Zz&2KS;|(14aEqXlIipB5JvYC5ek4)IDiWAn*Y|EZz; zZ>BJCUnu`_#DLl8R89`cAsQlK!F~okTByw_L5kI%t>9& z@M%yKhie>AvQr}Vk44U$+e-62Jkbu&VdcJ$Jbd(ACoS?$OZ6txKk$)lj~WRB`sXA; z7!)(dlSwXkVig@wQSNk*sB%3{u==#6cGL7FHJd(kK#C*<{TrzngAnFNfw?I5BC@6v zk>H1>F=z89g69z%_6=5@A9?K9Q%@a}W}D|Gj6BxcyK(jE$9eAKn61ELvo< zzQ%$DO0v`$^J)jO&$wC0=`h08BB{q;Lx`^;!F|T)bR{9P40pDm5ZX=1bN;-Dzfh`{ zYy}Dl>acbJ&n1cesoe?&a?}MGGI7nwqTEZFG@7ipY+9W@=n{00OMo9JCp%or_*Mz z85^8nV`+!8LZ^(NcAz{25tne<7CFi&amk@M%)^8&W@uxvZj|6Dcz@+KM$fm*o}O_1 zs9rGFsd3kkQeu0TSxJic3~P4s-w8e=?|>o|EFd5SXyP?4i2I%%f1L}N6Kk$uwF`np zrU$h#d}l&Vi5X__R#*U@)6Vm1>1swm0$phXP z*?J`eqV+ry#5!Y0BDb5bbw$*P4iau{HJ>A=Zua#$Uw>@#dP@pto7bA=iIyUhlR0U9 zlmxLpN|7C0)<(M=7g@4OLuAk%9&gER<4XC88470*?q%xx1fmg2d;0>;96E8r_yPY#kg(#$48y+p&| zOb#%y#9SCrKTU3)7dq3i(ADv9IQDnJ` z@GBxN1X(_Dy^0HoRwa7PvE~@toHhrC0VShmEO6%bAe%;u_A!raN_H05&Y>L+CE zd5&buL{CtME&L0WY96yi!QO}&gN%88*07kD0euqKh}AKyvogl=)m3)$FD6^Cdd+6O z#idJQurlXD%5y+soz-Qboh@EfcGU&gVrM_YV+?i-EpDB2=P7##$Y!!wXbvs)y2U`V zAZ4}9#vlX?%s9!mnK_>st6WhnG(*af%RX1^GSiscRM{$Xf& zyV{t=+dXB>vSSv}$6|d^A>ZX3C$o>(`C6loDAN8;=WC8y<2_CmAC+JoV+}K* z=U+)(^Od@Wovv$Uju!87y1oQsKowl^jw>DOHE1z`3_SNh5GuDbuuE_!J5xI zCI@+Je(YOHxjURC$SS^YCwaZtN=v{j#~@@+r81|&X71!0Vj5<%J;);K))ruiB&k#& z>>e7o1-~Oo#3`y4#Ied68P0XKYp^PFFs)0m()ub`qfOW?7QZRVuwARI8m38tPuK&2Stqt2SYS~2 z!K%k#w6W5}Y{+t7TX-xwjT4wCFM`G_i_Pi)S(TzjR@#H7*s4|#`RE12RlbA_LDVrM zS`YcE55P%JD~)R4Z1Le>1+1^ziA;=O5g6DednikSM;EIvO&R4cDyHm)AWLe+>MT@zE zs%pU}I^;n>DU$h3%s~BrpP$G7MP8S>|9qC7Vi5nQbM> nC#g{7>fD_!uWtS272k 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 E0NIXjpa1{> literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/fonts/PublicSans-Light.ttf b/packages/docs-site/src/fonts/PublicSans-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..00ed0dd6333bef1505ec3cc33c008d6e02d8b856 GIT binary patch literal 60840 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 [id, { data }])); + +// See https://github.com/delucis/astro-og-canvas for the full API +export const { getStaticPaths, GET } = OGImageRoute({ + pages, + param: "slug", + getImageOptions: (_path, page: (typeof pages)[number]) => { + return { + title: page.data.title, + description: page.data.description, + logo: { + path: "./src/assets/taiko-og-logo.png", + }, + // bgImage: { + // path: "./src/assets/taiko-og-bg.png", + // }, + bgGradient: [ + [15, 2, 15], + [58, 12, 36], + [132, 24, 75], + ], + border: { + width: 30, + color: [232, 24, 153], + }, + fonts: [ + "./src/fonts/ClashGrotesk-Medium.ttf", + "./src/fonts/PublicSans-Light.ttf", + ], + font: { + title: { + families: ["Clash Grotesk"], + }, + description: { + families: ["Public Sans"], + }, + }, + }; + }, +}); diff --git a/packages/docs-site/src/styles/custom.css b/packages/docs-site/src/styles/custom.css new file mode 100644 index 00000000000..afb85d3dc8b --- /dev/null +++ b/packages/docs-site/src/styles/custom.css @@ -0,0 +1,30 @@ +/* Generated from https://starlight.astro.build/guides/css-and-tailwind/#color-theme-editor */ +/* Dark mode colors. */ +:root { + --sl-color-accent-low: #3f0e29; + --sl-color-accent: #bc007a; + --sl-color-accent-high: #f3b3d0; + --sl-color-white: #ffffff; + --sl-color-gray-1: #eceef2; + --sl-color-gray-2: #c0c2c7; + --sl-color-gray-3: #888b96; + --sl-color-gray-4: #545861; + --sl-color-gray-5: #353841; + --sl-color-gray-6: #24272f; + --sl-color-black: #17181c; +} +/* Light mode colors. */ +:root[data-theme="light"] { + --sl-color-accent-low: #f8c7dc; + --sl-color-accent: #bf007c; + --sl-color-accent-high: #5c073a; + --sl-color-white: #17181c; + --sl-color-gray-1: #24272f; + --sl-color-gray-2: #353841; + --sl-color-gray-3: #545861; + --sl-color-gray-4: #888b96; + --sl-color-gray-5: #c0c2c7; + --sl-color-gray-6: #eceef2; + --sl-color-gray-7: #f5f6f8; + --sl-color-black: #ffffff; +} diff --git a/packages/docs-site/tsconfig.json b/packages/docs-site/tsconfig.json new file mode 100644 index 00000000000..04c1c278b8b --- /dev/null +++ b/packages/docs-site/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "astro/tsconfigs/strictest", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "~/*": ["src/*"] + } + } +} diff --git a/packages/docs-site/vercel.json b/packages/docs-site/vercel.json new file mode 100644 index 00000000000..27b37b5d276 --- /dev/null +++ b/packages/docs-site/vercel.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "redirects": [{ "source": "/", "destination": "/start-here/getting-started" }] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c828b85eb11..f8c3f5a1325 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,19 +26,19 @@ importers: version: 2.26.1(debug@4.3.4) '@wagmi/connectors': specifier: ^4.3.1 - version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) + version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@wagmi/core': specifier: ^2.8.1 - version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) + version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@walletconnect/ethereum-provider': specifier: ^2.12.2 - version: 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3) + version: 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) '@walletconnect/modal': specifier: ^2.6.2 version: 2.6.2(react@18.2.0) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4)) + version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.15) @@ -65,7 +65,7 @@ importers: version: 4.0.0(svelte@4.2.15) viem: specifier: ^2.9.29 - version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) devDependencies: '@playwright/test': specifier: ^1.43.1 @@ -93,10 +93,10 @@ importers: version: 7.8.0(eslint@8.56.0)(typescript@5.4.3) '@vitest/coverage-v8': specifier: ^1.4.0 - version: 1.4.0(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2)) + version: 1.4.0(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)) '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3) + version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3) abitype: specifier: ^1.0.2 version: 1.0.2(typescript@5.4.3)(zod@3.22.4) @@ -168,13 +168,40 @@ importers: version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) vitest: specifier: ^1.5.3 - version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) + version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2)) + version: 0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)) vitest-mock-extended: specifier: 1.3.1 - version: 1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2)) + version: 1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)) + + packages/docs-site: + dependencies: + '@astrojs/check': + specifier: ^0.6.0 + version: 0.6.0(prettier@3.2.5)(typescript@5.4.3) + '@astrojs/starlight': + specifier: ^0.22.2 + version: 0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + astro: + specifier: ^4.7.1 + version: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + astro-og-canvas: + specifier: ^0.4.2 + version: 0.4.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + canvaskit-wasm: + specifier: ^0.39.1 + version: 0.39.1 + sharp: + specifier: ^0.33.3 + version: 0.33.3 + starlight-links-validator: + specifier: ^0.6.0 + version: 0.6.0(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)))(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + typescript: + specifier: ^5.4.3 + version: 5.4.3 packages/eventindexer: {} @@ -186,7 +213,7 @@ importers: dependencies: '@wagmi/core': specifier: ^2.8.0 - version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) + version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) axios: specifier: ^1.6.7 version: 1.6.7(debug@4.3.4) @@ -195,7 +222,7 @@ importers: version: 4.0.0(svelte@4.2.13) viem: specifier: ^2.9.29 - version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 @@ -253,7 +280,7 @@ importers: version: 4.2.13 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13) + version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13) tailwindcss: specifier: ^3.4.3 version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) @@ -329,7 +356,7 @@ importers: version: 6.1.1(eslint@8.55.0) ethers: specifier: ^5.7.2 - version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) + version: 5.7.2(bufferutil@4.0.8) solc: specifier: 0.8.24 version: 0.8.24 @@ -401,7 +428,7 @@ importers: version: 6.1.1(eslint@8.56.0) ethers: specifier: ^5.7.2 - version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) + version: 5.7.2(bufferutil@4.0.8) solc: specifier: 0.8.24 version: 0.8.24 @@ -491,7 +518,7 @@ importers: version: 6.1.1(eslint@8.56.0) ethers: specifier: ^5.7.2 - version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) + version: 5.7.2(bufferutil@4.0.8) solc: specifier: 0.8.24 version: 0.8.24 @@ -512,13 +539,13 @@ importers: version: 1.0.6 '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3) + version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) + version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@wagmi/core': specifier: ^2.8.0 - version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) + version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@web3modal/common': specifier: ^4.1.1 version: 4.1.11 @@ -527,7 +554,7 @@ importers: version: 4.1.11 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4)) + version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.15) @@ -557,7 +584,7 @@ importers: version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) viem: specifier: ^2.9.29 - version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 @@ -648,7 +675,7 @@ importers: version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) vitest: specifier: ^1.2.0 - version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) + version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) which: specifier: ^4.0.0 version: 4.0.0 @@ -670,10 +697,63 @@ packages: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} + '@astrojs/check@0.6.0': + resolution: {integrity: sha512-Q6fct7FvByTf0L5lvH2QwFelXtLViWhPNgMfOvrGq7spV5SPX9jQPoFxH+nRFh1oDhBBIWImRjkSpSyhX9fQHA==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + '@astrojs/compiler@2.8.0': + resolution: {integrity: sha512-yrpD1WRGqsJwANaDIdtHo+YVjvIOFAjC83lu5qENIgrafwZcJgSXDuwVMXOgok4tFzpeKLsFQ6c3FoUdloLWBQ==} + + '@astrojs/internal-helpers@0.4.0': + resolution: {integrity: sha512-6B13lz5n6BrbTqCTwhXjJXuR1sqiX/H6rTxzlXx+lN1NnV4jgnq/KJldCQaUWJzPL5SiWahQyinxAbxQtwgPHA==} + + '@astrojs/language-server@2.9.0': + resolution: {integrity: sha512-Q3wtoDh3RRfjYNfE5c7GPncAmZ6RMo3AQQCHBExtH5G4UiXYSxg4mPmSBdq+97yIXZWlN63W5V77OxUReAwQYA==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + + '@astrojs/markdown-remark@5.1.0': + resolution: {integrity: sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ==} + + '@astrojs/mdx@2.3.1': + resolution: {integrity: sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + peerDependencies: + astro: ^4.0.0 + + '@astrojs/prism@3.1.0': + resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + + '@astrojs/sitemap@3.1.4': + resolution: {integrity: sha512-po8CqDCK14O6phU1mB5C8SyVLyQEa+7pJM8oXxs1mVh8DgvxxaA5E7lak1vzOmBcyyyHBW32jakGqNYc66sBRw==} + + '@astrojs/starlight@0.22.2': + resolution: {integrity: sha512-z9OR6ChDKIqaw8P9Xer0u7mG33icnszBhqi28BAb1zDt21yHgOjXcGbP73T+3bzG1aWdZD85/4WmktufzD1DPA==} + peerDependencies: + astro: ^4.2.7 + + '@astrojs/telemetry@3.1.0': + resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@babel/code-frame@7.23.5': resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.23.5': resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} @@ -682,10 +762,18 @@ packages: resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} engines: {node: '>=6.9.0'} + '@babel/core@7.24.5': + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.23.6': resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.24.5': + resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.22.5': resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -735,12 +823,22 @@ packages: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.3': + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.23.3': resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.24.5': + resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.22.5': resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} @@ -765,6 +863,10 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.24.5': + resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} @@ -773,14 +875,26 @@ packages: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.5': + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.23.4': resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.5': + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} @@ -793,15 +907,28 @@ packages: resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.5': + resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.23.4': resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.5': + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.23.9': resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.24.5': + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} @@ -1371,14 +1498,26 @@ packages: resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} + '@babel/template@7.24.0': + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.23.9': resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.5': + resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + engines: {node: '>=6.9.0'} + '@babel/types@7.23.9': resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.24.5': + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -1411,6 +1550,19 @@ packages: peerDependencies: postcss-selector-parser: ^6.0.13 + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} + + '@emmetio/abbreviation@2.3.3': + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + + '@emmetio/css-abbreviation@2.1.8': + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + + '@emmetio/scanner@1.0.4': + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + '@emnapi/runtime@1.1.1': resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} @@ -1426,6 +1578,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.21.2': + resolution: {integrity: sha512-/c7hocx0pm14bHQlqUVKmxwdT/e5/KkyoY1W8F9lk/8CkE037STDDz8PXUP/LE6faj2HqchvDs9GcShxFhI78Q==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -1444,6 +1602,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.21.2': + resolution: {integrity: sha512-SGZKngoTWVUriO5bDjI4WDGsNx2VKZoXcds+ita/kVYB+8IkSCKDRDaK+5yu0b5S0eq6B3S7fpiEvpsa2ammlQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -1462,6 +1626,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.21.2': + resolution: {integrity: sha512-G1ve3b4FeyJeyCjB4MX1CiWyTaIJwT9wAYE+8+IRA53YoN/reC/Bf2GDRXAzDTnh69Fpl+1uIKg76DiB3U6vwQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -1480,6 +1650,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.21.2': + resolution: {integrity: sha512-1wzzNoj2QtNkAYwIcWJ66UTRA80+RTQ/kuPMtEuP0X6dp5Ar23Dn566q3aV61h4EYrrgGlOgl/HdcqN/2S/2vg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -1498,6 +1674,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.21.2': + resolution: {integrity: sha512-ZyMkPWc5eTROcLOA10lEqdDSTc6ds6nuh3DeHgKip/XJrYjZDfnkCVSty8svWdy+SC1f77ULtVeIqymTzaB6/Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -1516,6 +1698,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.21.2': + resolution: {integrity: sha512-K4ZdVq1zP9v51h/cKVna7im7G0zGTKKB6bP2yJiSmHjjOykbd8DdhrSi8V978sF69rkwrn8zCyL2t6I3ei6j9A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -1534,6 +1722,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.21.2': + resolution: {integrity: sha512-4kbOGdpA61CXqadD+Gb/Pw3YXamQGiz9mal/h93rFVSjr5cgMnmJd/gbfPRm+3BMifvnaOfS1gNWaIDxkE2A3A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -1552,6 +1746,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.2': + resolution: {integrity: sha512-ShS+R09nuHzDBfPeMUliKZX27Wrmr8UFp93aFf/S8p+++x5BZ+D344CLKXxmY6qzgTL3mILSImPCNJOzD6+RRg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -1570,6 +1770,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.21.2': + resolution: {integrity: sha512-Hdu8BL+AmO+eCDvvT6kz/fPQhvuHL8YK4ExKZfANWsNe1kFGOHw7VJvS/FKSLFqheXmB3rTF3xFQIgUWPYsGnA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -1588,6 +1794,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.21.2': + resolution: {integrity: sha512-nnGXjOAv+7cM3LYRx4tJsYdgy8dGDGkAzF06oIDGppWbUkUKN9SmgQA8H0KukpU0Pjrj9XmgbWqMVSX/U7eeTA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -1606,6 +1818,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.21.2': + resolution: {integrity: sha512-m73BOCW2V9lcj7RtEMi+gBfHC6n3+VHpwQXP5offtQMPLDkpVolYn1YGXxOZ9hp4h3UPRKuezL7WkBsw+3EB3Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -1624,6 +1842,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.21.2': + resolution: {integrity: sha512-84eYHwwWHq3myIY/6ikALMcnwkf6Qo7NIq++xH0x+cJuUNpdwh8mlpUtRY+JiGUc60yu7ElWBbVHGWTABTclGw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -1642,6 +1866,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.21.2': + resolution: {integrity: sha512-9siSZngT0/ZKG+AH+/agwKF29LdCxw4ODi/PiE0F52B2rtLozlDP92umf8G2GPoVV611LN4pZ+nSTckebOscUA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -1660,6 +1890,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.21.2': + resolution: {integrity: sha512-y0T4aV2CA+ic04ULya1A/8M2RDpDSK2ckgTj6jzHKFJvCq0jQg8afQQIn4EM0G8u2neyOiNHgSF9YKPfuqKOVw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -1678,6 +1914,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.21.2': + resolution: {integrity: sha512-x5ssCdXmZC86L2Li1qQPF/VaC4VP20u/Zm8jlAu9IiVOVi79YsSz6cpPDYZl1rfKSHYCJW9XBfFCo66S5gVPSA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -1696,6 +1938,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.21.2': + resolution: {integrity: sha512-NP7fTpGSFWdXyvp8iAFU04uFh9ARoplFVM/m+8lTRpaYG+2ytHPZWyscSsMM6cvObSIK2KoPHXiZD4l99WaxbQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -1714,6 +1962,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.21.2': + resolution: {integrity: sha512-giZ/uOxWDKda44ZuyfKbykeXznfuVNkTgXOUOPJIjbayJV6FRpQ4zxUy9JMBPLaK9IJcdWtaoeQrYBMh3Rr4vQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -1732,6 +1986,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.2': + resolution: {integrity: sha512-IeFMfGFSQfIj1d4XU+6lkbFzMR+mFELUUVYrZ+jvWzG4NGvs6o53ReEHLHpYkjRbdEjJy2W3lTekTxrFHW7YJg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -1750,6 +2010,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.2': + resolution: {integrity: sha512-48QhWD6WxcebNNaE4FCwgvQVUnAycuTd+BdvA/oZu+/MmbpU8pY2dMEYlYzj5uNHWIG5jvdDmFXu0naQeOWUoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -1768,6 +2034,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.21.2': + resolution: {integrity: sha512-90r3nTBLgdIgD4FCVV9+cR6Hq2Dzs319icVsln+NTmTVwffWcCqXGml8rAoocHuJ85kZK36DCteii96ba/PX8g==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -1786,6 +2058,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.21.2': + resolution: {integrity: sha512-sNndlsBT8OeE/MZDSGpRDJlWuhjuUz/dn80nH0EP4ZzDUYvMDVa7G87DVpweBrn4xdJYyXS/y4CQNrf7R2ODXg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -1804,6 +2082,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.21.2': + resolution: {integrity: sha512-Ti2QChGNFzWhUNNVuU4w21YkYTErsNh3h+CzvlEhzgRbwsJ7TrWQqRzW3bllLKKvTppuF3DJ3XP1GEg11AfrEQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -1822,6 +2106,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.21.2': + resolution: {integrity: sha512-VEfTCZicoZnZ6sGkjFPGRFFJuL2fZn2bLhsekZl1CJslflp2cJS/VoKs1jMk+3pDfsGW6CfQVUckP707HwbXeQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1950,6 +2240,18 @@ packages: '@ethersproject/wordlists@5.7.0': resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + '@expressive-code/core@0.35.3': + resolution: {integrity: sha512-SYamcarAjufYhbuK/kfvJSvAXLsfnM7DKc78R7Dq4B73R5bKQK2m5zR0l57tXr4yp2C5Z8lu5xZncdwWxcmPdg==} + + '@expressive-code/plugin-frames@0.35.3': + resolution: {integrity: sha512-QYytMq6IsaHgTofQ5b6d+CnbxkqLdikSF2hC+IL/ZZwPYHYZoUlmjIwmJZhY4/hHqJGELrtZsyVdlt06RntgmA==} + + '@expressive-code/plugin-shiki@0.35.3': + resolution: {integrity: sha512-aFQBPepv0zhVXqJFAvfQ4vXYv/meJKiqmEEKSxdjAfwXllIV49PDlnGEXmbGYjR4hUQQjbfDgzAbrbfePc3YVQ==} + + '@expressive-code/plugin-text-markers@0.35.3': + resolution: {integrity: sha512-gDdnQrfDRXw5Y+PKHJDkpAUdf2pthYOthGcgy3JB8GOTQ3EL1h+755Ct/bGc4MR6jn+dgnQP47uHMWQaccvN6Q==} + '@fastify/busboy@2.1.0': resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} @@ -2157,10 +2459,17 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462': + resolution: {integrity: sha512-etqLfpSJ5zaw76KUNF603be6d6QsiQPmaHr9FKEp4zhLZJzWCCMH6Icak7MtLUFLZLMpL761mZNImi/joBo1ZA==} + '@jridgewell/gen-mapping@0.3.3': resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -2169,6 +2478,10 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} @@ -2228,6 +2541,9 @@ packages: '@lit/reactive-element@2.0.4': resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + '@mdx-js/mdx@3.0.1': + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + '@metamask/eth-json-rpc-provider@1.0.1': resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} engines: {node: '>=14.0.0'} @@ -2445,6 +2761,34 @@ packages: '@openzeppelin/merkle-tree@1.0.6': resolution: {integrity: sha512-cGWOb2WBWbJhqvupzxjnKAwGLxxAEYPg51sk76yZ5nVe5D03mw7Vx5yo8llaIEqYhP5O39M8QlrNWclgLfKVrA==} + '@pagefind/darwin-arm64@1.1.0': + resolution: {integrity: sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==} + cpu: [arm64] + os: [darwin] + + '@pagefind/darwin-x64@1.1.0': + resolution: {integrity: sha512-QjQSE/L5oS1C8N8GdljGaWtjCBMgMtfrPAoiCmINTu9Y9dp0ggAyXvF8K7Qg3VyIMYJ6v8vg2PN7Z3b+AaAqUA==} + cpu: [x64] + os: [darwin] + + '@pagefind/default-ui@1.1.0': + resolution: {integrity: sha512-+XiAJAK++C64nQcD7s3Prdmd5S92lT05fwjOxm0L1jj80jbL+tmvcqkkFnPpoqhnicIPgcAX/Y5W0HRZnBt35w==} + + '@pagefind/linux-arm64@1.1.0': + resolution: {integrity: sha512-8zjYCa2BtNEL7KnXtysPtBELCyv5DSQ4yHeK/nsEq6w4ToAMTBl0K06khqxdSGgjMSwwrxvLzq3so0LC5Q14dA==} + cpu: [arm64] + os: [linux] + + '@pagefind/linux-x64@1.1.0': + resolution: {integrity: sha512-4lsg6VB7A6PWTwaP8oSmXV4O9H0IHX7AlwTDcfyT+YJo/sPXOVjqycD5cdBgqNLfUk8B9bkWcTDCRmJbHrKeCw==} + cpu: [x64] + os: [linux] + + '@pagefind/windows-x64@1.1.0': + resolution: {integrity: sha512-OboCM76BcMKT9IoSfZuFhiqMRgTde8x4qDDvKulFmycgiJrlL5WnIqBHJLQxZq+o2KyZpoHF97iwsGAm8c32sQ==} + cpu: [x64] + os: [win32] + '@parcel/watcher-android-arm64@2.4.0': resolution: {integrity: sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==} engines: {node: '>= 10.0.0'} @@ -2792,6 +3136,9 @@ packages: '@scure/bip39@1.2.2': resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + '@shikijs/core@1.5.1': + resolution: {integrity: sha512-xjV63pRUBvxA1LsxOUhRKLPh0uUjwBLzAKLdEuYSLIylo71sYuwDcttqNP01Ib1TZlLfO840CXHPlgUUsYFjzg==} + '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -2939,6 +3286,21 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.5': + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + '@types/bn.js@5.1.5': resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} @@ -2957,9 +3319,15 @@ packages: '@types/eslint@8.56.10': resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} @@ -2978,12 +3346,24 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/mdast@4.0.3': + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/minimatch@3.0.5': resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/nlcst@1.0.4': + resolution: {integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==} + + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/node@18.19.31': resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} @@ -2999,6 +3379,9 @@ packages: '@types/pug@2.0.10': resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/secp256k1@4.0.6': resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} @@ -3014,6 +3397,12 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -3225,6 +3614,38 @@ packages: '@vitest/utils@1.5.3': resolution: {integrity: sha512-rE9DTN1BRhzkzqNQO+kw8ZgfeEBCLXiHJwetk668shmNBpSagQxneT5eSqEBLP+cqSiAeecvQmbpFfdMyLcIQA==} + '@volar/kit@2.2.2': + resolution: {integrity: sha512-mIPWV7sjuJPNL+TLnpQwFD6hW+D5tF4Axg+nv0wHjdxrik+ilWT5DnBomMftoekUF4+SxUqxMjU8kd7caOuT5Q==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.2.2': + resolution: {integrity: sha512-GuvEL4JdxbnLVhPLICncCGT+tVW4cIz9GxXNeDofNnJ4iNTKhr5suGVsA1GLOne9PbraSjn8PlLt+pvLxuRVeQ==} + + '@volar/language-server@2.2.2': + resolution: {integrity: sha512-9KwlCDNeFCoxTIhYOJNtpQA7M0JP0DHvvwXrqN8qNNEMJT1Oe0cic0C2tUCa/poCgkiXDbUxRldwamyuTZ6ZQg==} + + '@volar/language-service@2.2.2': + resolution: {integrity: sha512-uxooJqRhtESXaPAGs+YFJGAtZQuRO1KLG4LPPGrHHO1ZTkx0TfQPym6WNnBfVCcBXwnSlyFVv+IbAndR5oKz1w==} + + '@volar/snapshot-document@2.2.2': + resolution: {integrity: sha512-JKj3aRpfoJZ84EeFN62PFw3jwKo2WTQnaemhWu/S4QNlw7q+IoDI1jNcgxZwblfBl0X5YGlRI1zYbwr8WidBTA==} + + '@volar/source-map@2.2.2': + resolution: {integrity: sha512-vUwvZuSW6iN4JI9QRinh9EjFasx1TUtnaWMKwgWx08xz1PyYuNkLlWlrZXBZ5GGBhML0u230M/7X+AHY2h9yKg==} + + '@volar/typescript@2.2.2': + resolution: {integrity: sha512-WcwOREz7+uOrpjUrKhOMaOKKmyPdtqF95HWX7SE0d9hhBB1KkfahxhaAex5U9Bn43LfINHlycLoYCNEtfeKm0g==} + + '@vscode/emmet-helper@2.9.3': + resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} + + '@vscode/l10n@0.0.16': + resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + '@wagmi/cli@2.1.4': resolution: {integrity: sha512-vamvEo/GeBjFxb5oZCvby4YZDOrK/RqD+tcWb5X0pqmJDyWbN2Mkv9DYTtVB+OtfVUzFKciN/8Vhw8luMtOJbw==} hasBin: true @@ -3414,6 +3835,9 @@ packages: '@web3modal/wallet@4.1.11': resolution: {integrity: sha512-6eJSpNcrBxufJFEQu9+ZOMUZxPqa8438RvfYKCU9nLXwoBtweo6ecpQw2yhXDlrfG+uJZhFabtPxROabn2M8Kg==} + '@webgpu/types@0.1.21': + resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} + '@zerodevx/svelte-toast@0.9.5': resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} peerDependencies: @@ -3501,6 +3925,9 @@ packages: anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-fragments@0.2.1: resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} @@ -3571,6 +3998,9 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -3612,6 +4042,26 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} + astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + + astro-expressive-code@0.35.3: + resolution: {integrity: sha512-f1L1m3J3EzZHDEox6TXmuKo5fTSbaNxE/HU0S0UQmvlCowtOKnU/LOsoDwsbQSYGKz+fdLRPsCjFMiKqEoyfcw==} + peerDependencies: + astro: ^4.0.0-beta || ^3.3.0 + + astro-og-canvas@0.4.2: + resolution: {integrity: sha512-OQsH6Gr2HX9ZRHdVy2OcXVBIPI65WvEtLG/60krnphh8d3ldhuAFunymYaNGcrdSZcYgXkHWejbPt//3qaRidA==} + engines: {node: '>=18.14.1'} + peerDependencies: + astro: ^3.0.0 || ^4.0.0 + + astro@4.8.3: + resolution: {integrity: sha512-pgIKopkmAUXY3EJHdG7zQpudtBzYAsd94A1R7jmLpH2LFZvzHEkAdHnunmSVmgikJCNqtEo3bUCHgLnCPQaN1g==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} @@ -3672,9 +4122,15 @@ packages: babel-plugin-transform-flow-enums@0.0.2: resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + base-x@3.0.9: resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} @@ -3684,6 +4140,12 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + bcp-47@2.1.0: + resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} + bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} @@ -3719,9 +4181,16 @@ packages: bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} @@ -3859,12 +4328,22 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + caniuse-lite@1.0.30001593: resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==} caniuse-lite@1.0.30001615: resolution: {integrity: sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==} + canvaskit-wasm@0.37.2: + resolution: {integrity: sha512-212imazRF98gLOTiU4JAXM7xDvaknI7jaPtAg4ETXGW5rLQs6pomgIvVPUSfoKnQVTdGgzj+B4e+/u0Da20aGg==} + + canvaskit-wasm@0.39.1: + resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} + capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -3872,6 +4351,9 @@ packages: resolution: {integrity: sha512-q6cFW5m3KxfP/9xGI3yGLaC1l5DP6DWM9IvjiJojnIwohL5CQDl02EXViPV852mOfQo+7PJGPN01MI87vFGzyA==} hasBin: true + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} @@ -3891,6 +4373,18 @@ packages: change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -3925,12 +4419,20 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + cli-color@2.0.3: resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} engines: {node: '>=0.10'} @@ -3970,6 +4472,10 @@ packages: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} @@ -3980,6 +4486,9 @@ packages: code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -4007,6 +4516,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + command-exists@1.2.9: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} @@ -4029,6 +4541,9 @@ packages: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -4122,6 +4637,9 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} + css-selector-tokenizer@0.8.0: resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} @@ -4202,6 +4720,9 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -4308,12 +4829,19 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + deterministic-object-hash@2.0.2: + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} + devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} devalue@5.0.0: resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -4325,6 +4853,10 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -4332,6 +4864,10 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -4365,6 +4901,10 @@ packages: resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} version: 1.0.0 + dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} @@ -4387,6 +4927,12 @@ packages: elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + emmet@2.4.7: + resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4447,6 +4993,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@1.5.2: + resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} + es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -4489,6 +5038,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.21.2: + resolution: {integrity: sha512-LmHPAa5h4tSxz+g/D8IHY6wCjtIiFx8I7/Q0Aq+NmvtoYvyMnJU0KQJcqB6QH30X9x/W4CemgUtPgQDZFca5SA==} + engines: {node: '>=12'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -4508,6 +5062,10 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + eslint-compat-utils@0.1.2: resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} @@ -4692,6 +5250,21 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -4782,9 +5355,19 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + expressive-code@0.35.3: + resolution: {integrity: sha512-XjWWUCxS4uQjPoRM98R7SNWWIYlFEaOeHm1piWv+c7coHCekuWno81thsc3g/UJ+DajNtOEsIQIAAcsBQZ8LMg==} + ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extension-port-stream@3.0.0: resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} @@ -4868,6 +5451,9 @@ packages: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4879,6 +5465,10 @@ packages: flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} @@ -4968,6 +5558,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -4996,6 +5590,9 @@ packages: get-tsconfig@4.7.2: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -5062,6 +5659,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + h3@1.10.2: resolution: {integrity: sha512-r1iNNcFGL4G9pL3lgYxwX0O2ZmqdKqhILAJsnlw5icn5I1QHnADM4TgVdYRtHUqy+NntVpHIEFwnw/XCbebICg==} @@ -5109,6 +5710,54 @@ packages: resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} + hast-util-from-html@2.0.1: + resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} + + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.0.3: + resolution: {integrity: sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==} + + hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + + hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + + hast-util-to-html@9.0.1: + resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} + + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + hastscript@9.0.0: + resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} + header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} @@ -5141,9 +5790,15 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -5236,6 +5891,12 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + inline-style-parser@0.2.3: + resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + interface-datastore@7.0.4: resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -5293,6 +5954,16 @@ packages: iron-webcrypto@1.0.0: resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -5336,6 +6007,9 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-directory@0.3.1: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} engines: {node: '>=0.10.0'} @@ -5353,6 +6027,10 @@ packages: is-electron@2.2.2: resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -5377,6 +6055,9 @@ packages: resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} engines: {node: '>=6.5.0', npm: '>=3'} + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -5410,6 +6091,10 @@ packages: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -5458,6 +6143,10 @@ packages: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} + is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} @@ -5682,6 +6371,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -5812,6 +6504,10 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -5867,6 +6563,10 @@ packages: resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} engines: {node: '>=12'} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + logkitty@0.7.1: resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} hasBin: true @@ -5877,6 +6577,9 @@ packages: long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -5905,6 +6608,9 @@ packages: lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.7: resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} @@ -5930,12 +6636,73 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + marky@1.2.5: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + + mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + + mdast-util-mdx-jsx@3.1.2: + resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -6025,6 +6792,114 @@ packages: micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + + micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + + micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + + micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + + micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + + micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -6156,6 +7031,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + multiformats@11.0.2: resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -6210,6 +7088,9 @@ packages: next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + nlcst-to-string@3.1.1: + resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -6276,6 +7157,9 @@ packages: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} + not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -6284,6 +7168,9 @@ packages: resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} @@ -6391,6 +7278,10 @@ packages: resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -6466,6 +7357,10 @@ packages: resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} + pagefind@1.1.0: + resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} + hasBin: true + param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -6476,6 +7371,9 @@ packages: parse-duration@1.1.0: resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -6484,6 +7382,9 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-latin@5.0.1: + resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -6531,6 +7432,9 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6589,6 +7493,10 @@ packages: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} @@ -6704,6 +7612,10 @@ packages: preact@10.19.5: resolution: {integrity: sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ==} + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + engines: {node: '>=10'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -6742,6 +7654,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -6762,6 +7678,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -6974,6 +7893,46 @@ packages: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true + rehype-expressive-code@0.35.3: + resolution: {integrity: sha512-kj43Rg+WzYUs8RRr6XyBr60pnrIZEgbmn9yJoV6qka1UDpcx7r8icn6Q2uSAgaLtlEUy+HCPgQJraOZrA53LOQ==} + + rehype-parse@9.0.0: + resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-stringify@10.0.0: + resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} + + rehype@13.0.1: + resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==} + + remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + + remark-smartypants@2.1.0: + resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -7022,6 +7981,18 @@ packages: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + retext-latin@3.1.0: + resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} + + retext-smartypants@5.2.0: + resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} + + retext-stringify@3.1.0: + resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} + + retext@8.1.0: + resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} + retimer@3.0.0: resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} @@ -7105,6 +8076,9 @@ packages: sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -7123,6 +8097,10 @@ packages: resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} engines: {node: '>=14.0.0'} + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -7136,6 +8114,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -7194,6 +8177,9 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shiki@1.5.1: + resolution: {integrity: sha512-vx4Ds3M3B9ZEmLeSXqBAB85osBWV8ErZfP69kuFQZozPgHc33m7spLTCUkcjwEjFm3gk3F9IdXMv8kX+v9xDHA==} + side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -7217,6 +8203,11 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + sitemap@7.1.1: + resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -7287,6 +8278,9 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -7315,6 +8309,13 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + starlight-links-validator@0.6.0: + resolution: {integrity: sha512-YXzKKZHM79ccBTO61l2WSmgdCG3406gldpVM6J2LhqZ5CeXsOgj6lho2xMLkc/p5nWcNSuYI2qNzsNUrLTmR5w==} + engines: {node: '>=18.14.1'} + peerDependencies: + '@astrojs/starlight': '>=0.15.0' + astro: '>=4.0.0' + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -7330,6 +8331,13 @@ packages: resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + stream-replace-string@2.0.0: + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} @@ -7348,6 +8356,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@7.1.0: + resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} + engines: {node: '>=18'} + string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} @@ -7364,6 +8376,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} @@ -7376,6 +8391,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -7410,6 +8429,12 @@ packages: strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + + style-to-object@1.0.6: + resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -7645,6 +8670,12 @@ packages: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} engines: {node: '>=0.6'} + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@1.2.1: resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} engines: {node: '>=16'} @@ -7733,6 +8764,10 @@ packages: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + type@1.2.0: resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} @@ -7754,6 +8789,12 @@ packages: typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.2: + resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} + typescript@5.4.3: resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} @@ -7796,6 +8837,9 @@ packages: unfetch@4.2.0: resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + unherit@3.0.1: + resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} + unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -7812,6 +8856,54 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-modify-children@3.1.1: + resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-children@2.0.2: + resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -7950,6 +9042,21 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + viem@1.21.4: resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} peerDependencies: @@ -8117,6 +9224,89 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} + volar-service-css@0.0.43: + resolution: {integrity: sha512-rg2gTXhswq6Wz8euZgCRS68+7EPH+3R7SeTqYfAAtHKoU0rS1bwdxP1CWHezyxnHrLMiXEypCgJJWcMTay3W7g==} + peerDependencies: + '@volar/language-service': ~2.2.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-emmet@0.0.43: + resolution: {integrity: sha512-ODsSOsSScVTNSD1Z+e4EV21RuN3q38ahGnuyxKYHW9Fg0RwfLatHl6wIRfj21XlVVa8twBMsA/Fp43ObuDEBxQ==} + peerDependencies: + '@volar/language-service': ~2.2.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-html@0.0.43: + resolution: {integrity: sha512-Z/S7SCkHmpoR708WTQLCE3k+hfT16xjMfq9Htv7Y3yJeykah1jZO8oZX3433OPFfbS/ZFbGa2VlAIgDTVRU5Pg==} + peerDependencies: + '@volar/language-service': ~2.2.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-prettier@0.0.43: + resolution: {integrity: sha512-Beq+iNyG05PlSPTISOFK5Yoj29rXdGb6htvyFk2u0jVFRGX1QD0Pb5ze9OiqfUVwT+3cFZhPrSPndbTR1ft/aA==} + peerDependencies: + '@volar/language-service': ~2.2.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + + volar-service-typescript-twoslash-queries@0.0.43: + resolution: {integrity: sha512-FUqgvK2a6YxNO0P+zmY5syVatD8I7+qEA+mj1lotqQxwtY0Gh3UDCCqTVapX1E4VxF/pvNac7eVOBkCUVVZC5w==} + peerDependencies: + '@volar/language-service': ~2.2.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.43: + resolution: {integrity: sha512-oXYZHuM7QYBmgSiheFkoQPyUzzvm9ddaUzfDqc9cOM+fDuMAkUer2bEqnqZXerGjhsjuXNCu4PGlSOJJMxWe3A==} + peerDependencies: + '@volar/language-service': ~2.2.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.2.14: + resolution: {integrity: sha512-5UPQ9Y1sUTnuMyaMBpO7LrBkqjhEJb5eAwdUlDp+Uez8lry+Tspnk3+3p2qWS4LlNsr4p3v9WkZxUf1ltgFpgw==} + + vscode-html-languageservice@5.2.0: + resolution: {integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@2.1.2: + resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -8127,6 +9317,9 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web3-eth-abi@1.10.4: resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} engines: {node: '>=8.0.0'} @@ -8173,6 +9366,18 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which-pm@2.1.1: + resolution: {integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==} + engines: {node: '>=8.15'} + which-typed-array@1.1.13: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} @@ -8192,6 +9397,10 @@ packages: engines: {node: '>=8'} hasBin: true + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -8345,9 +9554,17 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + zod-to-json-schema@3.23.0: + resolution: {integrity: sha512-az0uJ243PxsRIa2x1WmNE/pnuA05gUq/JB8Lwe1EDCCL/Fz9MgjYQ0fPlyc2Tcv6aF2ZA7WM5TWaRZVEFaAIag==} + peerDependencies: + zod: ^3.23.3 + zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zustand@4.4.1: resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} engines: {node: '>=12.7.0'} @@ -8363,6 +9580,9 @@ packages: react: optional: true + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} @@ -8376,11 +9596,146 @@ snapshots: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.25 + '@astrojs/check@0.6.0(prettier@3.2.5)(typescript@5.4.3)': + dependencies: + '@astrojs/language-server': 2.9.0(prettier@3.2.5)(typescript@5.4.3) + chokidar: 3.6.0 + fast-glob: 3.3.2 + kleur: 4.1.5 + typescript: 5.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - prettier + - prettier-plugin-astro + + '@astrojs/compiler@2.8.0': {} + + '@astrojs/internal-helpers@0.4.0': {} + + '@astrojs/language-server@2.9.0(prettier@3.2.5)(typescript@5.4.3)': + dependencies: + '@astrojs/compiler': 2.8.0 + '@jridgewell/sourcemap-codec': 1.4.15 + '@volar/kit': 2.2.2(typescript@5.4.3) + '@volar/language-core': 2.2.2 + '@volar/language-server': 2.2.2 + '@volar/language-service': 2.2.2 + '@volar/typescript': 2.2.2 + fast-glob: 3.3.2 + volar-service-css: 0.0.43(@volar/language-service@2.2.2) + volar-service-emmet: 0.0.43(@volar/language-service@2.2.2) + volar-service-html: 0.0.43(@volar/language-service@2.2.2) + volar-service-prettier: 0.0.43(@volar/language-service@2.2.2)(prettier@3.2.5) + volar-service-typescript: 0.0.43(@volar/language-service@2.2.2) + volar-service-typescript-twoslash-queries: 0.0.43(@volar/language-service@2.2.2) + vscode-html-languageservice: 5.2.0 + vscode-uri: 3.0.8 + optionalDependencies: + prettier: 3.2.5 + transitivePeerDependencies: + - typescript + + '@astrojs/markdown-remark@5.1.0': + dependencies: + '@astrojs/prism': 3.1.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.1 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.0.0 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.0 + remark-gfm: 4.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + remark-smartypants: 2.1.0 + shiki: 1.5.1 + unified: 11.0.4 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + '@astrojs/mdx@2.3.1(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3))': + dependencies: + '@astrojs/markdown-remark': 5.1.0 + '@mdx-js/mdx': 3.0.1 + acorn: 8.11.3 + astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + es-module-lexer: 1.5.2 + estree-util-visit: 2.0.0 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + hast-util-to-html: 9.0.1 + kleur: 4.1.5 + rehype-raw: 7.0.0 + remark-gfm: 4.0.0 + remark-smartypants: 2.1.0 + source-map: 0.7.4 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + '@astrojs/prism@3.1.0': + dependencies: + prismjs: 1.29.0 + + '@astrojs/sitemap@3.1.4': + dependencies: + sitemap: 7.1.1 + stream-replace-string: 2.0.0 + zod: 3.22.4 + + '@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3))': + dependencies: + '@astrojs/mdx': 2.3.1(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + '@astrojs/sitemap': 3.1.4 + '@pagefind/default-ui': 1.1.0 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + astro-expressive-code: 0.35.3(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + bcp-47: 2.1.0 + hast-util-from-html: 2.0.1 + hast-util-select: 6.0.2 + hast-util-to-string: 3.0.0 + hastscript: 8.0.0 + mdast-util-directive: 3.0.0 + mdast-util-to-markdown: 2.1.0 + pagefind: 1.1.0 + rehype: 13.0.1 + remark-directive: 3.0.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + '@astrojs/telemetry@3.1.0': + dependencies: + ci-info: 4.0.0 + debug: 4.3.4 + dlv: 1.1.3 + dset: 3.1.3 + is-docker: 3.0.0 + is-wsl: 3.1.0 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + '@babel/code-frame@7.23.5': dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 + '@babel/code-frame@7.24.2': + dependencies: + '@babel/highlight': 7.24.5 + picocolors: 1.0.0 + '@babel/compat-data@7.23.5': {} '@babel/core@7.23.9': @@ -8403,6 +9758,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.24.5': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helpers': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.23.6': dependencies: '@babel/types': 7.23.9 @@ -8410,9 +9785,16 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.24.5': + dependencies: + '@babel/types': 7.24.5 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + '@babel/helper-annotate-as-pure@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: @@ -8462,11 +9844,11 @@ snapshots: '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 '@babel/helper-hoist-variables@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 '@babel/helper-member-expression-to-functions@7.23.0': dependencies: @@ -8474,7 +9856,11 @@ snapshots: '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 + + '@babel/helper-module-imports@7.24.3': + dependencies: + '@babel/types': 7.24.5 '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9)': dependencies: @@ -8485,6 +9871,15 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-optimise-call-expression@7.22.5': dependencies: '@babel/types': 7.23.9 @@ -8509,6 +9904,10 @@ snapshots: dependencies: '@babel/types': 7.23.9 + '@babel/helper-simple-access@7.24.5': + dependencies: + '@babel/types': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: '@babel/types': 7.23.9 @@ -8517,10 +9916,18 @@ snapshots: dependencies: '@babel/types': 7.23.9 + '@babel/helper-split-export-declaration@7.24.5': + dependencies: + '@babel/types': 7.24.5 + '@babel/helper-string-parser@7.23.4': {} + '@babel/helper-string-parser@7.24.1': {} + '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.24.5': {} + '@babel/helper-validator-option@7.23.5': {} '@babel/helper-wrap-function@7.22.20': @@ -8537,16 +9944,35 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helpers@7.24.5': + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + transitivePeerDependencies: + - supports-color + '@babel/highlight@7.23.4': dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + '@babel/highlight@7.24.5': + dependencies: + '@babel/helper-validator-identifier': 7.24.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + '@babel/parser@7.23.9': dependencies: '@babel/types': 7.23.9 + '@babel/parser@7.24.5': + dependencies: + '@babel/types': 7.24.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9)': dependencies: '@babel/core': 7.23.9 @@ -8683,6 +10109,11 @@ snapshots: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9)': dependencies: '@babel/core': 7.23.9 @@ -8994,7 +10425,16 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 + + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.5) + '@babel/types': 7.24.5 '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9)': dependencies: @@ -9202,9 +10642,15 @@ snapshots: '@babel/template@7.23.9': dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + + '@babel/template@7.24.0': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 '@babel/traverse@7.23.9': dependencies: @@ -9221,12 +10667,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.24.5': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.23.9': dependencies: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + '@babel/types@7.24.5': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 + to-fast-properties: 2.0.0 + '@bcoe/v8-coverage@0.2.3': {} '@chainsafe/is-ip@2.0.2': {} @@ -9273,6 +10740,18 @@ snapshots: dependencies: postcss-selector-parser: 6.0.15 + '@ctrl/tinycolor@4.1.0': {} + + '@emmetio/abbreviation@2.3.3': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-abbreviation@2.1.8': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/scanner@1.0.4': {} + '@emnapi/runtime@1.1.1': dependencies: tslib: 2.6.2 @@ -9284,6 +10763,9 @@ snapshots: '@esbuild/aix-ppc64@0.20.2': optional: true + '@esbuild/aix-ppc64@0.21.2': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true @@ -9293,6 +10775,9 @@ snapshots: '@esbuild/android-arm64@0.20.2': optional: true + '@esbuild/android-arm64@0.21.2': + optional: true + '@esbuild/android-arm@0.18.20': optional: true @@ -9302,6 +10787,9 @@ snapshots: '@esbuild/android-arm@0.20.2': optional: true + '@esbuild/android-arm@0.21.2': + optional: true + '@esbuild/android-x64@0.18.20': optional: true @@ -9311,6 +10799,9 @@ snapshots: '@esbuild/android-x64@0.20.2': optional: true + '@esbuild/android-x64@0.21.2': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true @@ -9320,6 +10811,9 @@ snapshots: '@esbuild/darwin-arm64@0.20.2': optional: true + '@esbuild/darwin-arm64@0.21.2': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true @@ -9329,6 +10823,9 @@ snapshots: '@esbuild/darwin-x64@0.20.2': optional: true + '@esbuild/darwin-x64@0.21.2': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true @@ -9338,6 +10835,9 @@ snapshots: '@esbuild/freebsd-arm64@0.20.2': optional: true + '@esbuild/freebsd-arm64@0.21.2': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true @@ -9347,6 +10847,9 @@ snapshots: '@esbuild/freebsd-x64@0.20.2': optional: true + '@esbuild/freebsd-x64@0.21.2': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true @@ -9356,6 +10859,9 @@ snapshots: '@esbuild/linux-arm64@0.20.2': optional: true + '@esbuild/linux-arm64@0.21.2': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true @@ -9365,6 +10871,9 @@ snapshots: '@esbuild/linux-arm@0.20.2': optional: true + '@esbuild/linux-arm@0.21.2': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true @@ -9374,6 +10883,9 @@ snapshots: '@esbuild/linux-ia32@0.20.2': optional: true + '@esbuild/linux-ia32@0.21.2': + optional: true + '@esbuild/linux-loong64@0.18.20': optional: true @@ -9383,6 +10895,9 @@ snapshots: '@esbuild/linux-loong64@0.20.2': optional: true + '@esbuild/linux-loong64@0.21.2': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true @@ -9392,6 +10907,9 @@ snapshots: '@esbuild/linux-mips64el@0.20.2': optional: true + '@esbuild/linux-mips64el@0.21.2': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true @@ -9401,6 +10919,9 @@ snapshots: '@esbuild/linux-ppc64@0.20.2': optional: true + '@esbuild/linux-ppc64@0.21.2': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true @@ -9410,6 +10931,9 @@ snapshots: '@esbuild/linux-riscv64@0.20.2': optional: true + '@esbuild/linux-riscv64@0.21.2': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true @@ -9419,6 +10943,9 @@ snapshots: '@esbuild/linux-s390x@0.20.2': optional: true + '@esbuild/linux-s390x@0.21.2': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true @@ -9428,6 +10955,9 @@ snapshots: '@esbuild/linux-x64@0.20.2': optional: true + '@esbuild/linux-x64@0.21.2': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true @@ -9437,6 +10967,9 @@ snapshots: '@esbuild/netbsd-x64@0.20.2': optional: true + '@esbuild/netbsd-x64@0.21.2': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true @@ -9446,6 +10979,9 @@ snapshots: '@esbuild/openbsd-x64@0.20.2': optional: true + '@esbuild/openbsd-x64@0.21.2': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true @@ -9455,6 +10991,9 @@ snapshots: '@esbuild/sunos-x64@0.20.2': optional: true + '@esbuild/sunos-x64@0.21.2': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true @@ -9464,6 +11003,9 @@ snapshots: '@esbuild/win32-arm64@0.20.2': optional: true + '@esbuild/win32-arm64@0.21.2': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true @@ -9473,6 +11015,9 @@ snapshots: '@esbuild/win32-ia32@0.20.2': optional: true + '@esbuild/win32-ia32@0.21.2': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true @@ -9482,6 +11027,9 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true + '@esbuild/win32-x64@0.21.2': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.55.0)': dependencies: eslint: 8.55.0 @@ -9669,7 +11217,7 @@ snapshots: dependencies: '@ethersproject/logger': 5.7.0 - '@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@6.0.3)': + '@ethersproject/providers@5.7.2(bufferutil@4.0.8)': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -9690,7 +11238,7 @@ snapshots: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 bech32: 1.1.4 - ws: 7.4.6(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 7.4.6(bufferutil@4.0.8) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9787,6 +11335,31 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 + '@expressive-code/core@0.35.3': + dependencies: + '@ctrl/tinycolor': 4.1.0 + hast-util-select: 6.0.2 + hast-util-to-html: 9.0.1 + hast-util-to-text: 4.0.2 + hastscript: 9.0.0 + postcss: 8.4.38 + postcss-nested: 6.0.1(postcss@8.4.38) + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + + '@expressive-code/plugin-frames@0.35.3': + dependencies: + '@expressive-code/core': 0.35.3 + + '@expressive-code/plugin-shiki@0.35.3': + dependencies: + '@expressive-code/core': 0.35.3 + shiki: 1.5.1 + + '@expressive-code/plugin-text-markers@0.35.3': + dependencies: + '@expressive-code/core': 0.35.3 + '@fastify/busboy@2.1.0': {} '@formatjs/ecma402-abstract@1.18.2': @@ -9986,16 +11559,31 @@ snapshots: '@types/yargs': 17.0.32 chalk: 4.1.2 + '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462': + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + '@jridgewell/gen-mapping@0.3.3': dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.1.2': {} + '@jridgewell/set-array@1.2.1': {} + '@jridgewell/source-map@0.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.3 @@ -10083,6 +11671,34 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 + '@mdx-js/mdx@3.0.1': + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + '@metamask/eth-json-rpc-provider@1.0.1': dependencies: '@metamask/json-rpc-engine': 7.3.2 @@ -10145,7 +11761,7 @@ snapshots: '@metamask/safe-event-emitter@3.0.0': {} - '@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3))': + '@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8))': dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0(encoding@0.1.13) @@ -10154,27 +11770,27 @@ snapshots: eciesjs: 0.3.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3) + socket.io-client: 4.7.4(bufferutil@4.0.8) utf-8-validate: 6.0.3 uuid: 8.3.2 transitivePeerDependencies: - supports-color - '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)': + '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)': dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 - react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0) + react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0) optionalDependencies: react: 18.2.0 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3) + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) - '@metamask/sdk@0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(utf-8-validate@6.0.3)': + '@metamask/sdk@0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 - '@metamask/sdk-communication-layer': 0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3)) - '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0) + '@metamask/sdk-communication-layer': 0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)) + '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0(encoding@0.1.13) @@ -10187,15 +11803,15 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 - react-native-webview: 11.26.1(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0) + react-native-webview: 11.26.1(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0) readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0(rollup@4.17.2) - socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3) + socket.io-client: 4.7.4(bufferutil@4.0.8) util: 0.12.5 uuid: 8.3.2 optionalDependencies: react: 18.2.0 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3) + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) transitivePeerDependencies: - bufferutil - encoding @@ -10469,6 +12085,23 @@ snapshots: '@ethersproject/abi': 5.7.0 ethereum-cryptography: 1.2.0 + '@pagefind/darwin-arm64@1.1.0': + optional: true + + '@pagefind/darwin-x64@1.1.0': + optional: true + + '@pagefind/default-ui@1.1.0': {} + + '@pagefind/linux-arm64@1.1.0': + optional: true + + '@pagefind/linux-x64@1.1.0': + optional: true + + '@pagefind/windows-x64@1.1.0': + optional: true + '@parcel/watcher-android-arm64@2.4.0': optional: true @@ -10664,7 +12297,7 @@ snapshots: '@react-native-community/cli-plugin-metro@12.3.2': {} - '@react-native-community/cli-server-api@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@react-native-community/cli-server-api@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: '@react-native-community/cli-debugger-ui': 12.3.2 '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) @@ -10674,7 +12307,7 @@ snapshots: nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 7.5.9(bufferutil@4.0.8) transitivePeerDependencies: - bufferutil - encoding @@ -10700,7 +12333,7 @@ snapshots: dependencies: joi: 17.12.1 - '@react-native-community/cli@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@react-native-community/cli@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: '@react-native-community/cli-clean': 12.3.2(encoding@0.1.13) '@react-native-community/cli-config': 12.3.2(encoding@0.1.13) @@ -10708,7 +12341,7 @@ snapshots: '@react-native-community/cli-doctor': 12.3.2(encoding@0.1.13) '@react-native-community/cli-hermes': 12.3.2(encoding@0.1.13) '@react-native-community/cli-plugin-metro': 12.3.2 - '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13) '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) '@react-native-community/cli-types': 12.3.2 chalk: 4.1.2 @@ -10796,16 +12429,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@react-native/community-cli-plugin@0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13) '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) '@react-native/dev-middleware': 0.73.7(encoding@0.1.13) '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) - metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) + metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) metro-core: 0.80.6 node-fetch: 2.7.0(encoding@0.1.13) readline: 1.3.0 @@ -10851,11 +12484,11 @@ snapshots: '@react-native/normalize-colors@0.73.2': {} - '@react-native/virtualized-lists@0.73.4(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))': + '@react-native/virtualized-lists@0.73.4(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3) + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) '@rollup/rollup-android-arm-eabi@4.17.2': optional: true @@ -10905,9 +12538,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true - '@safe-global/safe-apps-provider@0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4)': + '@safe-global/safe-apps-provider@0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)': dependencies: - '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -10915,10 +12548,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4)': + '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.15.0 - viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript @@ -10968,6 +12601,8 @@ snapshots: '@noble/hashes': 1.3.3 '@scure/base': 1.1.5 + '@shikijs/core@1.5.1': {} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -11192,6 +12827,31 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@types/acorn@4.0.6': + dependencies: + '@types/estree': 1.0.5 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.24.5 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + + '@types/babel__traverse@7.20.5': + dependencies: + '@babel/types': 7.24.5 + '@types/bn.js@5.1.5': dependencies: '@types/node': 20.12.7 @@ -11213,8 +12873,16 @@ snapshots: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.5 + '@types/estree@1.0.5': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.2 + '@types/http-cache-semantics@4.0.4': {} '@types/istanbul-lib-coverage@2.0.6': {} @@ -11231,10 +12899,22 @@ snapshots: '@types/json5@0.0.29': {} + '@types/mdast@4.0.3': + dependencies: + '@types/unist': 3.0.2 + + '@types/mdx@2.0.13': {} + '@types/minimatch@3.0.5': {} '@types/ms@0.7.34': {} + '@types/nlcst@1.0.4': + dependencies: + '@types/unist': 2.0.10 + + '@types/node@17.0.45': {} + '@types/node@18.19.31': dependencies: undici-types: 5.26.5 @@ -11251,6 +12931,10 @@ snapshots: '@types/pug@2.0.10': {} + '@types/sax@1.2.7': + dependencies: + '@types/node': 20.12.7 + '@types/secp256k1@4.0.6': dependencies: '@types/node': 20.12.7 @@ -11263,6 +12947,10 @@ snapshots: '@types/trusted-types@2.0.7': {} + '@types/unist@2.0.10': {} + + '@types/unist@3.0.2': {} + '@types/yargs-parser@21.0.3': {} '@types/yargs@15.0.19': @@ -11574,7 +13262,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitest/coverage-v8@1.4.0(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2))': + '@vitest/coverage-v8@1.4.0(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2))': dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 @@ -11590,7 +13278,7 @@ snapshots: strip-literal: 2.0.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) + vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) transitivePeerDependencies: - supports-color @@ -11652,7 +13340,67 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@wagmi/cli@2.1.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)': + '@volar/kit@2.2.2(typescript@5.4.3)': + dependencies: + '@volar/language-service': 2.2.2 + '@volar/typescript': 2.2.2 + typesafe-path: 0.2.2 + typescript: 5.4.3 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + + '@volar/language-core@2.2.2': + dependencies: + '@volar/source-map': 2.2.2 + + '@volar/language-server@2.2.2': + dependencies: + '@volar/language-core': 2.2.2 + '@volar/language-service': 2.2.2 + '@volar/snapshot-document': 2.2.2 + '@volar/typescript': 2.2.2 + '@vscode/l10n': 0.0.16 + path-browserify: 1.0.1 + request-light: 0.7.0 + vscode-languageserver: 9.0.1 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + + '@volar/language-service@2.2.2': + dependencies: + '@volar/language-core': 2.2.2 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + + '@volar/snapshot-document@2.2.2': + dependencies: + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.11 + + '@volar/source-map@2.2.2': + dependencies: + muggle-string: 0.4.1 + + '@volar/typescript@2.2.2': + dependencies: + '@volar/language-core': 2.2.2 + path-browserify: 1.0.1 + + '@vscode/emmet-helper@2.9.3': + dependencies: + emmet: 2.4.7 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 2.1.2 + + '@vscode/l10n@0.0.16': {} + + '@vscode/l10n@0.0.18': {} + + '@wagmi/cli@2.1.4(bufferutil@4.0.8)(typescript@5.4.3)': dependencies: abitype: 0.9.10(typescript@5.4.3)(zod@3.22.4) bundle-require: 4.0.2(esbuild@0.19.12) @@ -11671,7 +13419,7 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.0 prettier: 3.2.5 - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) zod: 3.22.4 optionalDependencies: typescript: 5.4.3 @@ -11679,16 +13427,16 @@ snapshots: - bufferutil - utf-8-validate - '@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': dependencies: '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(utf-8-validate@6.0.3) - '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) - '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) - '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) - '@walletconnect/ethereum-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3) + '@metamask/sdk': 0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2) + '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + '@walletconnect/ethereum-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) '@walletconnect/modal': 2.6.2(react@18.2.0) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -11716,11 +13464,11 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8)': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) + viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) zustand: 4.4.1(react@18.2.0) optionalDependencies: typescript: 5.4.3 @@ -11732,13 +13480,29 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': dependencies: - '@walletconnect/heartbeat': 1.2.1 + eventemitter3: 5.0.1 + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + zustand: 4.4.1(react@18.2.0) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - utf-8-validate + - zod + + '@walletconnect/core@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)': + dependencies: + '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@6.0.3) + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8) '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.9 @@ -11769,13 +13533,13 @@ snapshots: - supports-color - utf-8-validate - '@walletconnect/core@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@walletconnect/core@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@6.0.3) + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8) '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.9 @@ -11810,16 +13574,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3)': + '@walletconnect/ethereum-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.6.2(react@18.2.0) - '@walletconnect/sign-client': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/sign-client': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/types': 2.11.2 - '@walletconnect/universal-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/universal-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/utils': 2.11.2 events: 3.3.0 transitivePeerDependencies: @@ -11842,16 +13606,16 @@ snapshots: - supports-color - utf-8-validate - '@walletconnect/ethereum-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3)': + '@walletconnect/ethereum-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.6.2(react@18.2.0) - '@walletconnect/sign-client': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/sign-client': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/types': 2.12.2 - '@walletconnect/universal-provider': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/universal-provider': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/utils': 2.12.2 events: 3.3.0 transitivePeerDependencies: @@ -11911,12 +13675,12 @@ snapshots: '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 - '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.8)(utf-8-validate@6.0.3)': + '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.8)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 7.5.9(bufferutil@4.0.8) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11988,9 +13752,9 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@walletconnect/sign-client@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@walletconnect/core': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/core': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -12017,9 +13781,9 @@ snapshots: - supports-color - utf-8-validate - '@walletconnect/sign-client@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@walletconnect/sign-client@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@walletconnect/core': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/core': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -12096,14 +13860,14 @@ snapshots: - '@vercel/kv' - supports-color - '@walletconnect/universal-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@walletconnect/universal-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/sign-client': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/types': 2.11.2 '@walletconnect/utils': 2.11.2 events: 3.3.0 @@ -12125,14 +13889,14 @@ snapshots: - supports-color - utf-8-validate - '@walletconnect/universal-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3)': + '@walletconnect/universal-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@walletconnect/sign-client': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/types': 2.12.2 '@walletconnect/utils': 2.12.2 events: 3.3.0 @@ -12294,17 +14058,17 @@ snapshots: lit: 3.1.0 qrcode: 1.5.3 - ? '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))' - : dependencies: - '@wagmi/connectors': 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) - '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4))(zod@3.22.4) + '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))': + dependencies: + '@wagmi/connectors': 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@web3modal/polyfills': 4.1.11 '@web3modal/scaffold': 4.1.11(react@18.2.0) '@web3modal/scaffold-react': 4.1.11(react@18.2.0) '@web3modal/scaffold-utils': 4.1.11(react@18.2.0) '@web3modal/scaffold-vue': 4.1.11(react@18.2.0) '@web3modal/siwe': 4.1.11(react@18.2.0) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) optionalDependencies: react: 18.2.0 transitivePeerDependencies: @@ -12315,6 +14079,8 @@ snapshots: '@web3modal/polyfills': 4.1.11 zod: 3.22.4 + '@webgpu/types@0.1.21': {} + '@zerodevx/svelte-toast@0.9.5(svelte@4.2.15)': dependencies: svelte: 4.2.15 @@ -12329,11 +14095,21 @@ snapshots: typescript: 5.4.3 zod: 3.22.4 + abitype@0.9.8(typescript@5.4.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.3 + zod: 3.23.8 + abitype@1.0.0(typescript@5.4.3)(zod@3.22.4): optionalDependencies: typescript: 5.4.3 zod: 3.22.4 + abitype@1.0.0(typescript@5.4.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.4.3 + zod: 3.23.8 + abitype@1.0.2(typescript@5.4.3)(zod@3.22.4): optionalDependencies: typescript: 5.4.3 @@ -12380,6 +14156,10 @@ snapshots: anser@1.4.10: {} + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + ansi-fragments@0.2.1: dependencies: colorette: 1.4.0 @@ -12444,6 +14224,8 @@ snapshots: get-intrinsic: 1.2.4 is-string: 1.0.7 + array-iterate@2.0.1: {} + array-union@2.1.0: {} array.prototype.findlastindex@1.2.3: @@ -12492,6 +14274,98 @@ snapshots: astral-regex@2.0.0: {} + astring@1.8.6: {} + + astro-expressive-code@0.35.3(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)): + dependencies: + astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + rehype-expressive-code: 0.35.3 + + astro-og-canvas@0.4.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)): + dependencies: + astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + canvaskit-wasm: 0.37.2 + deterministic-object-hash: 2.0.2 + entities: 4.5.0 + + astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3): + dependencies: + '@astrojs/compiler': 2.8.0 + '@astrojs/internal-helpers': 0.4.0 + '@astrojs/markdown-remark': 5.1.0 + '@astrojs/telemetry': 3.1.0 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + '@types/babel__core': 7.20.5 + '@types/cookie': 0.6.0 + acorn: 8.11.3 + aria-query: 5.3.0 + axobject-query: 4.0.0 + boxen: 7.1.1 + chokidar: 3.6.0 + ci-info: 4.0.0 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 0.6.0 + cssesc: 3.0.0 + debug: 4.3.4 + deterministic-object-hash: 2.0.2 + devalue: 5.0.0 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.3 + es-module-lexer: 1.5.2 + esbuild: 0.21.2 + estree-walker: 3.0.3 + execa: 8.0.1 + fast-glob: 3.3.2 + flattie: 1.1.1 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.10 + mrmime: 2.0.0 + ora: 8.0.1 + p-limit: 5.0.0 + p-queue: 8.0.1 + path-to-regexp: 6.2.2 + preferred-pm: 3.1.3 + prompts: 2.4.2 + rehype: 13.0.1 + resolve: 1.22.8 + semver: 7.6.2 + shiki: 1.5.1 + string-width: 7.1.0 + strip-ansi: 7.1.0 + tsconfck: 3.0.3(typescript@5.4.3) + unist-util-visit: 5.0.0 + vfile: 6.0.1 + vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + which-pm: 2.1.1 + yargs-parser: 21.1.1 + zod: 3.23.8 + zod-to-json-schema: 3.23.0(zod@3.23.8) + optionalDependencies: + sharp: 0.33.3 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - typescript + async-limiter@1.0.1: {} async-mutex@0.2.6: @@ -12570,8 +14444,12 @@ snapshots: transitivePeerDependencies: - '@babel/core' + bail@2.0.2: {} + balanced-match@1.0.2: {} + base-64@1.0.0: {} + base-x@3.0.9: dependencies: safe-buffer: 5.2.1 @@ -12580,6 +14458,14 @@ snapshots: base64-js@1.5.1: {} + bcp-47-match@2.0.3: {} + + bcp-47@2.1.0: + dependencies: + is-alphabetical: 2.0.1 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + bech32@1.1.4: {} big-integer@1.6.52: {} @@ -12612,8 +14498,21 @@ snapshots: bn.js@5.2.1: {} + boolbase@1.0.0: {} + bowser@2.11.0: {} + boxen@7.1.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + bplist-parser@0.2.0: dependencies: big-integer: 1.6.52 @@ -12757,10 +14656,18 @@ snapshots: camelcase@6.3.0: {} + camelcase@7.0.1: {} + caniuse-lite@1.0.30001593: {} caniuse-lite@1.0.30001615: {} + canvaskit-wasm@0.37.2: {} + + canvaskit-wasm@0.39.1: + dependencies: + '@webgpu/types': 0.1.21 + capital-case@1.0.4: dependencies: no-case: 3.0.4 @@ -12769,6 +14676,8 @@ snapshots: cborg@4.2.0: {} + ccount@2.0.1: {} + chai@4.4.1: dependencies: assertion-error: 1.1.0 @@ -12807,6 +14716,14 @@ snapshots: snake-case: 3.0.4 tslib: 2.6.2 + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 @@ -12849,6 +14766,8 @@ snapshots: ci-info@3.9.0: {} + ci-info@4.0.0: {} + cipher-base@1.0.4: dependencies: inherits: 2.0.4 @@ -12858,6 +14777,8 @@ snapshots: dependencies: consola: 3.2.3 + cli-boxes@3.0.0: {} + cli-color@2.0.3: dependencies: d: 1.0.1 @@ -12904,6 +14825,8 @@ snapshots: clsx@1.2.1: {} + clsx@2.1.1: {} + cluster-key-slot@1.1.2: {} code-block-writer@12.0.0: {} @@ -12916,6 +14839,8 @@ snapshots: estree-walker: 3.0.3 periscopic: 3.1.0 + collapse-white-space@2.1.0: {} + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -12944,6 +14869,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + command-exists@1.2.9: {} commander@10.0.1: {} @@ -12956,6 +14883,8 @@ snapshots: commander@9.5.0: {} + common-ancestor-path@1.0.1: {} + commondir@1.0.1: {} compressible@2.0.18: @@ -13073,6 +15002,8 @@ snapshots: crypto-js@4.2.0: {} + css-selector-parser@3.0.5: {} + css-selector-tokenizer@0.8.0: dependencies: cssesc: 3.0.0 @@ -13148,6 +15079,10 @@ snapshots: decimal.js@10.4.3: {} + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + decode-uri-component@0.2.2: {} decompress-response@6.0.0: @@ -13230,22 +15165,34 @@ snapshots: detect-libc@2.0.3: {} + deterministic-object-hash@2.0.2: + dependencies: + base-64: 1.0.0 + devalue@4.3.2: {} devalue@5.0.0: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + didyoumean@1.2.2: {} diff-sequences@29.6.3: {} diff@4.0.2: {} + diff@5.2.0: {} + dijkstrajs@1.0.3: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 + direction@2.0.1: {} + dlv@1.1.3: {} dns-over-http-resolver@2.1.3: @@ -13280,6 +15227,8 @@ snapshots: ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} + dset@3.1.3: {} + duplexify@4.1.2: dependencies: end-of-stream: 1.4.4 @@ -13313,6 +15262,13 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + emmet@2.4.7: + dependencies: + '@emmetio/abbreviation': 2.3.3 + '@emmetio/css-abbreviation': 2.1.8 + + emoji-regex@10.3.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -13329,12 +15285,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3): + engine.io-client@6.5.3(bufferutil@4.0.8): dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4 engine.io-parser: 5.2.2 - ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 8.11.0(bufferutil@4.0.8) xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: - bufferutil @@ -13410,6 +15366,8 @@ snapshots: es-errors@1.3.0: {} + es-module-lexer@1.5.2: {} + es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.4 @@ -13529,6 +15487,32 @@ snapshots: '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 + esbuild@0.21.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.2 + '@esbuild/android-arm': 0.21.2 + '@esbuild/android-arm64': 0.21.2 + '@esbuild/android-x64': 0.21.2 + '@esbuild/darwin-arm64': 0.21.2 + '@esbuild/darwin-x64': 0.21.2 + '@esbuild/freebsd-arm64': 0.21.2 + '@esbuild/freebsd-x64': 0.21.2 + '@esbuild/linux-arm': 0.21.2 + '@esbuild/linux-arm64': 0.21.2 + '@esbuild/linux-ia32': 0.21.2 + '@esbuild/linux-loong64': 0.21.2 + '@esbuild/linux-mips64el': 0.21.2 + '@esbuild/linux-ppc64': 0.21.2 + '@esbuild/linux-riscv64': 0.21.2 + '@esbuild/linux-s390x': 0.21.2 + '@esbuild/linux-x64': 0.21.2 + '@esbuild/netbsd-x64': 0.21.2 + '@esbuild/openbsd-x64': 0.21.2 + '@esbuild/sunos-x64': 0.21.2 + '@esbuild/win32-arm64': 0.21.2 + '@esbuild/win32-ia32': 0.21.2 + '@esbuild/win32-x64': 0.21.2 + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -13539,6 +15523,8 @@ snapshots: escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-compat-utils@0.1.2(eslint@8.55.0): dependencies: eslint: 8.55.0 @@ -13943,6 +15929,30 @@ snapshots: estraverse@5.3.0: {} + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.5 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.8.6 + source-map: 0.7.4 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.2 + estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -14035,7 +16045,7 @@ snapshots: ethereum-cryptography: 0.1.3 rlp: 2.2.7 - ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ethers@5.7.2(bufferutil@4.0.8): dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -14055,7 +16065,7 @@ snapshots: '@ethersproject/networks': 5.7.1 '@ethersproject/pbkdf2': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8) '@ethersproject/random': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/sha2': 5.7.0 @@ -14130,10 +16140,23 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + expressive-code@0.35.3: + dependencies: + '@expressive-code/core': 0.35.3 + '@expressive-code/plugin-frames': 0.35.3 + '@expressive-code/plugin-shiki': 0.35.3 + '@expressive-code/plugin-text-markers': 0.35.3 + ext@1.7.0: dependencies: type: 2.7.2 + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend@3.0.2: {} + extension-port-stream@3.0.0: dependencies: readable-stream: 3.6.2 @@ -14224,6 +16247,11 @@ snapshots: locate-path: 7.2.0 path-exists: 5.0.0 + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.5 + pkg-dir: 4.2.0 + flat-cache@3.2.0: dependencies: flatted: 3.2.9 @@ -14236,6 +16264,8 @@ snapshots: flatted@3.2.9: {} + flattie@1.1.1: {} + flow-enums-runtime@0.0.6: {} flow-parser@0.206.0: {} @@ -14306,6 +16336,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.2.0: {} + get-func-name@2.0.2: {} get-intrinsic@1.2.4: @@ -14333,6 +16365,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + github-slugger@2.0.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -14425,6 +16459,13 @@ snapshots: graphemer@1.4.0: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + h3@1.10.2: dependencies: cookie-es: 1.0.0 @@ -14476,6 +16517,170 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-from-html@2.0.1: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.1 + parse5: 7.1.2 + vfile: 6.0.1 + vfile-message: 4.0.2 + + hast-util-from-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.5.0 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + '@ungap/structured-clone': 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + parse5: 7.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-select@6.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.0.5 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.0 + hast-util-whitespace: 3.0.0 + not: 0.1.0 + nth-check: 2.1.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.0: + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 9.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.0: + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.6 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-string@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + hastscript@9.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + header-case@2.0.4: dependencies: capital-case: 1.0.4 @@ -14511,10 +16716,14 @@ snapshots: html-escaper@2.0.2: {} + html-escaper@3.0.3: {} + html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 + html-void-elements@3.0.0: {} + http-cache-semantics@4.1.1: {} http-errors@2.0.0: @@ -14603,6 +16812,10 @@ snapshots: ini@1.3.8: {} + inline-style-parser@0.1.1: {} + + inline-style-parser@0.2.3: {} + interface-datastore@7.0.4: dependencies: interface-store: 3.0.4 @@ -14745,6 +16958,15 @@ snapshots: iron-webcrypto@1.0.0: {} + is-absolute-url@4.0.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 @@ -14789,6 +17011,8 @@ snapshots: dependencies: has-tostringtag: 1.0.0 + is-decimal@2.0.1: {} + is-directory@0.3.1: {} is-docker@2.2.1: {} @@ -14797,6 +17021,8 @@ snapshots: is-electron@2.2.2: {} + is-extendable@0.1.1: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@2.0.0: {} @@ -14813,6 +17039,8 @@ snapshots: is-hex-prefixed@1.0.0: {} + is-hexadecimal@2.0.1: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -14833,6 +17061,8 @@ snapshots: is-plain-obj@2.1.0: {} + is-plain-obj@4.1.0: {} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 @@ -14874,6 +17104,8 @@ snapshots: is-unicode-supported@1.3.0: {} + is-unicode-supported@2.0.0: {} + is-weakref@1.0.2: dependencies: call-bind: 1.0.7 @@ -15141,6 +17373,8 @@ snapshots: json5@2.2.3: {} + jsonc-parser@2.3.1: {} + jsonc-parser@3.2.0: {} jsonfile@4.0.0: @@ -15287,6 +17521,13 @@ snapshots: load-tsconfig@0.2.5: {} + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + local-pkg@0.5.0: dependencies: mlly: 1.5.0 @@ -15337,6 +17578,11 @@ snapshots: chalk: 5.3.0 is-unicode-supported: 1.3.0 + log-symbols@6.0.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + logkitty@0.7.1: dependencies: ansi-fragments: 0.2.1 @@ -15347,6 +17593,8 @@ snapshots: long@5.2.3: {} + longest-streak@3.1.0: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -15375,6 +17623,10 @@ snapshots: dependencies: es5-ext: 0.10.62 + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + magic-string@0.30.7: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -15404,6 +17656,10 @@ snapshots: dependencies: tmpl: 1.0.5 + markdown-extensions@2.0.0: {} + + markdown-table@3.0.3: {} + marky@1.2.5: {} md5.js@1.3.5: @@ -15412,60 +17668,242 @@ snapshots: inherits: 2.0.4 safe-buffer: 5.2.1 - mdn-data@2.0.30: {} - - memoize-one@5.2.1: {} + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 - memoizee@0.4.15: + mdast-util-directive@3.0.0: dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-weak-map: 2.0.3 - event-emitter: 0.3.5 - is-promise: 2.2.2 - lru-queue: 0.1.0 - next-tick: 1.1.0 - timers-ext: 0.1.7 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color - memorystream@0.3.1: {} + mdast-util-find-and-replace@3.0.1: + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.0: + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color - merge-options@3.0.4: + mdast-util-gfm-autolink-literal@2.0.0: dependencies: - is-plain-obj: 2.1.0 - - merge-stream@2.0.0: {} + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 - merge2@1.4.1: {} + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color - merkletreejs@0.3.11: + mdast-util-gfm-strikethrough@2.0.0: dependencies: - bignumber.js: 9.1.2 - buffer-reverse: 1.0.1 - crypto-js: 4.2.0 - treeify: 1.1.0 - web3-utils: 1.10.3 + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color - metro-babel-transformer@0.80.6: + mdast-util-gfm-table@2.0.0: dependencies: - '@babel/core': 7.23.9 - hermes-parser: 0.19.1 - nullthrows: 1.1.1 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - metro-cache-key@0.80.6: {} + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color - metro-cache@0.80.6: + mdast-util-gfm@3.0.0: dependencies: - metro-core: 0.80.6 - rimraf: 3.0.2 + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color - metro-config@0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3): + mdast-util-mdx-expression@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.1.2: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.3 + + mdn-data@2.0.30: {} + + memoize-one@5.2.1: {} + + memoizee@0.4.15: + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.7 + + memorystream@0.3.1: {} + + merge-options@3.0.4: + dependencies: + is-plain-obj: 2.1.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merkletreejs@0.3.11: + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.3 + + metro-babel-transformer@0.80.6: + dependencies: + '@babel/core': 7.23.9 + hermes-parser: 0.19.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-cache-key@0.80.6: {} + + metro-cache@0.80.6: + dependencies: + metro-core: 0.80.6 + rimraf: 3.0.2 + + metro-config@0.80.6(bufferutil@4.0.8)(encoding@0.1.13): dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 jest-validate: 29.7.0 - metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) metro-cache: 0.80.6 metro-core: 0.80.6 metro-runtime: 0.80.6 @@ -15541,13 +17979,13 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-worker@0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3): + metro-transform-worker@0.80.6(bufferutil@4.0.8)(encoding@0.1.13): dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) metro-babel-transformer: 0.80.6 metro-cache: 0.80.6 metro-cache-key: 0.80.6 @@ -15561,7 +17999,7 @@ snapshots: - supports-color - utf-8-validate - metro@0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3): + metro@0.80.6(bufferutil@4.0.8)(encoding@0.1.13): dependencies: '@babel/code-frame': 7.23.5 '@babel/core': 7.23.9 @@ -15587,7 +18025,7 @@ snapshots: metro-babel-transformer: 0.80.6 metro-cache: 0.80.6 metro-cache-key: 0.80.6 - metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) metro-core: 0.80.6 metro-file-map: 0.80.6 metro-resolver: 0.80.6 @@ -15595,7 +18033,7 @@ snapshots: metro-source-map: 0.80.6 metro-symbolicate: 0.80.6 metro-transform-plugins: 0.80.6 - metro-transform-worker: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + metro-transform-worker: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) mime-types: 2.1.35 node-fetch: 2.7.0(encoding@0.1.13) nullthrows: 1.1.1 @@ -15604,7 +18042,7 @@ snapshots: source-map: 0.5.7 strip-ansi: 6.0.1 throat: 5.0.0 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 7.5.9(bufferutil@4.0.8) yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -15614,6 +18052,280 @@ snapshots: micro-ftch@0.3.1: {} + micromark-core-commonmark@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-directive@3.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + parse-entities: 4.0.1 + + micromark-extension-gfm-autolink-literal@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-footnote@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-strikethrough@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-table@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-gfm-task-list-item@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-mdx-expression@3.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-mdx-jsx@3.0.0: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-mdx-expression@2.0.1: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-factory-space@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-events-to-acorn@2.0.2: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + micromatch@4.0.5: dependencies: braces: 3.0.2 @@ -15671,9 +18383,19 @@ snapshots: minipass@7.0.4: {} - mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4): + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + dependencies: + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4): dependencies: - viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4) + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -15733,6 +18455,8 @@ snapshots: ms@2.1.3: {} + muggle-string@0.4.1: {} + multiformats@11.0.2: {} multiformats@12.1.3: {} @@ -15769,6 +18493,10 @@ snapshots: next-tick@1.1.0: {} + nlcst-to-string@3.1.1: + dependencies: + '@types/nlcst': 1.0.4 + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -15812,6 +18540,8 @@ snapshots: normalize-url@8.0.0: {} + not@0.1.0: {} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -15820,6 +18550,10 @@ snapshots: dependencies: path-key: 4.0.0 + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + nullthrows@1.1.1: {} number-to-bn@1.7.0: @@ -15958,6 +18692,18 @@ snapshots: strip-ansi: 7.1.0 wcwidth: 1.0.1 + ora@8.0.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.0.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.1.0 + strip-ansi: 7.1.0 + os-tmpdir@1.0.2: {} p-cancelable@3.0.0: {} @@ -16023,6 +18769,14 @@ snapshots: registry-url: 6.0.1 semver: 7.6.0 + pagefind@1.1.0: + optionalDependencies: + '@pagefind/darwin-arm64': 1.1.0 + '@pagefind/darwin-x64': 1.1.0 + '@pagefind/linux-arm64': 1.1.0 + '@pagefind/linux-x64': 1.1.0 + '@pagefind/windows-x64': 1.1.0 + param-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -16034,6 +18788,17 @@ snapshots: parse-duration@1.1.0: {} + parse-entities@4.0.1: + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + parse-json@4.0.0: dependencies: error-ex: 1.3.2 @@ -16046,6 +18811,12 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-latin@5.0.1: + dependencies: + nlcst-to-string: 3.1.1 + unist-util-modify-children: 3.1.1 + unist-util-visit-children: 2.0.2 + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -16083,6 +18854,8 @@ snapshots: lru-cache: 10.2.0 minipass: 7.0.4 + path-to-regexp@6.2.2: {} + path-type@4.0.0: {} pathe@1.1.2: {} @@ -16142,6 +18915,10 @@ snapshots: dependencies: find-up: 3.0.0 + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + pkg-types@1.0.3: dependencies: jsonc-parser: 3.2.0 @@ -16242,6 +19019,13 @@ snapshots: preact@10.19.5: {} + preferred-pm@3.1.3: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -16276,6 +19060,8 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 + prismjs@1.29.0: {} + process-nextick-args@2.0.1: {} process-warning@1.0.0: {} @@ -16297,6 +19083,8 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + property-information@6.5.0: {} + proto-list@1.2.4: {} protobufjs@7.2.6: @@ -16388,22 +19176,22 @@ snapshots: react: 18.2.0 tween-functions: 1.2.0 - react-devtools-core@4.28.5(bufferutil@4.0.8)(utf-8-validate@6.0.3): + react-devtools-core@4.28.5(bufferutil@4.0.8): dependencies: shell-quote: 1.8.1 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 7.5.9(bufferutil@4.0.8) transitivePeerDependencies: - bufferutil - utf-8-validate - react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0): + react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.23.9 html-parse-stringify: 3.0.1 i18next: 22.5.1 react: 18.2.0 optionalDependencies: - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3) + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) react-is@16.13.1: {} @@ -16415,26 +19203,26 @@ snapshots: dependencies: p-defer: 3.0.0 - react-native-webview@11.26.1(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3))(react@18.2.0): + react-native-webview@11.26.1(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 react: 18.2.0 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3) + react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) - react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3): + react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@react-native-community/cli': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13) '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) '@react-native-community/cli-platform-ios': 12.3.2(encoding@0.1.13) '@react-native/assets-registry': 0.73.1 '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - '@react-native/community-cli-plugin': 0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@6.0.3) + '@react-native/community-cli-plugin': 0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13) '@react-native/gradle-plugin': 0.73.4 '@react-native/js-polyfills': 0.73.1 '@react-native/normalize-colors': 0.73.2 - '@react-native/virtualized-lists': 0.73.4(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)(utf-8-validate@6.0.3)) + '@react-native/virtualized-lists': 0.73.4(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -16454,14 +19242,14 @@ snapshots: pretty-format: 26.6.2 promise: 8.3.0 react: 18.2.0 - react-devtools-core: 4.28.5(bufferutil@4.0.8)(utf-8-validate@6.0.3) + react-devtools-core: 4.28.5(bufferutil@4.0.8) react-refresh: 0.14.0 react-shallow-renderer: 16.15.0(react@18.2.0) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 - ws: 6.2.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 6.2.2(bufferutil@4.0.8) yargs: 17.7.2 transitivePeerDependencies: - '@babel/core' @@ -16571,6 +19359,93 @@ snapshots: dependencies: jsesc: 0.5.0 + rehype-expressive-code@0.35.3: + dependencies: + expressive-code: 0.35.3 + + rehype-parse@9.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.1 + unified: 11.0.4 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.0.3 + vfile: 6.0.1 + + rehype-stringify@10.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.1 + unified: 11.0.4 + + rehype@13.0.1: + dependencies: + '@types/hast': 3.0.4 + rehype-parse: 9.0.0 + rehype-stringify: 10.0.0 + unified: 11.0.4 + + remark-directive@3.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-directive: 3.0.0 + micromark-extension-directive: 3.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.0.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.1.0 + unified: 11.0.4 + vfile: 6.0.1 + + remark-smartypants@2.1.0: + dependencies: + retext: 8.1.0 + retext-smartypants: 5.2.0 + unist-util-visit: 5.0.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + + request-light@0.7.0: {} + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -16609,6 +19484,33 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 + retext-latin@3.1.0: + dependencies: + '@types/nlcst': 1.0.4 + parse-latin: 5.0.1 + unherit: 3.0.1 + unified: 10.1.2 + + retext-smartypants@5.2.0: + dependencies: + '@types/nlcst': 1.0.4 + nlcst-to-string: 3.1.1 + unified: 10.1.2 + unist-util-visit: 4.1.2 + + retext-stringify@3.1.0: + dependencies: + '@types/nlcst': 1.0.4 + nlcst-to-string: 3.1.1 + unified: 10.1.2 + + retext@8.1.0: + dependencies: + '@types/nlcst': 1.0.4 + retext-latin: 3.1.0 + retext-stringify: 3.1.0 + unified: 10.1.2 + retimer@3.0.0: {} reusify@1.0.4: {} @@ -16711,6 +19613,8 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.7.1 + sax@1.3.0: {} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -16733,6 +19637,11 @@ snapshots: node-addon-api: 5.1.0 node-gyp-build: 4.8.0 + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + semver@5.7.2: {} semver@6.3.1: {} @@ -16741,6 +19650,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.6.2: {} + send@0.18.0: dependencies: debug: 2.6.9 @@ -16842,6 +19753,10 @@ snapshots: shell-quote@1.8.1: {} + shiki@1.5.1: + dependencies: + '@shikijs/core': 1.5.1 + side-channel@1.0.4: dependencies: call-bind: 1.0.7 @@ -16866,6 +19781,13 @@ snapshots: sisteransi@1.0.5: {} + sitemap@7.1.1: + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.3.0 + slash@3.0.0: {} slash@4.0.0: {} @@ -16887,11 +19809,11 @@ snapshots: dot-case: 3.0.4 tslib: 2.6.2 - socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3): + socket.io-client@4.7.4(bufferutil@4.0.8): dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4 - engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) + engine.io-client: 6.5.3(bufferutil@4.0.8) socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -16970,6 +19892,8 @@ snapshots: source-map@0.7.4: {} + space-separated-tokens@2.0.2: {} + split-on-first@1.1.0: {} split2@4.2.0: {} @@ -16990,6 +19914,18 @@ snapshots: standard-as-callback@2.1.0: {} + starlight-links-validator@0.6.0(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)))(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)): + dependencies: + '@astrojs/starlight': 0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + github-slugger: 2.0.0 + hast-util-from-html: 2.0.1 + hast-util-has-property: 3.0.0 + is-absolute-url: 4.0.1 + kleur: 4.1.5 + mdast-util-to-string: 4.0.0 + unist-util-visit: 5.0.0 + statuses@1.5.0: {} statuses@2.0.1: {} @@ -17000,6 +19936,10 @@ snapshots: dependencies: bl: 5.1.0 + stdin-discarder@0.2.2: {} + + stream-replace-string@2.0.0: {} + stream-shift@1.0.1: {} stream-to-it@0.2.4: @@ -17020,6 +19960,12 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string-width@7.1.0: + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + string.prototype.trim@1.2.8: dependencies: call-bind: 1.0.7 @@ -17046,6 +19992,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 @@ -17058,6 +20009,8 @@ snapshots: dependencies: ansi-regex: 6.0.1 + strip-bom-string@1.0.0: {} + strip-bom@3.0.0: {} strip-final-newline@2.0.0: {} @@ -17082,6 +20035,14 @@ snapshots: strnum@1.0.5: {} + style-to-object@0.4.4: + dependencies: + inline-style-parser: 0.1.1 + + style-to-object@1.0.6: + dependencies: + inline-style-parser: 0.2.3 + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.3 @@ -17110,7 +20071,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.7.1(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13): + svelte-check@3.7.1(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -17118,8 +20079,8 @@ snapshots: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.13 - svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3) + svelte: 4.2.15 + svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3) typescript: 5.4.3 transitivePeerDependencies: - '@babel/core' @@ -17132,7 +20093,7 @@ snapshots: - stylus - sugarss - svelte-check@3.7.1(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15): + svelte-check@3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -17140,8 +20101,8 @@ snapshots: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.15 - svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3) + svelte: 4.2.13 + svelte-preprocess: 5.1.3(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3) typescript: 5.4.3 transitivePeerDependencies: - '@babel/core' @@ -17212,30 +20173,30 @@ snapshots: svelte: 4.2.15 tiny-glob: 0.2.9 - svelte-preprocess@5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3): + svelte-preprocess@5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.9 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.13 + svelte: 4.2.15 optionalDependencies: '@babel/core': 7.23.9 postcss: 8.4.38 postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) typescript: 5.4.3 - svelte-preprocess@5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3): + svelte-preprocess@5.1.3(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.9 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.15 + svelte: 4.2.13 optionalDependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 postcss: 8.4.38 postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) typescript: 5.4.3 @@ -17420,6 +20381,10 @@ snapshots: treeify@1.1.0: {} + trim-lines@3.0.1: {} + + trough@2.2.0: {} + ts-api-utils@1.2.1(typescript@5.4.3): dependencies: typescript: 5.4.3 @@ -17491,6 +20456,8 @@ snapshots: type-fest@0.7.1: {} + type-fest@2.19.0: {} + type@1.2.0: {} type@2.7.2: {} @@ -17522,6 +20489,12 @@ snapshots: for-each: 0.3.3 is-typed-array: 1.1.12 + typesafe-path@0.2.2: {} + + typescript-auto-import-cache@0.3.2: + dependencies: + semver: 7.6.0 + typescript@5.4.3: {} ufo@1.4.0: {} @@ -17572,6 +20545,8 @@ snapshots: unfetch@4.2.0: {} + unherit@3.0.1: {} + unicode-canonical-property-names-ecmascript@2.0.0: {} unicode-match-property-ecmascript@2.0.0: @@ -17583,6 +20558,91 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unified@10.1.2: + dependencies: + '@types/unist': 2.0.10 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unified@11.0.4: + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.10 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-modify-children@3.1.1: + dependencies: + '@types/unist': 2.0.10 + array-iterate: 2.0.1 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.10 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-visit-children@2.0.2: + dependencies: + '@types/unist': 2.0.10 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universalify@0.1.2: {} universalify@0.2.0: {} @@ -17685,7 +20745,52 @@ snapshots: vary@1.1.2: {} - viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4): + vfile-location@5.0.2: + dependencies: + '@types/unist': 3.0.2 + vfile: 6.0.1 + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 3.0.3 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vfile@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + + viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 0.9.8(typescript@5.4.3)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -17702,7 +20807,24 @@ snapshots: - utf-8-validate - zod - viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.22.4): + viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.3)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + optionalDependencies: + typescript: 5.4.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -17803,18 +20925,18 @@ snapshots: optionalDependencies: vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) - vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2)): + vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)): dependencies: cross-fetch: 3.1.8(encoding@0.1.13) - vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) + vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) transitivePeerDependencies: - encoding - vitest-mock-extended@1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2)): + vitest-mock-extended@1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)): dependencies: ts-essentials: 9.4.1(typescript@5.4.3) typescript: 5.4.3 - vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) + vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2): dependencies: @@ -17850,7 +20972,7 @@ snapshots: - supports-color - terser - vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2): + vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2): dependencies: '@vitest/expect': 1.5.3 '@vitest/runner': 1.5.3 @@ -17888,6 +21010,85 @@ snapshots: void-elements@3.1.0: {} + volar-service-css@0.0.43(@volar/language-service@2.2.2): + dependencies: + vscode-css-languageservice: 6.2.14 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.2.2 + + volar-service-emmet@0.0.43(@volar/language-service@2.2.2): + dependencies: + '@vscode/emmet-helper': 2.9.3 + vscode-html-languageservice: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462' + optionalDependencies: + '@volar/language-service': 2.2.2 + + volar-service-html@0.0.43(@volar/language-service@2.2.2): + dependencies: + vscode-html-languageservice: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462' + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.2.2 + + volar-service-prettier@0.0.43(@volar/language-service@2.2.2)(prettier@3.2.5): + dependencies: + vscode-uri: 3.0.8 + optionalDependencies: + '@volar/language-service': 2.2.2 + prettier: 3.2.5 + + volar-service-typescript-twoslash-queries@0.0.43(@volar/language-service@2.2.2): + optionalDependencies: + '@volar/language-service': 2.2.2 + + volar-service-typescript@0.0.43(@volar/language-service@2.2.2): + dependencies: + path-browserify: 1.0.1 + semver: 7.6.0 + typescript-auto-import-cache: 0.3.2 + vscode-languageserver-textdocument: 1.0.11 + vscode-nls: 5.2.0 + optionalDependencies: + '@volar/language-service': 2.2.2 + + vscode-css-languageservice@6.2.14: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + + vscode-html-languageservice@5.2.0: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.11: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-nls@5.2.0: {} + + vscode-uri@2.1.2: {} + + vscode-uri@3.0.8: {} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -17900,6 +21101,8 @@ snapshots: dependencies: defaults: 1.0.4 + web-namespaces@2.0.1: {} + web3-eth-abi@1.10.4: dependencies: '@ethersproject/abi': 5.7.0 @@ -17961,6 +21164,18 @@ snapshots: which-module@2.0.1: {} + which-pm-runs@1.1.0: {} + + which-pm@2.0.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which-pm@2.1.1: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 @@ -17982,6 +21197,10 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -18008,27 +21227,23 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@6.2.2(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@6.2.2(bufferutil@4.0.8): dependencies: async-limiter: 1.0.1 optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.3 - ws@7.4.6(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@7.4.6(bufferutil@4.0.8): optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.3 - ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@7.5.9(bufferutil@4.0.8): optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.3 - ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@8.11.0(bufferutil@4.0.8): optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.3 ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): optionalDependencies: @@ -18097,10 +21312,18 @@ snapshots: yocto-queue@1.0.0: {} + zod-to-json-schema@3.23.0(zod@3.23.8): + dependencies: + zod: 3.23.8 + zod@3.22.4: {} + zod@3.23.8: {} + zustand@4.4.1(react@18.2.0): dependencies: use-sync-external-store: 1.2.0(react@18.2.0) optionalDependencies: react: 18.2.0 + + zwitch@2.0.4: {} diff --git a/release-please-config.json b/release-please-config.json index 93d9a08d57d..109eacb690a 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -3,6 +3,7 @@ "packages/blobstorage": {}, "packages/branding": {}, "packages/bridge-ui": {}, + "packages/docs-site": {}, "packages/eventindexer": {}, "packages/fork-diff": {}, "packages/guardian-prover-health-check": {}, From 2666b459c6f0cf85061bec748db3973670801eaa Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 17:05:06 -0400 Subject: [PATCH 070/100] chore(main): release branding 0.4.0 (#17125) Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .release-please-manifest.json | 2 +- packages/branding/CHANGELOG.md | 3 +++ packages/branding/package.json | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 26df389d454..f6be47dedb1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { "packages/blobstorage": "0.1.0", - "packages/branding": "0.3.0", + "packages/branding": "0.4.0", "packages/bridge-ui": "4.2.0", "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", diff --git a/packages/branding/CHANGELOG.md b/packages/branding/CHANGELOG.md index 0844ef20370..aedb7801235 100644 --- a/packages/branding/CHANGELOG.md +++ b/packages/branding/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## [0.4.0](https://github.com/taikoxyz/taiko-mono/compare/branding-v0.3.0...branding-v0.4.0) (2024-05-13) + + ## [0.3.0](https://github.com/taikoxyz/taiko-mono/compare/branding-v0.2.0...branding-v0.3.0) (2023-08-15) diff --git a/packages/branding/package.json b/packages/branding/package.json index 8a44af89134..16625484576 100644 --- a/packages/branding/package.json +++ b/packages/branding/package.json @@ -1,5 +1,5 @@ { "name": "@taiko/branding", - "version": "0.3.0", + "version": "0.4.0", "private": true } From 0b01c41c361eb7c32c0148fe99c49ebdf26f5f6c Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 17:21:15 -0400 Subject: [PATCH 071/100] chore(repo): fix release versions (#17137) --- .release-please-manifest.json | 2 +- packages/bridge-ui/package.json | 2 +- release-please-config.json | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f6be47dedb1..e57c9fcfd12 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,7 +1,7 @@ { "packages/blobstorage": "0.1.0", "packages/branding": "0.4.0", - "packages/bridge-ui": "4.2.0", + "packages/bridge-ui": "2.9.3", "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.4.0", diff --git a/packages/bridge-ui/package.json b/packages/bridge-ui/package.json index 50b984eab59..cd328ba55bd 100644 --- a/packages/bridge-ui/package.json +++ b/packages/bridge-ui/package.json @@ -1,6 +1,6 @@ { "name": "bridge-ui", - "version": "4.2.0", + "version": "2.9.3", "private": true, "scripts": { "dev": "vite dev", diff --git a/release-please-config.json b/release-please-config.json index 109eacb690a..62bbed1ec07 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -2,8 +2,12 @@ "packages": { "packages/blobstorage": {}, "packages/branding": {}, - "packages/bridge-ui": {}, - "packages/docs-site": {}, + "packages/bridge-ui": { + "release-as": "2.10.0" + }, + "packages/docs-site": { + "release-as": "1.0.0" + }, "packages/eventindexer": {}, "packages/fork-diff": {}, "packages/guardian-prover-health-check": {}, From 7e3bb924a533ba301ce176c1dd3cc8e446c13d27 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 17:26:14 -0400 Subject: [PATCH 072/100] chore(main): release bridge-ui 2.10.0 (#17139) --- .release-please-manifest.json | 2 +- packages/bridge-ui/CHANGELOG.md | 50 +++++++++++++++++++++++++++++++++ packages/bridge-ui/package.json | 2 +- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e57c9fcfd12..cbfefaabf09 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,7 +1,7 @@ { "packages/blobstorage": "0.1.0", "packages/branding": "0.4.0", - "packages/bridge-ui": "2.9.3", + "packages/bridge-ui": "2.10.0", "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.4.0", diff --git a/packages/bridge-ui/CHANGELOG.md b/packages/bridge-ui/CHANGELOG.md index ade38564f5f..3429ef9d41e 100644 --- a/packages/bridge-ui/CHANGELOG.md +++ b/packages/bridge-ui/CHANGELOG.md @@ -1,5 +1,55 @@ # Changelog +## [2.10.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.9.3...bridge-ui-v2.10.0) (2024-05-13) + + +### ⚠ BREAKING CHANGES + +* **bridge-ui:** update to protocol 1.0, two step bridging ([#16230](https://github.com/taikoxyz/taiko-mono/issues/16230)) +* **bridge-ui:** walletconnect not allowing to switch to unconfigured chains ([#16324](https://github.com/taikoxyz/taiko-mono/issues/16324)) + +### Features + +* **bridge-ui:** add testnet name to header ([#16619](https://github.com/taikoxyz/taiko-mono/issues/16619)) ([294bb01](https://github.com/taikoxyz/taiko-mono/commit/294bb017d90e4b8c2e1338a09f1cef90cdb54831)) +* **bridge-ui:** add WETH warning ([#17051](https://github.com/taikoxyz/taiko-mono/issues/17051)) ([a77221a](https://github.com/taikoxyz/taiko-mono/commit/a77221ae1e374278f14cd5122d2e7272f9a75aa1)) +* **bridge-ui:** base64 NFT data ([#16645](https://github.com/taikoxyz/taiko-mono/issues/16645)) ([4516d0a](https://github.com/taikoxyz/taiko-mono/commit/4516d0aaa3c9ff0c50f16d1abc82999a8ac3d02f)) +* **bridge-ui:** bump dependencies ([#16960](https://github.com/taikoxyz/taiko-mono/issues/16960)) ([811fecb](https://github.com/taikoxyz/taiko-mono/commit/811fecb0f7865d465e61aaa973cb11561b2150d7)) +* **bridge-ui:** code review and small fix ([#17014](https://github.com/taikoxyz/taiko-mono/issues/17014)) ([c20f25f](https://github.com/taikoxyz/taiko-mono/commit/c20f25f24307b0a994e3387c90c12844aa01e83a)) +* **bridge-ui:** fee adjustments ([#16834](https://github.com/taikoxyz/taiko-mono/issues/16834)) ([0a48b0f](https://github.com/taikoxyz/taiko-mono/commit/0a48b0f00ed278535b8e9171055ac9de45b65a62)) +* **bridge-ui:** handle transaction timeouts ([#16912](https://github.com/taikoxyz/taiko-mono/issues/16912)) ([759c511](https://github.com/taikoxyz/taiko-mono/commit/759c511c04c03a1246f88e17ef1ad7179cb9e4cb)) +* **bridge-ui:** integrate NFT api ([#16940](https://github.com/taikoxyz/taiko-mono/issues/16940)) ([f769e77](https://github.com/taikoxyz/taiko-mono/commit/f769e7758d221b6e215f46f64fa2324d132e976d)) +* **bridge-ui:** mobile style for claim dialogs ([#16823](https://github.com/taikoxyz/taiko-mono/issues/16823)) ([63f15c9](https://github.com/taikoxyz/taiko-mono/commit/63f15c9dcad96aba755f7d618064b4149526cc22)) +* **bridge-ui:** prepare for hekla ([#16618](https://github.com/taikoxyz/taiko-mono/issues/16618)) ([6953b3c](https://github.com/taikoxyz/taiko-mono/commit/6953b3c141a1dec744a0e0bfa8c9aa0a1f405407)) +* **bridge-ui:** processingFee from API ([#16708](https://github.com/taikoxyz/taiko-mono/issues/16708)) ([3cd7cce](https://github.com/taikoxyz/taiko-mono/commit/3cd7cce1c52f94276011f4581143390c26acb49e)) +* **bridge-ui:** quota manager check ([#17024](https://github.com/taikoxyz/taiko-mono/issues/17024)) ([3cf6e7b](https://github.com/taikoxyz/taiko-mono/commit/3cf6e7b4bcb449c78a50cfd85d2fcdcbe451ab2e)) +* **bridge-ui:** release ([#17071](https://github.com/taikoxyz/taiko-mono/issues/17071)) ([2fa3ae0](https://github.com/taikoxyz/taiko-mono/commit/2fa3ae0b2b2317a467709110c381878a3a9f8ec6)) +* **bridge-ui:** remove two step and change gasLimit ([#16765](https://github.com/taikoxyz/taiko-mono/issues/16765)) ([14576f7](https://github.com/taikoxyz/taiko-mono/commit/14576f78ae5a93fe5ec7972f3e32789f26723592)) +* **bridge-ui:** retry dialog ([#16536](https://github.com/taikoxyz/taiko-mono/issues/16536)) ([3beba21](https://github.com/taikoxyz/taiko-mono/commit/3beba214e62ad196bafd716cadaa3f133ecdb021)) +* **bridge-ui:** update to protocol 1.0, two step bridging ([#16230](https://github.com/taikoxyz/taiko-mono/issues/16230)) ([71babae](https://github.com/taikoxyz/taiko-mono/commit/71babae14645ff267c7baa101706860aa6f556f0)) +* **bridge-ui:** update token dropdown ([#16979](https://github.com/taikoxyz/taiko-mono/issues/16979)) ([f19cf66](https://github.com/taikoxyz/taiko-mono/commit/f19cf6686eaa327f56a645a2c3290baa2e513782)) +* **protocol:** risc0 verifier contract ([#16331](https://github.com/taikoxyz/taiko-mono/issues/16331)) ([17abc18](https://github.com/taikoxyz/taiko-mono/commit/17abc189ca3d2752beb5400c036a650fd5b9c895)) + + +### Bug Fixes + +* **bridge-ui:** add missing labels to i18n ([#16633](https://github.com/taikoxyz/taiko-mono/issues/16633)) ([3854467](https://github.com/taikoxyz/taiko-mono/commit/38544675bf6578bc1016ecfd60cb3a1f93207516)) +* **bridge-ui:** balance updating when connecting ([#16481](https://github.com/taikoxyz/taiko-mono/issues/16481)) ([2ec333f](https://github.com/taikoxyz/taiko-mono/commit/2ec333f5d3f3330c11dc0ab3afacc027c33cd5e0)) +* **bridge-ui:** canonical check can use wrong chain, incorrect supported chain check ([#16526](https://github.com/taikoxyz/taiko-mono/issues/16526)) ([d826e88](https://github.com/taikoxyz/taiko-mono/commit/d826e886eba989c35b3f28145f815642684f84d7)) +* **bridge-ui:** correct display of forward arrow and handling of invalid pagination input ([#16485](https://github.com/taikoxyz/taiko-mono/issues/16485)) ([d4d9ce9](https://github.com/taikoxyz/taiko-mono/commit/d4d9ce9bb7914b21f8ce6fc1ac5f986eb64d41f8)) +* **bridge-ui:** custom and none fee selection overwritten by error fetching recommended fee ([#16737](https://github.com/taikoxyz/taiko-mono/issues/16737)) ([9166ee3](https://github.com/taikoxyz/taiko-mono/commit/9166ee3e0a968db19d8cec2002565413d79cd708)) +* **bridge-ui:** defaulting to source chain explorer for link to canonical address ([#16701](https://github.com/taikoxyz/taiko-mono/issues/16701)) ([68bd435](https://github.com/taikoxyz/taiko-mono/commit/68bd4354d03429ceccd4b311db6e59066111af09)) +* **bridge-ui:** dropdown css and color css fix ([#17000](https://github.com/taikoxyz/taiko-mono/issues/17000)) ([fcbc346](https://github.com/taikoxyz/taiko-mono/commit/fcbc3463e623b81eb5ed9f73c5098e5fbea874ca)) +* **bridge-ui:** fix ERC721 and ERC1155 detection in NFT bridge ([#16680](https://github.com/taikoxyz/taiko-mono/issues/16680)) ([ca45aa6](https://github.com/taikoxyz/taiko-mono/commit/ca45aa6da6101f15fe9ef4c485e5d61a64f66f84)) +* **bridge-ui:** fix ETH self claiming ([#16344](https://github.com/taikoxyz/taiko-mono/issues/16344)) ([4271f0d](https://github.com/taikoxyz/taiko-mono/commit/4271f0d2b01da8179d604a0fbff0816a0d72e547)) +* **bridge-ui:** fix issue where balance is shown for wrong token ([#16541](https://github.com/taikoxyz/taiko-mono/issues/16541)) ([1dd47cf](https://github.com/taikoxyz/taiko-mono/commit/1dd47cf5eca91d47375547b23203a9f942e22e80)) +* **bridge-ui:** manual import not resetting correctly ([#16347](https://github.com/taikoxyz/taiko-mono/issues/16347)) ([87398fe](https://github.com/taikoxyz/taiko-mono/commit/87398fe9606cf73ce66ed4f8321368fe8ac8fbb4)) +* **bridge-ui:** move label to i18n, fix some typos ([#16522](https://github.com/taikoxyz/taiko-mono/issues/16522)) ([c8c4773](https://github.com/taikoxyz/taiko-mono/commit/c8c4773dd3fe41decf13306eace73d65a9829529)) +* **bridge-ui:** preserve custom processing fee selection across components ([#16346](https://github.com/taikoxyz/taiko-mono/issues/16346)) ([9cf6b3a](https://github.com/taikoxyz/taiko-mono/commit/9cf6b3ae0981d1755d253cd7d6238771898fc3f4)) +* **bridge-ui:** prevent reverse tabnabbing attacks ([#16583](https://github.com/taikoxyz/taiko-mono/issues/16583)) ([fc57d82](https://github.com/taikoxyz/taiko-mono/commit/fc57d82cb7c049a656c2f08d947f4a5a42ffacf3)) +* **bridge-ui:** remove erroneous numeric expression ([#16858](https://github.com/taikoxyz/taiko-mono/issues/16858)) ([37525d8](https://github.com/taikoxyz/taiko-mono/commit/37525d815c32293fcd09b4118791c93f0b0528ee)) +* **bridge-ui:** update disabled for chainselector ([#16814](https://github.com/taikoxyz/taiko-mono/issues/16814)) ([406b15a](https://github.com/taikoxyz/taiko-mono/commit/406b15a301c7a3454957518a2cc33a44fbf21cde)) +* **bridge-ui:** walletconnect not allowing to switch to unconfigured chains ([#16324](https://github.com/taikoxyz/taiko-mono/issues/16324)) ([d6ef79e](https://github.com/taikoxyz/taiko-mono/commit/d6ef79eae0836a9dabd481cd0953bc03eea9bf7a)) + ## [4.2.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v4.1.0...bridge-ui-v4.2.0) (2024-04-24) diff --git a/packages/bridge-ui/package.json b/packages/bridge-ui/package.json index cd328ba55bd..3b82da3b672 100644 --- a/packages/bridge-ui/package.json +++ b/packages/bridge-ui/package.json @@ -1,6 +1,6 @@ { "name": "bridge-ui", - "version": "2.9.3", + "version": "2.10.0", "private": true, "scripts": { "dev": "vite dev", From c86ce776a9c61cfec58303e6f29b6741edda640f Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 17:26:27 -0400 Subject: [PATCH 073/100] chore(main): release docs-site 1.0.0 (#17138) --- packages/docs-site/CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 packages/docs-site/CHANGELOG.md diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md new file mode 100644 index 00000000000..3a02d77d02c --- /dev/null +++ b/packages/docs-site/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +## [1.0.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.0.0...docs-site-v1.0.0) (2024-05-13) + + +### Features + +* **bridge-ui:** release ([#17071](https://github.com/taikoxyz/taiko-mono/issues/17071)) ([2fa3ae0](https://github.com/taikoxyz/taiko-mono/commit/2fa3ae0b2b2317a467709110c381878a3a9f8ec6)) From eb8fda30e9cd84097d51e4d88137eff11b102e7d Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 17:32:01 -0400 Subject: [PATCH 074/100] ci(guardian-prover-health-check-ui): fix failing lint job (#17122) --- .github/workflows/guardians-ui-ci.yml | 9 +------ .../src/app.config.ts | 2 +- .../src/lib/dataFetcher.ts | 7 ++--- .../guardianProver/loadConfiguredGuardians.ts | 26 ++++++++++--------- .../src/lib/types.ts | 2 +- 5 files changed, 19 insertions(+), 27 deletions(-) diff --git a/.github/workflows/guardians-ui-ci.yml b/.github/workflows/guardians-ui-ci.yml index df81f28ee74..c2935406a18 100644 --- a/.github/workflows/guardians-ui-ci.yml +++ b/.github/workflows/guardians-ui-ci.yml @@ -1,7 +1,6 @@ name: Guardians UI Build and Checks -on: - workflow_call +on: workflow_call jobs: check-guardian-prover-health-check-ui: @@ -31,9 +30,3 @@ jobs: - name: Linting working-directory: ./packages/guardian-prover-health-check-ui run: pnpm lint - - - name: Unit tests - env: - SKIP_ENV_VALIDATION: "true" - working-directory: ./packages/guardian-prover-health-check-ui - run: pnpm test:unit diff --git a/packages/guardian-prover-health-check-ui/src/app.config.ts b/packages/guardian-prover-health-check-ui/src/app.config.ts index 8a3f22b0a30..32fd72534af 100644 --- a/packages/guardian-prover-health-check-ui/src/app.config.ts +++ b/packages/guardian-prover-health-check-ui/src/app.config.ts @@ -1 +1 @@ -export const configuredNetworks = ['hekla', 'devnet'] +export const configuredNetworks = ['hekla', 'devnet']; diff --git a/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts b/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts index dfd0a31e1c1..c07bf7faaf9 100644 --- a/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts +++ b/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts @@ -116,7 +116,7 @@ async function fetchGuardians() { guardian.name = await getPseudonym(guardian.address); - console.log("getting balance for", guardian.name, guardian.id, guardian.address); + console.log('getting balance for', guardian.name, guardian.id, guardian.address); const [status, uptime, balance] = await Promise.all([ fetchLatestGuardianProverHealthCheckFromApi( @@ -125,7 +125,6 @@ async function fetchGuardians() { ), fetchUptimeFromApi(import.meta.env.VITE_GUARDIAN_PROVER_API_URL, guardian.address), publicClient.getBalance({ address: guardian.address as Address }) - ]); guardian.balance = formatEther(balance); @@ -141,7 +140,6 @@ async function fetchGuardians() { guardianProvers.set(updatedGuardians); lastGuardianFetchTimestamp.set(Date.now()); console.log('updatedGuardians', updatedGuardians); - } async function fetchSignedBlockStats() { @@ -188,7 +186,7 @@ async function fetchStats(): Promise { const guardians = get(guardianProvers); const updatedGuardiansPromises = guardians.map(async (guardian) => { - console.log('fetching stats for', guardian.address) + console.log('fetching stats for', guardian.address); const startupDataFetch = fetchStartupDataFromApi( import.meta.env.VITE_GUARDIAN_PROVER_API_URL, guardian.address @@ -210,7 +208,6 @@ async function fetchStats(): Promise { revision: startupData.revision }; - const blockInfo: BlockInfo = { latestL1BlockNumber: nodeInfo.latestL1BlockNumber, latestL2BlockNumber: nodeInfo.latestL2BlockNumber diff --git a/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts b/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts index 59794e826c8..84bc70b9483 100644 --- a/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts +++ b/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts @@ -1,15 +1,17 @@ -import { configuredNetworks } from "$config"; +import { configuredNetworks } from '$config'; export async function loadGuardians(): Promise<{ [address: string]: string }> { - const network = import.meta.env.VITE_NETWORK_CONFIG; - if (!network) { - throw new Error('Network not configured. Please set VITE_NETWORK_CONFIG in .env file. Currently supported networks: ' + configuredNetworks.join(', ')); - } - const path = `/config/${network}/guardians.json`; - const response = await fetch(path); - if (!response.ok) { - throw new Error(`Failed to load ${path}: ${response.statusText}`); - } - return response.json(); + const network = import.meta.env.VITE_NETWORK_CONFIG; + if (!network) { + throw new Error( + 'Network not configured. Please set VITE_NETWORK_CONFIG in .env file. Currently supported networks: ' + + configuredNetworks.join(', ') + ); + } + const path = `/config/${network}/guardians.json`; + const response = await fetch(path); + if (!response.ok) { + throw new Error(`Failed to load ${path}: ${response.statusText}`); + } + return response.json(); } - diff --git a/packages/guardian-prover-health-check-ui/src/lib/types.ts b/packages/guardian-prover-health-check-ui/src/lib/types.ts index cfc507752d3..ed4038ef9a5 100644 --- a/packages/guardian-prover-health-check-ui/src/lib/types.ts +++ b/packages/guardian-prover-health-check-ui/src/lib/types.ts @@ -1,4 +1,4 @@ -import type { Address } from "viem"; +import type { Address } from 'viem'; export type SignedBlock = { blockHash: string; From 9053b5bbf81c52ee3d90602efedd6e9eb01bbf41 Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 17:34:11 -0400 Subject: [PATCH 075/100] chore(repo): remove release-please version override (#17140) --- release-please-config.json | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/release-please-config.json b/release-please-config.json index 62bbed1ec07..109eacb690a 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -2,12 +2,8 @@ "packages": { "packages/blobstorage": {}, "packages/branding": {}, - "packages/bridge-ui": { - "release-as": "2.10.0" - }, - "packages/docs-site": { - "release-as": "1.0.0" - }, + "packages/bridge-ui": {}, + "packages/docs-site": {}, "packages/eventindexer": {}, "packages/fork-diff": {}, "packages/guardian-prover-health-check": {}, From 809707d7cebdfc0af253ab54ea2c1503ae02ab0e Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 18:00:11 -0400 Subject: [PATCH 076/100] fix(bridge-ui): fix changelog and deployment (#17141) --- .github/workflows/bridge-ui.yml | 14 ++--- packages/bridge-ui/CHANGELOG.md | 101 -------------------------------- 2 files changed, 7 insertions(+), 108 deletions(-) diff --git a/.github/workflows/bridge-ui.yml b/.github/workflows/bridge-ui.yml index 01bff477e9d..afcf45ffb2f 100644 --- a/.github/workflows/bridge-ui.yml +++ b/.github/workflows/bridge-ui.yml @@ -20,8 +20,8 @@ jobs: needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: - environment: 'preview' - flags: '' + environment: "preview" + flags: "" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_BRIDGE_UI_HEKLA }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} @@ -32,20 +32,20 @@ jobs: needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: - environment: 'preview' - flags: '' + environment: "preview" + flags: "" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_BRIDGE_UI_INTERNAL }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} vercel_token: ${{ secrets.VERCEL_TOKEN }} deploy_bridge-ui_hekla_production: - if: ${{ github.ref_name == 'main' && contains(github.ref, 'refs/tags/bridge-ui-') }} + if: ${{ contains(github.ref, 'refs/tags/bridge-ui-') }} needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: - environment: 'production' - flags: '--prod' + environment: "production" + flags: "--prod" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_BRIDGE_UI_HEKLA }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} diff --git a/packages/bridge-ui/CHANGELOG.md b/packages/bridge-ui/CHANGELOG.md index 3429ef9d41e..60b38d0bb72 100644 --- a/packages/bridge-ui/CHANGELOG.md +++ b/packages/bridge-ui/CHANGELOG.md @@ -50,107 +50,6 @@ * **bridge-ui:** update disabled for chainselector ([#16814](https://github.com/taikoxyz/taiko-mono/issues/16814)) ([406b15a](https://github.com/taikoxyz/taiko-mono/commit/406b15a301c7a3454957518a2cc33a44fbf21cde)) * **bridge-ui:** walletconnect not allowing to switch to unconfigured chains ([#16324](https://github.com/taikoxyz/taiko-mono/issues/16324)) ([d6ef79e](https://github.com/taikoxyz/taiko-mono/commit/d6ef79eae0836a9dabd481cd0953bc03eea9bf7a)) -## [4.2.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v4.1.0...bridge-ui-v4.2.0) (2024-04-24) - - -### Features - -* **bridge-ui:** update to protocol 1.0, two step bridging ([#16230](https://github.com/taikoxyz/taiko-mono/issues/16230)) -* **bridge-ui:** walletconnect not allowing to switch to unconfigured chains ([#16324](https://github.com/taikoxyz/taiko-mono/issues/16324)) -* **bridge-ui:** add testnet name to header ([#16619](https://github.com/taikoxyz/taiko-mono/issues/16619)) ([294bb01](https://github.com/taikoxyz/taiko-mono/commit/294bb017d90e4b8c2e1338a09f1cef90cdb54831)) -* **bridge-ui:** base64 NFT data ([#16645](https://github.com/taikoxyz/taiko-mono/issues/16645)) ([4516d0a](https://github.com/taikoxyz/taiko-mono/commit/4516d0aaa3c9ff0c50f16d1abc82999a8ac3d02f)) -* **bridge-ui:** mobile style for claim dialogs ([#16823](https://github.com/taikoxyz/taiko-mono/issues/16823)) ([63f15c9](https://github.com/taikoxyz/taiko-mono/commit/63f15c9dcad96aba755f7d618064b4149526cc22)) -* **bridge-ui:** prepare for hekla ([#16618](https://github.com/taikoxyz/taiko-mono/issues/16618)) ([6953b3c](https://github.com/taikoxyz/taiko-mono/commit/6953b3c141a1dec744a0e0bfa8c9aa0a1f405407)) -* **bridge-ui:** processingFee from API ([#16708](https://github.com/taikoxyz/taiko-mono/issues/16708)) ([3cd7cce](https://github.com/taikoxyz/taiko-mono/commit/3cd7cce1c52f94276011f4581143390c26acb49e)) -* **bridge-ui:** remove two step and change gasLimit ([#16765](https://github.com/taikoxyz/taiko-mono/issues/16765)) ([14576f7](https://github.com/taikoxyz/taiko-mono/commit/14576f78ae5a93fe5ec7972f3e32789f26723592)) -* **bridge-ui:** retry dialog ([#16536](https://github.com/taikoxyz/taiko-mono/issues/16536)) ([3beba21](https://github.com/taikoxyz/taiko-mono/commit/3beba214e62ad196bafd716cadaa3f133ecdb021)) -* **bridge-ui:** update to protocol 1.0, two step bridging ([#16230](https://github.com/taikoxyz/taiko-mono/issues/16230)) ([71babae](https://github.com/taikoxyz/taiko-mono/commit/71babae14645ff267c7baa101706860aa6f556f0)) -* **protocol:** risc0 verifier contract ([#16331](https://github.com/taikoxyz/taiko-mono/issues/16331)) ([17abc18](https://github.com/taikoxyz/taiko-mono/commit/17abc189ca3d2752beb5400c036a650fd5b9c895)) - - -### Bug Fixes - -* **bridge-ui:** add dependency ([#15999](https://github.com/taikoxyz/taiko-mono/issues/15999)) ([14484a0](https://github.com/taikoxyz/taiko-mono/commit/14484a00c1d59332361fba32b74d39db2ae4b864)) -* **bridge-ui:** add injected provider to connectors ([#16008](https://github.com/taikoxyz/taiko-mono/issues/16008)) ([0496ff4](https://github.com/taikoxyz/taiko-mono/commit/0496ff40e374354b83d17121e4760391fed90a31)) -* **bridge-ui:** add missing labels to i18n ([#16633](https://github.com/taikoxyz/taiko-mono/issues/16633)) ([3854467](https://github.com/taikoxyz/taiko-mono/commit/38544675bf6578bc1016ecfd60cb3a1f93207516)) -* **bridge-ui:** balance updating when connecting ([#16481](https://github.com/taikoxyz/taiko-mono/issues/16481)) ([2ec333f](https://github.com/taikoxyz/taiko-mono/commit/2ec333f5d3f3330c11dc0ab3afacc027c33cd5e0)) -* **bridge-ui:** canonical check can use wrong chain, incorrect supported chain check ([#16526](https://github.com/taikoxyz/taiko-mono/issues/16526)) ([d826e88](https://github.com/taikoxyz/taiko-mono/commit/d826e886eba989c35b3f28145f815642684f84d7)) -* **bridge-ui:** correct display of forward arrow and handling of invalid pagination input ([#16485](https://github.com/taikoxyz/taiko-mono/issues/16485)) ([d4d9ce9](https://github.com/taikoxyz/taiko-mono/commit/d4d9ce9bb7914b21f8ce6fc1ac5f986eb64d41f8)) -* **bridge-ui:** custom and none fee selection overwritten by error fetching recommended fee ([#16737](https://github.com/taikoxyz/taiko-mono/issues/16737)) ([9166ee3](https://github.com/taikoxyz/taiko-mono/commit/9166ee3e0a968db19d8cec2002565413d79cd708)) -* **bridge-ui:** defaulting to source chain explorer for link to canonical address ([#16701](https://github.com/taikoxyz/taiko-mono/issues/16701)) ([68bd435](https://github.com/taikoxyz/taiko-mono/commit/68bd4354d03429ceccd4b311db6e59066111af09)) -* **bridge-ui:** fix ERC721 and ERC1155 detection in NFT bridge ([#16680](https://github.com/taikoxyz/taiko-mono/issues/16680)) ([ca45aa6](https://github.com/taikoxyz/taiko-mono/commit/ca45aa6da6101f15fe9ef4c485e5d61a64f66f84)) -* **bridge-ui:** fix ETH self claiming ([#16344](https://github.com/taikoxyz/taiko-mono/issues/16344)) ([4271f0d](https://github.com/taikoxyz/taiko-mono/commit/4271f0d2b01da8179d604a0fbff0816a0d72e547)) -* **bridge-ui:** fix issue where balance is shown for wrong token ([#16541](https://github.com/taikoxyz/taiko-mono/issues/16541)) ([1dd47cf](https://github.com/taikoxyz/taiko-mono/commit/1dd47cf5eca91d47375547b23203a9f942e22e80)) -* **bridge-ui:** fix wrong balance updates on network switch ([#15980](https://github.com/taikoxyz/taiko-mono/issues/15980)) ([b556e00](https://github.com/taikoxyz/taiko-mono/commit/b556e000b25fc8d5405cba77f3eebb4152dc1497)) -* **bridge-ui:** incorrectly detecting bridged tokens ([#16007](https://github.com/taikoxyz/taiko-mono/issues/16007)) ([b151bcb](https://github.com/taikoxyz/taiko-mono/commit/b151bcb2e159ece03da3c2014e35dbbbed7d8410)) -* **bridge-ui:** manual import not resetting correctly ([#16347](https://github.com/taikoxyz/taiko-mono/issues/16347)) ([87398fe](https://github.com/taikoxyz/taiko-mono/commit/87398fe9606cf73ce66ed4f8321368fe8ac8fbb4)) -* **bridge-ui:** move label to i18n, fix some typos ([#16522](https://github.com/taikoxyz/taiko-mono/issues/16522)) ([c8c4773](https://github.com/taikoxyz/taiko-mono/commit/c8c4773dd3fe41decf13306eace73d65a9829529)) -* **bridge-ui:** preserve custom processing fee selection across components ([#16346](https://github.com/taikoxyz/taiko-mono/issues/16346)) ([9cf6b3a](https://github.com/taikoxyz/taiko-mono/commit/9cf6b3ae0981d1755d253cd7d6238771898fc3f4)) -* **bridge-ui:** prevent reverse tabnabbing attacks ([#16583](https://github.com/taikoxyz/taiko-mono/issues/16583)) ([fc57d82](https://github.com/taikoxyz/taiko-mono/commit/fc57d82cb7c049a656c2f08d947f4a5a42ffacf3)) -* **bridge-ui:** remove nft debug info from ui ([#16067](https://github.com/taikoxyz/taiko-mono/issues/16067)) ([5eddffe](https://github.com/taikoxyz/taiko-mono/commit/5eddffea3180e67c005d510ddaa7ffb90ce0a85a)) -* **bridge-ui:** renamed configuredCustomToken to configuredCustomTokens ([#15905](https://github.com/taikoxyz/taiko-mono/issues/15905)) ([a9f60b8](https://github.com/taikoxyz/taiko-mono/commit/a9f60b8c114dfd277e8dc227e7fbbe8716698d53)) -* **bridge-ui:** transactions view styling ([#15997](https://github.com/taikoxyz/taiko-mono/issues/15997)) ([620a22d](https://github.com/taikoxyz/taiko-mono/commit/620a22dcb1ce77a9335dff8bbe0546c4c5065b23)) -* **bridge-ui:** truncate selected token name to 5 characters ([#16066](https://github.com/taikoxyz/taiko-mono/issues/16066)) ([dc24155](https://github.com/taikoxyz/taiko-mono/commit/dc24155b306e447f0572d29918183570905866be)) -* **bridge-ui:** update disabled for chainselector ([#16814](https://github.com/taikoxyz/taiko-mono/issues/16814)) ([406b15a](https://github.com/taikoxyz/taiko-mono/commit/406b15a301c7a3454957518a2cc33a44fbf21cde)) -* **bridge-ui:** various small bugfixes ([#16078](https://github.com/taikoxyz/taiko-mono/issues/16078)) ([e610d19](https://github.com/taikoxyz/taiko-mono/commit/e610d1907ef47fb6e25d8bc26e9b7edf3954d886)) -* **bridge-ui:** walletconnect not allowing to switch to unconfigured chains ([#16324](https://github.com/taikoxyz/taiko-mono/issues/16324)) ([d6ef79e](https://github.com/taikoxyz/taiko-mono/commit/d6ef79eae0836a9dabd481cd0953bc03eea9bf7a)) - -## [4.1.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v4.0.0...bridge-ui-v4.1.0) (2024-04-24) - - -### Features - -* **bridge-ui:** processingFee from API ([#16708](https://github.com/taikoxyz/taiko-mono/issues/16708)) ([3cd7cce](https://github.com/taikoxyz/taiko-mono/commit/3cd7cce1c52f94276011f4581143390c26acb49e)) - - -### Bug Fixes - -* **bridge-ui:** custom and none fee selection overwritten by error fetching recommended fee ([#16737](https://github.com/taikoxyz/taiko-mono/issues/16737)) ([9166ee3](https://github.com/taikoxyz/taiko-mono/commit/9166ee3e0a968db19d8cec2002565413d79cd708)) -* **bridge-ui:** defaulting to source chain explorer for link to canonical address ([#16701](https://github.com/taikoxyz/taiko-mono/issues/16701)) ([68bd435](https://github.com/taikoxyz/taiko-mono/commit/68bd4354d03429ceccd4b311db6e59066111af09)) -* **bridge-ui:** fix ERC721 and ERC1155 detection in NFT bridge ([#16680](https://github.com/taikoxyz/taiko-mono/issues/16680)) ([ca45aa6](https://github.com/taikoxyz/taiko-mono/commit/ca45aa6da6101f15fe9ef4c485e5d61a64f66f84)) -* **bridge-ui:** update disabled for chainselector ([#16814](https://github.com/taikoxyz/taiko-mono/issues/16814)) ([406b15a](https://github.com/taikoxyz/taiko-mono/commit/406b15a301c7a3454957518a2cc33a44fbf21cde)) - -## [4.0.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v3.0.0...bridge-ui-v4.0.0) (2024-04-04) - - -### ⚠ BREAKING CHANGES - -* **bridge-ui:** update to protocol 1.0, two step bridging ([#16230](https://github.com/taikoxyz/taiko-mono/issues/16230)) - -### Features - -* **bridge-ui:** add testnet name to header ([#16619](https://github.com/taikoxyz/taiko-mono/issues/16619)) ([294bb01](https://github.com/taikoxyz/taiko-mono/commit/294bb017d90e4b8c2e1338a09f1cef90cdb54831)) -* **bridge-ui:** base64 NFT data ([#16645](https://github.com/taikoxyz/taiko-mono/issues/16645)) ([4516d0a](https://github.com/taikoxyz/taiko-mono/commit/4516d0aaa3c9ff0c50f16d1abc82999a8ac3d02f)) -* **bridge-ui:** prepare for hekla ([#16618](https://github.com/taikoxyz/taiko-mono/issues/16618)) ([6953b3c](https://github.com/taikoxyz/taiko-mono/commit/6953b3c141a1dec744a0e0bfa8c9aa0a1f405407)) -* **bridge-ui:** retry dialog ([#16536](https://github.com/taikoxyz/taiko-mono/issues/16536)) ([3beba21](https://github.com/taikoxyz/taiko-mono/commit/3beba214e62ad196bafd716cadaa3f133ecdb021)) -* **bridge-ui:** update to protocol 1.0, two step bridging ([#16230](https://github.com/taikoxyz/taiko-mono/issues/16230)) ([71babae](https://github.com/taikoxyz/taiko-mono/commit/71babae14645ff267c7baa101706860aa6f556f0)) -* **protocol:** risc0 verifier contract ([#16331](https://github.com/taikoxyz/taiko-mono/issues/16331)) ([17abc18](https://github.com/taikoxyz/taiko-mono/commit/17abc189ca3d2752beb5400c036a650fd5b9c895)) - - -### Bug Fixes - -* **bridge-ui:** add missing labels to i18n ([#16633](https://github.com/taikoxyz/taiko-mono/issues/16633)) ([3854467](https://github.com/taikoxyz/taiko-mono/commit/38544675bf6578bc1016ecfd60cb3a1f93207516)) -* **bridge-ui:** balance updating when connecting ([#16481](https://github.com/taikoxyz/taiko-mono/issues/16481)) ([2ec333f](https://github.com/taikoxyz/taiko-mono/commit/2ec333f5d3f3330c11dc0ab3afacc027c33cd5e0)) -* **bridge-ui:** canonical check can use wrong chain, incorrect supported chain check ([#16526](https://github.com/taikoxyz/taiko-mono/issues/16526)) ([d826e88](https://github.com/taikoxyz/taiko-mono/commit/d826e886eba989c35b3f28145f815642684f84d7)) -* **bridge-ui:** correct display of forward arrow and handling of invalid pagination input ([#16485](https://github.com/taikoxyz/taiko-mono/issues/16485)) ([d4d9ce9](https://github.com/taikoxyz/taiko-mono/commit/d4d9ce9bb7914b21f8ce6fc1ac5f986eb64d41f8)) -* **bridge-ui:** fix issue where balance is shown for wrong token ([#16541](https://github.com/taikoxyz/taiko-mono/issues/16541)) ([1dd47cf](https://github.com/taikoxyz/taiko-mono/commit/1dd47cf5eca91d47375547b23203a9f942e22e80)) -* **bridge-ui:** move label to i18n, fix some typos ([#16522](https://github.com/taikoxyz/taiko-mono/issues/16522)) ([c8c4773](https://github.com/taikoxyz/taiko-mono/commit/c8c4773dd3fe41decf13306eace73d65a9829529)) -* **bridge-ui:** prevent reverse tabnabbing attacks ([#16583](https://github.com/taikoxyz/taiko-mono/issues/16583)) ([fc57d82](https://github.com/taikoxyz/taiko-mono/commit/fc57d82cb7c049a656c2f08d947f4a5a42ffacf3)) - -## [3.0.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.9.3...bridge-ui-v3.0.0) (2024-03-08) - - -### ⚠ BREAKING CHANGES - -* **bridge-ui:** walletconnect not allowing to switch to unconfigured chains ([#16324](https://github.com/taikoxyz/taiko-mono/issues/16324)) - -### Bug Fixes - -* **bridge-ui:** fix ETH self claiming ([#16344](https://github.com/taikoxyz/taiko-mono/issues/16344)) ([4271f0d](https://github.com/taikoxyz/taiko-mono/commit/4271f0d2b01da8179d604a0fbff0816a0d72e547)) -* **bridge-ui:** manual import not resetting correctly ([#16347](https://github.com/taikoxyz/taiko-mono/issues/16347)) ([87398fe](https://github.com/taikoxyz/taiko-mono/commit/87398fe9606cf73ce66ed4f8321368fe8ac8fbb4)) -* **bridge-ui:** preserve custom processing fee selection across components ([#16346](https://github.com/taikoxyz/taiko-mono/issues/16346)) ([9cf6b3a](https://github.com/taikoxyz/taiko-mono/commit/9cf6b3ae0981d1755d253cd7d6238771898fc3f4)) -* **bridge-ui:** walletconnect not allowing to switch to unconfigured chains ([#16324](https://github.com/taikoxyz/taiko-mono/issues/16324)) ([d6ef79e](https://github.com/taikoxyz/taiko-mono/commit/d6ef79eae0836a9dabd481cd0953bc03eea9bf7a)) - ## [2.9.3](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.9.2...bridge-ui-v2.9.3) (2024-02-26) From 01fb4c2e4955c7a0389556c2f239e8d11c024c1d Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 18:09:22 -0400 Subject: [PATCH 077/100] ci(guardian-prover-health-check-ui): fix lint (#17143) --- packages/guardian-prover-health-check-ui/.prettierignore | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/guardian-prover-health-check-ui/.prettierignore b/packages/guardian-prover-health-check-ui/.prettierignore index cc41cea9b26..60cf61d08c3 100644 --- a/packages/guardian-prover-health-check-ui/.prettierignore +++ b/packages/guardian-prover-health-check-ui/.prettierignore @@ -2,3 +2,4 @@ pnpm-lock.yaml package-lock.json yarn.lock +CHANGELOG.md From 6c398948327b30333e521c3ae51a6b1aaac77098 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 18:21:57 -0400 Subject: [PATCH 078/100] chore(main): release bridge-ui 2.10.1 (#17142) Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .release-please-manifest.json | 2 +- packages/bridge-ui/CHANGELOG.md | 7 +++++++ packages/bridge-ui/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index cbfefaabf09..8fb397f7ea4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,7 +1,7 @@ { "packages/blobstorage": "0.1.0", "packages/branding": "0.4.0", - "packages/bridge-ui": "2.10.0", + "packages/bridge-ui": "2.10.1", "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.4.0", diff --git a/packages/bridge-ui/CHANGELOG.md b/packages/bridge-ui/CHANGELOG.md index 60b38d0bb72..fdb3ccabe74 100644 --- a/packages/bridge-ui/CHANGELOG.md +++ b/packages/bridge-ui/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.10.1](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.10.0...bridge-ui-v2.10.1) (2024-05-13) + + +### Bug Fixes + +* **bridge-ui:** fix changelog and deployment ([#17141](https://github.com/taikoxyz/taiko-mono/issues/17141)) ([809707d](https://github.com/taikoxyz/taiko-mono/commit/809707d7cebdfc0af253ab54ea2c1503ae02ab0e)) + ## [2.10.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.9.3...bridge-ui-v2.10.0) (2024-05-13) diff --git a/packages/bridge-ui/package.json b/packages/bridge-ui/package.json index 3b82da3b672..f154f4e3c60 100644 --- a/packages/bridge-ui/package.json +++ b/packages/bridge-ui/package.json @@ -1,6 +1,6 @@ { "name": "bridge-ui", - "version": "2.10.0", + "version": "2.10.1", "private": true, "scripts": { "dev": "vite dev", From 24168e42f15d5e7f0afd44293110847d87b21fec Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 18:53:17 -0400 Subject: [PATCH 079/100] fix(bridge-ui): fix changelog and deployment (#17144) --- .github/workflows/bridge-ui.yml | 9 ++++++--- .release-please-manifest.json | 2 +- packages/bridge-ui/CHANGELOG.md | 7 ------- packages/bridge-ui/package.json | 2 +- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/.github/workflows/bridge-ui.yml b/.github/workflows/bridge-ui.yml index afcf45ffb2f..cd3764591fc 100644 --- a/.github/workflows/bridge-ui.yml +++ b/.github/workflows/bridge-ui.yml @@ -3,9 +3,12 @@ name: Bridge UI CI/CD on: push: branches-ignore: + - main - release-please-* paths: - "packages/bridge-ui/**" + tags: + - "bridge-ui-v*" pull_request: paths: - "packages/bridge-ui/**" @@ -16,7 +19,7 @@ jobs: # Deployment name follow the pattern: deploy___ deploy_bridge-ui_hekla_preview: - if: ${{ github.ref_name != 'main' }} + if: ${{ github.ref_type != 'tag' }} needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: @@ -28,7 +31,7 @@ jobs: vercel_token: ${{ secrets.VERCEL_TOKEN }} deploy_bridge-ui_devnet_preview: - if: ${{ github.ref_name != 'main' }} + if: ${{ github.ref_type != 'tag' }} needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: @@ -40,7 +43,7 @@ jobs: vercel_token: ${{ secrets.VERCEL_TOKEN }} deploy_bridge-ui_hekla_production: - if: ${{ contains(github.ref, 'refs/tags/bridge-ui-') }} + if: ${{ startsWith(github.ref, 'refs/tags/bridge-ui-v') }} needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8fb397f7ea4..cbfefaabf09 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,7 +1,7 @@ { "packages/blobstorage": "0.1.0", "packages/branding": "0.4.0", - "packages/bridge-ui": "2.10.1", + "packages/bridge-ui": "2.10.0", "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.4.0", diff --git a/packages/bridge-ui/CHANGELOG.md b/packages/bridge-ui/CHANGELOG.md index fdb3ccabe74..60b38d0bb72 100644 --- a/packages/bridge-ui/CHANGELOG.md +++ b/packages/bridge-ui/CHANGELOG.md @@ -1,12 +1,5 @@ # Changelog -## [2.10.1](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.10.0...bridge-ui-v2.10.1) (2024-05-13) - - -### Bug Fixes - -* **bridge-ui:** fix changelog and deployment ([#17141](https://github.com/taikoxyz/taiko-mono/issues/17141)) ([809707d](https://github.com/taikoxyz/taiko-mono/commit/809707d7cebdfc0af253ab54ea2c1503ae02ab0e)) - ## [2.10.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.9.3...bridge-ui-v2.10.0) (2024-05-13) diff --git a/packages/bridge-ui/package.json b/packages/bridge-ui/package.json index f154f4e3c60..3b82da3b672 100644 --- a/packages/bridge-ui/package.json +++ b/packages/bridge-ui/package.json @@ -1,6 +1,6 @@ { "name": "bridge-ui", - "version": "2.10.1", + "version": "2.10.0", "private": true, "scripts": { "dev": "vite dev", From 3d33b3f94dd0b6f733c02f33a13f2c3af94f968e Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 19:04:03 -0400 Subject: [PATCH 080/100] chore(main): release bridge-ui 2.10.1 (#17145) --- .release-please-manifest.json | 2 +- packages/bridge-ui/CHANGELOG.md | 8 ++++++++ packages/bridge-ui/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index cbfefaabf09..8fb397f7ea4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,7 +1,7 @@ { "packages/blobstorage": "0.1.0", "packages/branding": "0.4.0", - "packages/bridge-ui": "2.10.0", + "packages/bridge-ui": "2.10.1", "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.4.0", diff --git a/packages/bridge-ui/CHANGELOG.md b/packages/bridge-ui/CHANGELOG.md index 60b38d0bb72..005dea1a398 100644 --- a/packages/bridge-ui/CHANGELOG.md +++ b/packages/bridge-ui/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [2.10.1](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.10.0...bridge-ui-v2.10.1) (2024-05-13) + + +### Bug Fixes + +* **bridge-ui:** fix changelog and deployment ([#17141](https://github.com/taikoxyz/taiko-mono/issues/17141)) ([809707d](https://github.com/taikoxyz/taiko-mono/commit/809707d7cebdfc0af253ab54ea2c1503ae02ab0e)) +* **bridge-ui:** fix changelog and deployment ([#17144](https://github.com/taikoxyz/taiko-mono/issues/17144)) ([24168e4](https://github.com/taikoxyz/taiko-mono/commit/24168e42f15d5e7f0afd44293110847d87b21fec)) + ## [2.10.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.9.3...bridge-ui-v2.10.0) (2024-05-13) diff --git a/packages/bridge-ui/package.json b/packages/bridge-ui/package.json index 3b82da3b672..f154f4e3c60 100644 --- a/packages/bridge-ui/package.json +++ b/packages/bridge-ui/package.json @@ -1,6 +1,6 @@ { "name": "bridge-ui", - "version": "2.10.0", + "version": "2.10.1", "private": true, "scripts": { "dev": "vite dev", From f937525e859186bfd514fbdad08a46e8937263f3 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 20:16:53 -0400 Subject: [PATCH 081/100] chore(main): release fork-diff 0.5.0 (#17129) Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .release-please-manifest.json | 2 +- packages/fork-diff/CHANGELOG.md | 7 +++++++ packages/fork-diff/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8fb397f7ea4..5c375012d6c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -4,7 +4,7 @@ "packages/bridge-ui": "2.10.1", "packages/docs-site": "1.0.0", "packages/eventindexer": "0.13.0", - "packages/fork-diff": "0.4.0", + "packages/fork-diff": "0.5.0", "packages/guardian-prover-health-check": "0.1.0", "packages/guardian-prover-health-check-ui": "0.1.0", "packages/protocol": "1.5.0", diff --git a/packages/fork-diff/CHANGELOG.md b/packages/fork-diff/CHANGELOG.md index a81e7ca0cdb..b1f1adc7aef 100644 --- a/packages/fork-diff/CHANGELOG.md +++ b/packages/fork-diff/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.5.0](https://github.com/taikoxyz/taiko-mono/compare/fork-diff-v0.4.0...fork-diff-v0.5.0) (2024-05-13) + + +### Performance Improvements + +* **main:** use errors.New to replace fmt.Errorf with no parameters ([#16777](https://github.com/taikoxyz/taiko-mono/issues/16777)) ([bb0c1ae](https://github.com/taikoxyz/taiko-mono/commit/bb0c1ae3077eeb8558f9bf9b01c5f5a71ec337ba)) + ## [0.4.0](https://github.com/taikoxyz/taiko-mono/compare/fork-diff-v0.3.0...fork-diff-v0.4.0) (2023-09-25) diff --git a/packages/fork-diff/package.json b/packages/fork-diff/package.json index 11f028a0488..7924b118d47 100644 --- a/packages/fork-diff/package.json +++ b/packages/fork-diff/package.json @@ -1,4 +1,4 @@ { "name": "@taiko/fork-diff", - "version": "0.4.0" + "version": "0.5.0" } From 6ef421a00c48f10faafa3034467ce0d8838cecd0 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Mon, 13 May 2024 17:38:52 -0700 Subject: [PATCH 082/100] feat(relayer): check event status one more time before sending call (#17120) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> --- .github/workflows/eventindexer.yml | 4 +- .github/workflows/guardians-health-check.yaml | 10 +-- .github/workflows/relayer.yml | 4 +- .../http/get_signed_blocks.go | 1 + packages/relayer/ERC1155Vault.json | 31 ++++----- packages/relayer/ERC20Vault.json | 13 ++++ packages/relayer/ERC721Vault.json | 31 ++++----- packages/relayer/QuotaManager.json | 13 ++++ packages/relayer/SignalService.json | 13 ++++ packages/relayer/TaikoL1.json | 36 +++++++++++ packages/relayer/bindings/bridge/Bridge.go | 39 +++++++++-- .../bindings/erc1155vault/ERC1155Vault.go | 64 +++++++++---------- .../relayer/bindings/erc20vault/ERC20Vault.go | 33 +++++++++- .../bindings/erc721vault/ERC721Vault.go | 64 +++++++++---------- .../bindings/quotamanager/QuotaManager.go | 33 +++++++++- .../bindings/signalservice/SignalService.go | 33 +++++++++- packages/relayer/bindings/taikol1/TaikoL1.go | 54 +++++++++++++++- packages/relayer/bindings/taikol2/TaikoL2.go | 33 +++++++++- packages/relayer/processor/process_message.go | 21 ++++++ packages/relayer/processor/processor.go | 2 +- 20 files changed, 413 insertions(+), 119 deletions(-) diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml index 48123a8e68f..9a3d9c75f52 100644 --- a/.github/workflows/eventindexer.yml +++ b/.github/workflows/eventindexer.yml @@ -11,7 +11,7 @@ on: jobs: lint-eventindexer: - name: lint + name: lint-eventindexer runs-on: [taiko-runner] steps: - uses: actions/setup-go@v5 @@ -30,7 +30,7 @@ jobs: test-eventindexer: runs-on: [taiko-runner] - needs: lint + needs: lint-eventindexer steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 diff --git a/.github/workflows/guardians-health-check.yaml b/.github/workflows/guardians-health-check.yaml index 10d71b2229d..c7c76f93062 100644 --- a/.github/workflows/guardians-health-check.yaml +++ b/.github/workflows/guardians-health-check.yaml @@ -10,8 +10,8 @@ on: - "packages/guardian-prover-health-check/**" jobs: - lint: - name: lint + lint-guardian-prover-health-check: + name: lint-guardian-prover-health-check runs-on: [taiko-runner] steps: - uses: actions/setup-go@v5 @@ -28,9 +28,9 @@ jobs: working-directory: ./packages/guardian-prover-health-check args: --config=.golangci.yml --timeout=4m - test: + test-guardian-prover-health-check: runs-on: [taiko-runner] - needs: lint + needs: lint-guardian-prover-health-check steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 @@ -52,7 +52,7 @@ jobs: files: ./packages/guardian-prover-health-check/coverage.txt flags: guardian-prover-health-check - push-docker-image: + push-guardian-prover-health-check-docker-image: # only push docker image on PR merge to main if: ${{ github.event }} == 'push' name: Build and push docker image diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml index 835742ec9c3..aab65a2bc63 100644 --- a/.github/workflows/relayer.yml +++ b/.github/workflows/relayer.yml @@ -11,7 +11,7 @@ on: jobs: lint-relayer: - name: lint + name: lint-relayer runs-on: [taiko-runner] steps: - uses: actions/setup-go@v5 @@ -30,7 +30,7 @@ jobs: test-relayer: runs-on: [taiko-runner] - needs: lint + needs: lint-relayer steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 diff --git a/packages/guardian-prover-health-check/http/get_signed_blocks.go b/packages/guardian-prover-health-check/http/get_signed_blocks.go index a3e220c431e..bacd3ca54dd 100644 --- a/packages/guardian-prover-health-check/http/get_signed_blocks.go +++ b/packages/guardian-prover-health-check/http/get_signed_blocks.go @@ -46,6 +46,7 @@ func (srv *Server) GetSignedBlocks(c echo.Context) error { start, err = strconv.ParseUint(c.QueryParam("start"), 10, 64) if err != nil { + log.Error("Failed to parse start", "error", err) return echo.NewHTTPError(http.StatusBadRequest, err) } } diff --git a/packages/relayer/ERC1155Vault.json b/packages/relayer/ERC1155Vault.json index 1574e46ef5a..f356f2d7757 100644 --- a/packages/relayer/ERC1155Vault.json +++ b/packages/relayer/ERC1155Vault.json @@ -1,17 +1,4 @@ [ - { - "type": "function", - "name": "MAX_TOKEN_PER_TXN", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "acceptOwnership", @@ -90,6 +77,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "inNonReentrant", @@ -1003,11 +1003,6 @@ "name": "VAULT_INVALID_TO_ADDR", "inputs": [] }, - { - "type": "error", - "name": "VAULT_MAX_TOKEN_PER_TXN_EXCEEDED", - "inputs": [] - }, { "type": "error", "name": "VAULT_PERMISSION_DENIED", diff --git a/packages/relayer/ERC20Vault.json b/packages/relayer/ERC20Vault.json index 38a1f3b271d..08d016cf3a1 100644 --- a/packages/relayer/ERC20Vault.json +++ b/packages/relayer/ERC20Vault.json @@ -165,6 +165,19 @@ ], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "inNonReentrant", diff --git a/packages/relayer/ERC721Vault.json b/packages/relayer/ERC721Vault.json index 2c0f7552de8..f4eeea3e630 100644 --- a/packages/relayer/ERC721Vault.json +++ b/packages/relayer/ERC721Vault.json @@ -1,17 +1,4 @@ [ - { - "type": "function", - "name": "MAX_TOKEN_PER_TXN", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "acceptOwnership", @@ -90,6 +77,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "inNonReentrant", @@ -959,11 +959,6 @@ "name": "VAULT_INVALID_TO_ADDR", "inputs": [] }, - { - "type": "error", - "name": "VAULT_MAX_TOKEN_PER_TXN_EXCEEDED", - "inputs": [] - }, { "type": "error", "name": "VAULT_PERMISSION_DENIED", diff --git a/packages/relayer/QuotaManager.json b/packages/relayer/QuotaManager.json index cab4eccf10c..bf878aa9f21 100644 --- a/packages/relayer/QuotaManager.json +++ b/packages/relayer/QuotaManager.json @@ -61,6 +61,19 @@ "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "inNonReentrant", diff --git a/packages/relayer/SignalService.json b/packages/relayer/SignalService.json index 3d7f0179e0b..45eba212b97 100644 --- a/packages/relayer/SignalService.json +++ b/packages/relayer/SignalService.json @@ -100,6 +100,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "inNonReentrant", diff --git a/packages/relayer/TaikoL1.json b/packages/relayer/TaikoL1.json index 587ca5a134e..a4f65645145 100644 --- a/packages/relayer/TaikoL1.json +++ b/packages/relayer/TaikoL1.json @@ -363,6 +363,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "impl", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "inNonReentrant", @@ -639,6 +652,19 @@ "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "resetGenesisHash", + "inputs": [ + { + "name": "_genesisBlockHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "resolve", @@ -1943,6 +1969,16 @@ "name": "L1_RECEIVE_DISABLED", "inputs": [] }, + { + "type": "error", + "name": "L1_TOO_LATE", + "inputs": [] + }, + { + "type": "error", + "name": "L1_TOO_LATE", + "inputs": [] + }, { "type": "error", "name": "L1_TOO_MANY_BLOCKS", diff --git a/packages/relayer/bindings/bridge/Bridge.go b/packages/relayer/bindings/bridge/Bridge.go index 2b132d23711..31dac20842a 100644 --- a/packages/relayer/bindings/bridge/Bridge.go +++ b/packages/relayer/bindings/bridge/Bridge.go @@ -60,7 +60,7 @@ type IBridgeMessage struct { // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"context\",\"inputs\":[],\"outputs\":[{\"name\":\"ctx_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Context\",\"components\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"inputs\":[{\"name\":\"dataLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"hashMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"enabled_\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"destBridge_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageSent\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"messageStatus\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.Status\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextMessageId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recallMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"retryMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_isLastAttempt\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"msgHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"inputs\":[{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageProcessed\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"stats\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBridge.ProcessingStats\",\"components\":[{\"name\":\"gasUsedInFeeCalc\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proofSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numCacheOps\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageStatusChanged\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIBridge.Status\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_USER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GAS_OVERHEAD\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_RESERVE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"context\",\"inputs\":[],\"outputs\":[{\"name\":\"ctx_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Context\",\"components\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getMessageMinGasLimit\",\"inputs\":[{\"name\":\"dataLength\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"hashMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDestChainEnabled\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"enabled_\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"destBridge_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageFailed\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageReceived\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMessageSent\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"messageStatus\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.Status\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextMessageId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"status_\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.Status\"},{\"name\":\"reason_\",\"type\":\"uint8\",\"internalType\":\"enumIBridge.StatusReason\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recallMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"retryMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_isLastAttempt\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendMessage\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"msgHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"signalForFailedMessage\",\"inputs\":[{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageProcessed\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"stats\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBridge.ProcessingStats\",\"components\":[{\"name\":\"gasUsedInFeeCalc\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proofSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numCacheOps\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MessageStatusChanged\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIBridge.Status\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"B_INSUFFICIENT_GAS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_CONTEXT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_FEE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_GAS_LIMIT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_USER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_MESSAGE_NOT_SENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_OUT_OF_ETH_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_RETRY_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // BridgeABI is the input ABI used to generate the binding from. @@ -395,6 +395,37 @@ func (_Bridge *BridgeCallerSession) HashMessage(_message IBridgeMessage) ([32]by return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, _message) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_Bridge *BridgeCaller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Bridge.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_Bridge *BridgeSession) Impl() (common.Address, error) { + return _Bridge.Contract.Impl(&_Bridge.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_Bridge *BridgeCallerSession) Impl() (common.Address, error) { + return _Bridge.Contract.Impl(&_Bridge.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) @@ -981,21 +1012,21 @@ func (_Bridge *BridgeTransactorSession) Pause() (*types.Transaction, error) { // ProcessMessage is a paid mutator transaction binding the contract method 0x2035065e. // -// Solidity: function processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes) _message, bytes _proof) returns() +// Solidity: function processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes) _message, bytes _proof) returns(uint8 status_, uint8 reason_) func (_Bridge *BridgeTransactor) ProcessMessage(opts *bind.TransactOpts, _message IBridgeMessage, _proof []byte) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "processMessage", _message, _proof) } // ProcessMessage is a paid mutator transaction binding the contract method 0x2035065e. // -// Solidity: function processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes) _message, bytes _proof) returns() +// Solidity: function processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes) _message, bytes _proof) returns(uint8 status_, uint8 reason_) func (_Bridge *BridgeSession) ProcessMessage(_message IBridgeMessage, _proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, _message, _proof) } // ProcessMessage is a paid mutator transaction binding the contract method 0x2035065e. // -// Solidity: function processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes) _message, bytes _proof) returns() +// Solidity: function processMessage((uint64,uint64,uint32,address,uint64,address,uint64,address,address,uint256,bytes) _message, bytes _proof) returns(uint8 status_, uint8 reason_) func (_Bridge *BridgeTransactorSession) ProcessMessage(_message IBridgeMessage, _proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, _message, _proof) } diff --git a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go index 687234c2ea7..ffcc7a77eee 100644 --- a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go +++ b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go @@ -58,7 +58,7 @@ type IBridgeMessage struct { // ERC1155VaultMetaData contains all meta data concerning the ERC1155Vault contract. var ERC1155VaultMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"MAX_TOKEN_PER_TXN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendToken\",\"inputs\":[{\"name\":\"_op\",\"type\":\"tuple\",\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"_interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReceived\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReleased\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onERC1155BatchReceived\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onERC1155Received\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendToken\",\"inputs\":[{\"name\":\"_op\",\"type\":\"tuple\",\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"_interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReceived\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReleased\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // ERC1155VaultABI is the input ABI used to generate the binding from. @@ -207,37 +207,6 @@ func (_ERC1155Vault *ERC1155VaultTransactorRaw) Transact(opts *bind.TransactOpts return _ERC1155Vault.Contract.contract.Transact(opts, method, params...) } -// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. -// -// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) -func (_ERC1155Vault *ERC1155VaultCaller) MAXTOKENPERTXN(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC1155Vault.contract.Call(opts, &out, "MAX_TOKEN_PER_TXN") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. -// -// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) -func (_ERC1155Vault *ERC1155VaultSession) MAXTOKENPERTXN() (*big.Int, error) { - return _ERC1155Vault.Contract.MAXTOKENPERTXN(&_ERC1155Vault.CallOpts) -} - -// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. -// -// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) -func (_ERC1155Vault *ERC1155VaultCallerSession) MAXTOKENPERTXN() (*big.Int, error) { - return _ERC1155Vault.Contract.MAXTOKENPERTXN(&_ERC1155Vault.CallOpts) -} - // AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. // // Solidity: function addressManager() view returns(address) @@ -355,6 +324,37 @@ func (_ERC1155Vault *ERC1155VaultCallerSession) CanonicalToBridged(chainId *big. return _ERC1155Vault.Contract.CanonicalToBridged(&_ERC1155Vault.CallOpts, chainId, ctoken) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC1155Vault *ERC1155VaultCaller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC1155Vault.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC1155Vault *ERC1155VaultSession) Impl() (common.Address, error) { + return _ERC1155Vault.Contract.Impl(&_ERC1155Vault.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC1155Vault *ERC1155VaultCallerSession) Impl() (common.Address, error) { + return _ERC1155Vault.Contract.Impl(&_ERC1155Vault.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) diff --git a/packages/relayer/bindings/erc20vault/ERC20Vault.go b/packages/relayer/bindings/erc20vault/ERC20Vault.go index 5410a6b8813..78552091ac5 100644 --- a/packages/relayer/bindings/erc20vault/ERC20Vault.go +++ b/packages/relayer/bindings/erc20vault/ERC20Vault.go @@ -66,7 +66,7 @@ type IBridgeMessage struct { // ERC20VaultMetaData contains all meta data concerning the ERC20Vault contract. var ERC20VaultMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"btokenBlacklist\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"blacklisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"inputs\":[{\"name\":\"_ctoken\",\"type\":\"tuple\",\"internalType\":\"structERC20Vault.CanonicalERC20\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"_btokenNew\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btokenOld_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"inputs\":[{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendToken\",\"inputs\":[{\"name\":\"_op\",\"type\":\"tuple\",\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"_interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btokenOld\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"btokenNew\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenDecimal\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenDecimal\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReceived\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReleased\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"MIN_MIGRATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"btokenBlacklist\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"blacklisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"changeBridgedToken\",\"inputs\":[{\"name\":\"_ctoken\",\"type\":\"tuple\",\"internalType\":\"structERC20Vault.CanonicalERC20\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"_btokenNew\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btokenOld_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastMigrationStart\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"inputs\":[{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendToken\",\"inputs\":[{\"name\":\"_op\",\"type\":\"tuple\",\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"_interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenChanged\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btokenOld\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"btokenNew\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenDecimal\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenDecimal\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReceived\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReleased\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"VAULT_BTOKEN_BLACKLISTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_CTOKEN_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_NEW_BTOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_LAST_MIGRATION_TOO_CLOSE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // ERC20VaultABI is the input ABI used to generate the binding from. @@ -399,6 +399,37 @@ func (_ERC20Vault *ERC20VaultCallerSession) CanonicalToBridged(chainId *big.Int, return _ERC20Vault.Contract.CanonicalToBridged(&_ERC20Vault.CallOpts, chainId, ctoken) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC20Vault *ERC20VaultCaller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20Vault.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC20Vault *ERC20VaultSession) Impl() (common.Address, error) { + return _ERC20Vault.Contract.Impl(&_ERC20Vault.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC20Vault *ERC20VaultCallerSession) Impl() (common.Address, error) { + return _ERC20Vault.Contract.Impl(&_ERC20Vault.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) diff --git a/packages/relayer/bindings/erc721vault/ERC721Vault.go b/packages/relayer/bindings/erc721vault/ERC721Vault.go index 65c3ed2c530..c7c6a7f9265 100644 --- a/packages/relayer/bindings/erc721vault/ERC721Vault.go +++ b/packages/relayer/bindings/erc721vault/ERC721Vault.go @@ -58,7 +58,7 @@ type IBridgeMessage struct { // ERC721VaultMetaData contains all meta data concerning the ERC721Vault contract. var ERC721VaultMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"MAX_TOKEN_PER_TXN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onERC721Received\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"inputs\":[{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendToken\",\"inputs\":[{\"name\":\"_op\",\"type\":\"tuple\",\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"_interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReceived\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReleased\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bridgedToCanonical\",\"inputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canonicalToBridged\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ctoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"btoken\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onERC721Received\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"onMessageInvocation\",\"inputs\":[{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onMessageRecalled\",\"inputs\":[{\"name\":\"_message\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendToken\",\"inputs\":[{\"name\":\"_op\",\"type\":\"tuple\",\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"message_\",\"type\":\"tuple\",\"internalType\":\"structIBridge.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"fee\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"srcOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"destOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"_interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BridgedTokenDeployed\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"btoken\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctokenSymbol\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ctokenName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReceived\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenReleased\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenSent\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChainId\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ctoken\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"tokenIds\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_AMOUNT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TOKEN\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_INVALID_TO_ADDR\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // ERC721VaultABI is the input ABI used to generate the binding from. @@ -207,37 +207,6 @@ func (_ERC721Vault *ERC721VaultTransactorRaw) Transact(opts *bind.TransactOpts, return _ERC721Vault.Contract.contract.Transact(opts, method, params...) } -// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. -// -// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) -func (_ERC721Vault *ERC721VaultCaller) MAXTOKENPERTXN(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _ERC721Vault.contract.Call(opts, &out, "MAX_TOKEN_PER_TXN") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. -// -// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) -func (_ERC721Vault *ERC721VaultSession) MAXTOKENPERTXN() (*big.Int, error) { - return _ERC721Vault.Contract.MAXTOKENPERTXN(&_ERC721Vault.CallOpts) -} - -// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. -// -// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) -func (_ERC721Vault *ERC721VaultCallerSession) MAXTOKENPERTXN() (*big.Int, error) { - return _ERC721Vault.Contract.MAXTOKENPERTXN(&_ERC721Vault.CallOpts) -} - // AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. // // Solidity: function addressManager() view returns(address) @@ -355,6 +324,37 @@ func (_ERC721Vault *ERC721VaultCallerSession) CanonicalToBridged(chainId *big.In return _ERC721Vault.Contract.CanonicalToBridged(&_ERC721Vault.CallOpts, chainId, ctoken) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC721Vault *ERC721VaultCaller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC721Vault.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC721Vault *ERC721VaultSession) Impl() (common.Address, error) { + return _ERC721Vault.Contract.Impl(&_ERC721Vault.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_ERC721Vault *ERC721VaultCallerSession) Impl() (common.Address, error) { + return _ERC721Vault.Contract.Impl(&_ERC721Vault.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) diff --git a/packages/relayer/bindings/quotamanager/QuotaManager.go b/packages/relayer/bindings/quotamanager/QuotaManager.go index 72cb38fd46f..f630435a6a4 100644 --- a/packages/relayer/bindings/quotamanager/QuotaManager.go +++ b/packages/relayer/bindings/quotamanager/QuotaManager.go @@ -31,7 +31,7 @@ var ( // QuotaManagerMetaData contains all meta data concerning the QuotaManager contract. var QuotaManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"availableQuota\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_leap\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"consumeQuota\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_quotaPeriod\",\"type\":\"uint24\",\"internalType\":\"uint24\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quotaPeriod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\",\"internalType\":\"uint24\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokenQuota\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"updatedAt\",\"type\":\"uint48\",\"internalType\":\"uint48\"},{\"name\":\"quota\",\"type\":\"uint104\",\"internalType\":\"uint104\"},{\"name\":\"available\",\"type\":\"uint104\",\"internalType\":\"uint104\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateQuota\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_quota\",\"type\":\"uint104\",\"internalType\":\"uint104\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuotaUpdated\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldQuota\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newQuota\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"QM_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"QM_OUT_OF_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"availableQuota\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_leap\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"consumeQuota\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_quotaPeriod\",\"type\":\"uint24\",\"internalType\":\"uint24\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quotaPeriod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint24\",\"internalType\":\"uint24\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokenQuota\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"updatedAt\",\"type\":\"uint48\",\"internalType\":\"uint48\"},{\"name\":\"quota\",\"type\":\"uint104\",\"internalType\":\"uint104\"},{\"name\":\"available\",\"type\":\"uint104\",\"internalType\":\"uint104\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateQuota\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_quota\",\"type\":\"uint104\",\"internalType\":\"uint104\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuotaUpdated\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldQuota\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newQuota\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"QM_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"QM_OUT_OF_QUOTA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // QuotaManagerABI is the input ABI used to generate the binding from. @@ -242,6 +242,37 @@ func (_QuotaManager *QuotaManagerCallerSession) AvailableQuota(_token common.Add return _QuotaManager.Contract.AvailableQuota(&_QuotaManager.CallOpts, _token, _leap) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_QuotaManager *QuotaManagerCaller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _QuotaManager.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_QuotaManager *QuotaManagerSession) Impl() (common.Address, error) { + return _QuotaManager.Contract.Impl(&_QuotaManager.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_QuotaManager *QuotaManagerCallerSession) Impl() (common.Address, error) { + return _QuotaManager.Contract.Impl(&_QuotaManager.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) diff --git a/packages/relayer/bindings/signalservice/SignalService.go b/packages/relayer/bindings/signalservice/SignalService.go index accf5c4ab1e..a8c974a8a50 100644 --- a/packages/relayer/bindings/signalservice/SignalService.go +++ b/packages/relayer/bindings/signalservice/SignalService.go @@ -31,7 +31,7 @@ var ( // SignalServiceMetaData contains all meta data concerning the SignalService contract. var SignalServiceMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"authorize\",\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_authorize\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"chainData_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAuthorized\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"authorized\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_chainData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isSignalSent\",\"inputs\":[{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"numCacheOps_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendSignal\",\"inputs\":[{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"signalForChainData\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"syncChainData\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_chainData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"topBlockId\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Authorized\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"authorized\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainDataSynced\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"kind\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"data\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"signal\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SignalSent\",\"inputs\":[{\"name\":\"app\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"signal\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"slot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"value\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_SENDER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"authorize\",\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_authorize\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getSignalSlot\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getSyncedChainData\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"chainData_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAuthorized\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"authorized\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isChainDataSynced\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_chainData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isSignalSent\",\"inputs\":[{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proveSignalReceived\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"numCacheOps_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sendSignal\",\"inputs\":[{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"signalForChainData\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"syncChainData\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_chainData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"topBlockId\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"kind\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifySignalReceived\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_app\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_signal\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Authorized\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"authorized\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainDataSynced\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"kind\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"data\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"signal\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SignalSent\",\"inputs\":[{\"name\":\"app\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"signal\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"slot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"value\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_ACCOUNT_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LTP_INVALID_INCLUSION_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SS_EMPTY_PROOF\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_HOPS_WITH_LOOP\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_LAST_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_MID_HOP_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_SENDER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_STATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_INVALID_VALUE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_SIGNAL_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SS_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // SignalServiceABI is the input ABI used to generate the binding from. @@ -287,6 +287,37 @@ func (_SignalService *SignalServiceCallerSession) GetSyncedChainData(_chainId ui return _SignalService.Contract.GetSyncedChainData(&_SignalService.CallOpts, _chainId, _kind, _blockId) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_SignalService *SignalServiceCaller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_SignalService *SignalServiceSession) Impl() (common.Address, error) { + return _SignalService.Contract.Impl(&_SignalService.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_SignalService *SignalServiceCallerSession) Impl() (common.Address, error) { + return _SignalService.Contract.Impl(&_SignalService.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) diff --git a/packages/relayer/bindings/taikol1/TaikoL1.go b/packages/relayer/bindings/taikol1/TaikoL1.go index 8da768ea0f6..e7aa877829a 100644 --- a/packages/relayer/bindings/taikol1/TaikoL1.go +++ b/packages/relayer/bindings/taikol1/TaikoL1.go @@ -120,7 +120,7 @@ type TaikoDataTransitionState struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockSyncThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotA\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockSyncThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resetGenesisHash\",\"inputs\":[{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotA\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"slotB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_HOOK\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNAUTHORIZED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -456,6 +456,37 @@ func (_TaikoL1 *TaikoL1CallerSession) GetTransition0(_blockId uint64, _parentHas return _TaikoL1.Contract.GetTransition0(&_TaikoL1.CallOpts, _blockId, _parentHash) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_TaikoL1 *TaikoL1Caller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_TaikoL1 *TaikoL1Session) Impl() (common.Address, error) { + return _TaikoL1.Contract.Impl(&_TaikoL1.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_TaikoL1 *TaikoL1CallerSession) Impl() (common.Address, error) { + return _TaikoL1.Contract.Impl(&_TaikoL1.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) @@ -984,6 +1015,27 @@ func (_TaikoL1 *TaikoL1TransactorSession) RenounceOwnership() (*types.Transactio return _TaikoL1.Contract.RenounceOwnership(&_TaikoL1.TransactOpts) } +// ResetGenesisHash is a paid mutator transaction binding the contract method 0xb008bedb. +// +// Solidity: function resetGenesisHash(bytes32 _genesisBlockHash) returns() +func (_TaikoL1 *TaikoL1Transactor) ResetGenesisHash(opts *bind.TransactOpts, _genesisBlockHash [32]byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "resetGenesisHash", _genesisBlockHash) +} + +// ResetGenesisHash is a paid mutator transaction binding the contract method 0xb008bedb. +// +// Solidity: function resetGenesisHash(bytes32 _genesisBlockHash) returns() +func (_TaikoL1 *TaikoL1Session) ResetGenesisHash(_genesisBlockHash [32]byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ResetGenesisHash(&_TaikoL1.TransactOpts, _genesisBlockHash) +} + +// ResetGenesisHash is a paid mutator transaction binding the contract method 0xb008bedb. +// +// Solidity: function resetGenesisHash(bytes32 _genesisBlockHash) returns() +func (_TaikoL1 *TaikoL1TransactorSession) ResetGenesisHash(_genesisBlockHash [32]byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ResetGenesisHash(&_TaikoL1.TransactOpts, _genesisBlockHash) +} + // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() diff --git a/packages/relayer/bindings/taikol2/TaikoL2.go b/packages/relayer/bindings/taikol2/TaikoL2.go index 10bcf66e47f..de55a144ac6 100644 --- a/packages/relayer/bindings/taikol2/TaikoL2.go +++ b/packages/relayer/bindings/taikol2/TaikoL2.go @@ -37,7 +37,7 @@ type LibL2ConfigConfig struct { // TaikoL2MetaData contains all meta data concerning the TaikoL2 contract. var TaikoL2MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"anchor\",\"inputs\":[{\"name\":\"_l1BlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1StateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasExcess\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBasefee\",\"inputs\":[{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"basefee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockHash\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structLibL2Config.Config\",\"components\":[{\"name\":\"gasTargetPerL1Block\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_l1ChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_gasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"l1ChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"l2Hashes\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"publicInputHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"skipFeeCheck\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Anchored\",\"inputs\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"gasExcess\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EIP1559_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_BASEFEE_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L1_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L2_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_SENDER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Overflow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"anchor\",\"inputs\":[{\"name\":\"_l1BlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1StateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasExcess\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBasefee\",\"inputs\":[{\"name\":\"_l1BlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentGasUsed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"basefee_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gasExcess_\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlockHash\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structLibL2Config.Config\",\"components\":[{\"name\":\"gasTargetPerL1Block\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_l1ChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_gasExcess\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"l1ChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"l2Hashes\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"publicInputHash\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"skipFeeCheck\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Anchored\",\"inputs\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"gasExcess\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EIP1559_INVALID_PARAMS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_BASEFEE_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L1_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_L2_CHAIN_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_INVALID_SENDER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L2_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Overflow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDR_MANAGER\",\"inputs\":[]}]", } // TaikoL2ABI is the input ABI used to generate the binding from. @@ -386,6 +386,37 @@ func (_TaikoL2 *TaikoL2CallerSession) GetConfig() (LibL2ConfigConfig, error) { return _TaikoL2.Contract.GetConfig(&_TaikoL2.CallOpts) } +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_TaikoL2 *TaikoL2Caller) Impl(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL2.contract.Call(opts, &out, "impl") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_TaikoL2 *TaikoL2Session) Impl() (common.Address, error) { + return _TaikoL2.Contract.Impl(&_TaikoL2.CallOpts) +} + +// Impl is a free data retrieval call binding the contract method 0x8abf6077. +// +// Solidity: function impl() view returns(address) +func (_TaikoL2 *TaikoL2CallerSession) Impl() (common.Address, error) { + return _TaikoL2.Contract.Impl(&_TaikoL2.CallOpts) +} + // InNonReentrant is a free data retrieval call binding the contract method 0x3075db56. // // Solidity: function inNonReentrant() view returns(bool) diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index d40882cb413..03ad7654d6d 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -431,6 +431,27 @@ func (p *Processor) sendProcessMessageCall( estimatedCost = gasUsed * (baseFee.Uint64() + gasTipCap.Uint64()) } + // we should check event status one more time, after we have waiting for + // confirmations, and after we have generated proof. its possible another relayer + // or the user themself has claimed this in the time it took + // for us to do this work, which would cause us to revert. + eventStatus, err := p.eventStatusFromMsgHash(ctx, event.MsgHash) + if err != nil { + return nil, errors.Wrap(err, "p.eventStatusFromMsgHash") + } + + if !canProcessMessage( + ctx, + eventStatus, + event.Message.SrcOwner, + p.relayerAddr, + uint64(event.Message.GasLimit), + ) { + slog.Error("can not process message after waiting for confirmations", "err", errUnprocessable) + + return nil, errUnprocessable + } + candidate := txmgr.TxCandidate{ TxData: data, Blobs: nil, diff --git a/packages/relayer/processor/processor.go b/packages/relayer/processor/processor.go index d1cc6bdb923..9e2f5b61336 100644 --- a/packages/relayer/processor/processor.go +++ b/packages/relayer/processor/processor.go @@ -465,7 +465,7 @@ func (p *Processor) eventLoop(ctx context.Context) { headers := make(map[string]interface{}, 0) - headers["retries"] = timesRetried + 1 + headers["retries"] = int64(timesRetried + 1) if err := p.queue.Publish( ctx, From d66926308681893aa7e7342288d157d9a5e1b392 Mon Sep 17 00:00:00 2001 From: Gavin Yu Date: Tue, 14 May 2024 08:45:40 +0800 Subject: [PATCH 083/100] feat(taiko-client): change guardian provers to directly submit proofs instead of contests (#17069) Co-authored-by: maskpp Co-authored-by: David --- .../event_handler/assignment_expired.go | 7 +- .../prover/event_handler/block_proposed.go | 82 ++++++------------- .../event_handler/block_proposed_test.go | 33 -------- .../event_handler/transition_contested.go | 2 +- .../prover/event_handler/transition_proved.go | 55 ++++++++++--- .../event_handler/transition_proved_test.go | 2 + .../taiko-client/prover/event_handler/util.go | 22 ++--- .../prover/event_handler/util_test.go | 10 +-- packages/taiko-client/prover/init.go | 9 +- .../prover/proof_submitter/proof_submitter.go | 75 ++++++++++++++++- .../proof_submitter/proof_submitter_test.go | 74 +++++++++++++++++ packages/taiko-client/prover/prover.go | 2 +- packages/taiko-client/prover/prover_test.go | 5 +- 13 files changed, 250 insertions(+), 128 deletions(-) diff --git a/packages/taiko-client/prover/event_handler/assignment_expired.go b/packages/taiko-client/prover/event_handler/assignment_expired.go index fbd8c5e04a0..eb01a39f812 100644 --- a/packages/taiko-client/prover/event_handler/assignment_expired.go +++ b/packages/taiko-client/prover/event_handler/assignment_expired.go @@ -19,6 +19,8 @@ type AssignmentExpiredEventHandler struct { proofSubmissionCh chan<- *proofProducer.ProofRequestBody proofContestCh chan<- *proofProducer.ContestRequestBody contesterMode bool + // Guardian prover related. + isGuardian bool } // NewAssignmentExpiredEventHandler creates a new AssignmentExpiredEventHandler instance. @@ -28,8 +30,9 @@ func NewAssignmentExpiredEventHandler( proofSubmissionCh chan *proofProducer.ProofRequestBody, proofContestCh chan *proofProducer.ContestRequestBody, contesterMode bool, + isGuardian bool, ) *AssignmentExpiredEventHandler { - return &AssignmentExpiredEventHandler{rpc, proverAddress, proofSubmissionCh, proofContestCh, contesterMode} + return &AssignmentExpiredEventHandler{rpc, proverAddress, proofSubmissionCh, proofContestCh, contesterMode, isGuardian} } // Handle implements the AssignmentExpiredHandler interface. @@ -63,7 +66,7 @@ func (h *AssignmentExpiredEventHandler) Handle( // If there is no contester, we submit a contest to protocol. go func() { - if proofStatus.CurrentTransitionState.Contester == rpc.ZeroAddress { + if proofStatus.CurrentTransitionState.Contester == rpc.ZeroAddress && !h.isGuardian { h.proofContestCh <- &proofProducer.ContestRequestBody{ BlockID: e.BlockId, ProposedIn: new(big.Int).SetUint64(e.Raw.BlockNumber), diff --git a/packages/taiko-client/prover/event_handler/block_proposed.go b/packages/taiko-client/prover/event_handler/block_proposed.go index 3b7d616024d..bda6fce31f4 100644 --- a/packages/taiko-client/prover/event_handler/block_proposed.go +++ b/packages/taiko-client/prover/event_handler/block_proposed.go @@ -2,7 +2,6 @@ package handler import ( "context" - "crypto/rand" "errors" "fmt" "math/big" @@ -24,9 +23,8 @@ import ( ) var ( - errL1Reorged = errors.New("L1 reorged") - proofExpirationDelay = 6 * 12 * time.Second // 6 ethereum blocks - submissionDelayRandomBumpRange float64 = 20 + errL1Reorged = errors.New("L1 reorged") + proofExpirationDelay = 6 * 12 * time.Second // 6 ethereum blocks ) // BlockProposedEventHandler is responsible for handling the BlockProposed event as a prover. @@ -44,8 +42,7 @@ type BlockProposedEventHandler struct { contesterMode bool proveUnassignedBlocks bool // Guardian prover related. - isGuardian bool - submissionDelay time.Duration + isGuardian bool } // NewBlockProposedEventHandlerOps is the options for creating a new BlockProposedEventHandler. @@ -62,7 +59,6 @@ type NewBlockProposedEventHandlerOps struct { BackOffMaxRetrys uint64 ContesterMode bool ProveUnassignedBlocks bool - SubmissionDelay time.Duration } // NewBlockProposedEventHandler creates a new BlockProposedEventHandler instance. @@ -81,7 +77,6 @@ func NewBlockProposedEventHandler(opts *NewBlockProposedEventHandlerOps) *BlockP opts.ContesterMode, opts.ProveUnassignedBlocks, false, - opts.SubmissionDelay, } } @@ -223,29 +218,6 @@ func (h *BlockProposedEventHandler) checkL1Reorg( return nil } -// getRandomBumpedSubmissionDelay returns a random bumped submission delay. -func (h *BlockProposedEventHandler) getRandomBumpedSubmissionDelay(expiredAt time.Time) (time.Duration, error) { - if h.submissionDelay == 0 { - return h.submissionDelay, nil - } - - randomBump, err := rand.Int( - rand.Reader, - new(big.Int).SetUint64(uint64(h.submissionDelay.Seconds()*submissionDelayRandomBumpRange/100)), - ) - if err != nil { - return 0, err - } - - delay := time.Duration(h.submissionDelay.Seconds()+float64(randomBump.Uint64())) * time.Second - - if time.Since(expiredAt) >= delay { - return 0, nil - } - - return delay - time.Since(expiredAt), nil -} - // checkExpirationAndSubmitProof checks whether the proposed block's proving window is expired, // and submits a new proof if necessary. func (h *BlockProposedEventHandler) checkExpirationAndSubmitProof( @@ -295,28 +267,33 @@ func (h *BlockProposedEventHandler) checkExpirationAndSubmitProof( return nil } - // If the current proof has not been contested, we should contest it at first. - if proofStatus.CurrentTransitionState.Contester == rpc.ZeroAddress { - h.proofContestCh <- &proofProducer.ContestRequestBody{ - BlockID: e.BlockId, - ProposedIn: new(big.Int).SetUint64(e.Raw.BlockNumber), - ParentHash: proofStatus.ParentHeader.Hash(), - Meta: &e.Meta, - Tier: e.Meta.MinTier, - } + if h.isGuardian { + // In guardian prover, we submit a proof directly. + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{Tier: encoding.TierGuardianMinorityID, Event: e} } else { - // The invalid proof submitted to protocol is contested by another prover, - // we need to submit a proof with a higher tier. - h.proofSubmissionCh <- &proofProducer.ProofRequestBody{ - Tier: proofStatus.CurrentTransitionState.Tier + 1, - Event: e, + // If the current proof has not been contested, we should contest it at first. + if proofStatus.CurrentTransitionState.Contester == rpc.ZeroAddress { + h.proofContestCh <- &proofProducer.ContestRequestBody{ + BlockID: e.BlockId, + ProposedIn: new(big.Int).SetUint64(e.Raw.BlockNumber), + ParentHash: proofStatus.ParentHeader.Hash(), + Meta: &e.Meta, + Tier: e.Meta.MinTier, + } + } else { + // The invalid proof submitted to protocol is contested by another prover, + // we need to submit a proof with a higher tier. + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{ + Tier: proofStatus.CurrentTransitionState.Tier + 1, + Event: e, + } } } return nil } - windowExpired, expiredAt, timeToExpire, err := isProvingWindowExpired(e, h.sharedState.GetTiers()) + windowExpired, _, timeToExpire, err := IsProvingWindowExpired(&e.Meta, h.sharedState.GetTiers()) if err != nil { return fmt.Errorf("failed to check if the proving window is expired: %w", err) } @@ -339,7 +316,7 @@ func (h *BlockProposedEventHandler) checkExpirationAndSubmitProof( "timeToExpire", timeToExpire, ) time.AfterFunc( - // Add another 60 seconds, to ensure one more L1 block will be mined before the proof submission + // Add another 72 seconds, to ensure one more L1 block will be mined before the proof submission timeToExpire+proofExpirationDelay, func() { h.assignmentExpiredCh <- e }, ) @@ -352,12 +329,6 @@ func (h *BlockProposedEventHandler) checkExpirationAndSubmitProof( // try to submit a proof for this proposed block. tier := e.Meta.MinTier - // Get a random bumped submission delay, if necessary. - submissionDelay, err := h.getRandomBumpedSubmissionDelay(expiredAt) - if err != nil { - return err - } - if h.isGuardian { tier = encoding.TierGuardianMinorityID } @@ -367,15 +338,12 @@ func (h *BlockProposedEventHandler) checkExpirationAndSubmitProof( "blockID", e.BlockId, "assignProver", e.AssignedProver, "minTier", e.Meta.MinTier, - "submissionDelay", submissionDelay, "tier", tier, ) metrics.ProverProofsAssigned.Add(1) - time.AfterFunc(submissionDelay, func() { - h.proofSubmissionCh <- &proofProducer.ProofRequestBody{Tier: tier, Event: e} - }) + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{Tier: tier, Event: e} return nil } diff --git a/packages/taiko-client/prover/event_handler/block_proposed_test.go b/packages/taiko-client/prover/event_handler/block_proposed_test.go index 2d3b9806525..7b843d97d46 100644 --- a/packages/taiko-client/prover/event_handler/block_proposed_test.go +++ b/packages/taiko-client/prover/event_handler/block_proposed_test.go @@ -31,36 +31,3 @@ func (s *EventHandlerTestSuite) TestBlockProposedHandle() { err := handler.Handle(context.Background(), e, func() {}) s.Nil(err) } - -func (s *EventHandlerTestSuite) TestGetRandomBumpedSubmissionDelay() { - opts := &NewBlockProposedEventHandlerOps{ - SharedState: &state.SharedState{}, - ProverAddress: common.Address{}, - GenesisHeightL1: 0, - RPC: s.RPCClient, - ProofGenerationCh: make(chan *proofProducer.ProofWithHeader), - AssignmentExpiredCh: make(chan *bindings.TaikoL1ClientBlockProposed), - ProofSubmissionCh: make(chan *proofProducer.ProofRequestBody), - ProofContestCh: make(chan *proofProducer.ContestRequestBody), - BackOffRetryInterval: 1 * time.Minute, - BackOffMaxRetrys: 5, - ContesterMode: true, - ProveUnassignedBlocks: true, - } - handler1 := NewBlockProposedEventHandler(opts) - - delay, err := handler1.getRandomBumpedSubmissionDelay(time.Now()) - s.Nil(err) - s.Zero(delay) - - opts.SubmissionDelay = 1 * time.Hour - handler2 := NewBlockProposedEventHandler(opts) - delay, err = handler2.getRandomBumpedSubmissionDelay(time.Now()) - s.Nil(err) - s.NotZero(delay) - s.Greater(delay.Seconds(), opts.SubmissionDelay.Seconds()) - s.Less( - delay.Seconds(), - opts.SubmissionDelay.Seconds()*(1+(submissionDelayRandomBumpRange/100)), - ) -} diff --git a/packages/taiko-client/prover/event_handler/transition_contested.go b/packages/taiko-client/prover/event_handler/transition_contested.go index 53ef97f047f..a34d3506932 100644 --- a/packages/taiko-client/prover/event_handler/transition_contested.go +++ b/packages/taiko-client/prover/event_handler/transition_contested.go @@ -90,7 +90,7 @@ func (h *TransitionContestedEventHandler) Handle( return err } - blockProposedEvent, err := getBlockProposedEventFromBlockID( + blockProposedEvent, err := GetBlockProposedEventFromBlockID( ctx, h.rpc, e.BlockId, diff --git a/packages/taiko-client/prover/event_handler/transition_proved.go b/packages/taiko-client/prover/event_handler/transition_proved.go index c94610a19d0..21416b5c513 100644 --- a/packages/taiko-client/prover/event_handler/transition_proved.go +++ b/packages/taiko-client/prover/event_handler/transition_proved.go @@ -4,6 +4,8 @@ import ( "context" "math/big" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/log" @@ -15,18 +17,28 @@ import ( // TransitionProvedEventHandler is responsible for handling the TransitionProved event. type TransitionProvedEventHandler struct { - rpc *rpc.Client - proofContestCh chan<- *proofProducer.ContestRequestBody - contesterMode bool + rpc *rpc.Client + proofContestCh chan<- *proofProducer.ContestRequestBody + proofSubmissionCh chan<- *proofProducer.ProofRequestBody + contesterMode bool + isGuardian bool } // NewTransitionProvedEventHandler creates a new TransitionProvedEventHandler instance. func NewTransitionProvedEventHandler( rpc *rpc.Client, proofContestCh chan *proofProducer.ContestRequestBody, + proofSubmissionCh chan *proofProducer.ProofRequestBody, contesterMode bool, + isGuardian bool, ) *TransitionProvedEventHandler { - return &TransitionProvedEventHandler{rpc, proofContestCh, contesterMode} + return &TransitionProvedEventHandler{ + rpc, + proofContestCh, + proofSubmissionCh, + contesterMode, + isGuardian, + } } // Handle implements the TransitionProvedHandler interface. @@ -78,15 +90,32 @@ func (h *TransitionProvedEventHandler) Handle( "blockHash", common.Bytes2Hex(e.Tran.BlockHash[:]), "stateRoot", common.Bytes2Hex(e.Tran.StateRoot[:]), ) - - go func() { - h.proofContestCh <- &proofProducer.ContestRequestBody{ - BlockID: e.BlockId, - ProposedIn: new(big.Int).SetUint64(blockInfo.ProposedIn), - ParentHash: e.Tran.ParentHash, - Meta: meta, - Tier: e.Tier, + if h.isGuardian { + blockProposedEvent, err := GetBlockProposedEventFromBlockID( + ctx, + h.rpc, + e.BlockId, + new(big.Int).SetUint64(blockInfo.ProposedIn), + ) + if err != nil { + return err } - }() + go func() { + h.proofSubmissionCh <- &proofProducer.ProofRequestBody{ + Tier: encoding.TierGuardianMinorityID, + Event: blockProposedEvent, + } + }() + } else { + go func() { + h.proofContestCh <- &proofProducer.ContestRequestBody{ + BlockID: e.BlockId, + ProposedIn: new(big.Int).SetUint64(blockInfo.ProposedIn), + ParentHash: e.Tran.ParentHash, + Meta: meta, + Tier: e.Tier, + } + }() + } return nil } diff --git a/packages/taiko-client/prover/event_handler/transition_proved_test.go b/packages/taiko-client/prover/event_handler/transition_proved_test.go index b6afa75ec2a..992aa582b7e 100644 --- a/packages/taiko-client/prover/event_handler/transition_proved_test.go +++ b/packages/taiko-client/prover/event_handler/transition_proved_test.go @@ -118,7 +118,9 @@ func (s *EventHandlerTestSuite) TestTransitionProvedHandle() { handler := NewTransitionProvedEventHandler( s.RPCClient, make(chan *proofProducer.ContestRequestBody), + make(chan *proofProducer.ProofRequestBody), true, + false, ) e := s.ProposeAndInsertValidBlock(s.proposer, s.blobSyncer) err := handler.Handle(context.Background(), &bindings.TaikoL1ClientTransitionProved{ diff --git a/packages/taiko-client/prover/event_handler/util.go b/packages/taiko-client/prover/event_handler/util.go index c21ad7f1e66..0a350d577af 100644 --- a/packages/taiko-client/prover/event_handler/util.go +++ b/packages/taiko-client/prover/event_handler/util.go @@ -54,13 +54,13 @@ func isValidProof( l2Header.Root == stateRoot, nil } -// getProvingWindow returns the provingWindow of the given proposed block. +// getProvingWindow returns the provingWindow of the given tier. func getProvingWindow( - e *bindings.TaikoL1ClientBlockProposed, + tier uint16, tiers []*rpc.TierProviderTierWithID, ) (time.Duration, error) { for _, t := range tiers { - if e.Meta.MinTier == t.ID { + if tier == t.ID { return time.Duration(t.ProvingWindow) * time.Minute, nil } } @@ -68,8 +68,8 @@ func getProvingWindow( return 0, errTierNotFound } -// getBlockProposedEventFromBlockID fetches the BlockProposed event by the given block id. -func getBlockProposedEventFromBlockID( +// GetBlockProposedEventFromBlockID fetches the BlockProposed event by the given block id. +func GetBlockProposedEventFromBlockID( ctx context.Context, rpc *rpc.Client, id *big.Int, @@ -120,28 +120,28 @@ func getMetadataFromBlockID( id *big.Int, proposedIn *big.Int, ) (*bindings.TaikoDataBlockMetadata, error) { - e, err := getBlockProposedEventFromBlockID(ctx, rpc, id, proposedIn) + e, err := GetBlockProposedEventFromBlockID(ctx, rpc, id, proposedIn) if err != nil { return nil, err } return &e.Meta, nil } -// isProvingWindowExpired returns true as the first return parameter if the assigned prover +// IsProvingWindowExpired returns true as the first return parameter if the assigned prover // proving window of the given proposed block is expired, and the second return parameter is the time // remaining til proving window is expired. -func isProvingWindowExpired( - e *bindings.TaikoL1ClientBlockProposed, +func IsProvingWindowExpired( + metadata *bindings.TaikoDataBlockMetadata, tiers []*rpc.TierProviderTierWithID, ) (bool, time.Time, time.Duration, error) { - provingWindow, err := getProvingWindow(e, tiers) + provingWindow, err := getProvingWindow(metadata.MinTier, tiers) if err != nil { return false, time.Time{}, 0, fmt.Errorf("failed to get proving window: %w", err) } var ( now = uint64(time.Now().Unix()) - expiredAt = e.Meta.Timestamp + uint64(provingWindow.Seconds()) + expiredAt = metadata.Timestamp + uint64(provingWindow.Seconds()) ) return now > expiredAt, time.Unix(int64(expiredAt), 0), time.Duration(expiredAt-now) * time.Second, nil diff --git a/packages/taiko-client/prover/event_handler/util_test.go b/packages/taiko-client/prover/event_handler/util_test.go index 95c103ec243..c6d1b1344d4 100644 --- a/packages/taiko-client/prover/event_handler/util_test.go +++ b/packages/taiko-client/prover/event_handler/util_test.go @@ -7,7 +7,6 @@ import ( "github.com/stretchr/testify/suite" - "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings" "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" @@ -18,11 +17,10 @@ type ProverEventHandlerTestSuite struct { } func (s *ProverEventHandlerTestSuite) TestGetProvingWindowNotFound() { - _, err := getProvingWindow(&bindings.TaikoL1ClientBlockProposed{ - Meta: bindings.TaikoDataBlockMetadata{ - MinTier: encoding.TierGuardianMajorityID + 1, - }, - }, []*rpc.TierProviderTierWithID{}) + _, err := getProvingWindow( + encoding.TierGuardianMajorityID+1, + []*rpc.TierProviderTierWithID{}, + ) s.ErrorIs(err, errTierNotFound) } diff --git a/packages/taiko-client/prover/init.go b/packages/taiko-client/prover/init.go index 9f046fbbcd1..dcc40ee1198 100644 --- a/packages/taiko-client/prover/init.go +++ b/packages/taiko-client/prover/init.go @@ -14,6 +14,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" + "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" handler "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/event_handler" proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" proofSubmitter "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter" @@ -94,6 +95,7 @@ func (p *Prover) setApprovalAmount(ctx context.Context, contract common.Address) func (p *Prover) initProofSubmitters( txmgr *txmgr.SimpleTxManager, txBuilder *transaction.ProveBlockTxBuilder, + tiers []*rpc.TierProviderTierWithID, ) error { for _, tier := range p.sharedState.GetTiers() { var ( @@ -144,6 +146,9 @@ func (p *Prover) initProofSubmitters( p.cfg.ProveBlockGasLimit, txmgr, txBuilder, + tiers, + p.IsGuardianProver(), + p.cfg.GuardianProofSubmissionDelay, ); err != nil { return err } @@ -227,7 +232,6 @@ func (p *Prover) initEventHandlers() error { ProveUnassignedBlocks: p.cfg.ProveUnassignedBlocks, } if p.IsGuardianProver() { - opts.SubmissionDelay = p.cfg.GuardianProofSubmissionDelay p.blockProposedHandler = handler.NewBlockProposedEventGuardianHandler( &handler.NewBlockProposedGuardianEventHandlerOps{ NewBlockProposedEventHandlerOps: opts, @@ -241,7 +245,9 @@ func (p *Prover) initEventHandlers() error { p.transitionProvedHandler = handler.NewTransitionProvedEventHandler( p.rpc, p.proofContestCh, + p.proofSubmissionCh, p.cfg.ContesterMode, + p.IsGuardianProver(), ) // ------- TransitionContested ------- p.transitionContestedHandler = handler.NewTransitionContestedEventHandler( @@ -256,6 +262,7 @@ func (p *Prover) initEventHandlers() error { p.proofSubmissionCh, p.proofContestCh, p.cfg.ContesterMode, + p.IsGuardianProver(), ) // ------- BlockVerified ------- diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter.go b/packages/taiko-client/prover/proof_submitter/proof_submitter.go index f9dc69220c7..c453a589bf7 100644 --- a/packages/taiko-client/prover/proof_submitter/proof_submitter.go +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter.go @@ -2,8 +2,11 @@ package submitter import ( "context" + "crypto/rand" "errors" "fmt" + "math/big" + "time" "github.com/ethereum-optimism/optimism/op-service/txmgr" "github.com/ethereum/go-ethereum/common" @@ -14,11 +17,15 @@ import ( "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/metrics" "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc" validator "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/anchor_tx_validator" + handler "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/event_handler" proofProducer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer" "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_submitter/transaction" ) -var _ Submitter = (*ProofSubmitter)(nil) +var ( + _ Submitter = (*ProofSubmitter)(nil) + submissionDelayRandomBumpRange float64 = 20 +) // ProofSubmitter is responsible requesting proofs for the given L2 // blocks, and submitting the generated proofs to the TaikoL1 smart contract. @@ -32,6 +39,10 @@ type ProofSubmitter struct { proverAddress common.Address taikoL2Address common.Address graffiti [32]byte + tiers []*rpc.TierProviderTierWithID + // Guardian prover related. + isGuardian bool + submissionDelay time.Duration } // NewProofSubmitter creates a new ProofSubmitter instance. @@ -44,6 +55,9 @@ func NewProofSubmitter( gasLimit uint64, txmgr *txmgr.SimpleTxManager, builder *transaction.ProveBlockTxBuilder, + tiers []*rpc.TierProviderTierWithID, + isGuardian bool, + submissionDelay time.Duration, ) (*ProofSubmitter, error) { anchorValidator, err := validator.New(taikoL2Address, rpcClient.L2.ChainID, rpcClient) if err != nil { @@ -60,6 +74,9 @@ func NewProofSubmitter( proverAddress: txmgr.From(), taikoL2Address: taikoL2Address, graffiti: rpc.StringToBytes32(graffiti), + tiers: tiers, + isGuardian: isGuardian, + submissionDelay: submissionDelay, }, nil } @@ -124,7 +141,7 @@ func (s *ProofSubmitter) SubmitProof( proofWithHeader *proofProducer.ProofWithHeader, ) (err error) { log.Info( - "NewProofSubmitter block proof", + "Submit block proof", "blockID", proofWithHeader.BlockID, "coinbase", proofWithHeader.Meta.Coinbase, "parentHash", proofWithHeader.Header.ParentHash, @@ -134,6 +151,37 @@ func (s *ProofSubmitter) SubmitProof( "tier", proofWithHeader.Tier, ) + // Check if we still need to generate a new proof for that block. + proofStatus, err := rpc.GetBlockProofStatus(ctx, s.rpc, proofWithHeader.BlockID, s.proverAddress) + if err != nil { + return err + } + if proofStatus.IsSubmitted && !proofStatus.Invalid { + return nil + } + + if s.isGuardian { + _, expiredAt, _, err := handler.IsProvingWindowExpired(proofWithHeader.Meta, s.tiers) + if err != nil { + return fmt.Errorf("failed to check if the proving window is expired: %w", err) + } + // Get a random bumped submission delay, if necessary. + submissionDelay, err := s.getRandomBumpedSubmissionDelay(expiredAt) + if err != nil { + return err + } + delayTimer := time.After(submissionDelay) + <-delayTimer + // Check again. + proofStatus, err := rpc.GetBlockProofStatus(ctx, s.rpc, proofWithHeader.BlockID, s.proverAddress) + if err != nil { + return err + } + if proofStatus.IsSubmitted && !proofStatus.Invalid { + return nil + } + } + metrics.ProverReceivedProofCounter.Add(1) // Get the corresponding L2 block. @@ -185,6 +233,29 @@ func (s *ProofSubmitter) SubmitProof( return nil } +// getRandomBumpedSubmissionDelay returns a random bumped submission delay. +func (s *ProofSubmitter) getRandomBumpedSubmissionDelay(expiredAt time.Time) (time.Duration, error) { + if s.submissionDelay == 0 { + return s.submissionDelay, nil + } + + randomBump, err := rand.Int( + rand.Reader, + new(big.Int).SetUint64(uint64(s.submissionDelay.Seconds()*submissionDelayRandomBumpRange/100)), + ) + if err != nil { + return 0, err + } + + delay := time.Duration(s.submissionDelay.Seconds()+float64(randomBump.Uint64())) * time.Second + + if time.Since(expiredAt) >= delay { + return 0, nil + } + + return delay - time.Since(expiredAt), nil +} + // Producer returns the inner proof producer. func (s *ProofSubmitter) Producer() proofProducer.ProofProducer { return s.proofProducer diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go index 13c8c84101a..5ca58768238 100644 --- a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go +++ b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go @@ -73,6 +73,9 @@ func (s *ProofSubmitterTestSuite) SetupTest() { ) s.Nil(err) + // Protocol proof tiers + tiers, err := s.RPCClient.GetTiers(context.Background()) + s.Nil(err) s.submitter, err = NewProofSubmitter( s.RPCClient, &producer.OptimisticProofProducer{}, @@ -82,6 +85,9 @@ func (s *ProofSubmitterTestSuite) SetupTest() { 0, txMgr, builder, + tiers, + false, + 0*time.Second, ) s.Nil(err) s.contester = NewProofContester( @@ -153,6 +159,74 @@ func (s *ProofSubmitterTestSuite) SetupTest() { s.proposer = prop } +func (s *ProofSubmitterTestSuite) TestGetRandomBumpedSubmissionDelay() { + l1ProverPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROVER_PRIVATE_KEY"))) + s.Nil(err) + txMgr, err := txmgr.NewSimpleTxManager( + "proofSubmitterTestSuite", + log.Root(), + new(metrics.NoopTxMetrics), + txmgr.CLIConfig{ + L1RPCURL: os.Getenv("L1_NODE_WS_ENDPOINT"), + NumConfirmations: 0, + SafeAbortNonceTooLowCount: txmgr.DefaultBatcherFlagValues.SafeAbortNonceTooLowCount, + PrivateKey: common.Bytes2Hex(crypto.FromECDSA(l1ProverPrivKey)), + FeeLimitMultiplier: txmgr.DefaultBatcherFlagValues.FeeLimitMultiplier, + FeeLimitThresholdGwei: txmgr.DefaultBatcherFlagValues.FeeLimitThresholdGwei, + MinBaseFeeGwei: txmgr.DefaultBatcherFlagValues.MinBaseFeeGwei, + MinTipCapGwei: txmgr.DefaultBatcherFlagValues.MinTipCapGwei, + ResubmissionTimeout: txmgr.DefaultBatcherFlagValues.ResubmissionTimeout, + ReceiptQueryInterval: 1 * time.Second, + NetworkTimeout: txmgr.DefaultBatcherFlagValues.NetworkTimeout, + TxSendTimeout: txmgr.DefaultBatcherFlagValues.TxSendTimeout, + TxNotInMempoolTimeout: txmgr.DefaultBatcherFlagValues.TxNotInMempoolTimeout, + }, + ) + s.Nil(err) + + submitter1, err := NewProofSubmitter( + s.RPCClient, + &producer.OptimisticProofProducer{}, + s.proofCh, + common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + "test", + 0, + txMgr, + s.submitter.txBuilder, + s.submitter.tiers, + false, + time.Duration(0), + ) + s.Nil(err) + + delay, err := submitter1.getRandomBumpedSubmissionDelay(time.Now()) + s.Nil(err) + s.Zero(delay) + + submitter2, err := NewProofSubmitter( + s.RPCClient, + &producer.OptimisticProofProducer{}, + s.proofCh, + common.HexToAddress(os.Getenv("TAIKO_L2_ADDRESS")), + "test", + 0, + txMgr, + s.submitter.txBuilder, + s.submitter.tiers, + false, + 1*time.Hour, + ) + s.Nil(err) + delay, err = submitter2.getRandomBumpedSubmissionDelay(time.Now()) + s.Nil(err) + s.NotZero(delay) + s.Greater(delay.Seconds(), 1*time.Hour.Seconds()) + s.Less( + delay.Seconds(), + time.Hour.Seconds()*(1+(submissionDelayRandomBumpRange/100)), + ) +} + func (s *ProofSubmitterTestSuite) TestProofSubmitterRequestProofDeadlineExceeded() { ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() diff --git a/packages/taiko-client/prover/prover.go b/packages/taiko-client/prover/prover.go index 10e0bd5f3f8..b20391cbada 100644 --- a/packages/taiko-client/prover/prover.go +++ b/packages/taiko-client/prover/prover.go @@ -160,7 +160,7 @@ func InitFromConfig(ctx context.Context, p *Prover, cfg *Config) (err error) { } // Proof submitters - if err := p.initProofSubmitters(p.txmgr, txBuilder); err != nil { + if err := p.initProofSubmitters(p.txmgr, txBuilder, tiers); err != nil { return err } diff --git a/packages/taiko-client/prover/prover_test.go b/packages/taiko-client/prover/prover_test.go index 101c3607c5f..3e175f0dcd2 100644 --- a/packages/taiko-client/prover/prover_test.go +++ b/packages/taiko-client/prover/prover_test.go @@ -308,7 +308,10 @@ func (s *ProverTestSuite) TestContestWrongBlocks() { s.p.cfg.GuardianProverMinorityAddress, ) s.p.proofSubmitters = nil - s.Nil(s.p.initProofSubmitters(s.p.txmgr, txBuilder)) + // Protocol proof tiers + tiers, err := s.RPCClient.GetTiers(context.Background()) + s.Nil(err) + s.Nil(s.p.initProofSubmitters(s.p.txmgr, txBuilder, tiers)) s.p.rpc.GuardianProverMajority, err = bindings.NewGuardianProver(s.p.cfg.GuardianProverMajorityAddress, s.p.rpc.L1) s.Nil(err) From 357ecf23ed628254cddccf4b6a8f16b97fb4f5b0 Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 20:55:03 -0400 Subject: [PATCH 084/100] chore(eventindexer,relayer,taiko-client): prep swagger apis to migrate (#17148) --- .../taiko-client-proverapi-preview.yml | 46 --------------- .../taiko-client-proverapi-production.yml | 43 -------------- packages/eventindexer/docs/docs.go | 57 +++---------------- packages/eventindexer/docs/swagger.json | 49 ++-------------- packages/eventindexer/docs/swagger.yaml | 35 +----------- packages/eventindexer/pkg/http/server.go | 5 +- packages/relayer/docs/docs.go | 13 ++++- packages/relayer/docs/swagger.json | 13 ++++- packages/relayer/docs/swagger.yaml | 9 ++- packages/relayer/pkg/http/server.go | 5 +- packages/taiko-client/prover/server/server.go | 3 +- 11 files changed, 48 insertions(+), 230 deletions(-) delete mode 100644 .github/workflows/taiko-client-proverapi-preview.yml delete mode 100644 .github/workflows/taiko-client-proverapi-production.yml diff --git a/.github/workflows/taiko-client-proverapi-preview.yml b/.github/workflows/taiko-client-proverapi-preview.yml deleted file mode 100644 index faa4440f9e6..00000000000 --- a/.github/workflows/taiko-client-proverapi-preview.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Prover Server API Preview - -env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_PROVER_SERVER }} - -on: - workflow_dispatch: - push: - branches-ignore: - - main - - release-please-* - paths: - - "packages/taiko-client/**" - -jobs: - deploy-proverserver-api-preview: - runs-on: [taiko-runner] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: 1.22.0 - - - name: Install swag cli - run: go install github.com/swaggo/swag/cmd/swag@latest - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Swag autogen - working-directory: packages/taiko-client - run: ./scripts/gen_swagger_json.sh - - - name: Pull Vercel Environment Information - run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} - - - name: Deploy Project Artifacts to Vercel - working-directory: packages/taiko-client - run: vercel --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/taiko-client-proverapi-production.yml b/.github/workflows/taiko-client-proverapi-production.yml deleted file mode 100644 index d6f768ef6a0..00000000000 --- a/.github/workflows/taiko-client-proverapi-production.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Prover Server API Production - -env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_PROVER_SERVER }} - -on: - workflow_dispatch: - push: - tags: - - "taiko-client-*" - -jobs: - deploy-proverserver-api-production: - runs-on: [taiko-runner] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: 1.22.0 - - - name: Install swag cli - run: go install github.com/swaggo/swag/cmd/swag@latest - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Swag autogen - working-directory: packages/taiko-client - run: ./scripts/gen_swagger_json.sh - - - name: Pull Vercel Environment Information - run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} - - - name: Deploy Project Artifacts to Vercel - working-directory: packages/taiko-client - run: vercel --token=${{ secrets.VERCEL_TOKEN }} diff --git a/packages/eventindexer/docs/docs.go b/packages/eventindexer/docs/docs.go index 65a6411b2c6..950eaea61ed 100644 --- a/packages/eventindexer/docs/docs.go +++ b/packages/eventindexer/docs/docs.go @@ -1,4 +1,4 @@ -// Code generated by swaggo/swag. DO NOT EDIT +// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" @@ -16,7 +16,8 @@ const docTemplate = `{ "email": "info@taiko.xyz" }, "license": { - "name": "MIT" + "name": "MIT", + "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md" }, "version": "{{.Version}}" }, @@ -167,26 +168,6 @@ const docTemplate = `{ } } }, - "/stats": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "summary": "Get stats", - "operationId": "get-stats", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/eventindexer.Stat" - } - } - } - } - }, "/uniqueProposers": { "get": { "consumes": [ @@ -251,32 +232,6 @@ const docTemplate = `{ } } }, - "eventindexer.Stat": { - "type": "object", - "properties": { - "averageProofReward": { - "type": "string" - }, - "averageProofTime": { - "type": "string" - }, - "feeTokenAddress": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "numBlocksAssigned": { - "type": "integer" - }, - "numProofs": { - "type": "integer" - }, - "statType": { - "type": "string" - } - } - }, "eventindexer.UniqueProposersResponse": { "type": "object", "properties": { @@ -369,13 +324,15 @@ const docTemplate = `{ // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0", - Host: "eventindexer.katla.taiko.xyz", + Host: "eventindexer.hekla.taiko.xyz", BasePath: "", Schemes: []string{}, - Title: "Taiko Eventindexer API", + Title: "Taiko Event Indexer API", Description: "", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, + LeftDelim: "{{", + RightDelim: "}}", } func init() { diff --git a/packages/eventindexer/docs/swagger.json b/packages/eventindexer/docs/swagger.json index c693053f635..8927b8f6366 100644 --- a/packages/eventindexer/docs/swagger.json +++ b/packages/eventindexer/docs/swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "Taiko Eventindexer API", + "title": "Taiko Event Indexer API", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", @@ -9,11 +9,12 @@ "email": "info@taiko.xyz" }, "license": { - "name": "MIT" + "name": "MIT", + "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md" }, "version": "1.0" }, - "host": "eventindexer.katla.taiko.xyz", + "host": "eventindexer.hekla.taiko.xyz", "paths": { "/assignedBlocks": { "get": { @@ -143,22 +144,6 @@ } } }, - "/stats": { - "get": { - "consumes": ["application/json"], - "produces": ["application/json"], - "summary": "Get stats", - "operationId": "get-stats", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/eventindexer.Stat" - } - } - } - } - }, "/uniqueProposers": { "get": { "consumes": ["application/json"], @@ -215,32 +200,6 @@ } } }, - "eventindexer.Stat": { - "type": "object", - "properties": { - "averageProofReward": { - "type": "string" - }, - "averageProofTime": { - "type": "string" - }, - "feeTokenAddress": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "numBlocksAssigned": { - "type": "integer" - }, - "numProofs": { - "type": "integer" - }, - "statType": { - "type": "string" - } - } - }, "eventindexer.UniqueProposersResponse": { "type": "object", "properties": { diff --git a/packages/eventindexer/docs/swagger.yaml b/packages/eventindexer/docs/swagger.yaml index 877a55c0268..a595892b8b2 100644 --- a/packages/eventindexer/docs/swagger.yaml +++ b/packages/eventindexer/docs/swagger.yaml @@ -13,23 +13,6 @@ definitions: $ref: "#/definitions/eventindexer.ChartItem" type: array type: object - eventindexer.Stat: - properties: - averageProofReward: - type: string - averageProofTime: - type: string - feeTokenAddress: - type: string - id: - type: integer - numBlocksAssigned: - type: integer - numProofs: - type: integer - statType: - type: string - type: object eventindexer.UniqueProposersResponse: properties: address: @@ -86,7 +69,7 @@ definitions: visible: type: integer type: object -host: eventindexer.katla.taiko.xyz +host: eventindexer.hekla.taiko.xyz info: contact: email: info@taiko.xyz @@ -94,8 +77,9 @@ info: url: https://community.taiko.xyz/ license: name: MIT + url: https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md termsOfService: http://swagger.io/terms/ - title: Taiko Eventindexer API + title: Taiko Event Indexer API version: "1.0" paths: /assignedBlocks: @@ -194,19 +178,6 @@ paths: schema: $ref: "#/definitions/paginate.Page" summary: Get nft balances by address and chain ID - /stats: - get: - consumes: - - application/json - operationId: get-stats - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: "#/definitions/eventindexer.Stat" - summary: Get stats /uniqueProposers: get: consumes: diff --git a/packages/eventindexer/pkg/http/server.go b/packages/eventindexer/pkg/http/server.go index e5bfdf6b063..7a49cc20a7c 100644 --- a/packages/eventindexer/pkg/http/server.go +++ b/packages/eventindexer/pkg/http/server.go @@ -14,7 +14,7 @@ import ( echo "github.com/labstack/echo/v4" ) -// @title Taiko Eventindexer API +// @title Taiko Event Indexer API // @version 1.0 // @termsOfService http://swagger.io/terms/ @@ -23,8 +23,9 @@ import ( // @contact.email info@taiko.xyz // @license.name MIT +// @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md -// @host eventindexer.katla.taiko.xyz +// @host eventindexer.hekla.taiko.xyz // Server represents an eventindexer http server instance. type Server struct { echo *echo.Echo diff --git a/packages/relayer/docs/docs.go b/packages/relayer/docs/docs.go index 21b73bbfedb..622106df9d1 100644 --- a/packages/relayer/docs/docs.go +++ b/packages/relayer/docs/docs.go @@ -16,7 +16,8 @@ const docTemplate = `{ "email": "info@taiko.xyz" }, "license": { - "name": "MIT" + "name": "MIT", + "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md" }, "version": "{{.Version}}" }, @@ -126,6 +127,12 @@ const docTemplate = `{ "paginate.Page": { "type": "object", "properties": { + "error": { + "type": "boolean" + }, + "error_message": { + "type": "string" + }, "first": { "type": "boolean" }, @@ -159,10 +166,10 @@ const docTemplate = `{ // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0", - Host: "relayer.katla.taiko.xyz", + Host: "relayer.hekla.taiko.xyz", BasePath: "", Schemes: []string{}, - Title: "Taiko Relayer API", + Title: "Taiko Bridge Relayer API", Description: "", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, diff --git a/packages/relayer/docs/swagger.json b/packages/relayer/docs/swagger.json index 88960a80243..028b3a5e083 100644 --- a/packages/relayer/docs/swagger.json +++ b/packages/relayer/docs/swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "Taiko Relayer API", + "title": "Taiko Bridge Relayer API", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", @@ -9,11 +9,12 @@ "email": "info@taiko.xyz" }, "license": { - "name": "MIT" + "name": "MIT", + "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md" }, "version": "1.0" }, - "host": "relayer.katla.taiko.xyz", + "host": "relayer.hekla.taiko.xyz", "paths": { "/blockInfo": { "get": { @@ -110,6 +111,12 @@ "paginate.Page": { "type": "object", "properties": { + "error": { + "type": "boolean" + }, + "error_message": { + "type": "string" + }, "first": { "type": "boolean" }, diff --git a/packages/relayer/docs/swagger.yaml b/packages/relayer/docs/swagger.yaml index 18099106cc4..8e35602519f 100644 --- a/packages/relayer/docs/swagger.yaml +++ b/packages/relayer/docs/swagger.yaml @@ -17,6 +17,10 @@ definitions: type: object paginate.Page: properties: + error: + type: boolean + error_message: + type: string first: type: boolean items: {} @@ -35,7 +39,7 @@ definitions: visible: type: integer type: object -host: relayer.katla.taiko.xyz +host: relayer.hekla.taiko.xyz info: contact: email: info@taiko.xyz @@ -43,8 +47,9 @@ info: url: https://community.taiko.xyz/ license: name: MIT + url: https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md termsOfService: http://swagger.io/terms/ - title: Taiko Relayer API + title: Taiko Bridge Relayer API version: "1.0" paths: /blockInfo: diff --git a/packages/relayer/pkg/http/server.go b/packages/relayer/pkg/http/server.go index 514f3aa5d22..e6f5ee0dfb1 100644 --- a/packages/relayer/pkg/http/server.go +++ b/packages/relayer/pkg/http/server.go @@ -21,7 +21,7 @@ type ethClient interface { BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) } -// @title Taiko Relayer API +// @title Taiko Bridge Relayer API // @version 1.0 // @termsOfService http://swagger.io/terms/ @@ -30,8 +30,9 @@ type ethClient interface { // @contact.email info@taiko.xyz // @license.name MIT +// @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md -// @host relayer.katla.taiko.xyz +// @host relayer.hekla.taiko.xyz // Server represents an relayer http server instance. type Server struct { echo *echo.Echo diff --git a/packages/taiko-client/prover/server/server.go b/packages/taiko-client/prover/server/server.go index 88b33ea5275..814a1c98a23 100644 --- a/packages/taiko-client/prover/server/server.go +++ b/packages/taiko-client/prover/server/server.go @@ -27,8 +27,7 @@ import ( // @contact.email info@taiko.xyz // @license.name MIT -// @license.url https://github.com/taikoxyz/taiko-mono/packages/taiko-client/blob/main/LICENSE.md - +// @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md // ProverServer represents a prover server instance. type ProverServer struct { echo *echo.Echo From 1b3baf637ecd7103b5918dccb67cd9defc57511e Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 20:59:06 -0400 Subject: [PATCH 085/100] feat(repo,docs-site): migrate swagger apis to docs (#17149) --- .github/workflows/blobstorage-preview.yml | 35 - .github/workflows/blobstorage-production.yml | 32 - packages/docs-site/astro.config.ts | 42 +- packages/docs-site/package.json | 9 +- packages/docs-site/src/content/config.ts | 2 +- .../docs/api-reference/bridge-relayer-api.md | 6 - .../docs/api-reference/event-indexer-api.md | 6 - .../docs/api-reference/prover-server-api.md | 6 - .../docs/api-reference/taiko-node-api.md | 24 - .../content/docs/core-concepts/taiko-nodes.md | 20 + .../docs/core-concepts/what-is-taiko.md | 4 +- packages/docs-site/src/pages/og/[...slug].ts | 5 +- pnpm-lock.yaml | 3287 +++++++++-------- 13 files changed, 1876 insertions(+), 1602 deletions(-) delete mode 100644 .github/workflows/blobstorage-preview.yml delete mode 100644 .github/workflows/blobstorage-production.yml delete mode 100644 packages/docs-site/src/content/docs/api-reference/bridge-relayer-api.md delete mode 100644 packages/docs-site/src/content/docs/api-reference/event-indexer-api.md delete mode 100644 packages/docs-site/src/content/docs/api-reference/prover-server-api.md delete mode 100644 packages/docs-site/src/content/docs/api-reference/taiko-node-api.md diff --git a/.github/workflows/blobstorage-preview.yml b/.github/workflows/blobstorage-preview.yml deleted file mode 100644 index 5c8e87c9fa5..00000000000 --- a/.github/workflows/blobstorage-preview.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Blobstorage Preview - -env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_BLOBSTORAGE }} - -on: - push: - branches-ignore: - - main - - release-please-* - paths: - - "packages/blobstorage/**" - -jobs: - deploy-blobstorage-preview: - runs-on: [taiko-runner] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Pull Vercel Environment Information - run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} - - - name: Build Project Artifacts - run: vercel build --token=${{ secrets.VERCEL_TOKEN }} - - - name: Deploy Project Artifacts to Vercel - run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/blobstorage-production.yml b/.github/workflows/blobstorage-production.yml deleted file mode 100644 index 7a8099df69b..00000000000 --- a/.github/workflows/blobstorage-production.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Blobstorage Production - -env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_BLOBSTORAGE }} - -on: - push: - tags: - - "blobstorage-*" - -jobs: - deploy-blobstorage-production: - runs-on: [taiko-runner] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Pull Vercel Environment Information - run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} - - - name: Build Project Artifacts - run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} - - - name: Deploy Project Artifacts to Vercel - run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} diff --git a/packages/docs-site/astro.config.ts b/packages/docs-site/astro.config.ts index 85a8986d844..7f7e2bd6e05 100644 --- a/packages/docs-site/astro.config.ts +++ b/packages/docs-site/astro.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; import starlightLinksValidator from "starlight-links-validator"; +import starlightOpenAPI, { openAPISidebarGroups } from "starlight-openapi"; // https://astro.build/config export default defineConfig({ @@ -13,7 +14,38 @@ export default defineConfig({ }, integrations: [ starlight({ - plugins: [starlightLinksValidator()], + plugins: [ + starlightLinksValidator({ + exclude: [ + // "/api-reference/blob-storage", + "/api-reference/bridge-relayer", + "/api-reference/event-indexer", + "/api-reference/prover-server", + ], + }), + starlightOpenAPI([ + // { + // base: "api-reference/blob-storage", + // label: "Blob Storage API", + // schema: "../blobstorage/docs/swagger.yaml", + // }, + { + base: "api-reference/bridge-relayer", + label: "Bridge Relayer API", + schema: "../relayer/docs/swagger.yaml", + }, + { + base: "api-reference/event-indexer", + label: "Event Indexer API", + schema: "../eventindexer/docs/swagger.yaml", + }, + { + base: "api-reference/prover-server", + label: "Prover Server API", + schema: "../taiko-client/docs/swagger.yaml", + }, + ]), + ], components: { SiteTitle: "./src/components/starlight/SiteTitle.astro", Head: "./src/components/starlight/Head.astro", @@ -115,14 +147,14 @@ export default defineConfig({ }, ], }, - { - label: "API Reference", - autogenerate: { directory: "api-reference" }, - }, { label: "Resources", autogenerate: { directory: "resources" }, }, + { + label: "API Reference", + items: openAPISidebarGroups, + }, ], }), ], diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 4d305ec6aca..9b931760aed 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -12,11 +12,12 @@ "dependencies": { "@astrojs/check": "^0.6.0", "@astrojs/starlight": "^0.22.2", - "astro": "^4.7.1", - "astro-og-canvas": "^0.4.2", + "astro": "^4.8.3", + "astro-og-canvas": "^0.5.0", "canvaskit-wasm": "^0.39.1", "sharp": "^0.33.3", - "starlight-links-validator": "^0.6.0", - "typescript": "^5.4.3" + "starlight-links-validator": "^0.8.0", + "starlight-openapi": "^0.6.3", + "typescript": "^5.4.5" } } diff --git a/packages/docs-site/src/content/config.ts b/packages/docs-site/src/content/config.ts index 043e358a223..35f8545faaf 100644 --- a/packages/docs-site/src/content/config.ts +++ b/packages/docs-site/src/content/config.ts @@ -7,7 +7,7 @@ export const collections = { extend: z.object({ description: z .string() - .max(160, { message: "Must be 160 characters or less." }), + .max(160, { message: "Must be 160 characters or less." }).optional(), }), }), }), diff --git a/packages/docs-site/src/content/docs/api-reference/bridge-relayer-api.md b/packages/docs-site/src/content/docs/api-reference/bridge-relayer-api.md deleted file mode 100644 index 86b2f0cce1f..00000000000 --- a/packages/docs-site/src/content/docs/api-reference/bridge-relayer-api.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Bridge Relayer API -description: The Bridge Relayer API is used to fetch data about messages facilitated by Taiko Labs' bridge relayer. ---- - -Bridge Relayer API: [https://relayer-swagger.taiko.xyz/](https://relayer-swagger.taiko.xyz/). diff --git a/packages/docs-site/src/content/docs/api-reference/event-indexer-api.md b/packages/docs-site/src/content/docs/api-reference/event-indexer-api.md deleted file mode 100644 index c1b2fb3a073..00000000000 --- a/packages/docs-site/src/content/docs/api-reference/event-indexer-api.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Event Indexer API -description: The Event Indexer API is used to fetch data about various events we keep track of on Taiko. ---- - -Event Indexer API: [https://eventindexer-swagger.taiko.xyz/](https://eventindexer-swagger.taiko.xyz/) diff --git a/packages/docs-site/src/content/docs/api-reference/prover-server-api.md b/packages/docs-site/src/content/docs/api-reference/prover-server-api.md deleted file mode 100644 index 74fb9d41aa1..00000000000 --- a/packages/docs-site/src/content/docs/api-reference/prover-server-api.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Prover Server API -description: The Prover Server API describes how to interact with a Taiko off-chain market prover. ---- - -Prover Server API: [https://taikoxyz.github.io/taiko-client/](https://taikoxyz.github.io/taiko-client/). diff --git a/packages/docs-site/src/content/docs/api-reference/taiko-node-api.md b/packages/docs-site/src/content/docs/api-reference/taiko-node-api.md deleted file mode 100644 index 1292fe08592..00000000000 --- a/packages/docs-site/src/content/docs/api-reference/taiko-node-api.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Taiko Node API -description: The Taiko Node API describes the various API surfaces of a Taiko node. ---- - -Using a Taiko node should feel the same as using any other L1 node, because we essentially re-use the L1 client and make a few backwards-compatible modifications. You can first read about the architecture of Taiko nodes [here](/core-concepts/taiko-nodes). - -## Differences from a Geth client - -View the fork diff page to see the minimal set of changes made to Geth [here](https://geth.taiko.xyz). - -## Execution JSON-RPC API - -Check out the execution client spec [here](https://ethereum.github.io/execution-apis/api-documentation/). - -## Engine API - -Check out the engine API spec [here](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md). - -## Hive test harness - -If a Taiko node should feel the same as using any other L1 node, it should surely be able to pass the [hive e2e test harness](https://github.com/ethereum/hive). At the time of writing, the hive tests are actually one of the best references for what the API of an Ethereum node actually is. - -We're working on integrating with hive, so stay tuned! diff --git a/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md b/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md index 2b7fb309f8c..e3151432ffe 100644 --- a/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md +++ b/packages/docs-site/src/content/docs/core-concepts/taiko-nodes.md @@ -85,3 +85,23 @@ If the proposed block has a **valid** or **invalid** `txList`, the `prover`: 1. Generates a Merkle proof of the block's `TaikoL2.anchor` transaction to prove its existence in the `block.txRoot`'s [MPT](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) and this transaction receipt's [Merkle proof](https://rollup-glossary.vercel.app/other-terms#merkle-proofs) in the `block.receiptRoot`'s MPT from the L2 execution engine. 2. Submits the `TaikoL2.anchor` transaction's RLP encoded bytes, its receipt's RLP encoded bytes, the generated Merkle proofs, and a validity proof to prove this block **valid** by sending a `TaikoL1.proveBlock` transaction (the block is valid even for an invalid `txList` because we prove the invalid `txList` maps to an empty block with only the anchor transaction). + +## Taiko Node API + +Using a Taiko node should feel the same as using any other L1 node, because we essentially re-use the L1 client and make a few backwards-compatible modifications. You can first read about the architecture of Taiko nodes [here](/core-concepts/taiko-nodes). + +### Differences from a Geth client + +View the fork diff page to see the minimal set of changes made to Geth [here](https://geth.taiko.xyz). + +### Execution JSON-RPC API + +Check out the execution client spec [here](https://ethereum.github.io/execution-apis/api-documentation/). + +### Engine API + +Check out the engine API spec [here](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md). + +### Hive test harness + +If a Taiko node should feel the same as using any other L1 node, it should surely be able to pass the [hive e2e test harness](https://github.com/ethereum/hive). At the time of writing, the hive tests are actually one of the best references for what the API of an Ethereum node actually is. diff --git a/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md b/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md index daed860f837..89f692eb627 100644 --- a/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md +++ b/packages/docs-site/src/content/docs/core-concepts/what-is-taiko.md @@ -43,8 +43,8 @@ Taiko is a **fully open source, permissionless, Ethereum-equivalent ZK-Rollup**. ### Non-critical backend infrastructure -- [Event indexer](/api-reference/event-indexer-api) -- [Bridge relayer](/api-reference/bridge-relayer-api) +- [Event indexer](/api-reference/event-indexer) +- [Bridge relayer](/api-reference/bridge-relayer) - [P2P bootstrapping nodes](/network-reference/addresses#taiko-labs-bootnode-addresses) - [Taiko Labs' proposers and provers](/network-reference/addresses) diff --git a/packages/docs-site/src/pages/og/[...slug].ts b/packages/docs-site/src/pages/og/[...slug].ts index 42e7f0a68b0..f5e739b95f8 100644 --- a/packages/docs-site/src/pages/og/[...slug].ts +++ b/packages/docs-site/src/pages/og/[...slug].ts @@ -11,13 +11,10 @@ export const { getStaticPaths, GET } = OGImageRoute({ getImageOptions: (_path, page: (typeof pages)[number]) => { return { title: page.data.title, - description: page.data.description, + description: page.data.description ?? "", logo: { path: "./src/assets/taiko-og-logo.png", }, - // bgImage: { - // path: "./src/assets/taiko-og-bg.png", - // }, bgGradient: [ [15, 2, 15], [58, 12, 36], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8c3f5a1325..6e9e08668b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,19 +26,19 @@ importers: version: 2.26.1(debug@4.3.4) '@wagmi/connectors': specifier: ^4.3.1 - version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@wagmi/core': specifier: ^2.8.1 - version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@walletconnect/ethereum-provider': specifier: ^2.12.2 - version: 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) + version: 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) '@walletconnect/modal': specifier: ^2.6.2 - version: 2.6.2(react@18.2.0) + version: 2.6.2(react@18.3.1) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) + version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.3.1)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.15) @@ -72,13 +72,13 @@ importers: version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))) + version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))) '@sveltejs/kit': specifier: ^2.5.7 - version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + version: 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -93,7 +93,7 @@ importers: version: 7.8.0(eslint@8.56.0)(typescript@5.4.3) '@vitest/coverage-v8': specifier: ^1.4.0 - version: 1.4.0(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)) + version: 1.4.0(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) '@wagmi/cli': specifier: ^2.1.4 version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3) @@ -123,13 +123,13 @@ importers: version: 12.0.0(eslint@8.56.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + version: 2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) ethereum-address: specifier: ^0.0.4 version: 0.0.4 jsdom: specifier: ^24.0.0 - version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) lokijs: specifier: ^1.5.12 version: 1.5.12 @@ -147,10 +147,10 @@ importers: version: 4.2.15 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15) + version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15) tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) ts-morph: specifier: ^19.0.0 version: 19.0.0 @@ -162,34 +162,34 @@ importers: version: 5.4.3 vite: specifier: ^5.2.10 - version: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + version: 5.2.11(@types/node@20.12.11)(terser@5.31.0) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: ^1.5.3 - version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) + version: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)) + version: 0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) vitest-mock-extended: specifier: 1.3.1 - version: 1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)) + version: 1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) packages/docs-site: dependencies: '@astrojs/check': specifier: ^0.6.0 - version: 0.6.0(prettier@3.2.5)(typescript@5.4.3) + version: 0.6.0(prettier@3.2.5)(typescript@5.4.5) '@astrojs/starlight': specifier: ^0.22.2 - version: 0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + version: 0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) astro: - specifier: ^4.7.1 - version: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + specifier: ^4.8.3 + version: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) astro-og-canvas: - specifier: ^0.4.2 - version: 0.4.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + specifier: ^0.5.0 + version: 0.5.0(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) canvaskit-wasm: specifier: ^0.39.1 version: 0.39.1 @@ -197,11 +197,14 @@ importers: specifier: ^0.33.3 version: 0.33.3 starlight-links-validator: - specifier: ^0.6.0 - version: 0.6.0(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)))(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + specifier: ^0.8.0 + version: 0.8.0(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)))(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) + starlight-openapi: + specifier: ^0.6.3 + version: 0.6.3(@astrojs/markdown-remark@5.1.0)(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)))(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5))(openapi-types@12.1.3) typescript: - specifier: ^5.4.3 - version: 5.4.3 + specifier: ^5.4.5 + version: 5.4.5 packages/eventindexer: {} @@ -213,7 +216,7 @@ importers: dependencies: '@wagmi/core': specifier: ^2.8.0 - version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) + version: 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(utf-8-validate@6.0.4)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8))(zod@3.23.8) axios: specifier: ^1.6.7 version: 1.6.7(debug@4.3.4) @@ -222,20 +225,20 @@ importers: version: 4.0.0(svelte@4.2.13) viem: specifier: ^2.9.29 - version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) + version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))) + version: 3.2.0(@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))) '@sveltejs/kit': specifier: ^2.5.5 - version: 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + version: 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + version: 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) '@tailwindcss/nesting': specifier: 0.0.0-insiders.565cd3e version: 0.0.0-insiders.565cd3e(postcss@8.4.38) @@ -259,7 +262,7 @@ importers: version: 9.1.0(eslint@8.56.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + version: 2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) postcss: specifier: ^8.4.38 version: 8.4.38 @@ -280,10 +283,10 @@ importers: version: 4.2.13 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13) + version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13) tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) tslib: specifier: ^2.6.2 version: 2.6.2 @@ -292,13 +295,13 @@ importers: version: 5.4.3 vite: specifier: ^4.5.3 - version: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + version: 4.5.3(@types/node@20.12.11)(terser@5.31.0) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + version: 4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: ^1.5.0 - version: 1.5.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2) + version: 1.5.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.0) packages/protocol: dependencies: @@ -341,7 +344,7 @@ importers: version: 9.1.0(eslint@8.55.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@16.6.2(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0) + version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@17.6.0(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0) eslint-plugin-import: specifier: ^2.28.1 version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0) @@ -413,7 +416,7 @@ importers: version: 9.1.0(eslint@8.56.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@16.6.2(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) + version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@17.6.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) eslint-plugin-import: specifier: ^2.28.1 version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) @@ -503,7 +506,7 @@ importers: version: 9.1.0(eslint@8.56.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@16.6.2(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) + version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@17.6.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) eslint-plugin-import: specifier: ^2.28.1 version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) @@ -542,10 +545,10 @@ importers: version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@wagmi/core': specifier: ^2.8.0 - version: 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@web3modal/common': specifier: ^4.1.1 version: 4.1.11 @@ -554,7 +557,7 @@ importers: version: 4.1.11 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) + version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.3.1)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.15) @@ -588,19 +591,19 @@ importers: devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.3.3(react@18.2.0) + version: 1.3.3(react@18.3.1) '@playwright/test': specifier: ^1.28.1 version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))) + version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))) '@sveltejs/kit': specifier: ^2.0.0 - version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + version: 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) '@types/eslint': specifier: ^8.56.0 version: 8.56.10 @@ -648,7 +651,7 @@ importers: version: 4.2.15 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15) + version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15) svelte-copy: specifier: ^1.4.2 version: 1.4.2(svelte@4.2.15) @@ -669,13 +672,13 @@ importers: version: 5.4.3 vite: specifier: ^5.0.3 - version: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + version: 5.2.11(@types/node@20.12.7)(terser@5.31.0) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) vitest: specifier: ^1.2.0 - version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) + version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) which: specifier: ^4.0.0 version: 4.0.0 @@ -697,6 +700,17 @@ packages: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@apidevtools/openapi-schemas@2.1.0': + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} + + '@apidevtools/swagger-methods@3.0.2': + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + '@astrojs/check@0.6.0': resolution: {integrity: sha512-Q6fct7FvByTf0L5lvH2QwFelXtLViWhPNgMfOvrGq7spV5SPX9jQPoFxH+nRFh1oDhBBIWImRjkSpSyhX9fQHA==} hasBin: true @@ -754,22 +768,14 @@ packages: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.23.5': - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.23.9': - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + '@babel/compat-data@7.24.4': + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} '@babel/core@7.24.5': resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.23.6': - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.24.5': resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} @@ -786,8 +792,8 @@ packages: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.23.10': - resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} + '@babel/helper-create-class-features-plugin@7.24.5': + resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -798,8 +804,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.5.0': - resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -815,24 +821,14 @@ packages: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.22.15': - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + '@babel/helper-member-expression-to-functions@7.24.5': + resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.24.3': resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.24.5': resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} @@ -843,8 +839,8 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.22.5': - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + '@babel/helper-plugin-utils@7.24.5': + resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.22.20': @@ -853,16 +849,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.22.20': - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + '@babel/helper-replace-supers@7.24.1': + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.24.5': resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} @@ -871,10 +863,6 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.5': resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} @@ -899,12 +887,8 @@ packages: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.22.20': - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.23.9': - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + '@babel/helper-wrap-function@7.24.5': + resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==} engines: {node: '>=6.9.0'} '@babel/helpers@7.24.5': @@ -929,20 +913,26 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5': + resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3': - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7': - resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -961,12 +951,19 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-export-default-from@7.23.3': - resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} + '@babel/plugin-proposal-export-default-from@7.24.1': + resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-logical-assignment-operators@7.20.7': + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} @@ -1029,8 +1026,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-export-default-from@7.23.3': - resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} + '@babel/plugin-syntax-export-default-from@7.24.1': + resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1040,20 +1037,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-flow@7.23.3': - resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + '@babel/plugin-syntax-flow@7.24.1': + resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.23.3': - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + '@babel/plugin-syntax-import-assertions@7.24.1': + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.23.3': - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + '@babel/plugin-syntax-import-attributes@7.24.1': + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1068,8 +1065,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.23.3': - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + '@babel/plugin-syntax-jsx@7.24.1': + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1116,8 +1113,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.23.3': - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + '@babel/plugin-syntax-typescript@7.24.1': + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1128,158 +1125,158 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.23.3': - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + '@babel/plugin-transform-arrow-functions@7.24.1': + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.23.9': - resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + '@babel/plugin-transform-async-generator-functions@7.24.3': + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.23.3': - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + '@babel/plugin-transform-async-to-generator@7.24.1': + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.23.3': - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + '@babel/plugin-transform-block-scoped-functions@7.24.1': + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.23.4': - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + '@babel/plugin-transform-block-scoping@7.24.5': + resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.23.3': - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + '@babel/plugin-transform-class-properties@7.24.1': + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.23.4': - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + '@babel/plugin-transform-class-static-block@7.24.4': + resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.23.8': - resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + '@babel/plugin-transform-classes@7.24.5': + resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.23.3': - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + '@babel/plugin-transform-computed-properties@7.24.1': + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.23.3': - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + '@babel/plugin-transform-destructuring@7.24.5': + resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.23.3': - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + '@babel/plugin-transform-dotall-regex@7.24.1': + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.23.3': - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + '@babel/plugin-transform-duplicate-keys@7.24.1': + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dynamic-import@7.23.4': - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + '@babel/plugin-transform-dynamic-import@7.24.1': + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.23.3': - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + '@babel/plugin-transform-exponentiation-operator@7.24.1': + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.23.4': - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + '@babel/plugin-transform-export-namespace-from@7.24.1': + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-flow-strip-types@7.23.3': - resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + '@babel/plugin-transform-flow-strip-types@7.24.1': + resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.23.6': - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + '@babel/plugin-transform-for-of@7.24.1': + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.23.3': - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + '@babel/plugin-transform-function-name@7.24.1': + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.23.4': - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + '@babel/plugin-transform-json-strings@7.24.1': + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.23.3': - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + '@babel/plugin-transform-literals@7.24.1': + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.23.4': - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + '@babel/plugin-transform-logical-assignment-operators@7.24.1': + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.23.3': - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + '@babel/plugin-transform-member-expression-literals@7.24.1': + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.23.3': - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + '@babel/plugin-transform-modules-amd@7.24.1': + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.23.3': - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + '@babel/plugin-transform-modules-commonjs@7.24.1': + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.23.9': - resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + '@babel/plugin-transform-modules-systemjs@7.24.1': + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.23.3': - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + '@babel/plugin-transform-modules-umd@7.24.1': + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1290,86 +1287,86 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.23.3': - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + '@babel/plugin-transform-new-target@7.24.1': + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.23.4': - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + '@babel/plugin-transform-numeric-separator@7.24.1': + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.23.4': - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + '@babel/plugin-transform-object-rest-spread@7.24.5': + resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.23.3': - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + '@babel/plugin-transform-object-super@7.24.1': + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.23.4': - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + '@babel/plugin-transform-optional-catch-binding@7.24.1': + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.23.4': - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + '@babel/plugin-transform-optional-chaining@7.24.5': + resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.23.3': - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + '@babel/plugin-transform-parameters@7.24.5': + resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.23.3': - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + '@babel/plugin-transform-private-methods@7.24.1': + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.23.4': - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + '@babel/plugin-transform-private-property-in-object@7.24.5': + resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.23.3': - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + '@babel/plugin-transform-property-literals@7.24.1': + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.23.3': - resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + '@babel/plugin-transform-react-display-name@7.24.1': + resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.23.3': - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + '@babel/plugin-transform-react-jsx-self@7.24.5': + resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.23.3': - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + '@babel/plugin-transform-react-jsx-source@7.24.1': + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1380,92 +1377,92 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.23.3': - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + '@babel/plugin-transform-regenerator@7.24.1': + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.23.3': - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + '@babel/plugin-transform-reserved-words@7.24.1': + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.23.9': - resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} + '@babel/plugin-transform-runtime@7.24.3': + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.23.3': - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + '@babel/plugin-transform-shorthand-properties@7.24.1': + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.23.3': - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + '@babel/plugin-transform-spread@7.24.1': + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.23.3': - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + '@babel/plugin-transform-sticky-regex@7.24.1': + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.23.3': - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + '@babel/plugin-transform-template-literals@7.24.1': + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.23.3': - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + '@babel/plugin-transform-typeof-symbol@7.24.5': + resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.23.6': - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + '@babel/plugin-transform-typescript@7.24.5': + resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.23.3': - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + '@babel/plugin-transform-unicode-escapes@7.24.1': + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.23.3': - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + '@babel/plugin-transform-unicode-property-regex@7.24.1': + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.23.3': - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + '@babel/plugin-transform-unicode-regex@7.24.1': + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.23.3': - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + '@babel/plugin-transform-unicode-sets-regex@7.24.1': + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.23.9': - resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} + '@babel/preset-env@7.24.5': + resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-flow@7.23.3': - resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} + '@babel/preset-flow@7.24.1': + resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1475,8 +1472,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-typescript@7.23.3': - resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + '@babel/preset-typescript@7.24.1': + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1494,18 +1491,14 @@ packages: resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} - '@babel/template@7.23.9': - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + '@babel/runtime@7.24.5': + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} '@babel/template@7.24.0': resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.23.9': - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.5': resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} @@ -2289,6 +2282,10 @@ packages: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/momoa@2.0.4': + resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} + engines: {node: '>=10.10.0'} + '@humanwhocodes/object-schema@2.0.1': resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} @@ -2482,8 +2479,8 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -2494,6 +2491,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -2929,98 +2929,122 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@react-native-community/cli-clean@12.3.2': - resolution: {integrity: sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A==} + '@react-native-community/cli-clean@13.6.6': + resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} - '@react-native-community/cli-config@12.3.2': - resolution: {integrity: sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ==} + '@react-native-community/cli-config@13.6.6': + resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} - '@react-native-community/cli-debugger-ui@12.3.2': - resolution: {integrity: sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q==} + '@react-native-community/cli-debugger-ui@13.6.6': + resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} - '@react-native-community/cli-doctor@12.3.2': - resolution: {integrity: sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg==} + '@react-native-community/cli-doctor@13.6.6': + resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} - '@react-native-community/cli-hermes@12.3.2': - resolution: {integrity: sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA==} + '@react-native-community/cli-hermes@13.6.6': + resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} - '@react-native-community/cli-platform-android@12.3.2': - resolution: {integrity: sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg==} + '@react-native-community/cli-platform-android@13.6.6': + resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} - '@react-native-community/cli-platform-ios@12.3.2': - resolution: {integrity: sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg==} + '@react-native-community/cli-platform-apple@13.6.6': + resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} - '@react-native-community/cli-plugin-metro@12.3.2': - resolution: {integrity: sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g==} + '@react-native-community/cli-platform-ios@13.6.6': + resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} - '@react-native-community/cli-server-api@12.3.2': - resolution: {integrity: sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q==} + '@react-native-community/cli-server-api@13.6.6': + resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} - '@react-native-community/cli-tools@12.3.2': - resolution: {integrity: sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ==} + '@react-native-community/cli-tools@13.6.6': + resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} - '@react-native-community/cli-types@12.3.2': - resolution: {integrity: sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog==} + '@react-native-community/cli-types@13.6.6': + resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} - '@react-native-community/cli@12.3.2': - resolution: {integrity: sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ==} + '@react-native-community/cli@13.6.6': + resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} engines: {node: '>=18'} hasBin: true - '@react-native/assets-registry@0.73.1': - resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} + '@react-native/assets-registry@0.74.83': + resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.73.4': - resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} + '@react-native/babel-plugin-codegen@0.74.83': + resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} engines: {node: '>=18'} - '@react-native/babel-preset@0.73.21': - resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} + '@react-native/babel-preset@0.74.83': + resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.73.3': - resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} + '@react-native/codegen@0.74.83': + resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/community-cli-plugin@0.73.16': - resolution: {integrity: sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ==} + '@react-native/community-cli-plugin@0.74.83': + resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} engines: {node: '>=18'} - '@react-native/debugger-frontend@0.73.3': - resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} + '@react-native/debugger-frontend@0.74.83': + resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.73.7': - resolution: {integrity: sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==} + '@react-native/dev-middleware@0.74.83': + resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.73.4': - resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} + '@react-native/gradle-plugin@0.74.83': + resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.73.1': - resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} + '@react-native/js-polyfills@0.74.83': + resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} engines: {node: '>=18'} - '@react-native/metro-babel-transformer@0.73.15': - resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} + '@react-native/metro-babel-transformer@0.74.83': + resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/normalize-colors@0.73.2': - resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} + '@react-native/normalize-colors@0.74.83': + resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} - '@react-native/virtualized-lists@0.73.4': - resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} + '@react-native/virtualized-lists@0.74.83': + resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} engines: {node: '>=18'} peerDependencies: + '@types/react': ^18.2.6 + react: '*' react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@readme/better-ajv-errors@1.6.0': + resolution: {integrity: sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==} + engines: {node: '>=14'} + peerDependencies: + ajv: 4.11.8 - 8 + + '@readme/json-schema-ref-parser@1.2.0': + resolution: {integrity: sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==} + + '@readme/openapi-parser@2.5.0': + resolution: {integrity: sha512-IbymbOqRuUzoIgxfAAR7XJt2FWl6n2yqN09fF5adacGm7W03siA3bj1Emql0X9D2T+RpBYz3x9zDsMhuoMP62A==} + engines: {node: '>=14'} + peerDependencies: + openapi-types: '>=7' + + '@rnx-kit/chromium-edge-launcher@1.0.0': + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} '@rollup/rollup-android-arm-eabi@4.17.2': resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} @@ -3361,12 +3385,21 @@ packages: '@types/nlcst@1.0.4': resolution: {integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==} + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} '@types/node@18.19.31': resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} + '@types/node@18.19.33': + resolution: {integrity: sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==} + + '@types/node@20.12.11': + resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} + '@types/node@20.12.7': resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} @@ -3916,6 +3949,14 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -4051,8 +4092,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^3.3.0 - astro-og-canvas@0.4.2: - resolution: {integrity: sha512-OQsH6Gr2HX9ZRHdVy2OcXVBIPI65WvEtLG/60krnphh8d3ldhuAFunymYaNGcrdSZcYgXkHWejbPt//3qaRidA==} + astro-og-canvas@0.5.0: + resolution: {integrity: sha512-nrwZpFL9d6tVJRKV5OLZa3xSSh+Cbaaoay/R9jAgHCrJ79WNyN2rgRT/+wtP1O/bCQ+wVP3GC3mBQN7vogImvg==} engines: {node: '>=18.14.1'} peerDependencies: astro: ^3.0.0 || ^4.0.0 @@ -4104,18 +4145,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - babel-plugin-polyfill-corejs2@0.4.8: - resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.9.0: - resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + babel-plugin-polyfill-corejs3@0.10.4: + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.5.5: - resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -4256,13 +4297,6 @@ packages: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -4297,6 +4331,9 @@ packages: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} engines: {node: '>=4'} @@ -4338,9 +4375,6 @@ packages: caniuse-lite@1.0.30001615: resolution: {integrity: sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==} - canvaskit-wasm@0.37.2: - resolution: {integrity: sha512-212imazRF98gLOTiU4JAXM7xDvaknI7jaPtAg4ETXGW5rLQs6pomgIvVPUSfoKnQVTdGgzj+B4e+/u0Da20aGg==} - canvaskit-wasm@0.39.1: resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} @@ -4409,9 +4443,6 @@ packages: engines: {node: '>=12.13.0'} hasBin: true - chromium-edge-launcher@1.0.0: - resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} - ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -4483,6 +4514,10 @@ packages: code-block-writer@12.0.0: resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + code-error-fragment@0.0.230: + resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} + engines: {node: '>= 4'} + code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} @@ -4585,8 +4620,8 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - core-js-compat@3.36.0: - resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} + core-js-compat@3.37.0: + resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -4688,6 +4723,9 @@ packages: dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4798,10 +4836,6 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - deprecated-react-native-prop-types@5.0.0: - resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} - engines: {node: '>=18'} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -4959,12 +4993,16 @@ packages: resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} engines: {node: '>=10.0.0'} + enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} + engines: {node: '>=10.13.0'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - envinfo@7.11.1: - resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} hasBin: true @@ -5066,12 +5104,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-compat-utils@0.1.2: - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - eslint-compat-utils@0.5.0: resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} @@ -5117,8 +5149,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-es-x@7.5.0: - resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + eslint-plugin-es-x@7.6.0: + resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' @@ -5139,11 +5171,11 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-n@16.6.2: - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} + eslint-plugin-n@17.6.0: + resolution: {integrity: sha512-Y73o88ROwbCtVCCmZjYlYcPYkOG7mIzxxVK1XFRSa2epbKWtAPsmYpAD0pqxg/ZwlcWxMDceQPKHYQi4VIHz7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.23.0' eslint-plugin-node@11.1.0: resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} @@ -5398,8 +5430,8 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-xml-parser@4.3.4: - resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} + fast-xml-parser@4.3.6: + resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} hasBin: true fastparse@1.1.2: @@ -5472,8 +5504,8 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.206.0: - resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} + flow-parser@0.236.0: + resolution: {integrity: sha512-0OEk9Gr+Yj7wjDW2KgaNYUypKau71jAfFyeLQF5iVtxqc6uJHag/MT7pmaEApf4qM7u86DkBcd4ualddYMfbLw==} engines: {node: '>=0.4.0'} follow-redirects@1.15.5: @@ -5587,8 +5619,8 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -5625,6 +5657,10 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@15.2.0: + resolution: {integrity: sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A==} + engines: {node: '>=18'} + globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -5656,6 +5692,9 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -5761,18 +5800,18 @@ packages: header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - hermes-estree@0.15.0: - resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} - hermes-estree@0.19.1: resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - hermes-parser@0.15.0: - resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} + hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} hermes-parser@0.19.1: resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} + hermes-profile-transformer@0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} engines: {node: '>=8'} @@ -5878,6 +5917,9 @@ packages: import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -5925,9 +5967,6 @@ packages: resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} engines: {node: '>=12.22.0'} - ip@1.1.9: - resolution: {integrity: sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==} - ipfs-core-types@0.14.1: resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -5992,10 +6031,6 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} - is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -6287,8 +6322,8 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - joi@17.12.1: - resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} + joi@17.13.1: + resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -6362,6 +6397,10 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-to-ast@2.1.0: + resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} + engines: {node: '>= 4'} + json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -6383,6 +6422,10 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + keccak@3.0.4: resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} engines: {node: '>=10.0.0'} @@ -6731,61 +6774,61 @@ packages: resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} engines: {node: '>= 7.6.0'} - metro-babel-transformer@0.80.6: - resolution: {integrity: sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA==} + metro-babel-transformer@0.80.9: + resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} engines: {node: '>=18'} - metro-cache-key@0.80.6: - resolution: {integrity: sha512-DFmjQacC8m/S3HpELklLMWkPGP/fZPX3BSgjd0xQvwIvWyFwk8Nn/lfp/uWdEVDtDSIr64/anXU5uWohGwlWXw==} + metro-cache-key@0.80.9: + resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} engines: {node: '>=18'} - metro-cache@0.80.6: - resolution: {integrity: sha512-NP81pHSPkzs+iNlpVkJqijrpcd6lfuDAunYH9/Rn8oLNz0yLfkl8lt+xOdUU4IkFt3oVcTBEFCnzAzv4B8YhyA==} + metro-cache@0.80.9: + resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} engines: {node: '>=18'} - metro-config@0.80.6: - resolution: {integrity: sha512-vHYYvJpRTWYbmvqlR7i04xQpZCHJ6yfZ/xIcPdz2ssbdJGGJbiT1Aar9wr8RAhsccSxdJgfE5B1DB8Mo+DnhIg==} + metro-config@0.80.9: + resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} engines: {node: '>=18'} - metro-core@0.80.6: - resolution: {integrity: sha512-fn4rryTUAwzFJWj7VIPDH4CcW/q7MV4oGobqR6NsuxZoIGYrVpK7pBasumu5YbCqifuErMs5s23BhmrDNeZURw==} + metro-core@0.80.9: + resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} engines: {node: '>=18'} - metro-file-map@0.80.6: - resolution: {integrity: sha512-S3CUqvpXpc+q3q+hCEWvFKhVqgq0VmXdZQDF6u7ue86E2elq1XLnfLOt9JSpwyhpMQRyysjSCnd/Yh6GZMNHoQ==} + metro-file-map@0.80.9: + resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} engines: {node: '>=18'} - metro-minify-terser@0.80.6: - resolution: {integrity: sha512-83eZaH2+B+jP92KuodPqXknzwmiboKAuZY4doRfTEEXAG57pNVNN6cqSRJlwDnmaTBKRffxoncBXbYqHQgulgg==} + metro-minify-terser@0.80.9: + resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} engines: {node: '>=18'} - metro-resolver@0.80.6: - resolution: {integrity: sha512-R7trfglG4zY4X9XyM9cvuffAhQ9W1reWoahr1jdEWa6rOI8PyM0qXjcsb8l+fsOQhdSiVlkKcYAmkyrs1S/zrA==} + metro-resolver@0.80.9: + resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} engines: {node: '>=18'} - metro-runtime@0.80.6: - resolution: {integrity: sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw==} + metro-runtime@0.80.9: + resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} engines: {node: '>=18'} - metro-source-map@0.80.6: - resolution: {integrity: sha512-lqDuSLctWy9Qccu4Zl0YB1PzItpsqcKGb1nK0aDY+lzJ26X65OCib2VzHlj+xj7e4PiIKOfsvDCczCBz4cnxdg==} + metro-source-map@0.80.9: + resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} engines: {node: '>=18'} - metro-symbolicate@0.80.6: - resolution: {integrity: sha512-SGwKeBi+lK7NmM5+EcW6DyRRa9HmGSvH0LJtlT4XoRMbpxzsLYs0qUEA+olD96pOIP+ta7I8S30nQr2ttqgO8A==} + metro-symbolicate@0.80.9: + resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} engines: {node: '>=18'} hasBin: true - metro-transform-plugins@0.80.6: - resolution: {integrity: sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg==} + metro-transform-plugins@0.80.9: + resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} engines: {node: '>=18'} - metro-transform-worker@0.80.6: - resolution: {integrity: sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA==} + metro-transform-worker@0.80.9: + resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} engines: {node: '>=18'} - metro@0.80.6: - resolution: {integrity: sha512-f6Nhnht9TxVRP6zdBq9J2jNdeDBxRmJFnjxhQS1GeCpokBvI6fTXq+wHTLz5jZA+75fwbkPSzBxBJzQa6xi0AQ==} + metro@0.80.9: + resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} engines: {node: '>=18'} hasBin: true @@ -7135,6 +7178,10 @@ packages: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -7168,6 +7215,10 @@ packages: resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -7181,8 +7232,8 @@ packages: nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - ob1@0.80.6: - resolution: {integrity: sha512-nlLGZPMQ/kbmkdIb5yvVzep1jKUII2x6ehNsHpgy71jpnJMW7V+KsB3AjYI2Ajb7UqMAMNjlssg6FUodrEMYzg==} + ob1@0.80.9: + resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} engines: {node: '>=18'} obj-multiplex@1.0.0: @@ -7266,6 +7317,9 @@ packages: resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -7564,6 +7618,21 @@ packages: ts-node: optional: true + postcss-load-config@5.1.0: + resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + postcss-nested@5.0.6: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} @@ -7675,9 +7744,6 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} @@ -7723,6 +7789,11 @@ packages: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} + querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -7763,11 +7834,11 @@ packages: peerDependencies: react: ^16.3.0 || ^17.0.1 || ^18.0.0 - react-devtools-core@4.28.5: - resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} + react-devtools-core@5.2.0: + resolution: {integrity: sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A==} - react-i18next@13.5.0: - resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + react-i18next@14.1.1: + resolution: {integrity: sha512-QSiKw+ihzJ/CIeIYWrarCmXJUySHDwQr5y8uaNIkbxoGRm/5DukkxZs+RPla79IKyyDPzC/DRlgQCABHtrQuQQ==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -7779,15 +7850,15 @@ packages: react-native: optional: true - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-native-fetch-api@3.0.0: resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} @@ -7797,15 +7868,19 @@ packages: react: '*' react-native: '*' - react-native@0.73.4: - resolution: {integrity: sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg==} + react-native@0.74.1: + resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} engines: {node: '>=18'} hasBin: true peerDependencies: + '@types/react': ^18.2.6 react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} react-shallow-renderer@16.15.0: @@ -7813,8 +7888,8 @@ packages: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -8101,6 +8176,10 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -8309,13 +8388,21 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - starlight-links-validator@0.6.0: - resolution: {integrity: sha512-YXzKKZHM79ccBTO61l2WSmgdCG3406gldpVM6J2LhqZ5CeXsOgj6lho2xMLkc/p5nWcNSuYI2qNzsNUrLTmR5w==} + starlight-links-validator@0.8.0: + resolution: {integrity: sha512-FYZ5cfV7jSL4wOsWmIkpR+9dH0Z8fxslSQl8IiAv5URfkxLgsaFzjx51FBeSaaS5uVmO5WgfkUjx3N52Jl1/TQ==} engines: {node: '>=18.14.1'} peerDependencies: '@astrojs/starlight': '>=0.15.0' astro: '>=4.0.0' + starlight-openapi@0.6.3: + resolution: {integrity: sha512-AHTbCJeGHzzhwVVi7UMgFgNKkvio2bbi9zQVtcI7CrMXVdd4jqL/L+R7MUxtr/DtzWG7PCCRsKPriwYubJ1ZPQ==} + engines: {node: '>=18.14.1'} + peerDependencies: + '@astrojs/markdown-remark': '>=4.2.0' + '@astrojs/starlight': '>=0.19.0' + astro: '>=4.2.7' + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -8572,6 +8659,10 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -8580,8 +8671,8 @@ packages: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} - terser@5.27.2: - resolution: {integrity: sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w==} + terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} engines: {node: '>=10'} hasBin: true @@ -8676,12 +8767,6 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@1.2.1: - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -8800,6 +8885,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + ufo@1.4.0: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} @@ -8999,6 +9089,10 @@ packages: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} + utf-8-validate@6.0.4: + resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} + engines: {node: '>=6.14.2'} + utf8@3.0.0: resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} @@ -9526,6 +9620,11 @@ packages: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} + yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -9596,13 +9695,22 @@ snapshots: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.25 - '@astrojs/check@0.6.0(prettier@3.2.5)(typescript@5.4.3)': + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@apidevtools/openapi-schemas@2.1.0': {} + + '@apidevtools/swagger-methods@3.0.2': {} + + '@astrojs/check@0.6.0(prettier@3.2.5)(typescript@5.4.5)': dependencies: - '@astrojs/language-server': 2.9.0(prettier@3.2.5)(typescript@5.4.3) + '@astrojs/language-server': 2.9.0(prettier@3.2.5)(typescript@5.4.5) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 - typescript: 5.4.3 + typescript: 5.4.5 yargs: 17.7.2 transitivePeerDependencies: - prettier @@ -9612,11 +9720,11 @@ snapshots: '@astrojs/internal-helpers@0.4.0': {} - '@astrojs/language-server@2.9.0(prettier@3.2.5)(typescript@5.4.3)': + '@astrojs/language-server@2.9.0(prettier@3.2.5)(typescript@5.4.5)': dependencies: '@astrojs/compiler': 2.8.0 '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/kit': 2.2.2(typescript@5.4.3) + '@volar/kit': 2.2.2(typescript@5.4.5) '@volar/language-core': 2.2.2 '@volar/language-server': 2.2.2 '@volar/language-service': 2.2.2 @@ -9641,7 +9749,7 @@ snapshots: github-slugger: 2.0.0 hast-util-from-html: 2.0.1 hast-util-to-text: 4.0.2 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.0 @@ -9658,12 +9766,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@2.3.1(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3))': + '@astrojs/mdx@2.3.1(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5))': dependencies: '@astrojs/markdown-remark': 5.1.0 '@mdx-js/mdx': 3.0.1 acorn: 8.11.3 - astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + astro: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) es-module-lexer: 1.5.2 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -9687,17 +9795,17 @@ snapshots: dependencies: sitemap: 7.1.1 stream-replace-string: 2.0.0 - zod: 3.22.4 + zod: 3.23.8 - '@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3))': + '@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5))': dependencies: - '@astrojs/mdx': 2.3.1(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + '@astrojs/mdx': 2.3.1(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) '@astrojs/sitemap': 3.1.4 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.3 - astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) - astro-expressive-code: 0.35.3(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) + astro: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) + astro-expressive-code: 0.35.3(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) bcp-47: 2.1.0 hast-util-from-html: 2.0.1 hast-util-select: 6.0.2 @@ -9736,31 +9844,11 @@ snapshots: '@babel/highlight': 7.24.5 picocolors: 1.0.0 - '@babel/compat-data@7.23.5': {} - - '@babel/core@7.23.9': - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/compat-data@7.24.4': {} '@babel/core@7.24.5': dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 @@ -9778,13 +9866,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.23.6': - dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - '@babel/generator@7.24.5': dependencies: '@babel/types': 7.24.5 @@ -9798,41 +9879,41 @@ snapshots: '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 '@babel/helper-compilation-targets@7.23.6': dependencies: - '@babel/compat-data': 7.23.5 + '@babel/compat-data': 7.24.4 '@babel/helper-validator-option': 7.23.5 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9)': + '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-split-export-declaration': 7.24.5 semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9)': + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9)': + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -9843,18 +9924,14 @@ snapshots: '@babel/helper-function-name@7.23.0': dependencies: - '@babel/template': 7.23.9 + '@babel/template': 7.24.0 '@babel/types': 7.24.5 '@babel/helper-hoist-variables@7.22.5': dependencies: '@babel/types': 7.24.5 - '@babel/helper-member-expression-to-functions@7.23.0': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-module-imports@7.22.15': + '@babel/helper-member-expression-to-functions@7.24.5': dependencies: '@babel/types': 7.24.5 @@ -9862,15 +9939,6 @@ snapshots: dependencies: '@babel/types': 7.24.5 - '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 @@ -9882,39 +9950,31 @@ snapshots: '@babel/helper-optimise-call-expression@7.22.5': dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 - '@babel/helper-plugin-utils@7.22.5': {} + '@babel/helper-plugin-utils@7.24.5': {} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9)': + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-wrap-function': 7.24.5 - '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9)': + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.23.9 - '@babel/helper-simple-access@7.24.5': dependencies: '@babel/types': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 '@babel/helper-split-export-declaration@7.24.5': dependencies: @@ -9930,19 +9990,11 @@ snapshots: '@babel/helper-validator-option@7.23.5': {} - '@babel/helper-wrap-function@7.22.20': + '@babel/helper-wrap-function@7.24.5': dependencies: '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 - - '@babel/helpers@7.23.9': - dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 '@babel/helpers@7.24.5': dependencies: @@ -9973,661 +10025,659 @@ snapshots: dependencies: '@babel/types': 7.24.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.9)': + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5)': + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9)': + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.5)': dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.5)': + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9)': + '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9)': + '@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-split-export-declaration': 7.24.5 globals: 11.12.0 - '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/template': 7.24.0 - '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9)': + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-simple-access': 7.24.5 - '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 - '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9)': + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9)': + '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.24.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.5) + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) '@babel/types': 7.24.5 - '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-runtime@7.23.9(@babel/core@7.23.9)': + '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9)': + '@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9)': + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/preset-env@7.23.9(@babel/core@7.23.9)': + '@babel/preset-env@7.24.5(@babel/core@7.24.5)': dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) - core-js-compat: 3.36.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.23.3(@babel/core@7.23.9)': + '@babel/preset-flow@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.9 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/types': 7.24.5 esutils: 2.0.3 - '@babel/preset-typescript@7.23.3(@babel/core@7.23.9)': + '@babel/preset-typescript@7.24.1(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) - '@babel/register@7.23.7(@babel/core@7.23.9)': + '@babel/register@7.23.7(@babel/core@7.24.5)': dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -10640,11 +10690,9 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.23.9': + '@babel/runtime@7.24.5': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + regenerator-runtime: 0.14.1 '@babel/template@7.24.0': dependencies: @@ -10652,21 +10700,6 @@ snapshots: '@babel/parser': 7.24.5 '@babel/types': 7.24.5 - '@babel/traverse@7.23.9': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.24.5': dependencies: '@babel/code-frame': 7.24.2 @@ -10702,12 +10735,12 @@ snapshots: dependencies: '@chainsafe/is-ip': 2.0.2 - '@chromatic-com/storybook@1.3.3(react@18.2.0)': + '@chromatic-com/storybook@1.3.3(react@18.3.1)': dependencies: chromatic: 11.3.0 filesize: 10.1.1 jsonfile: 6.1.0 - react-confetti: 6.1.0(react@18.2.0) + react-confetti: 6.1.0(react@18.3.1) strip-ansi: 7.1.0 transitivePeerDependencies: - '@chromatic-com/cypress' @@ -11410,6 +11443,8 @@ snapshots: '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/momoa@2.0.4': {} + '@humanwhocodes/object-schema@2.0.1': {} '@humanwhocodes/object-schema@2.0.2': {} @@ -11526,14 +11561,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.11 jest-mock: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.7 + '@types/node': 20.12.11 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -11546,7 +11581,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.11 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -11555,7 +11590,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.11 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -11584,9 +11619,9 @@ snapshots: '@jridgewell/set-array@1.2.1': {} - '@jridgewell/source-map@0.3.5': + '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/sourcemap-codec@1.4.15': {} @@ -11601,6 +11636,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + '@jsdevtools/ono@7.1.3': {} + '@leichtgewicht/ip-codec@2.0.5': {} '@libp2p/interface-connection@4.0.0': @@ -11776,21 +11813,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)': + '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)': dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 - react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0) + react-i18next: 14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) optionalDependencies: - react: 18.2.0 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) - '@metamask/sdk@0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)': + '@metamask/sdk@0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 '@metamask/sdk-communication-layer': 0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)) - '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0) + '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0(encoding@0.1.13) @@ -11803,15 +11840,15 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 - react-native-webview: 11.26.1(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0) + react-native-webview: 11.26.1(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0(rollup@4.17.2) socket.io-client: 4.7.4(bufferutil@4.0.8) util: 0.12.5 uuid: 8.3.2 optionalDependencies: - react: 18.2.0 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) transitivePeerDependencies: - bufferutil - encoding @@ -12216,134 +12253,138 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@react-native-community/cli-clean@12.3.2(encoding@0.1.13)': + '@react-native-community/cli-clean@13.6.6(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) chalk: 4.1.2 execa: 5.1.1 + fast-glob: 3.3.2 transitivePeerDependencies: - encoding - '@react-native-community/cli-config@12.3.2(encoding@0.1.13)': + '@react-native-community/cli-config@13.6.6(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 4.3.1 - glob: 7.2.3 - joi: 17.12.1 + fast-glob: 3.3.2 + joi: 17.13.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-debugger-ui@12.3.2': + '@react-native-community/cli-debugger-ui@13.6.6': dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - '@react-native-community/cli-doctor@12.3.2(encoding@0.1.13)': + '@react-native-community/cli-doctor@13.6.6(encoding@0.1.13)': dependencies: - '@react-native-community/cli-config': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-platform-ios': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-config': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-platform-android': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-platform-apple': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) chalk: 4.1.2 command-exists: 1.2.9 deepmerge: 4.3.1 - envinfo: 7.11.1 + envinfo: 7.13.0 execa: 5.1.1 hermes-profile-transformer: 0.0.6 - ip: 1.1.9 node-stream-zip: 1.15.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.2 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.3.4 + yaml: 2.4.2 transitivePeerDependencies: - encoding - '@react-native-community/cli-hermes@12.3.2(encoding@0.1.13)': + '@react-native-community/cli-hermes@13.6.6(encoding@0.1.13)': dependencies: - '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-platform-android': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) chalk: 4.1.2 hermes-profile-transformer: 0.0.6 - ip: 1.1.9 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-android@12.3.2(encoding@0.1.13)': + '@react-native-community/cli-platform-android@13.6.6(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.4 - glob: 7.2.3 + fast-glob: 3.3.2 + fast-xml-parser: 4.3.6 logkitty: 0.7.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-ios@12.3.2(encoding@0.1.13)': + '@react-native-community/cli-platform-apple@13.6.6(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.4 - glob: 7.2.3 + fast-glob: 3.3.2 + fast-xml-parser: 4.3.6 ora: 5.4.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-plugin-metro@12.3.2': {} + '@react-native-community/cli-platform-ios@13.6.6(encoding@0.1.13)': + dependencies: + '@react-native-community/cli-platform-apple': 13.6.6(encoding@0.1.13) + transitivePeerDependencies: + - encoding - '@react-native-community/cli-server-api@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)': + '@react-native-community/cli-server-api@13.6.6(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@react-native-community/cli-debugger-ui': 12.3.2 - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) + '@react-native-community/cli-debugger-ui': 13.6.6 + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 7.5.9(bufferutil@4.0.8) + ws: 6.2.2(bufferutil@4.0.8) transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - '@react-native-community/cli-tools@12.3.2(encoding@0.1.13)': + '@react-native-community/cli-tools@13.6.6(encoding@0.1.13)': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 + execa: 5.1.1 find-up: 5.0.0 mime: 2.6.0 node-fetch: 2.7.0(encoding@0.1.13) open: 6.4.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.2 shell-quote: 1.8.1 sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-types@12.3.2': + '@react-native-community/cli-types@13.6.6': dependencies: - joi: 17.12.1 + joi: 17.13.1 - '@react-native-community/cli@12.3.2(bufferutil@4.0.8)(encoding@0.1.13)': + '@react-native-community/cli@13.6.6(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@react-native-community/cli-clean': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-config': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-debugger-ui': 12.3.2 - '@react-native-community/cli-doctor': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-hermes': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-plugin-metro': 12.3.2 - '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13) - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-types': 12.3.2 + '@react-native-community/cli-clean': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-config': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-debugger-ui': 13.6.6 + '@react-native-community/cli-doctor': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-hermes': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-server-api': 13.6.6(bufferutil@4.0.8)(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-types': 13.6.6 chalk: 4.1.2 commander: 9.5.0 deepmerge: 4.3.1 @@ -12352,95 +12393,97 @@ snapshots: fs-extra: 8.1.0 graceful-fs: 4.2.11 prompts: 2.4.2 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - '@react-native/assets-registry@0.73.1': {} + '@react-native/assets-registry@0.74.83': {} - '@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.23.9(@babel/core@7.23.9))': + '@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.24.5(@babel/core@7.24.5))': dependencies: - '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + '@react-native/codegen': 0.74.83(@babel/preset-env@7.24.5(@babel/core@7.24.5)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))': - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) - '@babel/template': 7.23.9 - '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.9) - react-refresh: 0.14.0 + '@react-native/babel-preset@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))': + dependencies: + '@babel/core': 7.24.5 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) + '@babel/template': 7.24.0 + '@react-native/babel-plugin-codegen': 0.74.83(@babel/preset-env@7.24.5(@babel/core@7.24.5)) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.5) + react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/codegen@0.73.3(@babel/preset-env@7.23.9(@babel/core@7.23.9))': + '@react-native/codegen@0.74.83(@babel/preset-env@7.24.5(@babel/core@7.24.5))': dependencies: - '@babel/parser': 7.23.9 - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - flow-parser: 0.206.0 + '@babel/parser': 7.24.5 + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) glob: 7.2.3 + hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + jscodeshift: 0.14.0(@babel/preset-env@7.24.5(@babel/core@7.24.5)) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)': + '@react-native/community-cli-plugin@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@react-native-community/cli-server-api': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13) - '@react-native-community/cli-tools': 12.3.2(encoding@0.1.13) - '@react-native/dev-middleware': 0.73.7(encoding@0.1.13) - '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + '@react-native-community/cli-server-api': 13.6.6(bufferutil@4.0.8)(encoding@0.1.13) + '@react-native-community/cli-tools': 13.6.6(encoding@0.1.13) + '@react-native/dev-middleware': 0.74.83(bufferutil@4.0.8)(encoding@0.1.13) + '@react-native/metro-babel-transformer': 0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) - metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) - metro-core: 0.80.6 + metro: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13) + metro-config: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13) + metro-core: 0.80.9 node-fetch: 2.7.0(encoding@0.1.13) + querystring: 0.2.1 readline: 1.3.0 transitivePeerDependencies: - '@babel/core' @@ -12450,45 +12493,92 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.73.3': {} + '@react-native/debugger-frontend@0.74.83': {} - '@react-native/dev-middleware@0.73.7(encoding@0.1.13)': + '@react-native/dev-middleware@0.74.83(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.73.3 + '@react-native/debugger-frontend': 0.74.83 + '@rnx-kit/chromium-edge-launcher': 1.0.0 chrome-launcher: 0.15.2 - chromium-edge-launcher: 1.0.0 connect: 3.7.0 debug: 2.6.9 node-fetch: 2.7.0(encoding@0.1.13) + nullthrows: 1.1.1 open: 7.4.2 + selfsigned: 2.4.1 serve-static: 1.15.0 temp-dir: 2.0.0 + ws: 6.2.2(bufferutil@4.0.8) transitivePeerDependencies: + - bufferutil - encoding - supports-color + - utf-8-validate - '@react-native/gradle-plugin@0.73.4': {} + '@react-native/gradle-plugin@0.74.83': {} - '@react-native/js-polyfills@0.73.1': {} + '@react-native/js-polyfills@0.74.83': {} - '@react-native/metro-babel-transformer@0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))': + '@react-native/metro-babel-transformer@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))': dependencies: - '@babel/core': 7.23.9 - '@react-native/babel-preset': 0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - hermes-parser: 0.15.0 + '@babel/core': 7.24.5 + '@react-native/babel-preset': 0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)) + hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/normalize-colors@0.73.2': {} + '@react-native/normalize-colors@0.74.83': {} - '@react-native/virtualized-lists@0.73.4(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))': + '@react-native/virtualized-lists@0.74.83(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) + + '@readme/better-ajv-errors@1.6.0(ajv@8.12.0)': + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/runtime': 7.24.5 + '@humanwhocodes/momoa': 2.0.4 + ajv: 8.12.0 + chalk: 4.1.2 + json-to-ast: 2.1.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@readme/json-schema-ref-parser@1.2.0': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + + '@readme/openapi-parser@2.5.0(openapi-types@12.1.3)': + dependencies: + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + '@jsdevtools/ono': 7.1.3 + '@readme/better-ajv-errors': 1.6.0(ajv@8.12.0) + '@readme/json-schema-ref-parser': 1.2.0 + ajv: 8.12.0 + ajv-draft-04: 1.0.0(ajv@8.12.0) + call-me-maybe: 1.0.2 + openapi-types: 12.1.3 + + '@rnx-kit/chromium-edge-launcher@1.0.0': + dependencies: + '@types/node': 18.19.33 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color '@rollup/rollup-android-arm-eabi@4.17.2': optional: true @@ -12711,19 +12801,24 @@ snapshots: dependencies: lodash: 4.17.21 - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))': + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))': + dependencies: + '@sveltejs/kit': 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + import-meta-resolve: 4.0.0 + + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))': dependencies: - '@sveltejs/kit': 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) import-meta-resolve: 4.0.0 - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))': + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))': dependencies: - '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) import-meta-resolve: 4.0.0 - '@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))': + '@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 4.3.2 @@ -12737,11 +12832,11 @@ snapshots: sirv: 2.0.4 svelte: 4.2.13 tiny-glob: 0.2.9 - vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) - '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': + '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -12755,51 +12850,92 @@ snapshots: sirv: 2.0.4 svelte: 4.2.15 tiny-glob: 0.2.9 - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) - '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))': + '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.0.0 + esm-env: 1.0.0 + import-meta-resolve: 4.0.0 + kleur: 4.1.5 + magic-string: 0.30.9 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.4 + svelte: 4.2.15 + tiny-glob: 0.2.9 + vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) + + '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) debug: 4.3.4 svelte: 4.2.13 - vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + debug: 4.3.4 + svelte: 4.2.15 + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': + '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) debug: 4.3.4 svelte: 4.2.15 - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2))': + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.9 svelte: 4.2.13 svelte-hmr: 0.16.0(svelte@4.2.13) - vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) - vitefu: 0.2.5(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)) + vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) + vitefu: 0.2.5(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2))': + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.9 svelte: 4.2.15 svelte-hmr: 0.16.0(svelte@4.2.15) - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) - vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) + vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.9 + svelte: 4.2.15 + svelte-hmr: 0.16.0(svelte@4.2.15) + vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) + vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) transitivePeerDependencies: - supports-color @@ -12913,12 +13049,24 @@ snapshots: dependencies: '@types/unist': 2.0.10 + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 20.12.11 + '@types/node@17.0.45': {} '@types/node@18.19.31': dependencies: undici-types: 5.26.5 + '@types/node@18.19.33': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.12.11': + dependencies: + undici-types: 5.26.5 + '@types/node@20.12.7': dependencies: undici-types: 5.26.5 @@ -12933,7 +13081,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 20.12.7 + '@types/node': 17.0.45 '@types/secp256k1@4.0.6': dependencies: @@ -12975,7 +13123,7 @@ snapshots: ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.4.3) + ts-api-utils: 1.3.0(typescript@5.4.3) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -13086,7 +13234,7 @@ snapshots: '@typescript-eslint/utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) debug: 4.3.4 eslint: 8.55.0 - ts-api-utils: 1.2.1(typescript@5.4.3) + ts-api-utils: 1.3.0(typescript@5.4.3) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -13262,7 +13410,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitest/coverage-v8@1.4.0(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2))': + '@vitest/coverage-v8@1.4.0(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0))': dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 @@ -13278,7 +13426,7 @@ snapshots: strip-literal: 2.0.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) + vitest: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) transitivePeerDependencies: - supports-color @@ -13340,12 +13488,12 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@volar/kit@2.2.2(typescript@5.4.3)': + '@volar/kit@2.2.2(typescript@5.4.5)': dependencies: '@volar/language-service': 2.2.2 '@volar/typescript': 2.2.2 typesafe-path: 0.2.2 - typescript: 5.4.3 + typescript: 5.4.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 @@ -13427,15 +13575,15 @@ snapshots: - bufferutil - utf-8-validate - '@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': dependencies: '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2) + '@metamask/sdk': 0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2) '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) - '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) - '@walletconnect/ethereum-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) - '@walletconnect/modal': 2.6.2(react@18.2.0) + '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + '@walletconnect/ethereum-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) + '@walletconnect/modal': 2.6.2(react@18.3.1) viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) optionalDependencies: typescript: 5.4.3 @@ -13464,12 +13612,12 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(utf-8-validate@6.0.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8)': + '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(utf-8-validate@6.0.4)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8))(zod@3.23.8)': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) - zustand: 4.4.1(react@18.2.0) + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) + viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) + zustand: 4.4.1(react@18.3.1) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -13480,12 +13628,12 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': dependencies: eventemitter3: 5.0.1 mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) - zustand: 4.4.1(react@18.2.0) + zustand: 4.4.1(react@18.3.1) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -13574,13 +13722,13 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)': + '@walletconnect/ethereum-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(react@18.2.0) + '@walletconnect/modal': 2.6.2(react@18.3.1) '@walletconnect/sign-client': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/types': 2.11.2 '@walletconnect/universal-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) @@ -13606,13 +13754,13 @@ snapshots: - supports-color - utf-8-validate - '@walletconnect/ethereum-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)': + '@walletconnect/ethereum-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(react@18.2.0) + '@walletconnect/modal': 2.6.2(react@18.3.1) '@walletconnect/sign-client': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/types': 2.12.2 '@walletconnect/universal-provider': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) @@ -13709,16 +13857,16 @@ snapshots: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - '@walletconnect/modal-core@2.6.2(react@18.2.0)': + '@walletconnect/modal-core@2.6.2(react@18.3.1)': dependencies: - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - '@walletconnect/modal-ui@2.6.2(react@18.2.0)': + '@walletconnect/modal-ui@2.6.2(react@18.3.1)': dependencies: - '@walletconnect/modal-core': 2.6.2(react@18.2.0) + '@walletconnect/modal-core': 2.6.2(react@18.3.1) lit: 2.8.0 motion: 10.16.2 qrcode: 1.5.3 @@ -13726,10 +13874,10 @@ snapshots: - '@types/react' - react - '@walletconnect/modal@2.6.2(react@18.2.0)': + '@walletconnect/modal@2.6.2(react@18.3.1)': dependencies: - '@walletconnect/modal-core': 2.6.2(react@18.2.0) - '@walletconnect/modal-ui': 2.6.2(react@18.2.0) + '@walletconnect/modal-core': 2.6.2(react@18.3.1) + '@walletconnect/modal-ui': 2.6.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react @@ -13994,11 +14142,11 @@ snapshots: bignumber.js: 9.1.2 dayjs: 1.11.10 - '@web3modal/core@4.1.11(react@18.2.0)': + '@web3modal/core@4.1.11(react@18.3.1)': dependencies: '@web3modal/common': 4.1.11 '@web3modal/wallet': 4.1.11 - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react @@ -14007,35 +14155,35 @@ snapshots: dependencies: buffer: 6.0.3 - '@web3modal/scaffold-react@4.1.11(react@18.2.0)': + '@web3modal/scaffold-react@4.1.11(react@18.3.1)': dependencies: - '@web3modal/scaffold': 4.1.11(react@18.2.0) + '@web3modal/scaffold': 4.1.11(react@18.3.1) optionalDependencies: - react: 18.2.0 + react: 18.3.1 transitivePeerDependencies: - '@types/react' - '@web3modal/scaffold-utils@4.1.11(react@18.2.0)': + '@web3modal/scaffold-utils@4.1.11(react@18.3.1)': dependencies: - '@web3modal/core': 4.1.11(react@18.2.0) + '@web3modal/core': 4.1.11(react@18.3.1) '@web3modal/polyfills': 4.1.11 - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - '@web3modal/scaffold-vue@4.1.11(react@18.2.0)': + '@web3modal/scaffold-vue@4.1.11(react@18.3.1)': dependencies: - '@web3modal/scaffold': 4.1.11(react@18.2.0) + '@web3modal/scaffold': 4.1.11(react@18.3.1) transitivePeerDependencies: - '@types/react' - react - '@web3modal/scaffold@4.1.11(react@18.2.0)': + '@web3modal/scaffold@4.1.11(react@18.3.1)': dependencies: '@web3modal/common': 4.1.11 - '@web3modal/core': 4.1.11(react@18.2.0) - '@web3modal/siwe': 4.1.11(react@18.2.0) + '@web3modal/core': 4.1.11(react@18.3.1) + '@web3modal/siwe': 4.1.11(react@18.3.1) '@web3modal/ui': 4.1.11 '@web3modal/wallet': 4.1.11 lit: 3.1.0 @@ -14043,12 +14191,12 @@ snapshots: - '@types/react' - react - '@web3modal/siwe@4.1.11(react@18.2.0)': + '@web3modal/siwe@4.1.11(react@18.3.1)': dependencies: - '@web3modal/core': 4.1.11(react@18.2.0) - '@web3modal/scaffold-utils': 4.1.11(react@18.2.0) + '@web3modal/core': 4.1.11(react@18.3.1) + '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) lit: 3.1.0 - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react @@ -14058,19 +14206,19 @@ snapshots: lit: 3.1.0 qrcode: 1.5.3 - '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.2.0)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))': + '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.3.1)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))': dependencies: - '@wagmi/connectors': 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) - '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + '@wagmi/connectors': 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) '@web3modal/polyfills': 4.1.11 - '@web3modal/scaffold': 4.1.11(react@18.2.0) - '@web3modal/scaffold-react': 4.1.11(react@18.2.0) - '@web3modal/scaffold-utils': 4.1.11(react@18.2.0) - '@web3modal/scaffold-vue': 4.1.11(react@18.2.0) - '@web3modal/siwe': 4.1.11(react@18.2.0) + '@web3modal/scaffold': 4.1.11(react@18.3.1) + '@web3modal/scaffold-react': 4.1.11(react@18.3.1) + '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) + '@web3modal/scaffold-vue': 4.1.11(react@18.3.1) + '@web3modal/siwe': 4.1.11(react@18.3.1) viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) optionalDependencies: - react: 18.2.0 + react: 18.3.1 transitivePeerDependencies: - '@types/react' @@ -14140,6 +14288,10 @@ snapshots: transitivePeerDependencies: - supports-color + ajv-draft-04@1.0.0(ajv@8.12.0): + optionalDependencies: + ajv: 8.12.0 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -14276,19 +14428,19 @@ snapshots: astring@1.8.6: {} - astro-expressive-code@0.35.3(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)): + astro-expressive-code@0.35.3(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)): dependencies: - astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + astro: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) rehype-expressive-code: 0.35.3 - astro-og-canvas@0.4.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)): + astro-og-canvas@0.5.0(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)): dependencies: - astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) - canvaskit-wasm: 0.37.2 + astro: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) + canvaskit-wasm: 0.39.1 deterministic-object-hash: 2.0.2 entities: 4.5.0 - astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3): + astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5): dependencies: '@astrojs/compiler': 2.8.0 '@astrojs/internal-helpers': 0.4.0 @@ -14344,11 +14496,11 @@ snapshots: shiki: 1.5.1 string-width: 7.1.0 strip-ansi: 7.1.0 - tsconfck: 3.0.3(typescript@5.4.3) + tsconfck: 3.0.3(typescript@5.4.5) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) - vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) + vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) which-pm: 2.1.1 yargs-parser: 21.1.1 zod: 3.23.8 @@ -14410,37 +14562,37 @@ snapshots: dependencies: dequal: 2.0.3 - babel-core@7.0.0-bridge.0(@babel/core@7.23.9): + babel-core@7.0.0-bridge.0(@babel/core@7.24.5): dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 - babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) - core-js-compat: 3.36.0 + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) transitivePeerDependencies: - supports-color - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.9): + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.5): dependencies: - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) transitivePeerDependencies: - '@babel/core' @@ -14592,12 +14744,6 @@ snapshots: dependencies: node-gyp-build: 4.8.0 - builtin-modules@3.3.0: {} - - builtins@5.0.1: - dependencies: - semver: 7.6.0 - bundle-name@3.0.0: dependencies: run-applescript: 5.0.0 @@ -14633,6 +14779,8 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.1 + call-me-maybe@1.0.2: {} + caller-callsite@2.0.0: dependencies: callsites: 2.0.0 @@ -14662,8 +14810,6 @@ snapshots: caniuse-lite@1.0.30001615: {} - canvaskit-wasm@0.37.2: {} - canvaskit-wasm@0.39.1: dependencies: '@webgpu/types': 0.1.21 @@ -14744,24 +14890,13 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.11 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 transitivePeerDependencies: - supports-color - chromium-edge-launcher@1.0.0: - dependencies: - '@types/node': 20.12.7 - escape-string-regexp: 4.0.0 - is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 - mkdirp: 1.0.4 - rimraf: 3.0.2 - transitivePeerDependencies: - - supports-color - ci-info@2.0.0: {} ci-info@3.9.0: {} @@ -14831,6 +14966,8 @@ snapshots: code-block-writer@12.0.0: {} + code-error-fragment@0.0.230: {} + code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -14935,7 +15072,7 @@ snapshots: cookie@0.6.0: {} - core-js-compat@3.36.0: + core-js-compat@3.37.0: dependencies: browserslist: 4.23.0 @@ -15063,6 +15200,8 @@ snapshots: dayjs@1.11.10: {} + dayjs@1.11.11: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -15145,12 +15284,6 @@ snapshots: depd@2.0.0: {} - deprecated-react-native-prop-types@5.0.0: - dependencies: - '@react-native/normalize-colors': 0.73.2 - invariant: 2.2.4 - prop-types: 15.8.1 - dequal@2.0.3: {} destr@2.0.3: {} @@ -15299,9 +15432,14 @@ snapshots: engine.io-parser@5.2.2: {} + enhanced-resolve@5.16.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + entities@4.5.0: {} - envinfo@7.11.1: {} + envinfo@7.13.0: {} err-code@3.0.1: {} @@ -15525,13 +15663,10 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.1.2(eslint@8.55.0): + eslint-compat-utils@0.5.0(eslint@8.55.0): dependencies: eslint: 8.55.0 - - eslint-compat-utils@0.1.2(eslint@8.56.0): - dependencies: - eslint: 8.56.0 + semver: 7.6.0 eslint-compat-utils@0.5.0(eslint@8.56.0): dependencies: @@ -15546,18 +15681,18 @@ snapshots: dependencies: eslint: 8.56.0 - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@16.6.2(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0): + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@17.6.0(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0): dependencies: eslint: 8.55.0 eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0) - eslint-plugin-n: 16.6.2(eslint@8.55.0) + eslint-plugin-n: 17.6.0(eslint@8.55.0) eslint-plugin-promise: 6.1.1(eslint@8.55.0) - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@16.6.2(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0): + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@17.6.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0): dependencies: eslint: 8.56.0 eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) - eslint-plugin-n: 16.6.2(eslint@8.56.0) + eslint-plugin-n: 17.6.0(eslint@8.56.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) eslint-import-resolver-node@0.3.9: @@ -15588,19 +15723,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.5.0(eslint@8.55.0): + eslint-plugin-es-x@7.6.0(eslint@8.55.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) '@eslint-community/regexpp': 4.10.0 eslint: 8.55.0 - eslint-compat-utils: 0.1.2(eslint@8.55.0) + eslint-compat-utils: 0.5.0(eslint@8.55.0) - eslint-plugin-es-x@7.5.0(eslint@8.56.0): + eslint-plugin-es-x@7.6.0(eslint@8.56.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 eslint: 8.56.0 - eslint-compat-utils: 0.1.2(eslint@8.56.0) + eslint-compat-utils: 0.5.0(eslint@8.56.0) eslint-plugin-es@3.0.1(eslint@8.55.0): dependencies: @@ -15668,35 +15803,29 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-n@16.6.2(eslint@8.55.0): + eslint-plugin-n@17.6.0(eslint@8.55.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - builtins: 5.0.1 + enhanced-resolve: 5.16.1 eslint: 8.55.0 - eslint-plugin-es-x: 7.5.0(eslint@8.55.0) - get-tsconfig: 4.7.2 - globals: 13.24.0 + eslint-plugin-es-x: 7.6.0(eslint@8.55.0) + get-tsconfig: 4.7.5 + globals: 15.2.0 ignore: 5.3.1 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 7.6.0 + minimatch: 9.0.4 + semver: 7.6.2 - eslint-plugin-n@16.6.2(eslint@8.56.0): + eslint-plugin-n@17.6.0(eslint@8.56.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - builtins: 5.0.1 + enhanced-resolve: 5.16.1 eslint: 8.56.0 - eslint-plugin-es-x: 7.5.0(eslint@8.56.0) - get-tsconfig: 4.7.2 - globals: 13.24.0 + eslint-plugin-es-x: 7.6.0(eslint@8.56.0) + get-tsconfig: 4.7.5 + globals: 15.2.0 ignore: 5.3.1 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 7.6.0 + minimatch: 9.0.4 + semver: 7.6.2 eslint-plugin-node@11.1.0(eslint@8.55.0): dependencies: @@ -15761,7 +15890,7 @@ snapshots: - supports-color - typescript - eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@jridgewell/sourcemap-codec': 1.4.15 @@ -15771,7 +15900,7 @@ snapshots: esutils: 2.0.3 known-css-properties: 0.30.0 postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) postcss-safe-parser: 6.0.0(postcss@8.4.38) postcss-selector-parser: 6.0.16 semver: 7.6.0 @@ -15782,6 +15911,27 @@ snapshots: - supports-color - ts-node + eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@jridgewell/sourcemap-codec': 1.4.15 + debug: 4.3.4 + eslint: 8.56.0 + eslint-compat-utils: 0.5.0(eslint@8.56.0) + esutils: 2.0.3 + known-css-properties: 0.30.0 + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) + postcss-safe-parser: 6.0.0(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + semver: 7.6.0 + svelte-eslint-parser: 0.35.0(svelte@4.2.15) + optionalDependencies: + svelte: 4.2.15 + transitivePeerDependencies: + - supports-color + - ts-node + eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -16135,7 +16285,7 @@ snapshots: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.2.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -16184,7 +16334,7 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-xml-parser@4.3.4: + fast-xml-parser@4.3.6: dependencies: strnum: 1.0.5 @@ -16268,7 +16418,7 @@ snapshots: flow-enums-runtime@0.0.6: {} - flow-parser@0.206.0: {} + flow-parser@0.236.0: {} follow-redirects@1.15.5(debug@4.3.4): optionalDependencies: @@ -16361,7 +16511,7 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 - get-tsconfig@4.7.2: + get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -16410,6 +16560,8 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@15.2.0: {} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 @@ -16457,6 +16609,8 @@ snapshots: graceful-fs@4.2.11: {} + grapheme-splitter@1.0.4: {} + graphemer@1.4.0: {} gray-matter@4.0.3: @@ -16686,18 +16840,18 @@ snapshots: capital-case: 1.0.4 tslib: 2.6.2 - hermes-estree@0.15.0: {} - hermes-estree@0.19.1: {} - hermes-parser@0.15.0: - dependencies: - hermes-estree: 0.15.0 + hermes-estree@0.20.1: {} hermes-parser@0.19.1: dependencies: hermes-estree: 0.19.1 + hermes-parser@0.20.1: + dependencies: + hermes-estree: 0.20.1 + hermes-profile-transformer@0.0.6: dependencies: source-map: 0.7.4 @@ -16801,6 +16955,8 @@ snapshots: import-meta-resolve@4.0.0: {} + import-meta-resolve@4.1.0: {} + imurmurhash@0.1.4: {} inflight@1.0.6: @@ -16862,8 +17018,6 @@ snapshots: transitivePeerDependencies: - supports-color - ip@1.1.9: {} - ipfs-core-types@0.14.1: dependencies: '@ipld/dag-pb': 4.1.0 @@ -16997,10 +17151,6 @@ snapshots: is-buffer@2.0.5: {} - is-builtin-module@3.2.1: - dependencies: - builtin-modules: 3.3.0 - is-callable@1.2.7: {} is-core-module@2.13.1: @@ -17143,9 +17293,9 @@ snapshots: transitivePeerDependencies: - encoding - isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)): + isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): dependencies: - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) istanbul-lib-coverage@3.2.2: {} @@ -17213,7 +17363,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.11 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -17221,7 +17371,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -17234,13 +17384,13 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.11 jest-util: 29.7.0 jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.11 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -17257,14 +17407,14 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.11 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 jiti@1.21.0: {} - joi@17.12.1: + joi@17.13.1: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -17291,21 +17441,21 @@ snapshots: jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.23.9(@babel/core@7.23.9)): + jscodeshift@0.14.0(@babel/preset-env@7.24.5(@babel/core@7.24.5)): dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-flow': 7.23.3(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) - '@babel/register': 7.23.7(@babel/core@7.23.9) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) + '@babel/preset-flow': 7.24.1(@babel/core@7.24.5) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/register': 7.23.7(@babel/core@7.24.5) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) chalk: 4.1.2 - flow-parser: 0.206.0 + flow-parser: 0.236.0 graceful-fs: 4.2.11 micromatch: 4.0.5 neo-async: 2.6.2 @@ -17316,7 +17466,7 @@ snapshots: transitivePeerDependencies: - supports-color - jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -17337,7 +17487,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -17367,6 +17517,11 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-to-ast@2.1.0: + dependencies: + code-error-fragment: 0.0.230 + grapheme-splitter: 1.0.4 + json5@1.0.2: dependencies: minimist: 1.2.8 @@ -17387,6 +17542,8 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonpointer@5.0.1: {} + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 @@ -17586,7 +17743,7 @@ snapshots: logkitty@0.7.1: dependencies: ansi-fragments: 0.2.1 - dayjs: 1.11.10 + dayjs: 1.11.11 yargs: 15.4.1 lokijs@1.5.12: {} @@ -17883,42 +18040,42 @@ snapshots: treeify: 1.1.0 web3-utils: 1.10.3 - metro-babel-transformer@0.80.6: + metro-babel-transformer@0.80.9: dependencies: - '@babel/core': 7.23.9 - hermes-parser: 0.19.1 + '@babel/core': 7.24.5 + hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-cache-key@0.80.6: {} + metro-cache-key@0.80.9: {} - metro-cache@0.80.6: + metro-cache@0.80.9: dependencies: - metro-core: 0.80.6 + metro-core: 0.80.9 rimraf: 3.0.2 - metro-config@0.80.6(bufferutil@4.0.8)(encoding@0.1.13): + metro-config@0.80.9(bufferutil@4.0.8)(encoding@0.1.13): dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 jest-validate: 29.7.0 - metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) - metro-cache: 0.80.6 - metro-core: 0.80.6 - metro-runtime: 0.80.6 + metro: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13) + metro-cache: 0.80.9 + metro-core: 0.80.9 + metro-runtime: 0.80.9 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - metro-core@0.80.6: + metro-core@0.80.9: dependencies: lodash.throttle: 4.1.1 - metro-resolver: 0.80.6 + metro-resolver: 0.80.9 - metro-file-map@0.80.6: + metro-file-map@0.80.9: dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -17935,33 +18092,33 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.80.6: + metro-minify-terser@0.80.9: dependencies: - terser: 5.27.2 + terser: 5.31.0 - metro-resolver@0.80.6: {} + metro-resolver@0.80.9: {} - metro-runtime@0.80.6: + metro-runtime@0.80.9: dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 - metro-source-map@0.80.6: + metro-source-map@0.80.9: dependencies: - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 invariant: 2.2.4 - metro-symbolicate: 0.80.6 + metro-symbolicate: 0.80.9 nullthrows: 1.1.1 - ob1: 0.80.6 + ob1: 0.80.9 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-symbolicate@0.80.6: + metro-symbolicate@0.80.9: dependencies: invariant: 2.2.4 - metro-source-map: 0.80.6 + metro-source-map: 0.80.9 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -17969,29 +18126,29 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-plugins@0.80.6: + metro-transform-plugins@0.80.9: dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-transform-worker@0.80.6(bufferutil@4.0.8)(encoding@0.1.13): + metro-transform-worker@0.80.9(bufferutil@4.0.8)(encoding@0.1.13): dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - metro: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) - metro-babel-transformer: 0.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-minify-terser: 0.80.6 - metro-source-map: 0.80.6 - metro-transform-plugins: 0.80.6 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + metro: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13) + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-minify-terser: 0.80.9 + metro-source-map: 0.80.9 + metro-transform-plugins: 0.80.9 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -17999,15 +18156,15 @@ snapshots: - supports-color - utf-8-validate - metro@0.80.6(bufferutil@4.0.8)(encoding@0.1.13): + metro@0.80.9(bufferutil@4.0.8)(encoding@0.1.13): dependencies: - '@babel/code-frame': 7.23.5 - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -18016,24 +18173,24 @@ snapshots: denodeify: 1.2.1 error-stack-parser: 2.1.4 graceful-fs: 4.2.11 - hermes-parser: 0.19.1 + hermes-parser: 0.20.1 image-size: 1.1.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-config: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) - metro-core: 0.80.6 - metro-file-map: 0.80.6 - metro-resolver: 0.80.6 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 - metro-symbolicate: 0.80.6 - metro-transform-plugins: 0.80.6 - metro-transform-worker: 0.80.6(bufferutil@4.0.8)(encoding@0.1.13) + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-config: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13) + metro-core: 0.80.9 + metro-file-map: 0.80.9 + metro-resolver: 0.80.9 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 + metro-symbolicate: 0.80.9 + metro-transform-plugins: 0.80.9 + metro-transform-worker: 0.80.9(bufferutil@4.0.8)(encoding@0.1.13) mime-types: 2.1.35 node-fetch: 2.7.0(encoding@0.1.13) nullthrows: 1.1.1 @@ -18383,9 +18540,9 @@ snapshots: minipass@7.0.4: {} - mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8): dependencies: - viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8) + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -18528,6 +18685,9 @@ snapshots: node-gyp-build@4.8.0: {} + node-gyp-build@4.8.1: + optional: true + node-int64@0.4.0: {} node-releases@2.0.14: {} @@ -18550,6 +18710,10 @@ snapshots: dependencies: path-key: 4.0.0 + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -18563,7 +18727,7 @@ snapshots: nwsapi@2.2.7: {} - ob1@0.80.6: {} + ob1@0.80.9: {} obj-multiplex@1.0.0: dependencies: @@ -18659,6 +18823,8 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 2.2.0 + openapi-types@12.1.3: {} + optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 @@ -18958,6 +19124,14 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.38 + postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@20.12.11)(typescript@5.4.3) + postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): dependencies: lilconfig: 2.1.0 @@ -18966,6 +19140,14 @@ snapshots: postcss: 8.4.38 ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): + dependencies: + lilconfig: 3.1.1 + yaml: 2.3.4 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@types/node@20.12.11)(typescript@5.4.3) + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): dependencies: lilconfig: 3.1.1 @@ -18974,6 +19156,14 @@ snapshots: postcss: 8.4.38 ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + postcss-load-config@5.1.0(postcss@8.4.38): + dependencies: + lilconfig: 3.1.1 + yaml: 2.4.2 + optionalDependencies: + postcss: 8.4.38 + optional: true + postcss-nested@5.0.6(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -19077,12 +19267,6 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - property-information@6.5.0: {} proto-list@1.2.4: {} @@ -19137,6 +19321,8 @@ snapshots: split-on-first: 1.1.0 strict-uri-encode: 2.0.0 + querystring@0.2.1: {} + querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -19171,12 +19357,12 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-confetti@6.1.0(react@18.2.0): + react-confetti@6.1.0(react@18.3.1): dependencies: - react: 18.2.0 + react: 18.3.1 tween-functions: 1.2.0 - react-devtools-core@4.28.5(bufferutil@4.0.8): + react-devtools-core@5.2.0(bufferutil@4.0.8): dependencies: shell-quote: 1.8.1 ws: 7.5.9(bufferutil@4.0.8) @@ -19184,67 +19370,66 @@ snapshots: - bufferutil - utf-8-validate - react-i18next@13.5.0(i18next@22.5.1)(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): + react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 html-parse-stringify: 3.0.1 i18next: 22.5.1 - react: 18.2.0 + react: 18.3.1 optionalDependencies: - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) - - react-is@16.13.1: {} + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) react-is@17.0.2: {} react-is@18.2.0: {} + react-is@18.3.1: {} + react-native-fetch-api@3.0.0: dependencies: p-defer: 3.0.0 - react-native-webview@11.26.1(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): + react-native-webview@11.26.1(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1): dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 - react: 18.2.0 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0) + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) - react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0): + react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 12.3.2(bufferutil@4.0.8)(encoding@0.1.13) - '@react-native-community/cli-platform-android': 12.3.2(encoding@0.1.13) - '@react-native-community/cli-platform-ios': 12.3.2(encoding@0.1.13) - '@react-native/assets-registry': 0.73.1 - '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - '@react-native/community-cli-plugin': 0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13) - '@react-native/gradle-plugin': 0.73.4 - '@react-native/js-polyfills': 0.73.1 - '@react-native/normalize-colors': 0.73.2 - '@react-native/virtualized-lists': 0.73.4(react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.2.0)) + '@react-native-community/cli': 13.6.6(bufferutil@4.0.8)(encoding@0.1.13) + '@react-native-community/cli-platform-android': 13.6.6(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 13.6.6(encoding@0.1.13) + '@react-native/assets-registry': 0.74.83 + '@react-native/codegen': 0.74.83(@babel/preset-env@7.24.5(@babel/core@7.24.5)) + '@react-native/community-cli-plugin': 0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13) + '@react-native/gradle-plugin': 0.74.83 + '@react-native/js-polyfills': 0.74.83 + '@react-native/normalize-colors': 0.74.83 + '@react-native/virtualized-lists': 0.74.83(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 base64-js: 1.5.1 chalk: 4.1.2 - deprecated-react-native-prop-types: 5.0.0 event-target-shim: 5.0.1 flow-enums-runtime: 0.0.6 invariant: 2.2.4 jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 - react: 18.2.0 - react-devtools-core: 4.28.5(bufferutil@4.0.8) - react-refresh: 0.14.0 - react-shallow-renderer: 16.15.0(react@18.2.0) + react: 18.3.1 + react-devtools-core: 5.2.0(bufferutil@4.0.8) + react-refresh: 0.14.2 + react-shallow-renderer: 16.15.0(react@18.3.1) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 stacktrace-parser: 0.1.10 @@ -19259,15 +19444,15 @@ snapshots: - supports-color - utf-8-validate - react-refresh@0.14.0: {} + react-refresh@0.14.2: {} - react-shallow-renderer@16.15.0(react@18.2.0): + react-shallow-renderer@16.15.0(react@18.3.1): dependencies: object-assign: 4.1.1 - react: 18.2.0 - react-is: 18.2.0 + react: 18.3.1 + react-is: 18.3.1 - react@18.2.0: + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -19328,7 +19513,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 regexp.prototype.flags@1.5.1: dependencies: @@ -19642,6 +19827,11 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + semver@5.7.2: {} semver@6.3.1: {} @@ -19723,7 +19913,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.0 + semver: 7.6.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.3 '@img/sharp-darwin-x64': 0.33.3 @@ -19914,10 +20104,10 @@ snapshots: standard-as-callback@2.1.0: {} - starlight-links-validator@0.6.0(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)))(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)): + starlight-links-validator@0.8.0(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)))(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)): dependencies: - '@astrojs/starlight': 0.22.2(astro@4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3)) - astro: 4.8.3(@types/node@20.12.7)(terser@5.27.2)(typescript@5.4.3) + '@astrojs/starlight': 0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) + astro: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) github-slugger: 2.0.0 hast-util-from-html: 2.0.1 hast-util-has-property: 3.0.0 @@ -19926,6 +20116,16 @@ snapshots: mdast-util-to-string: 4.0.0 unist-util-visit: 5.0.0 + starlight-openapi@0.6.3(@astrojs/markdown-remark@5.1.0)(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)))(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5))(openapi-types@12.1.3): + dependencies: + '@astrojs/markdown-remark': 5.1.0 + '@astrojs/starlight': 0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) + '@readme/openapi-parser': 2.5.0(openapi-types@12.1.3) + astro: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) + github-slugger: 2.0.0 + transitivePeerDependencies: + - openapi-types + statuses@1.5.0: {} statuses@2.0.1: {} @@ -20071,7 +20271,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.7.1(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15): + svelte-check@3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -20079,8 +20279,8 @@ snapshots: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.15 - svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3) + svelte: 4.2.13 + svelte-preprocess: 5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3) typescript: 5.4.3 transitivePeerDependencies: - '@babel/core' @@ -20093,7 +20293,7 @@ snapshots: - stylus - sugarss - svelte-check@3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13): + svelte-check@3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -20101,8 +20301,8 @@ snapshots: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.13 - svelte-preprocess: 5.1.3(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3) + svelte: 4.2.15 + svelte-preprocess: 5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3) typescript: 5.4.3 transitivePeerDependencies: - '@babel/core' @@ -20173,32 +20373,32 @@ snapshots: svelte: 4.2.15 tiny-glob: 0.2.9 - svelte-preprocess@5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3): + svelte-preprocess@5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.9 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.15 + svelte: 4.2.13 optionalDependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 postcss: 8.4.38 - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-load-config: 5.1.0(postcss@8.4.38) typescript: 5.4.3 - svelte-preprocess@5.1.3(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3): + svelte-preprocess@5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.9 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.13 + svelte: 4.2.15 optionalDependencies: '@babel/core': 7.24.5 postcss: 8.4.38 - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-load-config: 5.1.0(postcss@8.4.38) typescript: 5.4.3 svelte-scrolling@1.4.0(svelte@4.2.15): @@ -20261,6 +20461,33 @@ snapshots: flat: 4.1.1 lodash: 4.17.21 + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.0.15 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): dependencies: '@alloc/quick-lru': 5.2.0 @@ -20288,15 +20515,17 @@ snapshots: transitivePeerDependencies: - ts-node + tapable@2.2.1: {} + temp-dir@2.0.0: {} temp@0.8.4: dependencies: rimraf: 2.6.3 - terser@5.27.2: + terser@5.31.0: dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 @@ -20385,10 +20614,6 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.2.1(typescript@5.4.3): - dependencies: - typescript: 5.4.3 - ts-api-utils@1.3.0(typescript@5.4.3): dependencies: typescript: 5.4.3 @@ -20406,6 +20631,25 @@ snapshots: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 + ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.12.11 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -20428,6 +20672,10 @@ snapshots: optionalDependencies: typescript: 5.4.3 + tsconfck@3.0.3(typescript@5.4.5): + optionalDependencies: + typescript: 5.4.5 + tsconfig-paths@3.14.2: dependencies: '@types/json5': 0.0.29 @@ -20493,10 +20741,12 @@ snapshots: typescript-auto-import-cache@0.3.2: dependencies: - semver: 7.6.0 + semver: 7.6.2 typescript@5.4.3: {} + typescript@5.4.5: {} + ufo@1.4.0: {} uint8-varint@2.0.4: @@ -20702,14 +20952,19 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-sync-external-store@1.2.0(react@18.2.0): + use-sync-external-store@1.2.0(react@18.3.1): dependencies: - react: 18.2.0 + react: 18.3.1 utf-8-validate@6.0.3: dependencies: node-gyp-build: 4.8.0 + utf-8-validate@6.0.4: + dependencies: + node-gyp-build: 4.8.1 + optional: true + utf8@3.0.0: {} util-deprecate@1.0.2: {} @@ -20734,12 +20989,12 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - valtio@1.11.2(react@18.2.0): + valtio@1.11.2(react@18.3.1): dependencies: proxy-compare: 2.5.1 - use-sync-external-store: 1.2.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.3.1) optionalDependencies: - react: 18.2.0 + react: 18.3.1 varint@6.0.0: {} @@ -20773,7 +21028,7 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -20781,8 +21036,8 @@ snapshots: '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 abitype: 0.9.8(typescript@5.4.3)(zod@3.23.8) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -20798,8 +21053,8 @@ snapshots: '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 abitype: 0.9.8(typescript@5.4.3)(zod@3.22.4) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -20807,7 +21062,7 @@ snapshots: - utf-8-validate - zod - viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.3)(zod@3.23.8): + viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 @@ -20815,8 +21070,8 @@ snapshots: '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 abitype: 1.0.0(typescript@5.4.3)(zod@3.23.8) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -20832,8 +21087,8 @@ snapshots: '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 abitype: 1.0.0(typescript@5.4.3)(zod@3.22.4) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) optionalDependencies: typescript: 5.4.3 transitivePeerDependencies: @@ -20841,13 +21096,13 @@ snapshots: - utf-8-validate - zod - vite-node@1.5.0(@types/node@20.12.7)(terser@5.27.2): + vite-node@1.5.0(@types/node@20.12.11)(terser@5.31.0): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - '@types/node' - less @@ -20858,13 +21113,13 @@ snapshots: - supports-color - terser - vite-node@1.5.3(@types/node@20.12.7)(terser@5.27.2): + vite-node@1.5.3(@types/node@20.12.11)(terser@5.31.0): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - '@types/node' - less @@ -20875,39 +21130,77 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)): + vite-node@1.5.3(@types/node@20.12.7)(terser@5.31.0): + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)): + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.4.3) + optionalDependencies: + vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) + transitivePeerDependencies: + - supports-color + - typescript + + vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)): dependencies: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.4.3) optionalDependencies: - vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)): + vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)): dependencies: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.4.3) optionalDependencies: - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) transitivePeerDependencies: - supports-color - typescript - vite@4.5.3(@types/node@20.12.7)(terser@5.27.2): + vite@4.5.3(@types/node@20.12.11)(terser@5.31.0): dependencies: esbuild: 0.18.20 postcss: 8.4.38 rollup: 3.29.4 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.11 + fsevents: 2.3.3 + terser: 5.31.0 + + vite@5.2.11(@types/node@20.12.11)(terser@5.31.0): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.17.2 + optionalDependencies: + '@types/node': 20.12.11 fsevents: 2.3.3 - terser: 5.27.2 + terser: 5.31.0 - vite@5.2.11(@types/node@20.12.7)(terser@5.27.2): + vite@5.2.11(@types/node@20.12.7)(terser@5.31.0): dependencies: esbuild: 0.20.2 postcss: 8.4.38 @@ -20915,30 +21208,34 @@ snapshots: optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 - terser: 5.27.2 + terser: 5.31.0 - vitefu@0.2.5(vite@4.5.3(@types/node@20.12.7)(terser@5.27.2)): + vitefu@0.2.5(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)): optionalDependencies: - vite: 4.5.3(@types/node@20.12.7)(terser@5.27.2) + vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) - vitefu@0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.27.2)): + vitefu@0.2.5(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)): optionalDependencies: - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) - vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)): + vitefu@0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)): + optionalDependencies: + vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) + + vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)): dependencies: cross-fetch: 3.1.8(encoding@0.1.13) - vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) + vitest: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) transitivePeerDependencies: - encoding - vitest-mock-extended@1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2)): + vitest-mock-extended@1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)): dependencies: ts-essentials: 9.4.1(typescript@5.4.3) typescript: 5.4.3 - vitest: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2) + vitest: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) - vitest@1.5.0(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.27.2): + vitest@1.5.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.0): dependencies: '@vitest/expect': 1.5.0 '@vitest/runner': 1.5.0 @@ -20957,12 +21254,46 @@ snapshots: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) - vite-node: 1.5.0(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) + vite-node: 1.5.0(@types/node@20.12.11)(terser@5.31.0) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.12.7 - jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + '@types/node': 20.12.11 + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0): + dependencies: + '@vitest/expect': 1.5.3 + '@vitest/runner': 1.5.3 + '@vitest/snapshot': 1.5.3 + '@vitest/spy': 1.5.3 + '@vitest/utils': 1.5.3 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.9 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) + vite-node: 1.5.3(@types/node@20.12.11)(terser@5.31.0) + why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.12.11 + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) transitivePeerDependencies: - less - lightningcss @@ -20972,7 +21303,7 @@ snapshots: - supports-color - terser - vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.27.2): + vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0): dependencies: '@vitest/expect': 1.5.3 '@vitest/runner': 1.5.3 @@ -20991,12 +21322,12 @@ snapshots: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.11(@types/node@20.12.7)(terser@5.27.2) - vite-node: 1.5.3(@types/node@20.12.7)(terser@5.27.2) + vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) + vite-node: 1.5.3(@types/node@20.12.7)(terser@5.31.0) why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.12.7 - jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) transitivePeerDependencies: - less - lightningcss @@ -21047,7 +21378,7 @@ snapshots: volar-service-typescript@0.0.43(@volar/language-service@2.2.2): dependencies: path-browserify: 1.0.1 - semver: 7.6.0 + semver: 7.6.2 typescript-auto-import-cache: 0.3.2 vscode-languageserver-textdocument: 1.0.11 vscode-nls: 5.2.0 @@ -21245,15 +21576,15 @@ snapshots: optionalDependencies: bufferutil: 4.0.8 - ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.3 + utf-8-validate: 6.0.4 - ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.3 + utf-8-validate: 6.0.4 xml-name-validator@5.0.0: {} @@ -21275,6 +21606,8 @@ snapshots: yaml@2.3.4: {} + yaml@2.4.2: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 @@ -21320,10 +21653,10 @@ snapshots: zod@3.23.8: {} - zustand@4.4.1(react@18.2.0): + zustand@4.4.1(react@18.3.1): dependencies: - use-sync-external-store: 1.2.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.3.1) optionalDependencies: - react: 18.2.0 + react: 18.3.1 zwitch@2.0.4: {} From 4ccb0a4d2a4673f472ab4cb32d2f49150baa086a Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Mon, 13 May 2024 17:59:49 -0700 Subject: [PATCH 086/100] fix(relayer): test fix (#17150) --- packages/relayer/processor/process_message_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/relayer/processor/process_message_test.go b/packages/relayer/processor/process_message_test.go index 2b6c02eb217..114a17e7635 100644 --- a/packages/relayer/processor/process_message_test.go +++ b/packages/relayer/processor/process_message_test.go @@ -43,7 +43,7 @@ func Test_sendProcessMessageCall(t *testing.T) { }, }, []byte{}) - assert.Equal(t, err, errTxReverted) + assert.Equal(t, err, errUnprocessable) } func Test_ProcessMessage_messageUnprocessable(t *testing.T) { From 0b95ca7e004d07946b63bedfebca91b3d8ee58d9 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 21:05:13 -0400 Subject: [PATCH 087/100] chore(main): release docs-site 1.1.0 (#17151) --- .release-please-manifest.json | 2 +- packages/docs-site/CHANGELOG.md | 7 +++++++ packages/docs-site/package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5c375012d6c..29d758888e4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "packages/blobstorage": "0.1.0", "packages/branding": "0.4.0", "packages/bridge-ui": "2.10.1", - "packages/docs-site": "1.0.0", + "packages/docs-site": "1.1.0", "packages/eventindexer": "0.13.0", "packages/fork-diff": "0.5.0", "packages/guardian-prover-health-check": "0.1.0", diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md index 3a02d77d02c..e136a36be66 100644 --- a/packages/docs-site/CHANGELOG.md +++ b/packages/docs-site/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.1.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.0.0...docs-site-v1.1.0) (2024-05-14) + + +### Features + +* **repo,docs-site:** migrate swagger apis to docs ([#17149](https://github.com/taikoxyz/taiko-mono/issues/17149)) ([1b3baf6](https://github.com/taikoxyz/taiko-mono/commit/1b3baf637ecd7103b5918dccb67cd9defc57511e)) + ## [1.0.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.0.0...docs-site-v1.0.0) (2024-05-13) diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json index 9b931760aed..5df775e7f1c 100644 --- a/packages/docs-site/package.json +++ b/packages/docs-site/package.json @@ -1,7 +1,7 @@ { "name": "docs-site", "type": "module", - "version": "1.0.0", + "version": "1.1.0", "scripts": { "dev": "astro dev", "start": "astro dev", From ec8a90e50771e8a52e1d68c5e353d3e0f79e8f1d Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Mon, 13 May 2024 18:10:10 -0700 Subject: [PATCH 088/100] feat(relayer): add env vars for txmgr configs so they can be used in kube (#17152) --- packages/relayer/cmd/flags/txmgr.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/relayer/cmd/flags/txmgr.go b/packages/relayer/cmd/flags/txmgr.go index 0692f8223e5..3a7d4b8a799 100644 --- a/packages/relayer/cmd/flags/txmgr.go +++ b/packages/relayer/cmd/flags/txmgr.go @@ -12,6 +12,7 @@ var ( Usage: "Number of confirmations which we will wait after sending a transaction", Value: 1, Category: txmgrCategory, + EnvVars: []string{"TXMGR_NUM_CONFIRMATIONS"}, } SafeAbortNonceTooLowCount = &cli.Uint64Flag{ Name: "tx.safeAbortNonceTooLowCount", @@ -19,12 +20,14 @@ var ( "a tx at a particular nonce without receiving confirmation", Value: 3, Category: txmgrCategory, + EnvVars: []string{"SAFE_ABORT_NONCE_TOO_LOW_COUNT"}, } FeeLimitMultiplier = &cli.Uint64Flag{ Name: "tx.feeLimitMultiplier", Usage: "The multiplier applied to fee suggestions to put a hard limit on fee increases", Value: 10, Category: txmgrCategory, + EnvVars: []string{"FEE_LIMIT_MULTIPLIER"}, } FeeLimitThreshold = &cli.Float64Flag{ Name: "tx.feeLimitThreshold", @@ -32,54 +35,63 @@ var ( "Allows arbitrary fee bumps below this threshold.", Value: 100.0, Category: txmgrCategory, + EnvVars: []string{"FEE_LIMIT_THRESHOLD"}, } MinTipCap = &cli.Float64Flag{ Name: "tx.minTipCap", Usage: "Enforces a minimum tip cap (in GWei) to use when determining tx fees. 1 GWei by default.", Value: 1.0, Category: txmgrCategory, + EnvVars: []string{"MIN_TIP_CAP"}, } MinBaseFee = &cli.Float64Flag{ Name: "tx.minBaseFee", Usage: "Enforces a minimum base fee (in GWei) to assume when determining tx fees. 1 GWei by default.", Value: 1.0, Category: txmgrCategory, + EnvVars: []string{"MIN_BASE_FEE"}, } ResubmissionTimeout = &cli.DurationFlag{ Name: "tx.resubmissionTimeout", Usage: "Duration we will wait before resubmitting a transaction to L1", Value: 48 * time.Second, Category: txmgrCategory, + EnvVars: []string{"RESBUMISSION_TIMEOUT"}, } TxSendTimeout = &cli.DurationFlag{ Name: "tx.sendTimeout", Usage: "Timeout for sending transactions. If 0 it is disabled.", Value: 0, Category: txmgrCategory, + EnvVars: []string{"TX_SEND_TIMEOUT"}, } TxNotInMempoolTimeout = &cli.DurationFlag{ Name: "tx.notInMempoolTimeout", Usage: "Timeout for aborting a tx send if the tx does not make it to the mempool.", Value: 2 * time.Minute, Category: txmgrCategory, + EnvVars: []string{"TX_NOT_IN_MEMPOOL_TIMEOUT"}, } ReceiptQueryInterval = &cli.DurationFlag{ Name: "tx.receiptQueryInterval", Usage: "Frequency to poll for receipts", Value: 12 * time.Second, Category: txmgrCategory, + EnvVars: []string{"RECEIPT_QUERY_INTERVAL"}, } TxGasLimit = &cli.Uint64Flag{ Name: "tx.gasLimit", Usage: "Gas limit will be used for transactions (0 means using gas estimation)", Value: 0, Category: txmgrCategory, + EnvVars: []string{"GAS_LIMIT"}, } RPCTimeout = &cli.DurationFlag{ Name: "rpc.timeout", Usage: "Timeout in seconds for RPC calls", Category: commonCategory, Value: 12 * time.Second, + EnvVars: []string{"RPC_TIMEOUT"}, } ) From b6c6b5f475bcc22645c5cf45744210d2d856d0fa Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 21:33:48 -0400 Subject: [PATCH 089/100] ci(repo): rename github workflows (#17153) --- .../{bridge-ui-ci.yml => bridge-ui--ci.yml} | 3 +-- ...{fork-diff-preview.yml => fork-diff--preview.yml} | 0 ...diff-production.yml => fork-diff--production.yml} | 0 ...i.yml => guardian-prover-health-check-ui--ci.yml} | 0 ...ns-ui.yml => guardian-prover-health-check-ui.yml} | 12 ++++++------ ...h-check.yaml => guardian-prover-health-check.yml} | 0 ...auto-approve-pr.yml => repo--auto-approve-pr.yml} | 0 ...ve-issues.yml => repo--close-inactive-issues.yml} | 0 .../{release-please.yml => repo--release-please.yml} | 0 .../{typo-check.yml => repo--typo-check.yml} | 0 ...date-pr-title.yml => repo--validate-pr-title.yml} | 0 .../{vercel-deploy.yml => repo--vercel-deploy.yml} | 10 +++++----- ...ko-client-docker.yml => taiko-client--docker.yml} | 0 ...{taiko-client-test.yml => taiko-client--test.yml} | 0 .../{taikoon-ui-ci.yml => taikoon-ui--ci.yml} | 3 +-- 15 files changed, 13 insertions(+), 15 deletions(-) rename .github/workflows/{bridge-ui-ci.yml => bridge-ui--ci.yml} (98%) rename .github/workflows/{fork-diff-preview.yml => fork-diff--preview.yml} (100%) rename .github/workflows/{fork-diff-production.yml => fork-diff--production.yml} (100%) rename .github/workflows/{guardians-ui-ci.yml => guardian-prover-health-check-ui--ci.yml} (100%) rename .github/workflows/{guardians-ui.yml => guardian-prover-health-check-ui.yml} (90%) rename .github/workflows/{guardians-health-check.yaml => guardian-prover-health-check.yml} (100%) rename .github/workflows/{auto-approve-pr.yml => repo--auto-approve-pr.yml} (100%) rename .github/workflows/{close-inactive-issues.yml => repo--close-inactive-issues.yml} (100%) rename .github/workflows/{release-please.yml => repo--release-please.yml} (100%) rename .github/workflows/{typo-check.yml => repo--typo-check.yml} (100%) rename .github/workflows/{validate-pr-title.yml => repo--validate-pr-title.yml} (100%) rename .github/workflows/{vercel-deploy.yml => repo--vercel-deploy.yml} (83%) rename .github/workflows/{taiko-client-docker.yml => taiko-client--docker.yml} (100%) rename .github/workflows/{taiko-client-test.yml => taiko-client--test.yml} (100%) rename .github/workflows/{taikoon-ui-ci.yml => taikoon-ui--ci.yml} (98%) diff --git a/.github/workflows/bridge-ui-ci.yml b/.github/workflows/bridge-ui--ci.yml similarity index 98% rename from .github/workflows/bridge-ui-ci.yml rename to .github/workflows/bridge-ui--ci.yml index ce24cc882ee..d270c524ece 100644 --- a/.github/workflows/bridge-ui-ci.yml +++ b/.github/workflows/bridge-ui--ci.yml @@ -1,7 +1,6 @@ name: Bridge UI Build and Checks -on: - workflow_call +on: workflow_call jobs: build: diff --git a/.github/workflows/fork-diff-preview.yml b/.github/workflows/fork-diff--preview.yml similarity index 100% rename from .github/workflows/fork-diff-preview.yml rename to .github/workflows/fork-diff--preview.yml diff --git a/.github/workflows/fork-diff-production.yml b/.github/workflows/fork-diff--production.yml similarity index 100% rename from .github/workflows/fork-diff-production.yml rename to .github/workflows/fork-diff--production.yml diff --git a/.github/workflows/guardians-ui-ci.yml b/.github/workflows/guardian-prover-health-check-ui--ci.yml similarity index 100% rename from .github/workflows/guardians-ui-ci.yml rename to .github/workflows/guardian-prover-health-check-ui--ci.yml diff --git a/.github/workflows/guardians-ui.yml b/.github/workflows/guardian-prover-health-check-ui.yml similarity index 90% rename from .github/workflows/guardians-ui.yml rename to .github/workflows/guardian-prover-health-check-ui.yml index 9f43ec06005..5a3150341b2 100644 --- a/.github/workflows/guardians-ui.yml +++ b/.github/workflows/guardian-prover-health-check-ui.yml @@ -20,8 +20,8 @@ jobs: needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: - environment: 'preview' - flags: '' + environment: "preview" + flags: "" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_UI_HEKLA }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} @@ -32,8 +32,8 @@ jobs: needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: - environment: 'preview' - flags: '' + environment: "preview" + flags: "" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_UI_INTERNAL }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} @@ -44,8 +44,8 @@ jobs: needs: build-and-test uses: ./.github/workflows/vercel-deploy.yml with: - environment: 'production' - flags: '--prod' + environment: "production" + flags: "--prod" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_UI_HEKLA }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} diff --git a/.github/workflows/guardians-health-check.yaml b/.github/workflows/guardian-prover-health-check.yml similarity index 100% rename from .github/workflows/guardians-health-check.yaml rename to .github/workflows/guardian-prover-health-check.yml diff --git a/.github/workflows/auto-approve-pr.yml b/.github/workflows/repo--auto-approve-pr.yml similarity index 100% rename from .github/workflows/auto-approve-pr.yml rename to .github/workflows/repo--auto-approve-pr.yml diff --git a/.github/workflows/close-inactive-issues.yml b/.github/workflows/repo--close-inactive-issues.yml similarity index 100% rename from .github/workflows/close-inactive-issues.yml rename to .github/workflows/repo--close-inactive-issues.yml diff --git a/.github/workflows/release-please.yml b/.github/workflows/repo--release-please.yml similarity index 100% rename from .github/workflows/release-please.yml rename to .github/workflows/repo--release-please.yml diff --git a/.github/workflows/typo-check.yml b/.github/workflows/repo--typo-check.yml similarity index 100% rename from .github/workflows/typo-check.yml rename to .github/workflows/repo--typo-check.yml diff --git a/.github/workflows/validate-pr-title.yml b/.github/workflows/repo--validate-pr-title.yml similarity index 100% rename from .github/workflows/validate-pr-title.yml rename to .github/workflows/repo--validate-pr-title.yml diff --git a/.github/workflows/vercel-deploy.yml b/.github/workflows/repo--vercel-deploy.yml similarity index 83% rename from .github/workflows/vercel-deploy.yml rename to .github/workflows/repo--vercel-deploy.yml index 3fa9cbfb2c6..1c5ad381386 100644 --- a/.github/workflows/vercel-deploy.yml +++ b/.github/workflows/repo--vercel-deploy.yml @@ -11,18 +11,18 @@ on: required: true secrets: vercel_project_id: - description: 'Vercel Project ID' + description: "Vercel Project ID" required: true vercel_org_id: - description: 'Vercel ORG ID' + description: "Vercel ORG ID" required: true vercel_token: - description: 'Vercel TOKEN' + description: "Vercel TOKEN" required: true env: - VERCEL_ORG_ID: ${{ secrets.vercel_org_id }} - VERCEL_PROJECT_ID: ${{ secrets.vercel_project_id }} + VERCEL_ORG_ID: ${{ secrets.vercel_org_id }} + VERCEL_PROJECT_ID: ${{ secrets.vercel_project_id }} jobs: build-deploy: diff --git a/.github/workflows/taiko-client-docker.yml b/.github/workflows/taiko-client--docker.yml similarity index 100% rename from .github/workflows/taiko-client-docker.yml rename to .github/workflows/taiko-client--docker.yml diff --git a/.github/workflows/taiko-client-test.yml b/.github/workflows/taiko-client--test.yml similarity index 100% rename from .github/workflows/taiko-client-test.yml rename to .github/workflows/taiko-client--test.yml diff --git a/.github/workflows/taikoon-ui-ci.yml b/.github/workflows/taikoon-ui--ci.yml similarity index 98% rename from .github/workflows/taikoon-ui-ci.yml rename to .github/workflows/taikoon-ui--ci.yml index 6373d930fef..95c3942c1e9 100644 --- a/.github/workflows/taikoon-ui-ci.yml +++ b/.github/workflows/taikoon-ui--ci.yml @@ -1,7 +1,6 @@ name: Taikoon UI Build and Checks -on: - workflow_call +on: workflow_call jobs: build: From e0f9f597b7cace80a433393893f09d7868eb29f3 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 21:47:06 -0400 Subject: [PATCH 090/100] chore(main): release taikoon 1.0.0 (#17128) Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .release-please-manifest.json | 3 ++- packages/taikoon/CHANGELOG.md | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/taikoon/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 29d758888e4..e59539a9e58 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -9,5 +9,6 @@ "packages/guardian-prover-health-check-ui": "0.1.0", "packages/protocol": "1.5.0", "packages/relayer": "0.12.0", - "packages/taiko-client": "0.22.0" + "packages/taiko-client": "0.22.0", + "packages/taikoon": "1.0.0" } diff --git a/packages/taikoon/CHANGELOG.md b/packages/taikoon/CHANGELOG.md new file mode 100644 index 00000000000..f30115a758d --- /dev/null +++ b/packages/taikoon/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog + +## 1.0.0 (2024-05-14) + + +### Features + +* **repo:** add `taikoon` and `supplementary-contracts` sub packages ([#16810](https://github.com/taikoxyz/taiko-mono/issues/16810)) ([1140bbf](https://github.com/taikoxyz/taiko-mono/commit/1140bbf333942b03c0be72a00f988f3dcbda517e)) +* **taikoon:** migrate Taikoon NFT smart contracts here ([#16849](https://github.com/taikoxyz/taiko-mono/issues/16849)) ([b392911](https://github.com/taikoxyz/taiko-mono/commit/b3929118d81d35d38377188f8af5986113a0538a)) +* **taikoon:** taikoon ui setup ([#16854](https://github.com/taikoxyz/taiko-mono/issues/16854)) ([0ba891a](https://github.com/taikoxyz/taiko-mono/commit/0ba891a11f84d5a612dda10c5074d402cffd4100)) + + +### Bug Fixes + +* **taikoon:** fix taikoon contract test dependency issues ([#16862](https://github.com/taikoxyz/taiko-mono/issues/16862)) ([bf31bb6](https://github.com/taikoxyz/taiko-mono/commit/bf31bb61bb389004944924d022d0588b304d4998)) From 485a484087297e185c21446a18f840a2ba87ccad Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 21:51:01 -0400 Subject: [PATCH 091/100] chore(main): release blobstorage 0.2.0 (#17131) Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .release-please-manifest.json | 2 +- packages/blobstorage/CHANGELOG.md | 20 ++++++++++++++++++++ packages/blobstorage/package.json | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 packages/blobstorage/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e59539a9e58..a66aae68d0b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "packages/blobstorage": "0.1.0", + "packages/blobstorage": "0.2.0", "packages/branding": "0.4.0", "packages/bridge-ui": "2.10.1", "packages/docs-site": "1.1.0", diff --git a/packages/blobstorage/CHANGELOG.md b/packages/blobstorage/CHANGELOG.md new file mode 100644 index 00000000000..73b2d35d705 --- /dev/null +++ b/packages/blobstorage/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +## [0.2.0](https://github.com/taikoxyz/taiko-mono/compare/blobstorage-v0.1.0...blobstorage-v0.2.0) (2024-05-14) + + +### Features + +* **blobstorage:** add health check, change regular mux for echo, filter changes ([#16449](https://github.com/taikoxyz/taiko-mono/issues/16449)) ([ee1233d](https://github.com/taikoxyz/taiko-mono/commit/ee1233d523a24e682b9dced312d3ffafe76c1889)) +* **blobstorage:** allow get_blob api to return blob data ([#16629](https://github.com/taikoxyz/taiko-mono/issues/16629)) ([2581772](https://github.com/taikoxyz/taiko-mono/commit/2581772afb6875de2a6f4d54a93a2f11be5ab2fc)) +* **blobstorage:** isolating tables for no blob data duplication ([#16702](https://github.com/taikoxyz/taiko-mono/issues/16702)) ([55426ef](https://github.com/taikoxyz/taiko-mono/commit/55426ef700c3eabc693f32829525a42775909b2a)) +* **blobstorage:** set initial indexing block via genesis if no blobs exist ([#16477](https://github.com/taikoxyz/taiko-mono/issues/16477)) ([9427ab4](https://github.com/taikoxyz/taiko-mono/commit/9427ab43c599f9d26637bb0d051e11f3ccdee47c)) +* **eventindexer:** fix down mig + regen bindings ([#16563](https://github.com/taikoxyz/taiko-mono/issues/16563)) ([da5a039](https://github.com/taikoxyz/taiko-mono/commit/da5a03900409ded0488058068092d6d2ec9a0b26)) +* **relayer:** regen bindings, make changes for stateVars, add isMessageReceived ([#16664](https://github.com/taikoxyz/taiko-mono/issues/16664)) ([66a35e2](https://github.com/taikoxyz/taiko-mono/commit/66a35e29aa3c688ac57ddd40a24b59aef45beff6)) + + +### Bug Fixes + +* **blobstorage, eventindexer, relayer:** remove username and password ([#16700](https://github.com/taikoxyz/taiko-mono/issues/16700)) ([35adb3d](https://github.com/taikoxyz/taiko-mono/commit/35adb3d7f5a79200573c1f6822586ea221a29dfa)) +* **blobstorage:** blockId determination by timestamp ([#16614](https://github.com/taikoxyz/taiko-mono/issues/16614)) ([eba19c7](https://github.com/taikoxyz/taiko-mono/commit/eba19c766e419d7744b0d6307e103261e1dd3241)) +* **blobstorage:** fix command instructions and missing local_docker folder in packages/blobstorage ([#16464](https://github.com/taikoxyz/taiko-mono/issues/16464)) ([a7e7f1a](https://github.com/taikoxyz/taiko-mono/commit/a7e7f1af40165cb27d8e10eab47f8f0f2ae458a1)) diff --git a/packages/blobstorage/package.json b/packages/blobstorage/package.json index a4b5d83ff9e..dbee5ad7ee7 100644 --- a/packages/blobstorage/package.json +++ b/packages/blobstorage/package.json @@ -1,4 +1,4 @@ { "name": "@taikoxyz/blobstorage", - "version": "0.1.0" + "version": "0.2.0" } From d7fc20f146e1ede97cf13776934cc12aa2e7369d Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Mon, 13 May 2024 22:00:32 -0400 Subject: [PATCH 092/100] ci(repo): update pnpm version in ci (#17154) --- .github/actions/install-pnpm-dependencies/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/install-pnpm-dependencies/action.yml b/.github/actions/install-pnpm-dependencies/action.yml index d3fec869f9e..b4facc2e4a4 100644 --- a/.github/actions/install-pnpm-dependencies/action.yml +++ b/.github/actions/install-pnpm-dependencies/action.yml @@ -10,10 +10,10 @@ runs: node-version: 20 - name: Install pnpm - uses: pnpm/action-setup@v3 + uses: pnpm/action-setup@v4 id: pnpm-install with: - version: 8 + version: 9 run_install: false - name: Get pnpm store directory From 0ef7b8caa4878fa9fac2387b9e5029c8dbf6a152 Mon Sep 17 00:00:00 2001 From: taiko-bot <160625009+taiko-kitty@users.noreply.github.com> Date: Mon, 13 May 2024 22:13:52 -0400 Subject: [PATCH 093/100] chore(main): release supplementary-contracts 1.0.0 (#17155) Co-authored-by: d1onys1us <13951458+d1onys1us@users.noreply.github.com> --- .release-please-manifest.json | 3 ++- packages/supplementary-contracts/CHANGELOG.md | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 packages/supplementary-contracts/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a66aae68d0b..c822367549e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -10,5 +10,6 @@ "packages/protocol": "1.5.0", "packages/relayer": "0.12.0", "packages/taiko-client": "0.22.0", - "packages/taikoon": "1.0.0" + "packages/taikoon": "1.0.0", + "packages/supplementary-contracts": "1.0.0" } diff --git a/packages/supplementary-contracts/CHANGELOG.md b/packages/supplementary-contracts/CHANGELOG.md new file mode 100644 index 00000000000..2a421727fc0 --- /dev/null +++ b/packages/supplementary-contracts/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +## 1.0.0 (2024-05-14) + + +### Features + +* **repo:** add `taikoon` and `supplementary-contracts` sub packages ([#16810](https://github.com/taikoxyz/taiko-mono/issues/16810)) ([1140bbf](https://github.com/taikoxyz/taiko-mono/commit/1140bbf333942b03c0be72a00f988f3dcbda517e)) +* **supplementary-contracts:** add TokenUnlocking ([#16830](https://github.com/taikoxyz/taiko-mono/issues/16830)) ([5fff5a7](https://github.com/taikoxyz/taiko-mono/commit/5fff5a714935410978efadf8c9b9ecbed49d7186)) +* **supplementary-contracts:** allow addresses besides the TokenUnlocking.owner to vest ([#17105](https://github.com/taikoxyz/taiko-mono/issues/17105)) ([165e282](https://github.com/taikoxyz/taiko-mono/commit/165e28279e6c88a7dae20153f0cddcf1c07c6066)) +* **supplementary-contracts:** make unlocking deployments and vesting scriptable ([#16918](https://github.com/taikoxyz/taiko-mono/issues/16918)) ([9cf307d](https://github.com/taikoxyz/taiko-mono/commit/9cf307d019e5e0de05ec9bcfef54e1a5140877b2)) +* **supplementary-contracts:** refactor TokenUnlocking for simplicity and enable delegation ([#16892](https://github.com/taikoxyz/taiko-mono/issues/16892)) ([bcb0067](https://github.com/taikoxyz/taiko-mono/commit/bcb0067e84681b59ca23d4c26055cf3334452bc5)) From 75ea1317e91931f6e35e52c899efac7c7d21aa5e Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Tue, 14 May 2024 05:01:09 -0400 Subject: [PATCH 094/100] chore(repo): update readme and remove extraneous file (#17157) --- README.md | 10 +++++++--- vercel.json | 5 ----- 2 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 vercel.json diff --git a/README.md b/README.md index fc31a296e8a..00a09c3b58a 100644 --- a/README.md +++ b/README.md @@ -39,14 +39,17 @@ taiko-mono/ │ ├── blob-storage: Blob storage service. │ ├── branding: Taiko branding materials. │ ├── bridge-ui: Bridge UI. +│ ├── docs-site: End user documentation site. │ ├── eventindexer: Event indexer. │ ├── fork-diff: Fork diff page. │ ├── guardian-prover-health-check: Guardian prover health check service. │ ├── guardian-prover-health-check-ui: Guardian prover health check UI. │ ├── protocol: Taiko protocol smart contracts. │ ├── relayer: Bridge backend relayer. +│ ├── supplementary-contracts: Supplementary smart contracts that are not part of the Taiko rollup protocol. +│ ├── taiko-client: Taiko client implementation in Go. │ ├── taikoon: Taikoon NFT contracts. -│ └── supplementary-contracts: Supplementary smart contracts that are not part of the Taiko rollup protocol. +│ └── taikoon-ui: Taikoon NFT UI. ... @@ -56,9 +59,10 @@ If you find a bug or have a feature request, please [open an issue](https://gith ## Contributing -Check out [CONTRIBUTING.md](./CONTRIBUTING.md) for details on how to contribute. You can also check out our grants cycle at [grants.taiko.xyz](https://grants.taiko.xyz). +> [!WARNING] +> Please refrain from submitting typo/comment-only pull requests with the expectation of receiving TKO airdrops. -⚠️ Please refrain from submitting typo/comment-only pull requests with the expectation of receiving TKO airdrops. +Check out [CONTRIBUTING.md](./CONTRIBUTING.md) for details on how to contribute. You can also check out our grants cycle at [grants.taiko.xyz](https://grants.taiko.xyz). ## Getting support diff --git a/vercel.json b/vercel.json deleted file mode 100644 index 7ae9a3de54d..00000000000 --- a/vercel.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "github": { - "silent": true - } -} From b7868895dfef18d0286f9f6ac9d2f8cc51fa2989 Mon Sep 17 00:00:00 2001 From: d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Tue, 14 May 2024 05:01:35 -0400 Subject: [PATCH 095/100] ci(repo): trigger on dependabot and restrict docker build to main (#17156) --- .github/workflows/eventindexer.yml | 4 +++- .github/workflows/guardian-prover-health-check.yml | 4 +++- .github/workflows/relayer.yml | 4 +++- .github/workflows/taiko-client--test.yml | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml index 9a3d9c75f52..6f7fc1ad047 100644 --- a/.github/workflows/eventindexer.yml +++ b/.github/workflows/eventindexer.yml @@ -8,6 +8,8 @@ on: pull_request: paths: - "packages/eventindexer/**" + - "go.mod" + - "go.sum" jobs: lint-eventindexer: @@ -54,7 +56,7 @@ jobs: push-eventindexer-docker-image: # only push docker image on PR merge to main - if: ${{ github.event }} == 'push' + if: ${{ github.event == 'push' && github.ref == 'refs/heads/main' }} name: Build and push docker image runs-on: [taiko-runner] diff --git a/.github/workflows/guardian-prover-health-check.yml b/.github/workflows/guardian-prover-health-check.yml index c7c76f93062..71351681b18 100644 --- a/.github/workflows/guardian-prover-health-check.yml +++ b/.github/workflows/guardian-prover-health-check.yml @@ -8,6 +8,8 @@ on: pull_request: paths: - "packages/guardian-prover-health-check/**" + - "go.mod" + - "go.sum" jobs: lint-guardian-prover-health-check: @@ -54,7 +56,7 @@ jobs: push-guardian-prover-health-check-docker-image: # only push docker image on PR merge to main - if: ${{ github.event }} == 'push' + if: ${{ github.event == 'push' && github.ref == 'refs/heads/main' }} name: Build and push docker image runs-on: [taiko-runner] diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml index aab65a2bc63..dfe7339b797 100644 --- a/.github/workflows/relayer.yml +++ b/.github/workflows/relayer.yml @@ -8,6 +8,8 @@ on: pull_request: paths: - "packages/relayer/**" + - "go.mod" + - "go.sum" jobs: lint-relayer: @@ -54,7 +56,7 @@ jobs: push-relayer-docker-image: # only push docker image on PR merge to main - if: ${{ github.event }} == 'push' + if: ${{ github.event == 'push' && github.ref == 'refs/heads/main' }} name: Build and push docker image runs-on: [taiko-runner] diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index 8b1b508fdad..44664f18a40 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -8,6 +8,8 @@ on: pull_request: paths: - "packages/taiko-client/**" + - "go.mod" + - "go.sum" jobs: lint: From 8463c0d4e1f2fafd7bc48ba7c7d50eb868136827 Mon Sep 17 00:00:00 2001 From: Karim <162329697+kimo-ice@users.noreply.github.com> Date: Tue, 14 May 2024 11:26:07 +0200 Subject: [PATCH 096/100] fix(repo): update new paths in ui workflows (#17161) Co-authored-by: Karim --- .github/workflows/bridge-ui.yml | 8 ++++---- .github/workflows/guardian-prover-health-check-ui.yml | 8 ++++---- .github/workflows/taikoon-ui.yml | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/bridge-ui.yml b/.github/workflows/bridge-ui.yml index cd3764591fc..79b8d6cc619 100644 --- a/.github/workflows/bridge-ui.yml +++ b/.github/workflows/bridge-ui.yml @@ -15,13 +15,13 @@ on: jobs: build-and-test: - uses: ./.github/workflows/bridge-ui-ci.yml + uses: ./.github/workflows/bridge-ui--ci.yml # Deployment name follow the pattern: deploy___ deploy_bridge-ui_hekla_preview: if: ${{ github.ref_type != 'tag' }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: "preview" flags: "" @@ -33,7 +33,7 @@ jobs: deploy_bridge-ui_devnet_preview: if: ${{ github.ref_type != 'tag' }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: "preview" flags: "" @@ -45,7 +45,7 @@ jobs: deploy_bridge-ui_hekla_production: if: ${{ startsWith(github.ref, 'refs/tags/bridge-ui-v') }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: "production" flags: "--prod" diff --git a/.github/workflows/guardian-prover-health-check-ui.yml b/.github/workflows/guardian-prover-health-check-ui.yml index 5a3150341b2..43345aeff1c 100644 --- a/.github/workflows/guardian-prover-health-check-ui.yml +++ b/.github/workflows/guardian-prover-health-check-ui.yml @@ -12,13 +12,13 @@ on: jobs: build-and-test: - uses: ./.github/workflows/guardians-ui-ci.yml + uses: ./.github/workflows/guardian-prover-health-check-ui--ci.yml # Deployment name follow the pattern: deploy___ deploy_guardians-ui_hekla_preview: if: ${{ github.ref_name != 'main' }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: "preview" flags: "" @@ -30,7 +30,7 @@ jobs: deploy_guardians-ui_devnet_preview: if: ${{ github.ref_name != 'main' }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: "preview" flags: "" @@ -42,7 +42,7 @@ jobs: deploy_guardians-ui_hekla_production: if: ${{ github.ref_name == 'main' && contains(github.ref, 'refs/tags/guardians-ui-') }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: "production" flags: "--prod" diff --git a/.github/workflows/taikoon-ui.yml b/.github/workflows/taikoon-ui.yml index 7403198345f..b9013d7746e 100644 --- a/.github/workflows/taikoon-ui.yml +++ b/.github/workflows/taikoon-ui.yml @@ -12,13 +12,13 @@ on: jobs: build-and-test: - uses: ./.github/workflows/taikoon-ui-ci.yml + uses: ./.github/workflows/taikoon-ui--ci.yml # Deployment name follow the pattern: deploy___ deploy_taikoon-ui_mainnet_preview: if: ${{ github.ref_name != 'main' }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: 'preview' flags: '' @@ -30,7 +30,7 @@ jobs: deploy_taikoon-ui_mainnet_production: if: ${{ github.ref_name == 'main' && contains(github.ref, 'refs/tags/taikoon-ui-') }} needs: build-and-test - uses: ./.github/workflows/vercel-deploy.yml + uses: ./.github/workflows/repo--vercel-deploy.yml with: environment: 'production' flags: '--prod' From e96559762d844b042bbf23de878883d3b647671a Mon Sep 17 00:00:00 2001 From: Bernat Canal Garceran Date: Tue, 14 May 2024 12:18:11 +0200 Subject: [PATCH 097/100] feat(taikoon): ui qa checklist (#16870) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: bearni95 Co-authored-by: Karim --- .github/workflows/taikoon-ui--ci.yml | 13 +- .github/workflows/taikoon-ui.yml | 8 +- .../docs/network-reference/addresses.md | 68 +- .../docs/resources/prover-marketplace.md | 4 +- packages/taikoon-ui/.env.example | 5 +- packages/taikoon-ui/package.json | 6 +- .../AnimatedArrow/AnimatedArrow.svelte | 45 + .../src/components/AnimatedArrow/index.ts | 1 + .../AnimatedTaikoon/AnimatedTaikoon.svelte | 20 +- .../components/Collection/Collection.svelte | 28 +- .../src/components/Collection/classes.ts | 8 + .../ConnectButton/ConnectButton.svelte | 53 +- .../src/components/ConnectButton/classes.ts | 24 +- .../src/components/Header/Header.svelte | 56 +- .../src/components/Header/classes.ts | 31 +- .../src/components/Mint/Mint.svelte | 64 +- .../taikoon-ui/src/components/Mint/classes.ts | 57 +- .../components/MobileMenu/MobileMenu.svelte | 6 +- .../src/components/NftSlider/NftSlider.svelte | 50 + .../src/components/NftSlider/classes.ts | 13 + .../src/components/NftSlider/index.ts | 1 + .../components/core/Dropdown/Dropdown.svelte | 29 - .../core/Dropdown/DropdownPanel.svelte | 37 - .../src/components/core/Dropdown/index.ts | 1 - .../core/IconButton/IconButton.svelte | 6 +- .../core/Icons/AngleDownSolid.svelte | 10 +- .../components/core/Icons/AngleLeft.svelte | 85 + .../components/core/Icons/AngleRight.svelte | 85 + .../components/core/Icons/ArrowDown.svelte | 10 +- .../core/Icons/ArrowRightFilled.svelte | 20 +- .../core/Icons/CircleUserRegular.svelte | 10 +- .../components/core/Icons/DiscordLogo.svelte | 12 +- .../src/components/core/Icons/Menu.svelte | 10 +- .../components/core/Icons/MinusSign.svelte | 10 +- .../components/core/Icons/MirrorLogo.svelte | 12 +- .../src/components/core/Icons/Moon.svelte | 12 +- .../src/components/core/Icons/PlusSign.svelte | 10 +- .../src/components/core/Icons/Sun.svelte | 12 +- .../components/core/Icons/TaikoLogo.svelte | 12 +- .../components/core/Icons/TwitterLogo.svelte | 12 +- .../components/core/Icons/UpRightArrow.svelte | 12 +- .../components/core/Icons/YoutubeLogo.svelte | 12 +- .../src/components/core/Icons/index.ts | 4 + .../components/core/InfoRow/InfoRow.svelte | 4 +- .../ResponsiveController.svelte | 29 +- .../components/core/Section/Section.svelte | 11 +- .../core/Section/SectionContainer.svelte | 13 +- .../src/components/core/Select/Select.svelte | 49 - .../components/core/Select/SelectPanel.svelte | 32 - .../src/components/core/Select/index.ts | 1 - .../src/components/core/Toast/Toast.svelte | 3 +- .../MintConfirmation.modal.svelte | 79 +- .../modals/MintConfirmation.modal/classes.ts | 73 +- .../PostMint.modal/PostMint.modal.svelte | 67 + .../modals/PostMint.modal/classes.ts | 41 + .../TaikoonDetail.modal.svelte | 3 +- .../taikoon-ui/src/components/modals/index.ts | 1 + .../sections/Collapsible.section.svelte | 13 +- .../sections/Countdown.section.svelte | 101 +- .../components/sections/Faq.section.svelte | 12 + .../components/sections/Footer.section.svelte | 38 +- .../sections/Heading.section.svelte | 31 +- .../sections/Information.section.svelte | 12 +- .../src/components/sections/TimerItem.svelte | 27 - .../src/components/sections/index.ts | 1 + .../taikoon-ui/src/generated/abi/index.ts | 10 +- packages/taikoon-ui/src/i18n/en.json | 20 +- .../taikoon-ui/src/lib/connect/web3modal.ts | 4 +- .../src/lib/token/estimateMintGasCost.ts | 5 +- .../taikoon-ui/src/lib/util/balance.test.ts | 2 +- packages/taikoon-ui/src/lib/util/balance.ts | 2 +- .../lib/util/checkForPausedContracts.test.ts | 83 - .../src/lib/util/checkForPausedContracts.ts | 7 - .../taikoon-ui/src/lib/util/classNames.ts | 2 +- .../src/lib/util/fetchTransactionReceipt.ts | 31 - .../src/lib/util/getConnectedWallet.test.ts | 5 - .../src/lib/util/getConnectedWallet.ts | 14 - .../src/lib/util/groupNFTByCollection.ts | 13 - .../src/lib/util/isCountdownActive.ts | 6 + .../src/lib/util/jsonParseWithDefault.test.ts | 18 - .../src/lib/util/jsonParseWithDefault.ts | 9 - packages/taikoon-ui/src/lib/util/logger.ts | 5 - .../src/lib/util/mergeTransactions.test.ts | 162 - .../src/lib/util/mergeTransactions.ts | 31 - .../src/lib/util/parseNFTMetadata.ts | 97 - .../lib/util/positionElementByTarget.test.ts | 60 - .../src/lib/util/positionElementByTarget.ts | 45 - .../taikoon-ui/src/lib/util/resolveIPFSUri.ts | 31 - .../src/lib/util/safeReadContract.test.ts | 35 - .../src/lib/util/safeReadContract.ts | 29 - .../src/lib/util/shortenAddress.test.ts | 12 - .../taikoon-ui/src/lib/util/shortenAddress.ts | 2 +- packages/taikoon-ui/src/lib/wagmi/watcher.ts | 10 +- packages/taikoon-ui/src/routes/+layout.svelte | 18 +- packages/taikoon-ui/src/routes/+page.svelte | 22 +- .../src/routes/collection/+page.svelte | 6 + .../routes/collection/[address]/+page.svelte | 11 +- .../taikoon-ui/src/routes/mint/+page.svelte | 18 +- .../taikoon-ui/src/stores/bridgedToken.ts | 32 - packages/taikoon-ui/src/stores/index.ts | 2 - packages/taikoon-ui/src/stores/metadata.ts | 38 - packages/taikoon-ui/src/stores/mint.ts | 3 + packages/taikoon-ui/src/stores/pageScroll.ts | 3 + .../src/stores/pendingTransactions.ts | 94 - packages/taikoon-ui/src/stores/relayerApi.ts | 7 - .../taikoon-ui/src/stores/taikoonDetail.ts | 2 + packages/taikoon-ui/src/stores/tokenInfo.ts | 50 - .../taikoon-ui/src/tests/mocks/addresses.ts | 44 + packages/taikoon-ui/src/tests/mocks/blocks.ts | 8 + packages/taikoon-ui/src/tests/mocks/chains.ts | 6 + .../src/tests/mocks/env.static.public.ts | 3 + packages/taikoon-ui/src/tests/mocks/index.ts | 4 + packages/taikoon-ui/src/tests/mocks/proofs.ts | 1 + packages/taikoon-ui/src/tests/setup.ts | 34 + packages/taikoon-ui/svelte.config.js | 3 +- packages/taikoon-ui/tailwind.config.js | 19 +- .../taikoon-ui/test-results/.last-run.json | 4 + packages/taikoon-ui/tests/test.ts | 6 - packages/taikoon-ui/tsconfig.json | 1 + packages/taikoon-ui/vite.config.ts | 2 + packages/taikoon-ui/vitest.config.ts | 28 + pnpm-lock.yaml | 4496 ++++++----------- 122 files changed, 2769 insertions(+), 4571 deletions(-) create mode 100644 packages/taikoon-ui/src/components/AnimatedArrow/AnimatedArrow.svelte create mode 100644 packages/taikoon-ui/src/components/AnimatedArrow/index.ts create mode 100644 packages/taikoon-ui/src/components/NftSlider/NftSlider.svelte create mode 100644 packages/taikoon-ui/src/components/NftSlider/classes.ts create mode 100644 packages/taikoon-ui/src/components/NftSlider/index.ts delete mode 100644 packages/taikoon-ui/src/components/core/Dropdown/Dropdown.svelte delete mode 100644 packages/taikoon-ui/src/components/core/Dropdown/DropdownPanel.svelte delete mode 100644 packages/taikoon-ui/src/components/core/Dropdown/index.ts create mode 100644 packages/taikoon-ui/src/components/core/Icons/AngleLeft.svelte create mode 100644 packages/taikoon-ui/src/components/core/Icons/AngleRight.svelte delete mode 100644 packages/taikoon-ui/src/components/core/Select/Select.svelte delete mode 100644 packages/taikoon-ui/src/components/core/Select/SelectPanel.svelte delete mode 100644 packages/taikoon-ui/src/components/core/Select/index.ts create mode 100644 packages/taikoon-ui/src/components/modals/PostMint.modal/PostMint.modal.svelte create mode 100644 packages/taikoon-ui/src/components/modals/PostMint.modal/classes.ts create mode 100644 packages/taikoon-ui/src/components/sections/Faq.section.svelte delete mode 100644 packages/taikoon-ui/src/components/sections/TimerItem.svelte delete mode 100644 packages/taikoon-ui/src/lib/util/checkForPausedContracts.test.ts delete mode 100644 packages/taikoon-ui/src/lib/util/checkForPausedContracts.ts delete mode 100644 packages/taikoon-ui/src/lib/util/fetchTransactionReceipt.ts delete mode 100644 packages/taikoon-ui/src/lib/util/getConnectedWallet.test.ts delete mode 100644 packages/taikoon-ui/src/lib/util/getConnectedWallet.ts delete mode 100644 packages/taikoon-ui/src/lib/util/groupNFTByCollection.ts create mode 100644 packages/taikoon-ui/src/lib/util/isCountdownActive.ts delete mode 100644 packages/taikoon-ui/src/lib/util/jsonParseWithDefault.test.ts delete mode 100644 packages/taikoon-ui/src/lib/util/jsonParseWithDefault.ts delete mode 100644 packages/taikoon-ui/src/lib/util/logger.ts delete mode 100644 packages/taikoon-ui/src/lib/util/mergeTransactions.test.ts delete mode 100644 packages/taikoon-ui/src/lib/util/mergeTransactions.ts delete mode 100644 packages/taikoon-ui/src/lib/util/parseNFTMetadata.ts delete mode 100644 packages/taikoon-ui/src/lib/util/positionElementByTarget.test.ts delete mode 100644 packages/taikoon-ui/src/lib/util/positionElementByTarget.ts delete mode 100644 packages/taikoon-ui/src/lib/util/resolveIPFSUri.ts delete mode 100644 packages/taikoon-ui/src/lib/util/safeReadContract.test.ts delete mode 100644 packages/taikoon-ui/src/lib/util/safeReadContract.ts delete mode 100644 packages/taikoon-ui/src/lib/util/shortenAddress.test.ts delete mode 100644 packages/taikoon-ui/src/stores/bridgedToken.ts delete mode 100644 packages/taikoon-ui/src/stores/metadata.ts create mode 100644 packages/taikoon-ui/src/stores/pageScroll.ts delete mode 100644 packages/taikoon-ui/src/stores/pendingTransactions.ts delete mode 100644 packages/taikoon-ui/src/stores/relayerApi.ts delete mode 100644 packages/taikoon-ui/src/stores/tokenInfo.ts create mode 100644 packages/taikoon-ui/src/tests/mocks/addresses.ts create mode 100644 packages/taikoon-ui/src/tests/mocks/blocks.ts create mode 100644 packages/taikoon-ui/src/tests/mocks/chains.ts create mode 100644 packages/taikoon-ui/src/tests/mocks/env.static.public.ts create mode 100644 packages/taikoon-ui/src/tests/mocks/index.ts create mode 100644 packages/taikoon-ui/src/tests/mocks/proofs.ts create mode 100644 packages/taikoon-ui/src/tests/setup.ts create mode 100644 packages/taikoon-ui/test-results/.last-run.json delete mode 100644 packages/taikoon-ui/tests/test.ts create mode 100644 packages/taikoon-ui/vitest.config.ts diff --git a/.github/workflows/taikoon-ui--ci.yml b/.github/workflows/taikoon-ui--ci.yml index 95c3942c1e9..8aecc97c8bd 100644 --- a/.github/workflows/taikoon-ui--ci.yml +++ b/.github/workflows/taikoon-ui--ci.yml @@ -18,17 +18,20 @@ jobs: - name: Install pnpm dependencies uses: ./.github/actions/install-pnpm-dependencies + # This step is needed because the .env file is not committed to the repository + # and the Svelte check complains about not finding the exports from $env/static/public, + # which will be generated based on the .env file when running `svelte-kit sync` + - name: Copy .env.example to .env + working-directory: ./packages/taikoon-ui + run: cp .env.example .env - name: Frontend build working-directory: ./packages/taikoon-ui - run: | - export PUBLIC_WALLETCONNECT_PROJECT_ID="fake_project_id" - export PUBLIC_IPFS_GATEWAY="https://ipfs.io/ipfs/" - pnpm build + run: pnpm build - name: Svelte check working-directory: ./packages/taikoon-ui - run: pnpm svelte:check + run: pnpm check - name: Check formatting working-directory: ./packages/taikoon-ui diff --git a/.github/workflows/taikoon-ui.yml b/.github/workflows/taikoon-ui.yml index b9013d7746e..5e9a9bb9e92 100644 --- a/.github/workflows/taikoon-ui.yml +++ b/.github/workflows/taikoon-ui.yml @@ -20,8 +20,8 @@ jobs: needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: - environment: 'preview' - flags: '' + environment: "preview" + flags: "" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_TAIKOON_UI_MAINNET }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} @@ -32,8 +32,8 @@ jobs: needs: build-and-test uses: ./.github/workflows/repo--vercel-deploy.yml with: - environment: 'production' - flags: '--prod' + environment: "production" + flags: "--prod" secrets: vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_TAIKOON_UI_MAINNET }} vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} diff --git a/packages/docs-site/src/content/docs/network-reference/addresses.md b/packages/docs-site/src/content/docs/network-reference/addresses.md index 72a378d11c9..26b72b25ba8 100644 --- a/packages/docs-site/src/content/docs/network-reference/addresses.md +++ b/packages/docs-site/src/content/docs/network-reference/addresses.md @@ -5,44 +5,42 @@ description: Network reference page describing various important addresses on Ta ## Ethereum (Holesky) contracts - -| Contract Name (Shared) | Address | -| ----------------------- | -------------------------------------------- | -| SharedAddressManager | `0x7D3338FD5e654CAC5B10028088624CA1D64e74f7` | -| TaikoToken | `0x6490E12d480549D333499236fF2Ba6676C296011` | -| SignalService | `0x6Fc2fe9D9dd0251ec5E0727e826Afbb0Db2CBe0D` | -| Bridge | `0xA098b76a3Dd499D3F6D58D8AcCaFC8efBFd06807` | -| ERC20Vault | `0x2259662ed5dE0E09943Abe701bc5f5a108eABBAa` | -| ERC721Vault | `0x046b82D9010b534c716742BE98ac3FEf3f2EC99f` | -| ERC1155Vault | `0x9Ae5945Ab34f6182F75E16B73e037421F341fEe3` | - - -| Contract Name (Rollup-Specific) | Address | -| ----------------------- | -------------------------------------------- | -| TaikoL1 | `0x79C9109b764609df928d16fC4a91e9081F7e87DB` | -| RollupAddressManager | `0x1F027871F286Cf4B7F898B21298E7B3e090a8403` | -| GuardianProver | `0x92F195a8702da2104aE8E3E10779176E7C35d6BC` | -| AssignmentHook | `0x9e640a6aadf4f664CF467B795c31332f44AcBe6c` | -| SgxVerifier | `0x532EFBf6D62720D0B2a2Bb9d11066E8588cAE6D9` | -| AutomataDcapAttestation | `0xC6cD3878Fc56F2b2BaB0769C580fc230A95e1398` | -| PemCertChainLib | `0x08d7865e7F534d743Aba5874A9AD04bcB223a92E` | +| Contract Name (Shared) | Address | +| ---------------------- | -------------------------------------------- | +| SharedAddressManager | `0x7D3338FD5e654CAC5B10028088624CA1D64e74f7` | +| TaikoToken | `0x6490E12d480549D333499236fF2Ba6676C296011` | +| SignalService | `0x6Fc2fe9D9dd0251ec5E0727e826Afbb0Db2CBe0D` | +| Bridge | `0xA098b76a3Dd499D3F6D58D8AcCaFC8efBFd06807` | +| ERC20Vault | `0x2259662ed5dE0E09943Abe701bc5f5a108eABBAa` | +| ERC721Vault | `0x046b82D9010b534c716742BE98ac3FEf3f2EC99f` | +| ERC1155Vault | `0x9Ae5945Ab34f6182F75E16B73e037421F341fEe3` | + +| Contract Name (Rollup-Specific) | Address | +| ------------------------------- | -------------------------------------------- | +| TaikoL1 | `0x79C9109b764609df928d16fC4a91e9081F7e87DB` | +| RollupAddressManager | `0x1F027871F286Cf4B7F898B21298E7B3e090a8403` | +| GuardianProver | `0x92F195a8702da2104aE8E3E10779176E7C35d6BC` | +| AssignmentHook | `0x9e640a6aadf4f664CF467B795c31332f44AcBe6c` | +| SgxVerifier | `0x532EFBf6D62720D0B2a2Bb9d11066E8588cAE6D9` | +| AutomataDcapAttestation | `0xC6cD3878Fc56F2b2BaB0769C580fc230A95e1398` | +| PemCertChainLib | `0x08d7865e7F534d743Aba5874A9AD04bcB223a92E` | ## Taiko (Hekla) contracts -| Contract Name (Shared) | Address | -| -------------------- | -------------------------------------------- | -| Bridge | `0x1670090000000000000000000000000000000001` | -| ERC20Vault | `0x1670090000000000000000000000000000000002` | -| ERC721Vault | `0x1670090000000000000000000000000000000003` | -| ERC1155Vault | `0x1670090000000000000000000000000000000004` | -| SignalService | `0x1670090000000000000000000000000000000005` | -| SharedAddressManager | `0x1670090000000000000000000000000000000006` | - -| Contract Name (Rollup-Specific) | Address | -| -------------------- | -------------------------------------------- | -| TaikoL2 | `0x1670090000000000000000000000000000010001` | -| RollupAddressManager | `0x1670090000000000000000000000000000010002` | -| BridgedTaikoToken | `0xebf1f662bf092ff0d913a9fe9d7179b0efef1611` | +| Contract Name (Shared) | Address | +| ---------------------- | -------------------------------------------- | +| Bridge | `0x1670090000000000000000000000000000000001` | +| ERC20Vault | `0x1670090000000000000000000000000000000002` | +| ERC721Vault | `0x1670090000000000000000000000000000000003` | +| ERC1155Vault | `0x1670090000000000000000000000000000000004` | +| SignalService | `0x1670090000000000000000000000000000000005` | +| SharedAddressManager | `0x1670090000000000000000000000000000000006` | + +| Contract Name (Rollup-Specific) | Address | +| ------------------------------- | -------------------------------------------- | +| TaikoL2 | `0x1670090000000000000000000000000000010001` | +| RollupAddressManager | `0x1670090000000000000000000000000000010002` | +| BridgedTaikoToken | `0xebf1f662bf092ff0d913a9fe9d7179b0efef1611` | ## Rollup contracts owner diff --git a/packages/docs-site/src/content/docs/resources/prover-marketplace.md b/packages/docs-site/src/content/docs/resources/prover-marketplace.md index 7aa1fa84af6..bef07248401 100644 --- a/packages/docs-site/src/content/docs/resources/prover-marketplace.md +++ b/packages/docs-site/src/content/docs/resources/prover-marketplace.md @@ -9,5 +9,5 @@ Any provers added to this page must be tested by the team to ensure they have go ## Prover marketplace list -| Name | Endpoint | -| ------ | ------------------------------------- | +| Name | Endpoint | +| ---- | -------- | diff --git a/packages/taikoon-ui/.env.example b/packages/taikoon-ui/.env.example index a9f22166706..b6f13b2a3cb 100644 --- a/packages/taikoon-ui/.env.example +++ b/packages/taikoon-ui/.env.example @@ -1,2 +1,3 @@ -PUBLIC_WALLETCONNECT_PROJECT_ID= -PUBLIC_IPFS_GATEWAY= +PUBLIC_WALLETCONNECT_PROJECT_ID=fake +PUBLIC_IPFS_GATEWAY=https://taikoons-fake-ipfs-gateway.vercel.app/ipfs/ +PUBLIC_LAUNCH_DATE=2024-05-26T00:00:00 diff --git a/packages/taikoon-ui/package.json b/packages/taikoon-ui/package.json index abbb4b70cfa..b1d29c9e3b7 100644 --- a/packages/taikoon-ui/package.json +++ b/packages/taikoon-ui/package.json @@ -7,7 +7,8 @@ "build": "vite build", "preview": "vite preview", "test": "npm run test:integration && npm run test:unit", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "svelte:check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check": "npm run svelte:check", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check ./src && eslint ./src --fix", "format": "prettier --write ./src", @@ -23,10 +24,12 @@ "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", "@types/eslint": "^8.56.0", + "@types/jest": "^29.5.12", "@types/node": "^20.12.7", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "convert-csv-to-json": "^2.44.0", + "dotenv": "^16.4.5", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-simple-import-sort": "^12.0.0", @@ -65,7 +68,6 @@ "debug": "^4.3.4", "minidenticons": "^4.2.1", "postcss": "^8.4.38", - "svelte-countdown": "^1.1.2", "tailwindcss": "^3.4.3", "viem": "^2.9.29" } diff --git a/packages/taikoon-ui/src/components/AnimatedArrow/AnimatedArrow.svelte b/packages/taikoon-ui/src/components/AnimatedArrow/AnimatedArrow.svelte new file mode 100644 index 00000000000..baccf0fdbe2 --- /dev/null +++ b/packages/taikoon-ui/src/components/AnimatedArrow/AnimatedArrow.svelte @@ -0,0 +1,45 @@ + + +
      +
      + + +
      +
      diff --git a/packages/taikoon-ui/src/components/AnimatedArrow/index.ts b/packages/taikoon-ui/src/components/AnimatedArrow/index.ts new file mode 100644 index 00000000000..aebf67107f0 --- /dev/null +++ b/packages/taikoon-ui/src/components/AnimatedArrow/index.ts @@ -0,0 +1 @@ +export { default as AnimatedArrow } from './AnimatedArrow.svelte'; diff --git a/packages/taikoon-ui/src/components/AnimatedTaikoon/AnimatedTaikoon.svelte b/packages/taikoon-ui/src/components/AnimatedTaikoon/AnimatedTaikoon.svelte index 303172f75fb..81b78ae6e53 100644 --- a/packages/taikoon-ui/src/components/AnimatedTaikoon/AnimatedTaikoon.svelte +++ b/packages/taikoon-ui/src/components/AnimatedTaikoon/AnimatedTaikoon.svelte @@ -1,11 +1,15 @@ - {#if connected} @@ -56,22 +68,31 @@ alt="chain icon" class={chainIconClasses} src={(currentChainId && getChainImage(currentChainId)) || 'chains/ethereum.svg'} /> - {`Ξ ${parseFloat(formatEther(balance)).toFixed(3)}`} - - {#await shortenAddress(accountAddress, 4, 6)} - ... - {:then displayAddress} - {displayAddress} - {/await} - - + {#if windowSize !== 'md'} + {`Ξ ${parseFloat(formatEther(balance)).toFixed(3)}`} + + {#await shortenAddress(accountAddress)} + ... + {:then displayAddress} + {displayAddress} + {/await} + + {/if} {:else} - + {/if} + + diff --git a/packages/taikoon-ui/src/components/ConnectButton/classes.ts b/packages/taikoon-ui/src/components/ConnectButton/classes.ts index 16c70cad112..cb9f221d887 100644 --- a/packages/taikoon-ui/src/components/ConnectButton/classes.ts +++ b/packages/taikoon-ui/src/components/ConnectButton/classes.ts @@ -6,6 +6,7 @@ export const connectedButtonClasses = classNames( 'rounded-full', 'flex', 'items-center', + 'h-[44px]', 'gap-2', 'font-bold', ); @@ -23,9 +24,28 @@ export const buttonContentClasses = classNames( export const addressClasses = classNames( 'flex', 'rounded-full', - 'p-2.5', + 'px-2.5', + 'py-2', 'bg-neutral-background', 'border border-divider-border', ); -export const chainIconClasses = classNames('w-[24px]', 'ml-1'); +export const chainIconClasses = classNames( + 'w-[24px]', + 'ml-1', + //'md:ml-[0]', + 'md:mx-2', +); + +export const connectButtonClasses = classNames( + 'w-max', + 'h-[44px]', + 'bg-primary', + 'rounded-full', + 'flex flex-row', + 'justify-center', + 'items-center', + 'px-4', + 'gap-4', + 'font-medium', +); diff --git a/packages/taikoon-ui/src/components/Header/Header.svelte b/packages/taikoon-ui/src/components/Header/Header.svelte index 614123f5bcb..380ec1980be 100644 --- a/packages/taikoon-ui/src/components/Header/Header.svelte +++ b/packages/taikoon-ui/src/components/Header/Header.svelte @@ -7,28 +7,37 @@ import { ResponsiveController } from '$components/core/ResponsiveController'; import { MobileMenu } from '$components/MobileMenu'; import { classNames } from '$lib/util/classNames'; + import isCountdownActive from '$lib/util/isCountdownActive'; import { account } from '$stores/account'; import { connectedSourceChain } from '$stores/network'; - import { Button } from '$ui/Button'; + import { pageScroll } from '$stores/pageScroll'; import { config } from '$wagmi-config'; + import type { IAddress } from '../../types'; import { ConnectButton } from '../ConnectButton'; import { ThemeButton } from '../ThemeButton'; import { - buttonClasses, - headerClasses, + baseHeaderClasses, menuButtonsWrapperClasses, mobileMenuButtonClasses, + navButtonClasses, rightSectionClasses, taikoonsIconClasses, themeButtonSeparatorClasses, wrapperClasses, } from './classes'; const { Menu: MenuIcon, XSolid: CloseMenuIcon } = Icons; - $: address = zeroAddress; + $: address = zeroAddress as IAddress; $: isMobileMenuOpen = false; + $: headerClasses = classNames( + baseHeaderClasses, + $pageScroll ? 'md:glassy-background-lg' : null, + $pageScroll ? 'md:border-b-[1px] md:border-border-divider-default' : 'md:border-b-[1px] md:border-transparent', + $$props.class, + ); + $: taikoonsOptions = [ { icon: 'FileImageRegular', @@ -62,26 +71,33 @@ {#if windowSize === 'sm'}
      - + {#if isCountdownActive()} + + {:else} + + {/if}
      {:else} -
      - + {#if !isCountdownActive()} +
      + Mint - - {#if address !== zeroAddress} - - {/if} -
      + Collection + {#if address !== zeroAddress} + Your taikoons + {/if} +
      + {/if}
      - + {#if !isCountdownActive()} + + {/if}
      - {#each socialLinks as link} - {@const Icon = Icons[link.icon]} - - + {#each socialLinks as { name, icon, url }} + {@const Icon = Icons[icon]} + (hoveredIcon = name)} + on:mouseleave={() => (hoveredIcon = 'none')} + target="_blank" + class={socialLinkClasses}> + {#if windowSize !== 'sm'} - {link.name} + {name} {/if} {/each} diff --git a/packages/taikoon-ui/src/components/sections/Heading.section.svelte b/packages/taikoon-ui/src/components/sections/Heading.section.svelte index 8231765e26d..cb72c00117f 100644 --- a/packages/taikoon-ui/src/components/sections/Heading.section.svelte +++ b/packages/taikoon-ui/src/components/sections/Heading.section.svelte @@ -3,10 +3,10 @@ import LogoBlack from '$assets/taikoons-big-black.png'; import LogoWhite from '$assets/taikoons-big-white.png'; + import { AnimatedArrow } from '$components/AnimatedArrow'; import { ResponsiveController } from '$components/core/ResponsiveController'; import { classNames } from '$lib/util/classNames'; import { Theme, theme } from '$stores/theme'; - import { Button } from '$ui/Button'; import { Section } from '$ui/Section'; $: isDarkTheme = $theme === Theme.DARK; @@ -16,14 +16,37 @@ const sectionClasses = 'items-center justify-center'; const imageClasses = classNames('w-full', 'h-auto', 'mb-20'); + + const mintNowButtonClasses = classNames( + 'bg-[#E81899]', + 'font-sans', + 'text-[#F3F3F3]', + 'px-3', + 'py-2', + 'rounded-full', + 'flex flex-row', + 'items-center', + 'justify-center', + 'text-base', + 'font-bold', + 'gap-2.5', + 'hover:bg-[#C8047D]', + ); + + $: isHovered = false;
      Taikoons Logo - + (isHovered = true)} + on:mouseleave={() => (isHovered = false)} + class={mintNowButtonClasses}> + {$t('buttons.mintNow')} + +
      diff --git a/packages/taikoon-ui/src/components/sections/Information.section.svelte b/packages/taikoon-ui/src/components/sections/Information.section.svelte index 5f487853dd8..e195543d63a 100644 --- a/packages/taikoon-ui/src/components/sections/Information.section.svelte +++ b/packages/taikoon-ui/src/components/sections/Information.section.svelte @@ -10,12 +10,20 @@ 'text-primary', 'mb-4', 'uppercase', - 'text-base', + 'tracking-normal', + 'text-[16px]/[24px]', 'font-bold', 'font-sans', 'leading-relaxed', ); - const contentClasses = classNames('md:font-normal', 'font-medium', 'md:text-6xl', 'font-clash-grotesk', 'text-4xl'); + const contentClasses = classNames( + 'md:font-normal', + 'md:text-[57px]/[64px]', + 'text-content-primary', + 'font-medium', + 'font-clash-grotesk', + 'text-4xl', + );
      diff --git a/packages/taikoon-ui/src/components/sections/TimerItem.svelte b/packages/taikoon-ui/src/components/sections/TimerItem.svelte deleted file mode 100644 index ff652a23c81..00000000000 --- a/packages/taikoon-ui/src/components/sections/TimerItem.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - -
      -
      - {count} -
      -
      {label}
      -
      diff --git a/packages/taikoon-ui/src/components/sections/index.ts b/packages/taikoon-ui/src/components/sections/index.ts index e3b6b0efaf4..e9a1d7747b3 100644 --- a/packages/taikoon-ui/src/components/sections/index.ts +++ b/packages/taikoon-ui/src/components/sections/index.ts @@ -1,5 +1,6 @@ export { default as CollapsibleSection } from './Collapsible.section.svelte'; export { default as CountdownSection } from './Countdown.section.svelte'; +export { default as FaqSection } from './Faq.section.svelte'; export { default as FooterSection } from './Footer.section.svelte'; export { default as HeadingSection } from './Heading.section.svelte'; export { default as InformationSection } from './Information.section.svelte'; diff --git a/packages/taikoon-ui/src/generated/abi/index.ts b/packages/taikoon-ui/src/generated/abi/index.ts index fae30cd3856..276d4ce8e72 100644 --- a/packages/taikoon-ui/src/generated/abi/index.ts +++ b/packages/taikoon-ui/src/generated/abi/index.ts @@ -3,7 +3,7 @@ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** - * - [__View Contract on Holesky Etherscan__](https://holesky.etherscan.io/address/0x0874bD201a33bff5Ebd4f8200c6482A72457FeF0) + * - [__View Contract on Holesky Etherscan__](https://holesky.etherscan.io/address/0xfDbaA6d6c382A2555856bFaB315D5E6F3CDA1393) * - */ export const taikoonTokenAbi = [ @@ -544,16 +544,16 @@ export const taikoonTokenAbi = [ ] as const; /** - * - [__View Contract on Holesky Etherscan__](https://holesky.etherscan.io/address/0x0874bD201a33bff5Ebd4f8200c6482A72457FeF0) + * - [__View Contract on Holesky Etherscan__](https://holesky.etherscan.io/address/0xfDbaA6d6c382A2555856bFaB315D5E6F3CDA1393) * - */ export const taikoonTokenAddress = { - 17000: '0x0874bD201a33bff5Ebd4f8200c6482A72457FeF0', - 31337: '0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82', + 17000: '0xfDbaA6d6c382A2555856bFaB315D5E6F3CDA1393', + 31337: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', } as const; /** - * - [__View Contract on Holesky Etherscan__](https://holesky.etherscan.io/address/0x0874bD201a33bff5Ebd4f8200c6482A72457FeF0) + * - [__View Contract on Holesky Etherscan__](https://holesky.etherscan.io/address/0xfDbaA6d6c382A2555856bFaB315D5E6F3CDA1393) * - */ export const taikoonTokenConfig = { diff --git a/packages/taikoon-ui/src/i18n/en.json b/packages/taikoon-ui/src/i18n/en.json index 3c77860da7e..d37c3d0f072 100644 --- a/packages/taikoon-ui/src/i18n/en.json +++ b/packages/taikoon-ui/src/i18n/en.json @@ -16,7 +16,7 @@ }, "buttons": { "mintNow": "Mint Now", - "learnMore": "Learn More", + "learnMore": "FAQs", "mint": "Mint", "etherscan": "View on Etherscan", "share": "Share", @@ -28,7 +28,7 @@ "mint": { "title": "Taikoons", "text": "Taikoons are the genesis NFT collection for the Taiko Layer 2 ecosystem.", - "mintsLeft": "Mints left: {mintsLeft}", + "eligibleLabel": "You are eligible to mint:", "toast": { "clipboardCopy": "Link copied to clipboard" }, @@ -72,19 +72,23 @@ "entries": [ { "title": "What is the total supply of the NFTs in this collection?", - "text": "The total supply of the NFTs in this collection is 888." + "text": "There are 888 Taikoons — not more, not less! Always double check if the official collection when minting/trading." }, { "title": "How can I use my Taikoons?", - "text": "You can use your Taikoons to participate in the Taiko Layer 2 ecosystem." + "text": "Taikoons are primarily a PFP collection, meaning its purpose is to give you a sense of identity in the Taiko community. However, since the Taikoons you hold are your property, you can do with them whatever you want! Trade, print, or just hold them — they're yours!

      Also, keep in mind that there are no financial incentives attached to Taikoons." }, { "title": "What is the minting process?", - "text": "The minting process is as follows:" + "text": "One time genesis mint of all 888 nfts targeted May 2024" }, { - "title": "How does the daily auction work?", - "text": "The daily auction works as follows:" + "title": "What is the official Taikoons contract?", + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tincidunt lorem eros, in bibendum lectus mollis laoreet. Praesent luctus odio rhoncus nisi pulvinar pharetra. Aliquam volutpat bibendum nisl, vitae elementum mauris egestas eget. Etiam ex felis, porttitor nec elementum vitae, mattis at felis. In cursus, augue vel pulvinar aliquet, orci sapien aliquam ipsum, non sollicitudin purus nulla ac risus." + }, + { + "title": "What are the traits?", + "text": "(tbc) Nouns are generated randomly based Ethereum block hashes. There are no 'if' statements or other rules governing Noun trait scarcity, which makes all Nouns equally rare. As of this writing, Nouns are made up of:
      -backgrounds (2)
      -bodies (30)
      -accessories (140)
      -heads (242)
      -glasses (23)" } ] }, @@ -96,7 +100,7 @@ "text": "The most developer-friendly and secure Ethereum scaling solution." }, "subscribe": { - "stayUpdated": "Stay updated! \nDive into the latest Taiko developer news", + "stayUpdated": "Stay updated!
      Dive into the latest Taiko developer news", "subscribe": "Subscribe", "email": "Email" }, diff --git a/packages/taikoon-ui/src/lib/connect/web3modal.ts b/packages/taikoon-ui/src/lib/connect/web3modal.ts index 24760545662..5978bf69d58 100644 --- a/packages/taikoon-ui/src/lib/connect/web3modal.ts +++ b/packages/taikoon-ui/src/lib/connect/web3modal.ts @@ -7,7 +7,7 @@ import { config } from '$wagmi-config'; import { getChainImages } from '../../lib/chain'; -const projectId = PUBLIC_WALLETCONNECT_PROJECT_ID || ''; +const projectId = PUBLIC_WALLETCONNECT_PROJECT_ID || 'walletconnect-project-id'; const chainImages = getChainImages(); export const chainId = readable(getChainId(config), (set) => watchChainId(config, { onChange: set })); @@ -24,7 +24,7 @@ export const provider = readable(undefined, (set) => ); export const web3modal = createWeb3Modal({ - wagmiConfig: config, + wagmiConfig: config || { projectId, chains: [], connectors: [] }, projectId, featuredWalletIds: [], allowUnsupportedChain: true, diff --git a/packages/taikoon-ui/src/lib/token/estimateMintGasCost.ts b/packages/taikoon-ui/src/lib/token/estimateMintGasCost.ts index 82901bfb61f..3f6ef3d772d 100644 --- a/packages/taikoon-ui/src/lib/token/estimateMintGasCost.ts +++ b/packages/taikoon-ui/src/lib/token/estimateMintGasCost.ts @@ -9,10 +9,9 @@ import { totalWhitelistMintCount } from '../user/totalWhitelistMintCount'; import estimateContractGas from '../wagmi/estimateContractGas'; import { canMint } from './canMint'; -export async function estimateMintGasCost({ freeMintCount }: { freeMintCount: number }): Promise { - if (freeMintCount === 0) return 0; +export async function estimateMintGasCost(): Promise { const { selectedNetworkId } = web3modal.getState(); - if (!selectedNetworkId) return -1; + if (!selectedNetworkId) return 0; const chainId = selectedNetworkId as IChainId; const freeMintLeft = await totalWhitelistMintCount(); diff --git a/packages/taikoon-ui/src/lib/util/balance.test.ts b/packages/taikoon-ui/src/lib/util/balance.test.ts index 7de2ae95d19..b70b9418927 100644 --- a/packages/taikoon-ui/src/lib/util/balance.test.ts +++ b/packages/taikoon-ui/src/lib/util/balance.test.ts @@ -3,7 +3,7 @@ import { renderBalance, renderEthBalance } from './balance'; vi.mock('@wagmi/core'); test('renderBalance lib', () => { - expect(renderBalance(null)).toBe('0.00'); + expect(renderBalance()).toBe('0.00'); expect( renderBalance({ decimals: 18, diff --git a/packages/taikoon-ui/src/lib/util/balance.ts b/packages/taikoon-ui/src/lib/util/balance.ts index c3625a2b9ed..107bbd975d5 100644 --- a/packages/taikoon-ui/src/lib/util/balance.ts +++ b/packages/taikoon-ui/src/lib/util/balance.ts @@ -3,7 +3,7 @@ import { formatEther } from 'viem'; import { truncateString } from '../../lib/util/truncateString'; -export function renderBalance(balance: Maybe) { +export function renderBalance(balance?: GetBalanceReturnType) { if (!balance) return '0.00'; // if (typeof balance === 'bigint') return balance.toString(); const maxlength = Number(balance.formatted) < 0.000001 ? balance.decimals : 6; diff --git a/packages/taikoon-ui/src/lib/util/checkForPausedContracts.test.ts b/packages/taikoon-ui/src/lib/util/checkForPausedContracts.test.ts deleted file mode 100644 index 0ee1ab6764d..00000000000 --- a/packages/taikoon-ui/src/lib/util/checkForPausedContracts.test.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { readContract } from '@wagmi/core'; -import { get } from 'svelte/store'; - -import { bridgePausedModal } from '$stores/modal'; - -import { checkForPausedContracts } from './checkForPausedContracts'; - -vi.mock('@wagmi/core'); -vi.mock('viem'); - -vi.mock('$bridgeConfig', () => ({ - routingContractsMap: { - 1: { - 2: { - erc20VaultAddress: '0x00001', - bridgeAddress: '0x00002', - erc721VaultAddress: '0x00003', - erc1155VaultAddress: '0x00004', - crossChainSyncAddress: '0x00005', - signalServiceAddress: '0x00006', - }, - }, - 2: { - 1: { - erc20VaultAddress: '0x00007', - bridgeAddress: '0x00008', - erc721VaultAddress: '0x00009', - erc1155VaultAddress: '0x00010', - crossChainSyncAddress: '0x00011', - signalServiceAddress: '0x00012', - }, - }, - 3: { - 2: { - erc20VaultAddress: '0x00007', - bridgeAddress: '0x00008', - erc721VaultAddress: '0x00009', - erc1155VaultAddress: '0x00010', - crossChainSyncAddress: '0x00011', - signalServiceAddress: '0x00012', - }, - }, - }, -})); - -describe('checkForPausedContracts', () => { - beforeEach(() => { - vi.resetAllMocks(); - }); - - test('should return false if no contracts are paused', async () => { - // when - await checkForPausedContracts(); - - // then - expect(readContract).toHaveBeenCalledTimes(3); - expect(get(bridgePausedModal)).toBe(false); - }); - - test('should return true if at least one contract is paused', async () => { - // given - vi.mocked(readContract).mockResolvedValueOnce(true); - - // when - await checkForPausedContracts(); - - // then - expect(readContract).toHaveBeenCalledTimes(3); - expect(get(bridgePausedModal)).toBe(true); - }); - - test('should handle errors', async () => { - // given - vi.mocked(readContract).mockRejectedValueOnce(new Error('some error')); - - // when - await checkForPausedContracts(); - - // then - expect(get(bridgePausedModal)).toBe(true); - expect(readContract).toHaveBeenCalledTimes(3); - }); -}); diff --git a/packages/taikoon-ui/src/lib/util/checkForPausedContracts.ts b/packages/taikoon-ui/src/lib/util/checkForPausedContracts.ts deleted file mode 100644 index 8451e79ce57..00000000000 --- a/packages/taikoon-ui/src/lib/util/checkForPausedContracts.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const isBridgePaused = async () => { - return await checkForPausedContracts(); -}; - -export const checkForPausedContracts = async () => { - return true; -}; diff --git a/packages/taikoon-ui/src/lib/util/classNames.ts b/packages/taikoon-ui/src/lib/util/classNames.ts index 4a60c3b72bf..64c687e9396 100644 --- a/packages/taikoon-ui/src/lib/util/classNames.ts +++ b/packages/taikoon-ui/src/lib/util/classNames.ts @@ -1,3 +1,3 @@ -export function classNames(...classes: Array>) { +export function classNames(...classes: Array) { return classes.filter(Boolean).join(' '); } diff --git a/packages/taikoon-ui/src/lib/util/fetchTransactionReceipt.ts b/packages/taikoon-ui/src/lib/util/fetchTransactionReceipt.ts deleted file mode 100644 index 5a9edcd4ae8..00000000000 --- a/packages/taikoon-ui/src/lib/util/fetchTransactionReceipt.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { Hash } from 'viem'; - -import { chains } from '$libs/chain'; - -export async function fetchTransactionReceipt(transactionHash: Hash, chainId: number) { - try { - const nodeUrl = chains.find((c) => c.id === chainId)?.rpcUrls?.default?.http[0]; - if (!nodeUrl) { - throw new Error('Node URL not found'); - } - - const response = await fetch(nodeUrl, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - jsonrpc: '2.0', - method: 'eth_getTransactionReceipt', - params: [transactionHash], - id: 1, - }), - }); - - const data = await response.json(); - return data.result; - } catch (error) { - console.error('Error fetching transaction receipt:', error); - throw error; - } -} diff --git a/packages/taikoon-ui/src/lib/util/getConnectedWallet.test.ts b/packages/taikoon-ui/src/lib/util/getConnectedWallet.test.ts deleted file mode 100644 index f42cda0f29b..00000000000 --- a/packages/taikoon-ui/src/lib/util/getConnectedWallet.test.ts +++ /dev/null @@ -1,5 +0,0 @@ -describe('getConnectedWallet', () => { - it('TODO', () => { - expect(true).toBeTruthy(); - }); -}); diff --git a/packages/taikoon-ui/src/lib/util/getConnectedWallet.ts b/packages/taikoon-ui/src/lib/util/getConnectedWallet.ts deleted file mode 100644 index 3f042f9acbc..00000000000 --- a/packages/taikoon-ui/src/lib/util/getConnectedWallet.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { getWalletClient } from '@wagmi/core'; - -import { NotConnectedError } from '$libs/error'; -import { config } from '$libs/wagmi'; - -export async function getConnectedWallet(chainId?: number) { - const walletClient = await getWalletClient(config, { chainId }); - - if (!walletClient) { - throw new NotConnectedError('wallet is not connected'); - } - - return walletClient; -} diff --git a/packages/taikoon-ui/src/lib/util/groupNFTByCollection.ts b/packages/taikoon-ui/src/lib/util/groupNFTByCollection.ts deleted file mode 100644 index bf873aeab6c..00000000000 --- a/packages/taikoon-ui/src/lib/util/groupNFTByCollection.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { NFT } from '../token/types'; - -export function groupNFTByCollection(nfts: NFT[]): Record { - const grouped: Record = {}; - nfts.forEach((nft) => { - const addressKey = Object.values(nft.addresses).join('-'); - if (!grouped[addressKey]) { - grouped[addressKey] = []; - } - grouped[addressKey].push(nft); - }); - return grouped; -} diff --git a/packages/taikoon-ui/src/lib/util/isCountdownActive.ts b/packages/taikoon-ui/src/lib/util/isCountdownActive.ts new file mode 100644 index 00000000000..cff30d478c1 --- /dev/null +++ b/packages/taikoon-ui/src/lib/util/isCountdownActive.ts @@ -0,0 +1,6 @@ +import { PUBLIC_LAUNCH_DATE } from '$env/static/public'; + +export default function isCountdownActive(): boolean { + const launchDate = new Date(PUBLIC_LAUNCH_DATE); + return Date.now() < launchDate.getTime(); +} diff --git a/packages/taikoon-ui/src/lib/util/jsonParseWithDefault.test.ts b/packages/taikoon-ui/src/lib/util/jsonParseWithDefault.test.ts deleted file mode 100644 index 7dd57bb5825..00000000000 --- a/packages/taikoon-ui/src/lib/util/jsonParseWithDefault.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { jsonParseWithDefault } from './jsonParseWithDefault'; - -describe('jsonToArray', () => { - it('should return default value when input is null or empty string', () => { - expect(jsonParseWithDefault(null, [])).toEqual([]); - expect(jsonParseWithDefault('', 5)).toEqual(5); - }); - - it('should return default value when input is not a valid JSON', () => { - expect(jsonParseWithDefault(undefined, true)).toEqual(true); - expect(jsonParseWithDefault('not a valid JSON', '')).toEqual(''); - }); - - it('should return parsed JSON when input is a valid JSON', () => { - const strJson = '{"person": "Fran", "age": "Unknown"}'; - expect(jsonParseWithDefault(strJson, null)).toEqual(JSON.parse(strJson)); - }); -}); diff --git a/packages/taikoon-ui/src/lib/util/jsonParseWithDefault.ts b/packages/taikoon-ui/src/lib/util/jsonParseWithDefault.ts deleted file mode 100644 index 69acdcd8670..00000000000 --- a/packages/taikoon-ui/src/lib/util/jsonParseWithDefault.ts +++ /dev/null @@ -1,9 +0,0 @@ -export function jsonParseWithDefault(strJson: Maybe, defaultValue: T): T { - try { - // Keep in mind that strJson could be null or empty string - // JSON.parse would not throw an error in those cases - return strJson ? JSON.parse(strJson) : defaultValue; - } catch (e) { - return defaultValue; - } -} diff --git a/packages/taikoon-ui/src/lib/util/logger.ts b/packages/taikoon-ui/src/lib/util/logger.ts deleted file mode 100644 index 204f4ae8ed0..00000000000 --- a/packages/taikoon-ui/src/lib/util/logger.ts +++ /dev/null @@ -1,5 +0,0 @@ -import debug from 'debug'; - -export function getLogger(namespace: string) { - return debug(`nft-lab:${namespace}`); -} diff --git a/packages/taikoon-ui/src/lib/util/mergeTransactions.test.ts b/packages/taikoon-ui/src/lib/util/mergeTransactions.test.ts deleted file mode 100644 index f6d2b4130a1..00000000000 --- a/packages/taikoon-ui/src/lib/util/mergeTransactions.test.ts +++ /dev/null @@ -1,162 +0,0 @@ -import type { Address, Hex } from 'viem'; - -import { type BridgeTransaction, MessageStatus } from '$libs/bridge'; -import type { TokenType } from '$libs/token'; -import { mergeAndCaptureOutdatedTransactions } from '$libs/util/mergeTransactions'; - -function setupMocks() { - vi.mock('@wagmi/core'); - vi.mock('@web3modal/wagmi'); - vi.mock('$customToken', () => { - return { - customToken: [ - { - name: 'Bull Token', - addresses: { - '31336': '0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0', - '167002': '0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE', - }, - symbol: 'BLL', - decimals: 18, - type: 'ERC20', - logoURI: 'ipfs://QmezMTpT6ovJ3szb3SKDM9GVGeQ1R8DfjYyXG12ppMe2BY', - mintable: true, - }, - { - name: 'Horse Token', - addresses: { - '31336': '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', - '167002': '0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1', - }, - symbol: 'HORSE', - decimals: 18, - type: 'ERC20', - logoURI: 'ipfs://QmU52ZxmSiGX24uDPNUGG3URyZr5aQdLpACCiD6tap4Mgc', - mintable: true, - }, - ], - }; - }); -} - -describe('mergeUniqueTransactions', () => { - beforeEach(() => { - setupMocks(); - }); - - // Given - const localTxs: BridgeTransaction[] = [ - { - hash: 'hash1' as Hex, - from: 'address1' as Address, - amount: BigInt(1000), - symbol: 'symbol1', - decimals: 2, - srcChainId: BigInt(1), - destChainId: BigInt(2), - status: MessageStatus.DONE, - msgHash: 'msg1' as Hex, - receipt: undefined, - tokenType: 'ERC20' as TokenType, - }, - { - hash: 'hash2' as Hex, - from: 'address2' as Address, - amount: BigInt(2000), - symbol: 'symbol2', - decimals: 2, - srcChainId: BigInt(1), - destChainId: BigInt(2), - status: MessageStatus.DONE, - msgHash: 'msg2' as Hex, - receipt: undefined, - tokenType: 'ERC20' as TokenType, - }, - ]; - - const relayerTx: BridgeTransaction[] = [ - { - hash: 'hash3' as Hex, - from: 'address3' as Address, - amount: BigInt(3000), - symbol: 'symbol3', - decimals: 2, - srcChainId: BigInt(1), - destChainId: BigInt(2), - status: MessageStatus.DONE, - msgHash: 'msg3' as Hex, - receipt: undefined, - tokenType: 'ERC20' as TokenType, - }, - { - hash: 'hash4' as Hex, - from: 'address4' as Address, - amount: BigInt(4000), - symbol: 'symbol4', - decimals: 2, - srcChainId: BigInt(1), - destChainId: BigInt(2), - status: MessageStatus.DONE, - msgHash: 'msg4' as Hex, - receipt: undefined, - tokenType: 'ERC20' as TokenType, - }, - ]; - - it('should merge transactions when no outdated local ones', () => { - // When - const result = mergeAndCaptureOutdatedTransactions(localTxs, relayerTx); - - // Then - expect(extractHashes(result.mergedTransactions)).toEqual(extractHashes([...localTxs, ...relayerTx])); - expect(result.outdatedLocalTransactions).toEqual([]); - }); - - it('should identify and capture outdated local transactions', () => { - // Given - const outdatedTx = relayerTx[0]; - const localWithOutdated = [...localTxs, outdatedTx]; - - // When - const result = mergeAndCaptureOutdatedTransactions(localWithOutdated, relayerTx); - - // Then - expect(extractHashes(result.mergedTransactions)).toEqual(extractHashes([...localTxs, ...relayerTx])); - expect(result.outdatedLocalTransactions).toEqual([outdatedTx]); - }); - - it('should merge transactions and capture outdated ones, complex', () => { - // Given - - const localWithOutdated = [ - ...localTxs, - { - hash: 'hash3' as Hex, - from: 'address2' as Address, - amount: BigInt(2000), - symbol: 'symbol2', - decimals: 2, - srcChainId: BigInt(1), - destChainId: BigInt(2), - status: MessageStatus.DONE, - msgHash: 'msg2' as Hex, - receipt: undefined, - tokenType: 'ERC20' as TokenType, - }, - ]; - - const expectedMergedHashes = extractHashes([...localTxs, ...relayerTx]); - const expectedOutdatedHashes = ['hash3' as Hex]; - - // When - const result = mergeAndCaptureOutdatedTransactions(localWithOutdated, relayerTx); - - // Then - expect(extractHashes(result.mergedTransactions)).toEqual(expectedMergedHashes); - expect(extractHashes(result.outdatedLocalTransactions)).toEqual(expectedOutdatedHashes); - }); -}); - -function extractHashes(transactions: BridgeTransaction[]): Hex[] { - return transactions.map((tx) => tx.hash); -} diff --git a/packages/taikoon-ui/src/lib/util/mergeTransactions.ts b/packages/taikoon-ui/src/lib/util/mergeTransactions.ts deleted file mode 100644 index 42805471ed3..00000000000 --- a/packages/taikoon-ui/src/lib/util/mergeTransactions.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { BridgeTransaction } from '$libs/bridge'; - -type MergeResult = { - mergedTransactions: BridgeTransaction[]; - outdatedLocalTransactions: BridgeTransaction[]; -}; - -export const mergeAndCaptureOutdatedTransactions = ( - localTxs: BridgeTransaction[], - relayerTx: BridgeTransaction[], -): MergeResult => { - const relayerTxMap: Map = new Map(); - relayerTx.forEach((tx) => relayerTxMap.set(tx.hash, tx)); - - const outdatedLocalTransactions: BridgeTransaction[] = []; - const mergedTransactions: BridgeTransaction[] = []; - - for (const tx of localTxs) { - if (!relayerTxMap.has(tx.hash)) { - mergedTransactions.push(tx); - } else { - outdatedLocalTransactions.push(tx); - } - } - - for (const tx of relayerTx) { - mergedTransactions.push(tx); - } - - return { mergedTransactions, outdatedLocalTransactions }; -}; diff --git a/packages/taikoon-ui/src/lib/util/parseNFTMetadata.ts b/packages/taikoon-ui/src/lib/util/parseNFTMetadata.ts deleted file mode 100644 index 21cf5fcfc5c..00000000000 --- a/packages/taikoon-ui/src/lib/util/parseNFTMetadata.ts +++ /dev/null @@ -1,97 +0,0 @@ -import axios, { AxiosError, type AxiosResponse } from 'axios'; - -import { apiService } from '$config'; -import { type NFT, type NFTMetadata, TokenType } from '$libs/token'; -import { safeParseUrl } from '$libs/util/safeParseUrl'; - -import { checkForAdblocker } from './checkForAdblock'; -import { extractIPFSCidFromUrl } from './extractIPFSCidFromUrl'; -import { getLogger } from './logger'; - -const log = getLogger('libs:token:parseNFTMetadata'); - -export const parseNFTMetadata = async (token: NFT): Promise => { - if (token.type !== TokenType.ERC721 && token.type !== TokenType.ERC1155) throw new Error('Not a NFT'); - - log(`fetching metadata for ${token.name} id: ${token.tokenId}`); - - if (!token.uri) throw new Error('No token URI found'); - - if (token.uri.includes('{id}')) { - token.uri = token.uri.replace('{id}', token.tokenId.toString()); - } - - const url = safeParseUrl(token.uri); - if (!url) throw new Error(`Invalid token URI: ${token.uri}`); - - let json; - - try { - json = await axios.get(url, { timeout: apiService.timeout }); - } catch (err) { - const error = err as AxiosError; - log(`error fetching metadata for ${token.name} id: ${token.tokenId}`, error); - //todo: handle different error scenarios? - json = await retry(url, token.tokenId); - } - if (!json) { - const isBlocked = await checkForAdblocker(url); - if (isBlocked) { - log(`The resource at ${url} is blocked by an adblocker`); - json = await retry(url, token.tokenId); - } else { - throw new Error(`No metadata found for ${token.name} id: ${token.tokenId}`); - } - } - - if (!json || json instanceof Error) { - // Handle error - throw new Error(`No metadata found for ${token.name} id: ${token.tokenId}`); - } - const metadata = { - description: json.data.description || '', - external_url: json.data.external_url || '', - image: json.data.image || '', - name: json.data.name || '', - }; - - log(`fetched metadata for ${token.name} id: ${token.tokenId}`, metadata); - return metadata; -}; - -// TODO: we could retry several times with different gateways -const retry = async (url: string, tokenId: number): Promise => { - let newUrl; - tokenId !== undefined && tokenId !== null ? (newUrl = useGateway(url, tokenId)) : (newUrl = useGateway(url, tokenId)); - if (newUrl) { - const result = await retryRequest(newUrl); - if (result instanceof Error) { - return result; - } - return result; - } - return new Error(`No metadata found for ${url}`); -}; - -const retryRequest = async (newUrl: string): Promise => { - try { - log(`retrying with ${newUrl}`); - return await axios.get(newUrl); - } catch (error) { - log('retrying failed', error); - throw new Error(`No metadata found for ${newUrl}`); - } -}; - -//TODO: make this configurable via the config system? -const useGateway = (url: string, tokenId: number) => { - const { cid } = extractIPFSCidFromUrl(url); - let gateway: string; - if (tokenId !== undefined && tokenId !== null && cid) { - gateway = `https://ipfs.io/ipfs/${cid}/${tokenId}.json`; - } else { - log(`no valid CID found in ${url}`); - return null; - } - return gateway; -}; diff --git a/packages/taikoon-ui/src/lib/util/positionElementByTarget.test.ts b/packages/taikoon-ui/src/lib/util/positionElementByTarget.test.ts deleted file mode 100644 index 2943c667496..00000000000 --- a/packages/taikoon-ui/src/lib/util/positionElementByTarget.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { positionElementByTarget } from './positionElementByTarget'; - -const targetElement = { - offsetHeight: 10, - offsetWidth: 10, -} as HTMLElement; - -const elementToPosition = { - style: { - top: '', - bottom: '', - left: '', - right: '', - transform: '', - }, - offsetHeight: 100, - offsetWidth: 100, -} as HTMLElement; - -describe('positionElementByTarget', () => { - it('should position element to the top', () => { - positionElementByTarget(elementToPosition, targetElement, 'top', 15); - - expect(elementToPosition.style.top).toBe(''); - expect(elementToPosition.style.bottom).toBe('25px'); // 10 + 15 - expect(elementToPosition.style.left).toBe('50%'); - expect(elementToPosition.style.right).toBe(''); - expect(elementToPosition.style.transform).toBe('translateX(-50%)'); - }); - - it('should position element to the bottom', () => { - positionElementByTarget(elementToPosition, targetElement, 'bottom', 20); - - expect(elementToPosition.style.top).toBe('30px'); // 10 + 20 - expect(elementToPosition.style.bottom).toBe(''); - expect(elementToPosition.style.left).toBe('50%'); - expect(elementToPosition.style.right).toBe(''); - expect(elementToPosition.style.transform).toBe('translateX(-50%)'); - }); - - it('should position element to the left', () => { - positionElementByTarget(elementToPosition, targetElement, 'left', 25); - - expect(elementToPosition.style.top).toBe('50%'); - expect(elementToPosition.style.bottom).toBe(''); - expect(elementToPosition.style.left).toBe('auto'); - expect(elementToPosition.style.right).toBe('35px'); // 10 + 25 - expect(elementToPosition.style.transform).toBe('translateY(-50%)'); - }); - - it('should position element to the right', () => { - positionElementByTarget(elementToPosition, targetElement, 'right', 30); - - expect(elementToPosition.style.top).toBe('50%'); - expect(elementToPosition.style.bottom).toBe(''); - expect(elementToPosition.style.left).toBe('40px'); // 10 + 30 - expect(elementToPosition.style.right).toBe('auto'); - expect(elementToPosition.style.transform).toBe('translateY(-50%)'); - }); -}); diff --git a/packages/taikoon-ui/src/lib/util/positionElementByTarget.ts b/packages/taikoon-ui/src/lib/util/positionElementByTarget.ts deleted file mode 100644 index d61bbea5fff..00000000000 --- a/packages/taikoon-ui/src/lib/util/positionElementByTarget.ts +++ /dev/null @@ -1,45 +0,0 @@ -// TODO: add support for other positions: 'top-left', 'bottom-right', etc... -export function positionElementByTarget( - elementToPosition: HTMLElement, - targetElement: HTMLElement, - position: Position = 'top', - gap = 10, -) { - const { style } = elementToPosition; - - // Reset styles. - style.top = ''; - style.bottom = ''; - style.left = ''; - style.right = ''; - style.transform = ''; - - switch (position) { - case 'top': - case 'top-right': - case 'top-left': - style.bottom = `${targetElement.offsetHeight + gap}px`; - style.left = '50%'; - style.transform = 'translateX(-50%)'; - break; - case 'bottom': - case 'bottom-right': - case 'bottom-left': - style.top = `${targetElement.offsetHeight + gap}px`; - style.left = '50%'; - style.transform = 'translateX(-50%)'; - break; - case 'left': - style.left = 'auto'; - style.right = `${targetElement.offsetWidth + gap}px`; - style.top = '50%'; - style.transform = 'translateY(-50%)'; - break; - case 'right': - style.right = 'auto'; - style.left = `${targetElement.offsetWidth + gap}px`; - style.top = '50%'; - style.transform = 'translateY(-50%)'; - break; - } -} diff --git a/packages/taikoon-ui/src/lib/util/resolveIPFSUri.ts b/packages/taikoon-ui/src/lib/util/resolveIPFSUri.ts deleted file mode 100644 index d1c72c5c144..00000000000 --- a/packages/taikoon-ui/src/lib/util/resolveIPFSUri.ts +++ /dev/null @@ -1,31 +0,0 @@ -import axios, { type AxiosRequestConfig } from 'axios'; - -import { ipfsConfig } from '$config'; -import { PUBLIC_IPFS_GATEWAYS } from '$env/static/public'; -import { ConfigError, IpfsError } from '$libs/error'; - -const gateways = PUBLIC_IPFS_GATEWAYS.split(',') || []; - -const axiosConfig: AxiosRequestConfig = { - timeout: ipfsConfig.gatewayTimeout, -}; - -export async function resolveIPFSUri(uri: string): Promise { - const cid = uri.replace('ipfs://', ''); - let elapsedTime = 0; - if (gateways.length === 0) throw new ConfigError('No IPFS gateways configured'); - for (const gateway of gateways) { - const start = Date.now(); - try { - const url = `${gateway}/ipfs/${cid}`; - await axios.head(url, axiosConfig); - return url; // Return the first successful gateway URL - } catch (error) { - elapsedTime += Date.now() - start; - if (elapsedTime > ipfsConfig.overallTimeout) { - break; - } - } - } - throw new IpfsError('Failed to retrieve metadata from IPFS gateways'); -} diff --git a/packages/taikoon-ui/src/lib/util/safeReadContract.test.ts b/packages/taikoon-ui/src/lib/util/safeReadContract.test.ts deleted file mode 100644 index 85df57956ca..00000000000 --- a/packages/taikoon-ui/src/lib/util/safeReadContract.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { readContract } from '@wagmi/core'; -import { zeroAddress } from 'viem'; - -import { safeReadContract } from './safeReadContract'; - -vi.mock('@wagmi/core'); - -describe('safeReadContract', () => { - it('should return contract data on success', async () => { - const mockData = { data: 'mockData' }; - vi.mocked(readContract).mockResolvedValue(mockData); - - const result = await safeReadContract({ - address: zeroAddress, - abi: [], - functionName: 'functionName', - chainId: 1, - }); - - expect(result).toEqual(mockData); - }); - - it('should return null on failure', async () => { - vi.mocked(readContract).mockRejectedValue(new Error('mockError')); - - const result = await safeReadContract({ - address: zeroAddress, - abi: [], - functionName: 'functionName', - chainId: 1, - }); - - expect(result).toBeNull(); - }); -}); diff --git a/packages/taikoon-ui/src/lib/util/safeReadContract.ts b/packages/taikoon-ui/src/lib/util/safeReadContract.ts deleted file mode 100644 index 072c97c7787..00000000000 --- a/packages/taikoon-ui/src/lib/util/safeReadContract.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { readContract } from '@wagmi/core'; -import type { Abi, Address } from 'viem'; - -import { config } from '$libs/wagmi'; - -import { getLogger } from './logger'; - -const log = getLogger('libs:util:safeReadContract'); - -type ReadContractParams = { - address: Address; - abi: Abi; - functionName: string; - args?: unknown[]; - chainId: number; -}; - -/* - * Safely read a contract, returning null if it fails - * useful when trying to access a non standard, non mandatory function - */ -export async function safeReadContract(params: ReadContractParams): Promise { - try { - return await readContract(config, params); - } catch (error) { - log(`Safely failed to read contract: ${error}`); - return null; - } -} diff --git a/packages/taikoon-ui/src/lib/util/shortenAddress.test.ts b/packages/taikoon-ui/src/lib/util/shortenAddress.test.ts deleted file mode 100644 index e7181058e50..00000000000 --- a/packages/taikoon-ui/src/lib/util/shortenAddress.test.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { shortenAddress } from './shortenAddress'; - -it('should return string with prefix and suffix', () => { - const dummyAddress = '0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377'; - - expect(shortenAddress(dummyAddress)).toStrictEqual('0x63Fa…D377'); - expect(shortenAddress(dummyAddress, 10, 10)).toStrictEqual('0x63FaC920…52fe3BD377'); -}); - -it('should return 0x if empty', () => { - expect(shortenAddress('')).toBe('0x'); -}); diff --git a/packages/taikoon-ui/src/lib/util/shortenAddress.ts b/packages/taikoon-ui/src/lib/util/shortenAddress.ts index d30beb3f364..4d3b693278b 100644 --- a/packages/taikoon-ui/src/lib/util/shortenAddress.ts +++ b/packages/taikoon-ui/src/lib/util/shortenAddress.ts @@ -2,7 +2,7 @@ import type { IAddress } from '../../types'; import { web3modal } from '../connect'; import { getName } from '../ens'; -export async function shortenAddress(address: IAddress, charsStart = 6, charsEnd = 4, sep = '…'): Promise { +export async function shortenAddress(address: IAddress, charsStart = 5, charsEnd = 3, sep = '…'): Promise { if (!address) return '0x'; const shortened = [address.slice(0, charsStart), address.slice(-charsEnd)].join(sep); diff --git a/packages/taikoon-ui/src/lib/wagmi/watcher.ts b/packages/taikoon-ui/src/lib/wagmi/watcher.ts index 819d7b2e9aa..9af9d86f4fd 100644 --- a/packages/taikoon-ui/src/lib/wagmi/watcher.ts +++ b/packages/taikoon-ui/src/lib/wagmi/watcher.ts @@ -4,24 +4,18 @@ import { config } from '$wagmi-config'; import { isSupportedChain } from '../../lib/chain'; import { refreshUserBalance } from '../../lib/util/balance'; -import { checkForPausedContracts } from '../../lib/util/checkForPausedContracts'; -import { getLogger } from '../../lib/util/logger'; import { account } from '../../stores/account'; import { switchChainModal } from '../../stores/modal'; import { connectedSourceChain } from '../../stores/network'; -const log = getLogger('wagmi:watcher'); let isWatching = false; let unWatchAccount: () => void; export async function startWatching() { - checkForPausedContracts(); - if (!isWatching) { unWatchAccount = watchAccount(config, { onChange(data) { - checkForPausedContracts(); - log('Account changed', data); + console.warn('Account changed', data); account.set(data); refreshUserBalance(); const { chain } = data; @@ -29,7 +23,7 @@ export async function startWatching() { // We need to check if the chain is supported, and if not // we present the user with a modal to switch networks. if (chain && !isSupportedChain(Number(chain.id))) { - log('Unsupported chain', chain); + console.warn('Unsupported chain', chain); switchChainModal.set(true); return; } else if (chain) { diff --git a/packages/taikoon-ui/src/routes/+layout.svelte b/packages/taikoon-ui/src/routes/+layout.svelte index 0c77630d904..5c7d8bb12c8 100644 --- a/packages/taikoon-ui/src/routes/+layout.svelte +++ b/packages/taikoon-ui/src/routes/+layout.svelte @@ -7,7 +7,7 @@ import { zeroAddress } from 'viem'; import { ResponsiveController } from '$components/core/ResponsiveController'; - import { MintConfirmationModal, TaikoonDetailModal } from '$components/modals'; + import { MintConfirmationModal, PostMintModal, TaikoonDetailModal } from '$components/modals'; import { mint } from '$stores/mint'; import { taikoonDetail } from '$stores/taikoonDetail'; @@ -26,6 +26,7 @@ tokenIds: [], address: zeroAddress, totalMintCount: 0, + txHash: '', }); const taikoonDetailState = taikoonDetail; @@ -36,7 +37,16 @@ setContext('mint', mintState); setContext('taikoonDetail', taikoonDetailState); - const containerClasses = classNames('z-0', 'w-full', 'h-full', 'flex', 'flex-col', 'items-center', 'justify-evenly'); + const containerClasses = classNames( + 'z-0', + 'w-full', + 'h-full', + 'flex', + 'flex-col', + 'relative', + 'items-center', + 'justify-evenly', + ); let windowSize: 'sm' | 'md' | 'lg' = 'md'; @@ -61,7 +71,9 @@ - + + + {#if windowSize === 'sm'} diff --git a/packages/taikoon-ui/src/routes/+page.svelte b/packages/taikoon-ui/src/routes/+page.svelte index e9aa539d50d..e9dfe7eb9aa 100644 --- a/packages/taikoon-ui/src/routes/+page.svelte +++ b/packages/taikoon-ui/src/routes/+page.svelte @@ -2,19 +2,16 @@ import { t } from 'svelte-i18n'; import { - CollapsibleSection, CountdownSection, + FaqSection, FooterSection, HeadingSection, InformationSection, } from '$components/sections'; + import isCountdownActive from '$lib/util/isCountdownActive'; import { Button } from '$ui/Button'; import { SectionContainer } from '$ui/Section'; - $: currentPage = 'teaser'; - - $: faqOptions = $t('content.sections.faq.entries'); - let scrollTarget: HTMLElement | undefined = undefined; function scrollToFaq() { @@ -28,7 +25,7 @@ - {#if currentPage === 'teaser'} + {#if isCountdownActive()}
      diff --git a/packages/taikoon-ui/src/routes/collection/+page.svelte b/packages/taikoon-ui/src/routes/collection/+page.svelte index a76e5f3a59d..73f7c5581a9 100644 --- a/packages/taikoon-ui/src/routes/collection/+page.svelte +++ b/packages/taikoon-ui/src/routes/collection/+page.svelte @@ -1,9 +1,11 @@ diff --git a/packages/taikoon-ui/src/routes/collection/[address]/+page.svelte b/packages/taikoon-ui/src/routes/collection/[address]/+page.svelte index a9b412d30c5..0fcef16d506 100644 --- a/packages/taikoon-ui/src/routes/collection/[address]/+page.svelte +++ b/packages/taikoon-ui/src/routes/collection/[address]/+page.svelte @@ -1,22 +1,31 @@ @@ -25,6 +34,6 @@
      - +
      diff --git a/packages/taikoon-ui/src/routes/mint/+page.svelte b/packages/taikoon-ui/src/routes/mint/+page.svelte index 48397974331..b3818f1bf7a 100644 --- a/packages/taikoon-ui/src/routes/mint/+page.svelte +++ b/packages/taikoon-ui/src/routes/mint/+page.svelte @@ -1,16 +1,18 @@ @@ -19,10 +21,14 @@ -
      +
      - + diff --git a/packages/taikoon-ui/src/stores/bridgedToken.ts b/packages/taikoon-ui/src/stores/bridgedToken.ts deleted file mode 100644 index a509a9ba66c..00000000000 --- a/packages/taikoon-ui/src/stores/bridgedToken.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { get, writable } from 'svelte/store'; -import type { Address } from 'viem'; - -import { getLogger } from '../lib/util/logger'; - -const log = getLogger('token:bridgedToken'); - -type TokenInfo = { - isBridged: boolean; - chainId: number; -}; - -type BridgedTokens = Record; -export const bridgedTokens = writable({}); - -export const setBridgedTokenInfoStore = (tokenAddress: Address, isBridged: boolean, chainId: number) => { - bridgedTokens.update((currentTokens) => { - return { ...currentTokens, [tokenAddress]: { isBridged, chainId } }; - }); -}; - -export const getBridgedStatusFromStore = (tokenAddress: Address): boolean => { - log('getting bridged token status from store', tokenAddress); - const tokens = get(bridgedTokens); - return tokens[tokenAddress]?.isBridged ?? false; -}; - -export const getBridgedTokenInfoStore = (tokenAddress: Address): TokenInfo => { - log('getting bridged token info from store', tokenAddress); - const tokens = get(bridgedTokens); - return tokens[tokenAddress]; -}; diff --git a/packages/taikoon-ui/src/stores/index.ts b/packages/taikoon-ui/src/stores/index.ts index 43b786b1a31..fcf14197570 100644 --- a/packages/taikoon-ui/src/stores/index.ts +++ b/packages/taikoon-ui/src/stores/index.ts @@ -1,5 +1,3 @@ export { account } from './account'; -export { metadataCache } from './metadata'; export { connectedSourceChain } from './network'; export { page } from './page'; -export { pendingTransactions } from './pendingTransactions'; diff --git a/packages/taikoon-ui/src/stores/metadata.ts b/packages/taikoon-ui/src/stores/metadata.ts deleted file mode 100644 index 63da119a575..00000000000 --- a/packages/taikoon-ui/src/stores/metadata.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { get, writable } from 'svelte/store'; -import type { Address } from 'viem'; - -import type NFTMetadata from '../lib/token'; - -export type NFTCacheIdentifier = { - address: Address; - id: number; -}; - -function createCacheKey(identifier: NFTCacheIdentifier): string { - return `${identifier.address}-${identifier.id.toString()}`; -} - -export const metadataCache = writable>(new Map()); - -export function addMetadataToCache(identifier: NFTCacheIdentifier, metadata: NFTMetadata): void { - metadataCache.update((cache) => { - const key = createCacheKey(identifier); - cache.set(key, metadata); - return cache; - }); -} - -export function getMetadataFromCache(identifier: NFTCacheIdentifier): NFTMetadata | undefined { - const cache = get(metadataCache); - const key = createCacheKey(identifier); - return cache.get(key); -} - -export function isMetadataCached(identifier: NFTCacheIdentifier): boolean { - let exists = false; - metadataCache.subscribe((cache) => { - const key = createCacheKey(identifier); - exists = cache.has(key); - })(); - return exists; -} diff --git a/packages/taikoon-ui/src/stores/mint.ts b/packages/taikoon-ui/src/stores/mint.ts index 6c70a087299..9b9b5e1495e 100644 --- a/packages/taikoon-ui/src/stores/mint.ts +++ b/packages/taikoon-ui/src/stores/mint.ts @@ -8,6 +8,9 @@ export interface IMintStore { tokenIds: number[]; address: IAddress; totalMintCount: number; + txHash: string; } export const mint = writable(); + +export type IMint = typeof mint; diff --git a/packages/taikoon-ui/src/stores/pageScroll.ts b/packages/taikoon-ui/src/stores/pageScroll.ts new file mode 100644 index 00000000000..76fbaa95b78 --- /dev/null +++ b/packages/taikoon-ui/src/stores/pageScroll.ts @@ -0,0 +1,3 @@ +import { writable } from 'svelte/store'; + +export const pageScroll = writable(); diff --git a/packages/taikoon-ui/src/stores/pendingTransactions.ts b/packages/taikoon-ui/src/stores/pendingTransactions.ts deleted file mode 100644 index 580932728c0..00000000000 --- a/packages/taikoon-ui/src/stores/pendingTransactions.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { waitForTransactionReceipt } from '@wagmi/core'; -import { writable } from 'svelte/store'; -import type { Hex, TransactionReceipt } from 'viem'; - -import { config } from '$wagmi-config'; - -import { pendingTransaction } from '../app.config'; -import { FailedTransactionError } from '../lib/error'; -import { refreshUserBalance } from '../lib/util/balance'; -import { Deferred } from '../lib/util/Deferred'; -import { getLogger } from '../lib/util/logger'; - -const log = getLogger('store:pendingTransactions'); - -// Custom store: pendingTransactions -const { subscribe, set, update } = writable([]); -export const pendingTransactions = { - /** - * We're creating here a custom store, which is a writable store. - * We must stick to the store contract, which is: - */ - set, - subscribe, - // update, // this method is optional. - - /** - * Custom method, which will help us add a new transaction to the store - * and get it removed the transaction is mined. - */ - add: (hash: Hex, chainId: number) => { - const deferred = new Deferred(); - - update((hashes: Hex[]) => { - // New array with the new transaction appended - const newPendingTransactions = [...hashes, hash]; - - // Next step is to wait for the transaction to be mined - // before removing it from the store. - - /** - * Returns a Promise which will not resolve until transactionHash is mined. - * If confirms is 0, this method is non-blocking and if the transaction - * has not been mined returns null. Otherwise, this method will block until - * the transaction has confirms blocks mined on top of the block in which - * is was mined. - */ - waitForTransactionReceipt(config, { - hash, - chainId, - timeout: pendingTransaction.waitTimeout, - }) - .then((receipt) => { - log('Transaction mined with receipt', receipt); - - log(`Removing transaction "${hash}" from store`); - update((hashes: Hex[]) => - // Filter out the transaction with the given hash - hashes.filter((_hash) => _hash !== hash), - ); - - // Resolves or rejects the promise depending on the transaction status. - if (receipt.status === 'success') { - log('Transaction successful'); - deferred.resolve(receipt); - } else { - deferred.reject( - new FailedTransactionError(`transaction with hash "${hash}" failed`, { - cause: receipt, - }), - ); - } - }) - .catch((err) => { - console.error(err); - deferred.reject( - new FailedTransactionError(`transaction with hash "${hash}" failed`, { - cause: err, - }), - ); - }) - .finally(() => { - refreshUserBalance(); - }); - - return newPendingTransactions; - }); - - // TODO: return deferred object instead, so we can cancel the promise - // in case we need it, e.g.: poller picks up already claimed transaction - // by the relayer, in which case we don't need to wait for this transaction - // to finish - return deferred.promise; - }, -}; diff --git a/packages/taikoon-ui/src/stores/relayerApi.ts b/packages/taikoon-ui/src/stores/relayerApi.ts deleted file mode 100644 index 94facbddef1..00000000000 --- a/packages/taikoon-ui/src/stores/relayerApi.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { writable } from 'svelte/store'; - -import type { PaginationInfo, RelayerBlockInfo } from '../../lib/relayer/types'; - -export const paginationInfo = writable(); - -export const relayerBlockInfoMap = writable>(); diff --git a/packages/taikoon-ui/src/stores/taikoonDetail.ts b/packages/taikoon-ui/src/stores/taikoonDetail.ts index 4d03920410f..567d0c7d72d 100644 --- a/packages/taikoon-ui/src/stores/taikoonDetail.ts +++ b/packages/taikoon-ui/src/stores/taikoonDetail.ts @@ -6,3 +6,5 @@ export interface ITaikoonDetailStore { } export const taikoonDetail = writable(); + +export type ITaikoonDetail = typeof taikoonDetail; diff --git a/packages/taikoon-ui/src/stores/tokenInfo.ts b/packages/taikoon-ui/src/stores/tokenInfo.ts deleted file mode 100644 index a257c946a7f..00000000000 --- a/packages/taikoon-ui/src/stores/tokenInfo.ts +++ /dev/null @@ -1,50 +0,0 @@ -// tokenInfoStore.ts -import { get, writable } from 'svelte/store'; -import type { Address } from 'viem'; - -import { getLogger } from '../../lib/util/logger'; - -const log = getLogger('stores:tokenInfoStore'); - -export type TokenInfo = { - canonical: { - chainId: number; - address: Address; - } | null; - bridged: { - chainId: number; - address: Address; - } | null; -}; -export type SetTokenInfoParams = { - canonicalAddress: Address; - bridgedAddress: Address | null; - info: TokenInfo; -}; -type TokenInfoStore = Record; - -export const tokenInfoStore = writable({}); - -export const setTokenInfo = ({ canonicalAddress, bridgedAddress, info }: SetTokenInfoParams) => { - log('setting token info', canonicalAddress, bridgedAddress, info); - tokenInfoStore.update((store) => { - store[canonicalAddress] = info; - if (!bridgedAddress) return store; - store[bridgedAddress] = info; - return store; - }); -}; - -export const isCanonicalAddress = (address: Address): boolean => { - const store = get(tokenInfoStore); - const tokenInfo = store[address]; - - return tokenInfo?.canonical?.address === address; -}; - -export const isBridgedAddress = (address: Address): boolean => { - const store = get(tokenInfoStore); - const tokenInfo = store[address]; - - return tokenInfo?.bridged?.address === address; -}; diff --git a/packages/taikoon-ui/src/tests/mocks/addresses.ts b/packages/taikoon-ui/src/tests/mocks/addresses.ts new file mode 100644 index 00000000000..df15e2d7dd8 --- /dev/null +++ b/packages/taikoon-ui/src/tests/mocks/addresses.ts @@ -0,0 +1,44 @@ +// Addresses + +import type { Address } from 'viem'; + +export const ALICE: Address = '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'; +export const BOB: Address = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8'; +export const CHARLIE: Address = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'; +export const DAVE: Address = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; + +export const L1_ADDRESSES: Record = { + bridgeAddress: '0x1000010000000000000000000000000000000001', + erc20VaultAddress: '0x1000010000000000000000000000000000000002', + erc721VaultAddress: '0x1000010000000000000000000000000000000003', + erc1155VaultAddress: '0x1000010000000000000000000000000000000004', + signalServiceAddress: '0x1000010000000000000000000000000000000005', + crossChainSyncAddress: '0x1000010000000000000000000000000000010001', +}; + +export const L2_A_ADDRESSES: Record = { + bridgeAddress: '0x2000010000000000000000000000000000000001', + erc20VaultAddress: '0x2000010000000000000000000000000000000002', + erc721VaultAddress: '0x2000010000000000000000000000000000000003', + erc1155VaultAddress: '0x2000010000000000000000000000000000000004', + signalServiceAddress: '0x2000010000000000000000000000000000000005', + crossChainSyncAddress: '0x2000010000000000000000000000000000010001', +}; + +export const L2_B_ADDRESSES: Record = { + bridgeAddress: '0x2000020000000000000000000000000000000001', + erc20VaultAddress: '0x2000020000000000000000000000000000000002', + erc721VaultAddress: '0x2000020000000000000000000000000000000003', + erc1155VaultAddress: '0x2000020000000000000000000000000000000004', + signalServiceAddress: '0x2000020000000000000000000000000000000005', + crossChainSyncAddress: '0x2000020000000000000000000000000000010001', +}; + +export const L3_ADDRESSES: Record = { + bridgeAddress: '0x3000010000000000000000000000000000000001', + erc20VaultAddress: '0x3000010000000000000000000000000000000002', + erc721VaultAddress: '0x3000010000000000000000000000000000000003', + erc1155VaultAddress: '0x3000010000000000000000000000000000000004', + signalServiceAddress: '0x3000010000000000000000000000000000000005', + crossChainSyncAddress: '0x3000010000000000000000000000000000010001', +}; diff --git a/packages/taikoon-ui/src/tests/mocks/blocks.ts b/packages/taikoon-ui/src/tests/mocks/blocks.ts new file mode 100644 index 00000000000..7397a784db9 --- /dev/null +++ b/packages/taikoon-ui/src/tests/mocks/blocks.ts @@ -0,0 +1,8 @@ +export const BLOCK_NUMBER_1 = 42n; +export const BLOCK_NUMBER_2 = 43n; + +export const BLOCK_NUMBER_HEX_1 = '0x2a'; +export const BLOCK_NUMBER_HEX_2 = '0x2b'; + +export const BLOCK_HASH_1 = '0x1234'; +export const BLOCK_HASH_2 = '0x5678'; diff --git a/packages/taikoon-ui/src/tests/mocks/chains.ts b/packages/taikoon-ui/src/tests/mocks/chains.ts new file mode 100644 index 00000000000..19d869febe6 --- /dev/null +++ b/packages/taikoon-ui/src/tests/mocks/chains.ts @@ -0,0 +1,6 @@ +// Chain IDs +export const L1_CHAIN_ID = 1; +export const L2_CHAIN_ID = 2; +export const L2_A_CHAIN_ID = 21; +export const L2_B_CHAIN_ID = 22; +export const L3_CHAIN_ID = 3; diff --git a/packages/taikoon-ui/src/tests/mocks/env.static.public.ts b/packages/taikoon-ui/src/tests/mocks/env.static.public.ts new file mode 100644 index 00000000000..1d7ce68707e --- /dev/null +++ b/packages/taikoon-ui/src/tests/mocks/env.static.public.ts @@ -0,0 +1,3 @@ +const PUBLIC_WALLETCONNECT_PROJECT_ID = ''; + +export { PUBLIC_WALLETCONNECT_PROJECT_ID }; diff --git a/packages/taikoon-ui/src/tests/mocks/index.ts b/packages/taikoon-ui/src/tests/mocks/index.ts new file mode 100644 index 00000000000..814b2926030 --- /dev/null +++ b/packages/taikoon-ui/src/tests/mocks/index.ts @@ -0,0 +1,4 @@ +export * from './addresses'; +export * from './blocks'; +export * from './chains'; +export * from './proofs'; diff --git a/packages/taikoon-ui/src/tests/mocks/proofs.ts b/packages/taikoon-ui/src/tests/mocks/proofs.ts new file mode 100644 index 00000000000..a5b43214432 --- /dev/null +++ b/packages/taikoon-ui/src/tests/mocks/proofs.ts @@ -0,0 +1 @@ +export const STORAGE_KEY_1 = '0x03f9c17a90ef98259ceb7d2bf1072fe4314b2877d7a1402a68eb4f52b92e12ac'; diff --git a/packages/taikoon-ui/src/tests/setup.ts b/packages/taikoon-ui/src/tests/setup.ts new file mode 100644 index 00000000000..50de5addc4c --- /dev/null +++ b/packages/taikoon-ui/src/tests/setup.ts @@ -0,0 +1,34 @@ +import dotenv from 'dotenv'; + +dotenv.config({ path: './.env.test' }); + +vi.mock('@wagmi/core'); + +// Source: https://github.com/vitest-dev/vitest/issues/4043#issuecomment-1905172846 +// This snippet is needed in order to support Uint8Array with vitest and jsdom. +if (process.env.VITEST === 'true') { + class ESBuildAndJSDOMCompatibleTextEncoder extends TextEncoder { + constructor() { + super(); + } + + encode(input: string) { + if (typeof input !== 'string') { + throw new TypeError('`input` must be a string'); + } + + const decodedURI = decodeURIComponent(encodeURIComponent(input)); + const arr = new Uint8Array(decodedURI.length); + const chars = decodedURI.split(''); + for (let i = 0; i < chars.length; i++) { + arr[i] = decodedURI[i].charCodeAt(0); + } + return arr; + } + } + + Object.defineProperty(global, 'TextEncoder', { + value: ESBuildAndJSDOMCompatibleTextEncoder, + writable: true, + }); +} diff --git a/packages/taikoon-ui/svelte.config.js b/packages/taikoon-ui/svelte.config.js index 13e5d08189f..a1d7f348f48 100644 --- a/packages/taikoon-ui/svelte.config.js +++ b/packages/taikoon-ui/svelte.config.js @@ -10,7 +10,8 @@ const config = { // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. // If your environment is not supported or you settled on a specific environment, switch out the adapter. // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter() + adapter: adapter(), + }, } diff --git a/packages/taikoon-ui/tailwind.config.js b/packages/taikoon-ui/tailwind.config.js index b189fca3b57..9c6c59fecaa 100644 --- a/packages/taikoon-ui/tailwind.config.js +++ b/packages/taikoon-ui/tailwind.config.js @@ -32,6 +32,10 @@ export default { '50%': { opacity: '0' }, '100%': { opacity: '1' }, }, + 'arrows-x-animation': { + '0%': { left: '0'}, + '100%': { left: '100%'}, + } }, animation: { 'cell-pulse-3': 'cell-pulse-animation 3s ease-in infinite', @@ -40,6 +44,8 @@ export default { 'cell-pulse-negative-3': 'cell-pulse-negative-animation 3s ease-in infinite', 'cell-pulse-negative-5': 'cell-pulse-negative-animation 5s ease-in infinite', 'cell-pulse-negative-7': 'cell-pulse-negative-animation 7s ease-in infinite', + 'arrows-x-3': 'arrows-x-animation 300ms linear forwards', + 'arrows-x-3-reset': 'arrows-x-animation 300ms linear reverse', }, colors: { /*************** @@ -256,10 +262,11 @@ export default { 'icon-primary': 'var(--icon-primary)', 'icon-secondary': 'var(--icon-secondary)', + 'background-body': 'var(--background-body)', 'border-divider-default': 'var(--border-divider-default)', - + 'nav-button': 'var(--nav-button)', }, }, }, @@ -358,6 +365,11 @@ export default { '--icon-primary': '#CACBCE', // grey-100 '--icon-secondary': '#2B303B', // grey-700 + + // custom colors + + '--background-body': '#0b101b', + '--nav-button': '#2B303B', // ================================ // primary: '#C8047D', // pink-500, @@ -468,6 +480,11 @@ export default { '--icon-primary': '#5D636F', // grey-500 '--icon-secondary': '#e3e3e3', // grey-50 + + // custom colors + + '--background-body': '#f8f8f8', + '--nav-button': '#ffffff', // ================================ // primary: '#C8047D', // pink-500, diff --git a/packages/taikoon-ui/test-results/.last-run.json b/packages/taikoon-ui/test-results/.last-run.json new file mode 100644 index 00000000000..544c11fbc35 --- /dev/null +++ b/packages/taikoon-ui/test-results/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "failed", + "failedTests": [] +} diff --git a/packages/taikoon-ui/tests/test.ts b/packages/taikoon-ui/tests/test.ts deleted file mode 100644 index 09e153e02cb..00000000000 --- a/packages/taikoon-ui/tests/test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { expect, test } from '@playwright/test' - -test('index page has expected h1', async ({ page }) => { - await page.goto('/') - await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible() -}) diff --git a/packages/taikoon-ui/tsconfig.json b/packages/taikoon-ui/tsconfig.json index 8478b23dbf2..a3a3174949c 100644 --- a/packages/taikoon-ui/tsconfig.json +++ b/packages/taikoon-ui/tsconfig.json @@ -10,6 +10,7 @@ "sourceMap": true, "strict": true, "moduleResolution": "bundler", + "types": ["vitest/globals"], "paths": { "$assets/*": ["./src/assets/*"], "$components/*": ["./src/components/*"], diff --git a/packages/taikoon-ui/vite.config.ts b/packages/taikoon-ui/vite.config.ts index 3bfae646c2e..081d527adfa 100644 --- a/packages/taikoon-ui/vite.config.ts +++ b/packages/taikoon-ui/vite.config.ts @@ -5,6 +5,8 @@ import { defineConfig } from 'vitest/config' export default defineConfig({ plugins: [sveltekit(), tsconfigPaths()], test: { + environment: 'jsdom', + globals: true, include: ['src/**/*.{test,spec}.{js,ts}'], }, optimizeDeps: { diff --git a/packages/taikoon-ui/vitest.config.ts b/packages/taikoon-ui/vitest.config.ts new file mode 100644 index 00000000000..cda8f25a768 --- /dev/null +++ b/packages/taikoon-ui/vitest.config.ts @@ -0,0 +1,28 @@ +import path from 'path'; +import { defineProject } from 'vitest/config'; + +export default defineProject({ + test: { + environment: 'jsdom', + // setupFiles: ['./../../setup.ts'], + setupFiles: ['./src/tests/setup.ts'], + globals: true, + include: ['./**/*.{test,spec}.{js,ts}'], + }, + resolve: { + alias: { + $components: path.resolve(__dirname, './src/components'), + $stores: path.resolve(__dirname, './src/stores'), + $config: path.resolve(__dirname, './src/app.config.ts'), + $libs: path.resolve(__dirname, './src/libs'), + $abi: path.resolve(__dirname, './src/abi/index.ts'), + $bridgeConfig: path.resolve(__dirname, './__mocks__/$bridgeConfig.ts'), + $chainConfig: path.resolve(__dirname, './src/generated/chainConfig.ts'), + $relayerConfig: path.resolve(__dirname, './src/generated/relayerConfig.ts'), + $customToken: path.resolve(__dirname, './src/generated/customTokenConfig.ts'), + $mocks: path.resolve(__dirname, './src/tests/mocks/index.ts'), + '$env/static/public': path.resolve(__dirname, './src/tests/mocks/env.static.public.ts'), + "$wagmi-config": path.resolve(__dirname, "./src/wagmi.config.ts"), + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e9e08668b5..ac0dd1a7d35 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,25 +26,25 @@ importers: version: 2.26.1(debug@4.3.4) '@wagmi/connectors': specifier: ^4.3.1 - version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 4.3.5(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8) '@wagmi/core': specifier: ^2.8.1 - version: 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@6.0.3)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) '@walletconnect/ethereum-provider': specifier: ^2.12.2 - version: 2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) + version: 2.13.0(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) '@walletconnect/modal': specifier: ^2.6.2 version: 2.6.2(react@18.3.1) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.3.1)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) + version: 4.1.11(@wagmi/connectors@4.3.5(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(react@18.3.1)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8)) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.15) + version: 0.9.5(svelte@4.2.16) axios: specifier: ^1.6.7 - version: 1.6.7(debug@4.3.4) + version: 1.6.8(debug@4.3.4) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -62,23 +62,23 @@ importers: version: 3.0.0 svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.15) + version: 4.0.0(svelte@4.2.16) viem: specifier: ^2.9.29 - version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + version: 2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.43.1 + version: 1.44.0 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))) + version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))) '@sveltejs/kit': specifier: ^2.5.7 - version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + version: 3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -87,49 +87,49 @@ importers: version: 3.0.6 '@typescript-eslint/eslint-plugin': specifier: ^7.8.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.8.0 - version: 7.8.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) '@vitest/coverage-v8': specifier: ^1.4.0 - version: 1.4.0(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) + version: 1.6.0(vitest@1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3) + version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.5) abitype: specifier: ^1.0.2 - version: 1.0.2(typescript@5.4.3)(zod@3.22.4) + version: 1.0.2(typescript@5.4.5)(zod@3.23.8) ajv: specifier: ^8.12.0 - version: 8.12.0 + version: 8.13.0 autoprefixer: specifier: ^10.4.18 - version: 10.4.18(postcss@8.4.38) + version: 10.4.19(postcss@8.4.38) daisyui: specifier: ^4.10.3 - version: 4.10.3(postcss@8.4.38) + version: 4.11.1(postcss@8.4.38) dotenv: specifier: ^16.4.5 version: 16.4.5 eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.0.0(eslint@8.56.0) + version: 12.1.0(eslint@8.57.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) + version: 2.38.0(eslint@8.57.0)(svelte@4.2.16)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) ethereum-address: specifier: ^0.0.4 version: 0.0.4 jsdom: specifier: ^24.0.0 - version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) lokijs: specifier: ^1.5.12 version: 1.5.12 @@ -141,16 +141,16 @@ importers: version: 3.2.5 prettier-plugin-svelte: specifier: ^3.2.3 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.16) svelte: specifier: ^4.2.15 - version: 4.2.15 + version: 4.2.16 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15) + version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.16) tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) ts-morph: specifier: ^19.0.0 version: 19.0.0 @@ -159,22 +159,22 @@ importers: version: 2.6.2 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 vite: specifier: ^5.2.10 version: 5.2.11(@types/node@20.12.11)(terser@5.31.0) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + version: 4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: ^1.5.3 - version: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) + version: 1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.31.0) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) + version: 0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) vitest-mock-extended: specifier: 1.3.1 - version: 1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) + version: 1.3.1(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)) packages/docs-site: dependencies: @@ -216,53 +216,53 @@ importers: dependencies: '@wagmi/core': specifier: ^2.8.0 - version: 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(utf-8-validate@6.0.4)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8))(zod@3.23.8) + version: 2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@6.0.3)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) axios: specifier: ^1.6.7 - version: 1.6.7(debug@4.3.4) + version: 1.6.8(debug@4.3.4) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.13) + version: 4.0.0(svelte@4.2.16) viem: specifier: ^2.9.29 - version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) + version: 2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) devDependencies: '@playwright/test': specifier: ^1.43.1 - version: 1.43.1 + version: 1.44.0 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))) + version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))) '@sveltejs/kit': specifier: ^2.5.5 - version: 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + version: 3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) '@tailwindcss/nesting': specifier: 0.0.0-insiders.565cd3e version: 0.0.0-insiders.565cd3e(postcss@8.4.38) '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) autoprefixer: specifier: ^10.4.18 - version: 10.4.18(postcss@8.4.38) + version: 10.4.19(postcss@8.4.38) daisyui: specifier: ^4.10.1 - version: 4.10.1(postcss@8.4.38) + version: 4.11.1(postcss@8.4.38) eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) + version: 2.38.0(eslint@8.57.0)(svelte@4.2.16)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) postcss: specifier: ^8.4.38 version: 8.4.38 @@ -271,37 +271,37 @@ importers: version: 16.1.0(postcss@8.4.38) postcss-nesting: specifier: ^12.1.0 - version: 12.1.0(postcss@8.4.38) + version: 12.1.2(postcss@8.4.38) prettier: specifier: ^3.2.5 version: 3.2.5 prettier-plugin-svelte: specifier: ^3.2.2 - version: 3.2.2(prettier@3.2.5)(svelte@4.2.13) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.16) svelte: specifier: ^4.2.13 - version: 4.2.13 + version: 4.2.16 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13) + version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.16) tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) tslib: specifier: ^2.6.2 version: 2.6.2 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 vite: specifier: ^4.5.3 version: 4.5.3(@types/node@20.12.11)(terser@5.31.0) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + version: 4.3.2(typescript@5.4.5)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: ^1.5.0 - version: 1.5.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.0) + version: 1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.31.0) packages/protocol: dependencies: @@ -329,34 +329,34 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.7 + version: 20.12.11 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.55.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.51.0 - version: 8.55.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.55.0) + version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@17.6.0(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0) + version: 17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0) + version: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.55.0) + version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.55.0))(eslint@8.55.0)(prettier@3.2.5) + version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.55.0) + version: 6.1.1(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2(bufferutil@4.0.8) @@ -365,13 +365,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.3) + version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + version: 10.9.2(@types/node@20.12.11)(typescript@5.4.5) typescript: specifier: ^5.2.2 - version: 5.4.3 + version: 5.4.5 packages/relayer: {} @@ -401,34 +401,34 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.7 + version: 20.12.11 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.51.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@17.6.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) + version: 17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.56.0) + version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.2.5) + version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.56.0) + version: 6.1.1(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2(bufferutil@4.0.8) @@ -437,13 +437,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.3) + version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + version: 10.9.2(@types/node@20.12.11)(typescript@5.4.5) typescript: specifier: ^5.2.2 - version: 5.4.3 + version: 5.4.5 packages/taiko-client: {} @@ -466,7 +466,7 @@ importers: version: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc + version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/978ac6fadb62f5f0b723c996f64be52eddba6801 ipfs-http-client: specifier: ^60.0.1 version: 60.0.1(encoding@0.1.13) @@ -491,34 +491,34 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.7 + version: 20.12.11 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.51.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@17.6.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0) + version: 17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.56.0) + version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.2.5) + version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.56.0) + version: 6.1.1(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2(bufferutil@4.0.8) @@ -527,13 +527,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.3) + version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + version: 10.9.2(@types/node@20.12.11)(typescript@5.4.5) typescript: specifier: ^5.2.2 - version: 5.4.3 + version: 5.4.5 packages/taikoon-ui: dependencies: @@ -542,13 +542,13 @@ importers: version: 1.0.6 '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.3) + version: 2.1.4(bufferutil@4.0.8)(typescript@5.4.5) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 4.3.5(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8) '@wagmi/core': specifier: ^2.8.0 - version: 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + version: 2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@6.0.3)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) '@web3modal/common': specifier: ^4.1.1 version: 4.1.11 @@ -557,19 +557,19 @@ importers: version: 4.1.11 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.3.1)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)) + version: 4.1.11(@wagmi/connectors@4.3.5(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(react@18.3.1)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8)) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.15) + version: 0.9.5(svelte@4.2.16) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) daisyui: specifier: ^4.10.1 - version: 4.10.3(postcss@8.4.38) + version: 4.11.1(postcss@8.4.38) dayjs: specifier: ^1.11.10 - version: 1.11.10 + version: 1.11.11 debug: specifier: ^4.3.4 version: 4.3.4 @@ -579,61 +579,64 @@ importers: postcss: specifier: ^8.4.38 version: 8.4.38 - svelte-countdown: - specifier: ^1.1.2 - version: 1.1.2 tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) viem: specifier: ^2.9.29 - version: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + version: 2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.3.3(react@18.3.1) + version: 1.3.4(react@18.3.1) '@playwright/test': specifier: ^1.28.1 - version: 1.43.1 + version: 1.44.0 '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))) + version: 3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))) '@sveltejs/kit': specifier: ^2.0.0 - version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) + version: 3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@types/eslint': specifier: ^8.56.0 version: 8.56.10 + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 '@types/node': specifier: ^20.12.7 - version: 20.12.7 + version: 20.12.11 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.8.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) convert-csv-to-json: specifier: ^2.44.0 version: 2.46.0 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.0.0(eslint@8.56.0) + version: 12.1.0(eslint@8.57.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.56.0)(typescript@5.4.3) + version: 0.8.0(eslint@8.57.0)(typescript@5.4.5) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + version: 2.38.0(eslint@8.57.0)(svelte@4.2.16)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) p-map: specifier: ^7.0.2 version: 7.0.2 @@ -642,25 +645,25 @@ importers: version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.16) raw-body: specifier: ^2.5.2 version: 2.5.2 svelte: specifier: ^4.2.7 - version: 4.2.15 + version: 4.2.16 svelte-check: specifier: ^3.7.1 - version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15) + version: 3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.16) svelte-copy: specifier: ^1.4.2 - version: 1.4.2(svelte@4.2.15) + version: 1.4.2(svelte@4.2.16) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.15) + version: 4.0.0(svelte@4.2.16) svelte-scrolling: specifier: ^1.4.0 - version: 1.4.0(svelte@4.2.15) + version: 1.4.0(svelte@4.2.16) tailwindcss-image-rendering: specifier: ^1.0.2 version: 1.0.2 @@ -669,26 +672,22 @@ importers: version: 2.6.2 typescript: specifier: ^5.0.0 - version: 5.4.3 + version: 5.4.5 vite: specifier: ^5.0.3 - version: 5.2.11(@types/node@20.12.7)(terser@5.31.0) + version: 5.2.11(@types/node@20.12.11)(terser@5.31.0) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) + version: 4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) vitest: specifier: ^1.2.0 - version: 1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) + version: 1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.31.0) which: specifier: ^4.0.0 version: 4.0.0 packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@adraffy/ens-normalize@1.10.0': resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} @@ -696,10 +695,6 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -760,10 +755,6 @@ packages: resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.24.2': resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} @@ -867,18 +858,10 @@ packages: resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.23.4': - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.1': resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.5': resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} @@ -895,19 +878,10 @@ packages: resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.5': resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.23.9': - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.24.5': resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} @@ -1487,10 +1461,6 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.23.9': - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.24.5': resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} @@ -1503,10 +1473,6 @@ packages: resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} - '@babel/types@7.23.9': - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} - engines: {node: '>=6.9.0'} - '@babel/types@7.24.5': resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} @@ -1520,8 +1486,8 @@ packages: '@chainsafe/netmask@2.0.0': resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} - '@chromatic-com/storybook@1.3.3': - resolution: {integrity: sha512-1y9r691T5vVGDZ0HY3YrCXUnvtrT2YrhDuvDZSvYSNUVpM/Imz6i1dnNMKb3eoI1qRsH55mI4zCt+Iq94NLedQ==} + '@chromatic-com/storybook@1.3.4': + resolution: {integrity: sha512-ZfQDc5Zg5YSC9cWdBc9QpMF0vgvknwKTB9xBE0NhCJWjGxG9mz9yLzQTzzliYulPtWgcQ+8cE+apDljYK+fWdQ==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} '@coinbase/wallet-sdk@3.9.1': @@ -1537,8 +1503,8 @@ packages: peerDependencies: postcss-selector-parser: ^6.0.13 - '@csstools/selector-specificity@3.0.2': - resolution: {integrity: sha512-RpHaZ1h9LE7aALeQXmXrJkRG84ZxIsctEN2biEUmFyKpzFM3zZ35eUMcIzZFsw/2olQE6v69+esEqU2f1MKycg==} + '@csstools/selector-specificity@3.0.3': + resolution: {integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 @@ -2119,12 +2085,8 @@ packages: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@8.55.0': - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.56.0': - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@ethereumjs/common@3.2.0': @@ -2245,8 +2207,8 @@ packages: '@expressive-code/plugin-text-markers@0.35.3': resolution: {integrity: sha512-gDdnQrfDRXw5Y+PKHJDkpAUdf2pthYOthGcgy3JB8GOTQ3EL1h+755Ct/bGc4MR6jn+dgnQP47uHMWQaccvN6Q==} - '@fastify/busboy@2.1.0': - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} '@formatjs/ecma402-abstract@1.18.2': @@ -2270,10 +2232,6 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@humanwhocodes/config-array@0.11.13': - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -2286,11 +2244,8 @@ packages: resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} engines: {node: '>=10.10.0'} - '@humanwhocodes/object-schema@2.0.1': - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} '@img/sharp-darwin-arm64@0.33.3': resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} @@ -2405,9 +2360,6 @@ packages: cpu: [x64] os: [win32] - '@ioredis/commands@1.2.0': - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - '@ipld/dag-cbor@9.2.0': resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -2440,6 +2392,10 @@ packages: resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@29.7.0': resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2459,10 +2415,6 @@ packages: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462': resolution: {integrity: sha512-etqLfpSJ5zaw76KUNF603be6d6QsiQPmaHr9FKEp4zhLZJzWCCMH6Icak7MtLUFLZLMpL761mZNImi/joBo1ZA==} - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -2471,10 +2423,6 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} @@ -2517,8 +2465,8 @@ packages: resolution: {integrity: sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@libp2p/interface@1.3.0': - resolution: {integrity: sha512-K72Km0Co1Z+pXpggWuoAvUUbvwZYvjCcywrHj2Ym3jt2anTE3hzL4rlZrrkzA0YhNTRFRiZ04dnu6WMXT5/4+A==} + '@libp2p/interface@1.3.1': + resolution: {integrity: sha512-KJoYP6biAgIHUU3pxaixaaYCvIHZshzXetxfoNigadAZ3hCGuwpdFhk7IABEaI3RgadOOYUwW3MXPbL+cxnXVQ==} '@libp2p/interfaces@3.3.2': resolution: {integrity: sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==} @@ -2548,8 +2496,8 @@ packages: resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} engines: {node: '>=14.0.0'} - '@metamask/json-rpc-engine@7.3.2': - resolution: {integrity: sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==} + '@metamask/json-rpc-engine@7.3.3': + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} engines: {node: '>=16.0.0'} '@metamask/json-rpc-middleware-stream@6.0.2': @@ -2574,8 +2522,8 @@ packages: '@metamask/safe-event-emitter@2.0.0': resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} - '@metamask/safe-event-emitter@3.0.0': - resolution: {integrity: sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==} + '@metamask/safe-event-emitter@3.1.1': + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} engines: {node: '>=12.0.0'} '@metamask/sdk-communication-layer@0.18.5': @@ -2624,8 +2572,8 @@ packages: resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} engines: {node: '>=14.0.0'} - '@metamask/utils@8.3.0': - resolution: {integrity: sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==} + '@metamask/utils@8.4.0': + resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} engines: {node: '>=16.0.0'} '@moralisweb3/api-utils@2.26.1': @@ -2667,26 +2615,26 @@ packages: '@moralisweb3/streams@2.26.1': resolution: {integrity: sha512-YyF3w8jKYw06ihKSi7LsG2L7FmOXDZarufQdYFhFFlNflprJG+ENorAp8NX9CfSoPzbLkF5NTDug22lehNqWTA==} - '@motionone/animation@10.16.3': - resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} + '@motionone/animation@10.17.0': + resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} - '@motionone/dom@10.16.4': - resolution: {integrity: sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==} + '@motionone/dom@10.17.0': + resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} - '@motionone/easing@10.16.3': - resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==} + '@motionone/easing@10.17.0': + resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} - '@motionone/generators@10.16.4': - resolution: {integrity: sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==} + '@motionone/generators@10.17.0': + resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} '@motionone/svelte@10.16.4': resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} - '@motionone/types@10.16.3': - resolution: {integrity: sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==} + '@motionone/types@10.17.0': + resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} - '@motionone/utils@10.16.3': - resolution: {integrity: sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==} + '@motionone/utils@10.17.0': + resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} '@motionone/vue@10.16.4': resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} @@ -2705,9 +2653,6 @@ packages: '@multiformats/multiaddr@12.2.1': resolution: {integrity: sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==} - '@noble/curves@1.1.0': - resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} - '@noble/curves@1.2.0': resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} @@ -2717,10 +2662,6 @@ packages: '@noble/hashes@1.2.0': resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - '@noble/hashes@1.3.1': - resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} - engines: {node: '>= 16'} - '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -2729,6 +2670,10 @@ packages: resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} engines: {node: '>= 16'} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@noble/secp256k1@1.7.1': resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} @@ -2789,98 +2734,98 @@ packages: cpu: [x64] os: [win32] - '@parcel/watcher-android-arm64@2.4.0': - resolution: {integrity: sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==} + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.4.0': - resolution: {integrity: sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==} + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.4.0': - resolution: {integrity: sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==} + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.4.0': - resolution: {integrity: sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==} + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.4.0': - resolution: {integrity: sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==} + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.4.0': - resolution: {integrity: sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==} + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.4.0': - resolution: {integrity: sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==} + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.4.0': - resolution: {integrity: sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==} + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.4.0': - resolution: {integrity: sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==} + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-wasm@2.4.0': - resolution: {integrity: sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==} + '@parcel/watcher-wasm@2.4.1': + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} engines: {node: '>= 10.0.0'} bundledDependencies: - napi-wasm - '@parcel/watcher-win32-arm64@2.4.0': - resolution: {integrity: sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==} + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.4.0': - resolution: {integrity: sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==} + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.4.0': - resolution: {integrity: sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==} + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.4.0': - resolution: {integrity: sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==} + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} engines: {node: '>= 10.0.0'} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/utils@2.4.2': - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.43.1': - resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} + '@playwright/test@1.44.0': + resolution: {integrity: sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==} engines: {node: '>=16'} hasBin: true @@ -2896,8 +2841,8 @@ packages: resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} engines: {node: '>=12'} - '@polka/url@1.0.0-next.24': - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3132,19 +3077,16 @@ packages: '@safe-global/safe-apps-sdk@8.1.0': resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} - '@safe-global/safe-gateway-typescript-sdk@3.15.0': - resolution: {integrity: sha512-zAzhPgUwzdp89ZrZwCAOImUyAQMQE0LQKcK4vLO5eMbfAcNOxz5g4eVdBRBRa+kVXxjyW5wii58ZlGaYUVBa7g==} + '@safe-global/safe-gateway-typescript-sdk@3.21.1': + resolution: {integrity: sha512-7nakIjcRSs6781LkizYpIfXh1DYlkUDqyALciqz/BjFU/S97sVjZdL4cuKsG9NEarytE+f6p0Qbq2Bo1aocVUA==} engines: {node: '>=16'} - '@scure/base@1.1.5': - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + '@scure/base@1.1.6': + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} '@scure/bip32@1.1.5': resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - '@scure/bip32@1.3.1': - resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} - '@scure/bip32@1.3.2': resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} @@ -3185,8 +3127,8 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@socket.io/component-emitter@3.1.0': - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} '@solidity-parser/parser@0.18.0': resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} @@ -3253,15 +3195,6 @@ packages: peerDependencies: '@sveltejs/kit': ^2.0.0 - '@sveltejs/kit@2.5.5': - resolution: {integrity: sha512-ULe3PB00q4+wYRL+IS5FDPsCEVnhEITofm7b9Yz8malcH3r1SAnW/JJ6T13hIMeu8QNRIuVQWo+P4+2VklbnLQ==} - engines: {node: '>=18.13'} - hasBin: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 - '@sveltejs/kit@2.5.7': resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} engines: {node: '>=18.13'} @@ -3271,8 +3204,8 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 - '@sveltejs/vite-plugin-svelte-inspector@2.0.0': - resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} + '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 @@ -3298,8 +3231,8 @@ packages: '@ts-morph/common@0.20.0': resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -3364,14 +3297,17 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/mdast@4.0.3': - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -3391,18 +3327,12 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.31': - resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} - '@types/node@18.19.33': resolution: {integrity: sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==} '@types/node@20.12.11': resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} - '@types/node@20.12.7': - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} - '@types/object-hash@3.0.6': resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} @@ -3418,9 +3348,6 @@ packages: '@types/secp256k1@4.0.6': resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} - '@types/semver@7.5.7': - resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} - '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -3445,17 +3372,6 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - '@typescript-eslint/eslint-plugin@7.4.0': - resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/eslint-plugin@7.8.0': resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3467,16 +3383,6 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.7.0': - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/parser@7.8.0': resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3491,28 +3397,10 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@7.4.0': - resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@7.7.0': - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@7.8.0': resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.4.0': - resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/type-utils@7.8.0': resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3527,14 +3415,6 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@7.4.0': - resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@7.7.0': - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@7.8.0': resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3548,24 +3428,6 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.4.0': - resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.7.0': - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@7.8.0': resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3581,12 +3443,6 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@7.4.0': - resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - '@typescript-eslint/utils@7.8.0': resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3597,14 +3453,6 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@7.4.0': - resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@7.7.0': - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@7.8.0': resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3612,40 +3460,25 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitest/coverage-v8@1.4.0': - resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} + '@vitest/coverage-v8@1.6.0': + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} peerDependencies: - vitest: 1.4.0 - - '@vitest/expect@1.5.0': - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} - - '@vitest/expect@1.5.3': - resolution: {integrity: sha512-y+waPz31pOFr3rD7vWTbwiLe5+MgsMm40jTZbQE8p8/qXyBX3CQsIXRx9XK12IbY7q/t5a5aM/ckt33b4PxK2g==} - - '@vitest/runner@1.5.0': - resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} - - '@vitest/runner@1.5.3': - resolution: {integrity: sha512-7PlfuReN8692IKQIdCxwir1AOaP5THfNkp0Uc4BKr2na+9lALNit7ub9l3/R7MP8aV61+mHKRGiqEKRIwu6iiQ==} - - '@vitest/snapshot@1.5.0': - resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + vitest: 1.6.0 - '@vitest/snapshot@1.5.3': - resolution: {integrity: sha512-K3mvIsjyKYBhNIDujMD2gfQEzddLe51nNOAf45yKRt/QFJcUIeTQd2trRvv6M6oCBHNVnZwFWbQ4yj96ibiDsA==} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/spy@1.5.0': - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - '@vitest/spy@1.5.3': - resolution: {integrity: sha512-Llj7Jgs6lbnL55WoshJUUacdJfjU2honvGcAJBxhra5TPEzTJH8ZuhI3p/JwqqfnTr4PmP7nDmOXP53MS7GJlg==} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/utils@1.5.0': - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/utils@1.5.3': - resolution: {integrity: sha512-rE9DTN1BRhzkzqNQO+kw8ZgfeEBCLXiHJwetk668shmNBpSagQxneT5eSqEBLP+cqSiAeecvQmbpFfdMyLcIQA==} + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} '@volar/kit@2.2.2': resolution: {integrity: sha512-mIPWV7sjuJPNL+TLnpQwFD6hW+D5tF4Axg+nv0wHjdxrik+ilWT5DnBomMftoekUF4+SxUqxMjU8kd7caOuT5Q==} @@ -3688,18 +3521,18 @@ packages: typescript: optional: true - '@wagmi/connectors@4.3.1': - resolution: {integrity: sha512-d59PGuaHDKhqzO1Zg98iBkFLIgA3lwF1h3gvpSTQD9sPcZZMVh/hR6rnJvd3PoCTxQRaaEiv4nIgwfl/7GOwaA==} + '@wagmi/connectors@4.3.5': + resolution: {integrity: sha512-6olw6H4Zlp9H6WQeKJv0pJHUYbq2ckXc/57qOKhruvksuXde94gY34nUDZUNRKRTiYlXiUVtwJK7OP0/on7bGw==} peerDependencies: - '@wagmi/core': 2.8.1 + '@wagmi/core': 2.9.3 typescript: '>=5.0.4' viem: 2.x peerDependenciesMeta: typescript: optional: true - '@wagmi/core@2.8.1': - resolution: {integrity: sha512-w2MqeSfEKnQ1QWYD1sw0iS70fv7Z5HUHRQCHw8MjhvDtysdiY98tZpNy80ZZzhSb7Ye1rqZwFo2ZS/vL7HtFEg==} + '@wagmi/core@2.9.3': + resolution: {integrity: sha512-Mbhbmyz0wLbAOkjNoUoSJ0nI43sHz6/NyxTuzQ+g4ZMz9dAlMq5qNNqecfyaeXfOvSKuahlWu/frTIz8+jMgsw==} peerDependencies: '@tanstack/query-core': '>=5.0.0' typescript: '>=5.0.4' @@ -3710,35 +3543,29 @@ packages: typescript: optional: true - '@walletconnect/core@2.11.2': - resolution: {integrity: sha512-bB4SiXX8hX3/hyBfVPC5gwZCXCl+OPj+/EDVM71iAO3TDsh78KPbrVAbDnnsbHzZVHlsMohtXX3j5XVsheN3+g==} - - '@walletconnect/core@2.12.2': - resolution: {integrity: sha512-7Adv/b3pp9F42BkvReaaM4KS8NEvlkS7AMtwO3uF/o6aRMKtcfTJq9/jgWdKJh4RP8pPRTRFjCw6XQ/RZtT4aQ==} + '@walletconnect/core@2.13.0': + resolution: {integrity: sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g==} '@walletconnect/environment@1.0.1': resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} - '@walletconnect/ethereum-provider@2.11.2': - resolution: {integrity: sha512-BUDqee0Uy2rCZVkW5Ao3q6Ado/3fePYnFdryVF+YL6bPhj+xQZ5OfKodl+uvs7Rwq++O5wTX2RqOTzpW7+v+Mg==} - - '@walletconnect/ethereum-provider@2.12.2': - resolution: {integrity: sha512-vBl2zCnNm2iPaomJdr5YT16cT7aa8cH2WFs6879XPngU5i7HXS3bU6TamhyhKKl13sdIfifmCkCC+RWn5GdPMw==} + '@walletconnect/ethereum-provider@2.13.0': + resolution: {integrity: sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA==} '@walletconnect/events@1.0.1': resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} - '@walletconnect/heartbeat@1.2.1': - resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + '@walletconnect/heartbeat@1.2.2': + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} - '@walletconnect/jsonrpc-http-connection@1.0.7': - resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} + '@walletconnect/jsonrpc-http-connection@1.0.8': + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} - '@walletconnect/jsonrpc-provider@1.0.13': - resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + '@walletconnect/jsonrpc-provider@1.0.14': + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} - '@walletconnect/jsonrpc-types@1.0.3': - resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} '@walletconnect/jsonrpc-utils@1.0.8': resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} @@ -3766,8 +3593,8 @@ packages: '@walletconnect/modal@2.6.2': resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} - '@walletconnect/relay-api@1.0.9': - resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} + '@walletconnect/relay-api@1.0.10': + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} '@walletconnect/relay-auth@1.0.4': resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} @@ -3775,32 +3602,20 @@ packages: '@walletconnect/safe-json@1.0.2': resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} - '@walletconnect/sign-client@2.11.2': - resolution: {integrity: sha512-MfBcuSz2GmMH+P7MrCP46mVE5qhP0ZyWA0FyIH6/WuxQ6G+MgKsGfaITqakpRPsykWOJq8tXMs3XvUPDU413OQ==} - - '@walletconnect/sign-client@2.12.2': - resolution: {integrity: sha512-cM0ualXj6nVvLqS4BDNRk+ZWR+lubcsz/IHreH+3wYrQ2sV+C0fN6ctrd7MMGZss0C0qacWCx0pm62ZBuoKvqA==} + '@walletconnect/sign-client@2.13.0': + resolution: {integrity: sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA==} '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} - '@walletconnect/types@2.11.2': - resolution: {integrity: sha512-p632MFB+lJbip2cvtXPBQslpUdiw1sDtQ5y855bOlAGquay+6fZ4h1DcDePeKQDQM3P77ax2a9aNPZxV6y/h1Q==} - - '@walletconnect/types@2.12.2': - resolution: {integrity: sha512-9CmwTlPbrFTzayTL9q7xM7s3KTJkS6kYFtH2m1/fHFgALs6pIUjf1qAx1TF2E4tv7SEzLAIzU4NqgYUt2vWXTg==} + '@walletconnect/types@2.13.0': + resolution: {integrity: sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ==} - '@walletconnect/universal-provider@2.11.2': - resolution: {integrity: sha512-cNtIn5AVoDxKAJ4PmB8m5adnf5mYQMUamEUPKMVvOPscfGtIMQEh9peKsh2AN5xcRVDbgluC01Id545evFyymw==} + '@walletconnect/universal-provider@2.13.0': + resolution: {integrity: sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg==} - '@walletconnect/universal-provider@2.12.2': - resolution: {integrity: sha512-0k5ZgSkABopQLVhkiwl2gRGG7dAP4SWiI915pIlyN5sRvWV+qX1ALhWAmRcdv0TXWlKHDcDgPJw/q2sCSAHuMQ==} - - '@walletconnect/utils@2.11.2': - resolution: {integrity: sha512-LyfdmrnZY6dWqlF4eDrx5jpUwsB2bEPjoqR5Z6rXPiHJKUOdJt7az+mNOn5KTSOlRpd1DmozrBrWr+G9fFLYVw==} - - '@walletconnect/utils@2.12.2': - resolution: {integrity: sha512-zf50HeS3SfoLv1N9GPl2IXTZ9TsXfet4usVAsZmX9P6/Xzq7d/7QakjVQCHH/Wk1O9XkcsfeoZoUhRxoMJ5uJw==} + '@walletconnect/utils@2.13.0': + resolution: {integrity: sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w==} '@walletconnect/window-getters@1.0.1': resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} @@ -3945,8 +3760,8 @@ packages: aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} ajv-draft-04@1.0.0: @@ -3960,8 +3775,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} anser@1.4.10: resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} @@ -4000,8 +3815,8 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - antlr4@4.13.1: - resolution: {integrity: sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==} + antlr4@4.13.1-patch-1: + resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} engines: {node: '>=16'} any-promise@1.3.0: @@ -4032,11 +3847,12 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} array-iterate@2.0.1: @@ -4046,8 +3862,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.2: @@ -4058,8 +3874,8 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} asap@2.0.6: @@ -4116,13 +3932,6 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - autoprefixer@10.4.18: - resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - autoprefixer@10.4.19: resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} @@ -4130,12 +3939,12 @@ packages: peerDependencies: postcss: ^8.1.0 - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.6.7: - resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + axios@1.6.8: + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} axobject-query@4.0.0: resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} @@ -4190,15 +3999,11 @@ packages: bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} bl@4.1.0: @@ -4232,10 +4037,6 @@ packages: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} - bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -4252,8 +4053,8 @@ packages: browser-readablestream-to-it@1.0.3: resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} - browser-readablestream-to-it@2.0.6: - resolution: {integrity: sha512-csJm66U/gTC6VHjeaOaziK6Y6ENdrzlNLdXnsdnvGX+3hGvedkxTyiMk2WbgKR8F15ACxDLJhDuE/cmovLPBQQ==} + browser-readablestream-to-it@2.0.7: + resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} @@ -4297,12 +4098,15 @@ packages: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} - bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} - bundle-require@4.0.2: - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + bundle-require@4.1.0: + resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -4369,11 +4173,8 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001593: - resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==} - - caniuse-lite@1.0.30001615: - resolution: {integrity: sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==} + caniuse-lite@1.0.30001617: + resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} canvaskit-wasm@0.39.1: resolution: {integrity: sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==} @@ -4426,8 +4227,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chromatic@11.3.0: - resolution: {integrity: sha512-q1ZtJDJrjLGnz60ivpC16gmd7KFzcaA4eTb7gcytCqbaKqlHhCFr1xQmcUDsm14CK7JsqdkFU6S+JQdOd2ZNJg==} + chromatic@11.3.2: + resolution: {integrity: sha512-0PuHl49VvBMoDHEfmNjC/bim9YYNhWF3axTZlFuatC0avwr2Xw4GDqJDG9fArEWN8oM8VtYHkE9D7qc87dmz2w==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -4464,8 +4265,8 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - cli-color@2.0.3: - resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} + cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} engines: {node: '>=0.10'} cli-cursor@3.1.0: @@ -4507,10 +4308,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - code-block-writer@12.0.0: resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} @@ -4593,6 +4390,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -4613,8 +4413,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.0.0: - resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} + cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} @@ -4663,8 +4463,13 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - crossws@0.1.1: - resolution: {integrity: sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ==} + crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true crypto-js@3.3.0: resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} @@ -4695,31 +4500,37 @@ packages: resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} dag-jose@4.0.0: resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} - daisyui@4.10.1: - resolution: {integrity: sha512-Ds0Z0Fv+Xf6ZEqV4Q5JIOeKfg83xxnww0Lzid0V94vPtlQ0yYmucEa33zSctsX2VEgBALtmk5zVEqd59pnUbuQ==} - engines: {node: '>=16.9.0'} - - daisyui@4.10.3: - resolution: {integrity: sha512-LuxUmktsfO8nk0MKbg8NAth0K199pL2FzPMqhy7PGKFQ9LWIDdYVnc4f60Ior1bvbyZcXoH6/hhU068UuHksjA==} + daisyui@4.11.1: + resolution: {integrity: sha512-obT9CUbQdW6eoHwSeT5VwaRrWlwrM4OT5qlfdJ0oQlSIEYhwnEl2+L2fwu5PioLbitwuMdYC2X8I1cyy8Pf6LQ==} engines: {node: '>=16.9.0'} data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - dayjs@1.10.1: - resolution: {integrity: sha512-2xg7JrHQeLBQFkvTumLoy62x1siyeocc98QwjtURgvRqOPYmAkMUdmSjrOA+MlmL6QMQn5MUhDf6rNZNuPc1LQ==} - dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} @@ -4787,14 +4598,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - - default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -4810,10 +4613,6 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -4828,10 +4627,6 @@ packages: denodeify@1.2.1: resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -4867,9 +4662,6 @@ packages: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} - devalue@4.3.2: - resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} - devalue@5.0.0: resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} @@ -4939,8 +4731,8 @@ packages: resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} engines: {node: '>=4'} - duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -4955,12 +4747,15 @@ packages: resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} engines: {node: '>=6'} - electron-to-chromium@1.4.676: - resolution: {integrity: sha512-uHt4FB8SeYdhcOsj2ix/C39S7sPSNFJpzShjxGOm1KdF4MHyGqGi389+T5cErsodsijojXilYaHIKKqJfqh7uQ==} + electron-to-chromium@1.4.761: + resolution: {integrity: sha512-PIbxpiJGx6Bb8dQaonNc6CGTRlVntdLg/2nMa1YhnrwYOORY9a3ZgGN0UQYE6lAcj/lkyduJN7BPt/JiY+jAQQ==} elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + emmet@2.4.7: resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} @@ -4993,10 +4788,6 @@ packages: resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} engines: {node: '>=10.0.0'} - enhanced-resolve@5.16.1: - resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} - engines: {node: '>=10.13.0'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -5019,8 +4810,8 @@ packages: resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} engines: {node: '>= 0.8'} - es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} es-define-property@1.0.0: @@ -5034,8 +4825,12 @@ packages: es-module-lexer@1.5.2: resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} - es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} es-shim-unscopables@1.0.2: @@ -5045,8 +4840,8 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} - es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} es6-iterator@2.0.3: @@ -5055,8 +4850,9 @@ packages: es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} es6-weak-map@2.0.3: resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} @@ -5128,8 +4924,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -5161,8 +4957,8 @@ packages: peerDependencies: eslint: '>=4.19.1' - eslint-plugin-import@2.29.0: - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -5171,11 +4967,11 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-n@17.6.0: - resolution: {integrity: sha512-Y73o88ROwbCtVCCmZjYlYcPYkOG7mIzxxVK1XFRSa2epbKWtAPsmYpAD0pqxg/ZwlcWxMDceQPKHYQi4VIHz7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-plugin-n@16.6.2: + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} + engines: {node: '>=16.0.0'} peerDependencies: - eslint: '>=8.23.0' + eslint: '>=7.0.0' eslint-plugin-node@11.1.0: resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} @@ -5203,8 +4999,8 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 - eslint-plugin-simple-import-sort@12.0.0: - resolution: {integrity: sha512-8o0dVEdAkYap0Cn5kNeklaKcT1nUsa3LITWEuFk3nJifOoD+5JQGoyDUW2W/iPWwBsNBJpyJS9y4je/BgxLcyQ==} + eslint-plugin-simple-import-sort@12.1.0: + resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} peerDependencies: eslint: '>=5.0.0' @@ -5244,19 +5040,18 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5329,8 +5124,8 @@ packages: resolution: {integrity: sha512-3Vwr2CikFLezh/zLAPBV6C51jC0fFnf6vjhkoIWsDms/W5MLgAZNhh9nZUxPmg899K8cVFbklrYQBxcD4JmfrA==} engines: {node: '>= 4.3.0', npm: '>= 3.7.0'} - ethereum-bloom-filters@1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + ethereum-bloom-filters@1.1.0: + resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} ethereum-cryptography@0.1.3: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} @@ -5338,9 +5133,6 @@ packages: ethereum-cryptography@1.2.0: resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - ethereum-cryptography@2.1.2: - resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} - ethereum-cryptography@2.1.3: resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} @@ -5379,14 +5171,14 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expressive-code@0.35.3: resolution: {integrity: sha512-XjWWUCxS4uQjPoRM98R7SNWWIYlFEaOeHm1piWv+c7coHCekuWno81thsc3g/UJ+DajNtOEsIQIAAcsBQZ8LMg==} @@ -5423,8 +5215,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} fast-safe-stringify@2.1.1: @@ -5494,8 +5286,8 @@ packages: resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} hasBin: true - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} @@ -5504,12 +5296,12 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.236.0: - resolution: {integrity: sha512-0OEk9Gr+Yj7wjDW2KgaNYUypKau71jAfFyeLQF5iVtxqc6uJHag/MT7pmaEApf4qM7u86DkBcd4ualddYMfbLw==} + flow-parser@0.235.1: + resolution: {integrity: sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==} engines: {node: '>=0.4.0'} - follow-redirects@1.15.5: - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -5528,9 +5320,9 @@ packages: resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3} version: 1.7.5 - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc} - version: 1.7.6 + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/978ac6fadb62f5f0b723c996f64be52eddba6801: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/978ac6fadb62f5f0b723c996f64be52eddba6801} + version: 1.8.2 form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} @@ -5615,12 +5407,12 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + get-tsconfig@4.7.4: + resolution: {integrity: sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ==} github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -5633,8 +5425,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -5649,20 +5441,12 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globals@15.2.0: - resolution: {integrity: sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A==} - engines: {node: '>=18'} - - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globalyzer@0.1.0: @@ -5702,8 +5486,8 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} - h3@1.10.2: - resolution: {integrity: sha512-r1iNNcFGL4G9pL3lgYxwX0O2ZmqdKqhILAJsnlw5icn5I1QHnADM4TgVdYRtHUqy+NntVpHIEFwnw/XCbebICg==} + h3@1.11.1: + resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -5727,8 +5511,8 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} hash-base@3.1.0: @@ -5741,12 +5525,8 @@ packages: hashlru@2.3.0: resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} - hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - - hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} hast-util-from-html@2.0.1: @@ -5865,10 +5645,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -5893,10 +5669,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -5914,9 +5686,6 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -5953,20 +5722,16 @@ packages: interface-store@5.1.8: resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} - internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} - intl-messageformat@10.5.11: - resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} + intl-messageformat@10.5.12: + resolution: {integrity: sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg==} invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ioredis@5.3.2: - resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} - engines: {node: '>=12.22.0'} - ipfs-core-types@0.14.1: resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -5990,8 +5755,8 @@ packages: resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - iron-webcrypto@1.0.0: - resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} + iron-webcrypto@1.1.1: + resolution: {integrity: sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg==} is-absolute-url@4.0.1: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} @@ -6007,8 +5772,9 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -6031,6 +5797,10 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -6038,6 +5808,10 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -6106,8 +5880,8 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} is-number-object@1.0.7: @@ -6147,8 +5921,9 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -6166,8 +5941,8 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} is-unicode-supported@0.1.0: @@ -6290,6 +6065,10 @@ packages: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6298,6 +6077,10 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6331,8 +6114,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -6413,9 +6196,6 @@ packages: jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -6521,21 +6301,21 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listhen@1.6.0: - resolution: {integrity: sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w==} + listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} hasBin: true lit-element@3.3.3: resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} - lit-element@4.0.4: - resolution: {integrity: sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==} + lit-element@4.0.5: + resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==} lit-html@2.8.0: resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} - lit-html@3.1.2: - resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==} + lit-html@3.1.3: + resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==} lit@2.8.0: resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} @@ -6577,12 +6357,6 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -6637,33 +6411,21 @@ packages: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - magic-string@0.30.7: - resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} - engines: {node: '>=12'} - - magic-string@0.30.9: - resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} - engines: {node: '>=12'} - - magicast@0.3.3: - resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -7003,18 +6765,14 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -7022,8 +6780,8 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + minipass@7.1.0: + resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} engines: {node: '>=16 || 14 >=14.17'} mipd@0.0.5: @@ -7048,8 +6806,8 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} moralis@2.26.1: resolution: {integrity: sha512-6aY1D/ZJwpys3H1tKhxbuRvnHXTOK07uqPrBQS2OPbCyxYjW33NFJPJXiLRXsmpDjFM+xq6vYRKrQSy5Zf4yog==} @@ -7158,8 +6916,8 @@ packages: resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} engines: {node: '>= 0.10.5'} - node-fetch-native@1.6.2: - resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -7174,10 +6932,6 @@ packages: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} - hasBin: true - node-gyp-build@4.8.1: resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true @@ -7200,8 +6954,8 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - normalize-url@8.0.0: - resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} not@0.1.0: @@ -7211,10 +6965,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7229,8 +6979,8 @@ packages: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} - nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + nwsapi@2.2.9: + resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} ob1@0.80.9: resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} @@ -7258,19 +7008,20 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} - ofetch@1.3.3: - resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} @@ -7313,15 +7064,11 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ora@5.4.1: @@ -7482,8 +7229,8 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} path-to-regexp@6.2.2: @@ -7551,16 +7298,16 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.1.0: + resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} - playwright-core@1.43.1: - resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} + playwright-core@1.44.0: + resolution: {integrity: sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==} engines: {node: '>=16'} hasBin: true - playwright@1.43.1: - resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} + playwright@1.44.0: + resolution: {integrity: sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==} engines: {node: '>=16'} hasBin: true @@ -7572,10 +7319,14 @@ packages: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} - pony-cause@2.1.10: - resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==} + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} engines: {node: '>=12.0.0'} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -7618,21 +7369,6 @@ packages: ts-node: optional: true - postcss-load-config@5.1.0: - resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - postcss-nested@5.0.6: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} @@ -7645,8 +7381,8 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@12.1.0: - resolution: {integrity: sha512-QOYnosaZ+mlP6plQrAxFw09UUp2Sgtxj1BVHN+rSVbtV0Yx48zRt9/9F/ZOoxOKBBEsaJk2MYhhVRjeRRw5yuw==} + postcss-nesting@12.1.2: + resolution: {integrity: sha512-FUmTHGDNundodutB4PUBxt/EPuhgtpk8FJGRsBhOuy+6FnkR2A8RZWIsyyy6XmhvX2DZQQWIkvu+HB4IbJm+Ew==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 @@ -7663,10 +7399,6 @@ packages: peerDependencies: postcss: ^8.4.29 - postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} - engines: {node: '>=4'} - postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} @@ -7678,8 +7410,8 @@ packages: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} - preact@10.19.5: - resolution: {integrity: sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ==} + preact@10.21.0: + resolution: {integrity: sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==} preferred-pm@3.1.3: resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} @@ -7693,12 +7425,6 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier-plugin-svelte@3.2.2: - resolution: {integrity: sha512-ZzzE/wMuf48/1+Lf2Ffko0uDa6pyCfgHV6+uAhtg2U0AAXGrhCSW88vEJNAkAxW5qyrFY1y1zZ4J8TgHrjW++Q==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - prettier-plugin-svelte@3.2.3: resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} peerDependencies: @@ -7810,8 +7536,8 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - radix3@1.1.0: - resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -7837,8 +7563,8 @@ packages: react-devtools-core@5.2.0: resolution: {integrity: sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A==} - react-i18next@14.1.1: - resolution: {integrity: sha512-QSiKw+ihzJ/CIeIYWrarCmXJUySHDwQr5y8uaNIkbxoGRm/5DukkxZs+RPla79IKyyDPzC/DRlgQCABHtrQuQQ==} + react-i18next@13.5.0: + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -7853,9 +7579,6 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -7920,14 +7643,6 @@ packages: receptacle@1.3.2: resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} - redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - - redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} - regenerate-unicode-properties@10.1.1: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} @@ -7944,8 +7659,8 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} regexpp@3.2.0: @@ -8117,10 +7832,6 @@ packages: rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -8128,8 +7839,8 @@ packages: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} - safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} safe-buffer@5.1.2: @@ -8138,8 +7849,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} @@ -8188,8 +7900,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.1: + resolution: {integrity: sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==} engines: {node: '>=10'} hasBin: true @@ -8219,12 +7931,12 @@ packages: set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} setimmediate@1.0.5: @@ -8259,8 +7971,9 @@ packages: shiki@1.5.1: resolution: {integrity: sha512-vx4Ds3M3B9ZEmLeSXqBAB85osBWV8ErZfP69kuFQZozPgHc33m7spLTCUkcjwEjFm3gk3F9IdXMv8kX+v9xDHA==} - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -8306,8 +8019,8 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - socket.io-client@4.7.4: - resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} + socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} engines: {node: '>=10.0.0'} socket.io-parser@4.2.4: @@ -8385,9 +8098,6 @@ packages: resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} engines: {node: '>=6'} - standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - starlight-links-validator@0.8.0: resolution: {integrity: sha512-FYZ5cfV7jSL4wOsWmIkpR+9dH0Z8fxslSQl8IiAv5URfkxLgsaFzjx51FBeSaaS5uVmO5WgfkUjx3N52Jl1/TQ==} engines: {node: '>=18.14.1'} @@ -8425,8 +8135,8 @@ packages: stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} - stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} stream-to-it@0.2.4: resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} @@ -8447,15 +8157,16 @@ packages: resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} engines: {node: '>=18'} - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -8510,8 +8221,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -8530,8 +8241,8 @@ packages: sudo-prompt@9.2.1: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - superstruct@1.0.3: - resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} engines: {node: '>=14.0.0'} supports-color@5.5.0: @@ -8561,14 +8272,11 @@ packages: peerDependencies: svelte: ^3.55.0 || ^4.0.0 - svelte-countdown@1.1.2: - resolution: {integrity: sha512-datUfbRtGCp+7OwIRcbW9tbIwlkN7KiJp9Mg01Na9HgSQrLG0knsD/xjaIVKPovxY8xF0yOrbPEz+bT/BS9EBQ==} - - svelte-eslint-parser@0.35.0: - resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} + svelte-eslint-parser@0.36.0: + resolution: {integrity: sha512-/6YmUSr0FAVxW8dXNdIMydBnddPMHzaHirAZ7RrT21XYdgGGZMh0LQG6CZsvAFS4r2Y4ItUuCQc8TQ3urB30mQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.115 peerDependenciesMeta: svelte: optional: true @@ -8586,9 +8294,9 @@ packages: peerDependencies: svelte: ^3 || ^4 - svelte-preprocess@5.1.3: - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} + svelte-preprocess@5.1.4: + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} peerDependencies: '@babel/core': ^7.10.2 coffeescript: ^2.5.1 @@ -8628,27 +8336,23 @@ packages: peerDependencies: svelte: ^3 || ^4 - svelte@4.2.13: - resolution: {integrity: sha512-jtVt2KXLbQnsWN93Zd7EVboNh8Tqexes4rZfXNP7nYRjd9+JjubTD8BXloUmU1OUYpc6pdd1aKBhCV+b2ZKoMg==} - engines: {node: '>=16'} - - svelte@4.2.15: - resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} + svelte@4.2.16: + resolution: {integrity: sha512-mQwHpqHD2PmFcCyHaZ7XiTqposaLvJ75WpYcyY5/ce3qxbYtwQpZ+M7ZKP+2CG5U6kfnBZBpPLyofhlE6ROrnQ==} engines: {node: '>=16'} symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.8.6: - resolution: {integrity: sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==} + synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} engines: {node: '>=10.0.0'} tailwindcss-image-rendering@1.0.2: @@ -8659,10 +8363,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -8708,21 +8408,17 @@ packages: tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - tinypool@0.8.3: - resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} - tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} - titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -8746,8 +8442,8 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} tr46@0.0.3: @@ -8777,8 +8473,8 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-essentials@9.4.1: - resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} + ts-essentials@9.4.2: + resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} peerDependencies: typescript: '>=4.1.0' peerDependenciesMeta: @@ -8815,8 +8511,8 @@ packages: typescript: optional: true - tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -8853,26 +8549,24 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} typesafe-path@0.2.2: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} @@ -8880,18 +8574,13 @@ packages: typescript-auto-import-cache@0.3.2: resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} - typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - ufo@1.4.0: - resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} uint8-varint@2.0.4: resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} @@ -8899,8 +8588,8 @@ packages: uint8arraylist@2.4.8: resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} - uint8arrays@3.1.1: - resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} uint8arrays@4.0.10: resolution: {integrity: sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==} @@ -8917,8 +8606,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} unenv@1.9.0: @@ -9010,21 +8699,22 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unstorage@1.10.1: - resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} + unstorage@1.10.2: + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} peerDependencies: - '@azure/app-configuration': ^1.4.1 + '@azure/app-configuration': ^1.5.0 '@azure/cosmos': ^4.0.0 '@azure/data-tables': ^13.2.2 - '@azure/identity': ^3.3.2 - '@azure/keyvault-secrets': ^4.7.0 - '@azure/storage-blob': ^12.16.0 - '@capacitor/preferences': ^5.0.6 - '@netlify/blobs': ^6.2.0 - '@planetscale/database': ^1.11.0 - '@upstash/redis': ^1.23.4 - '@vercel/kv': ^0.2.3 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 idb-keyval: ^6.2.1 + ioredis: ^5.3.2 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -9050,17 +8740,15 @@ packages: optional: true idb-keyval: optional: true - - untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} + ioredis: + optional: true untun@0.1.3: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + update-browserslist-db@1.0.15: + resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -9089,10 +8777,6 @@ packages: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} - utf-8-validate@6.0.4: - resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} - engines: {node: '>=6.14.2'} - utf8@3.0.0: resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} @@ -9110,13 +8794,13 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} - engines: {node: '>=10.12.0'} - valtio@1.11.2: resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} @@ -9159,21 +8843,16 @@ packages: typescript: optional: true - viem@2.9.31: - resolution: {integrity: sha512-8aJ8Dm/591Czwb/nRayo0z8Ls5KxqC4QYE33fmHwhx2tDUWC/hHcPZqjLRSTWFtAfi0aZKvP7BeB6UZ3ZkTRhQ==} + viem@2.10.2: + resolution: {integrity: sha512-gcOL+XxA0UWDarli856OEgumaBz4df/qNMpgno4NTSSZtJSC1XixIb3gWjVBei6Vx085ivw/U9ZE8gdniIo7fA==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true - vite-node@1.5.0: - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-node@1.5.3: - resolution: {integrity: sha512-axFo00qiCpU/JLd8N1gu9iEYL3xTbMbMrbe5nDp9GL0nb6gurIdZLkkFogZXWnE8Oyy5kfSLwNVIcVsnhE7lgQ==} + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -9261,40 +8940,15 @@ packages: typescript: 3.x || 4.x || 5.x vitest: '>=0.31.1' - vitest@1.5.0: - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vitest@1.5.3: - resolution: {integrity: sha512-2oM7nLXylw3mQlW6GXnRriw+7YvZFk/YNV8AxIC3Z3MfFbuziLGWP9GPxxu/7nRlXhqyxBikpamr+lEEj1sUEw==} + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.3 - '@vitest/ui': 1.5.3 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9418,10 +9072,6 @@ packages: resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} engines: {node: '>=8.0.0'} - web3-utils@1.10.3: - resolution: {integrity: sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==} - engines: {node: '>=8.0.0'} - web3-utils@1.10.4: resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} engines: {node: '>=8.0.0'} @@ -9472,8 +9122,8 @@ packages: resolution: {integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==} engines: {node: '>=8.15'} - which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} which@2.0.2: @@ -9495,6 +9145,10 @@ packages: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -9572,8 +9226,8 @@ packages: utf-8-validate: optional: true - ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -9609,17 +9263,10 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} - yaml@2.4.2: resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} @@ -9684,17 +9331,10 @@ packages: snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - '@adraffy/ens-normalize@1.10.0': {} '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.2.1': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.25 - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -9803,7 +9443,7 @@ snapshots: '@astrojs/sitemap': 3.1.4 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 astro: 4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5) astro-expressive-code: 0.35.3(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) bcp-47: 2.1.0 @@ -9834,11 +9474,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 @@ -9980,12 +9615,8 @@ snapshots: dependencies: '@babel/types': 7.24.5 - '@babel/helper-string-parser@7.23.4': {} - '@babel/helper-string-parser@7.24.1': {} - '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.24.5': {} '@babel/helper-validator-option@7.23.5': {} @@ -10004,12 +9635,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - '@babel/highlight@7.24.5': dependencies: '@babel/helper-validator-identifier': 7.24.5 @@ -10017,10 +9642,6 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.0 - '@babel/parser@7.23.9': - dependencies: - '@babel/types': 7.23.9 - '@babel/parser@7.24.5': dependencies: '@babel/types': 7.24.5 @@ -10686,10 +10307,6 @@ snapshots: '@babel/regjsgen@0.8.0': {} - '@babel/runtime@7.23.9': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.24.5': dependencies: regenerator-runtime: 0.14.1 @@ -10715,12 +10332,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.23.9': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - '@babel/types@7.24.5': dependencies: '@babel/helper-string-parser': 7.24.1 @@ -10735,9 +10346,9 @@ snapshots: dependencies: '@chainsafe/is-ip': 2.0.2 - '@chromatic-com/storybook@1.3.3(react@18.3.1)': + '@chromatic-com/storybook@1.3.4(react@18.3.1)': dependencies: - chromatic: 11.3.0 + chromatic: 11.3.2 filesize: 10.1.1 jsonfile: 6.1.0 react-confetti: 6.1.0(react@18.3.1) @@ -10756,7 +10367,7 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.19.5 + preact: 10.21.0 sha.js: 2.4.11 transitivePeerDependencies: - supports-color @@ -10765,13 +10376,13 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.15)': + '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16)': dependencies: - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 - '@csstools/selector-specificity@3.0.2(postcss-selector-parser@6.0.15)': + '@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16)': dependencies: - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 '@ctrl/tinycolor@4.1.0': {} @@ -11063,14 +10674,9 @@ snapshots: '@esbuild/win32-x64@0.21.2': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.55.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: - eslint: 8.55.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': - dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} @@ -11089,9 +10695,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.55.0': {} - - '@eslint/js@8.56.0': {} + '@eslint/js@8.57.0': {} '@ethereumjs/common@3.2.0': dependencies: @@ -11393,7 +10997,7 @@ snapshots: dependencies: '@expressive-code/core': 0.35.3 - '@fastify/busboy@2.1.0': {} + '@fastify/busboy@2.1.1': {} '@formatjs/ecma402-abstract@1.18.2': dependencies: @@ -11425,17 +11029,9 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@humanwhocodes/config-array@0.11.13': - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/config-array@0.11.14': dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -11445,9 +11041,7 @@ snapshots: '@humanwhocodes/momoa@2.0.4': {} - '@humanwhocodes/object-schema@2.0.1': {} - - '@humanwhocodes/object-schema@2.0.2': {} + '@humanwhocodes/object-schema@2.0.3': {} '@img/sharp-darwin-arm64@0.33.3': optionalDependencies: @@ -11524,8 +11118,6 @@ snapshots: '@img/sharp-win32-x64@0.33.3': optional: true - '@ioredis/commands@1.2.0': {} - '@ipld/dag-cbor@9.2.0': dependencies: cborg: 4.2.0 @@ -11564,6 +11156,10 @@ snapshots: '@types/node': 20.12.11 jest-mock: 29.7.0 + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -11601,12 +11197,6 @@ snapshots: vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -11615,8 +11205,6 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.1.2': {} - '@jridgewell/set-array@1.2.1': {} '@jridgewell/source-map@0.3.6': @@ -11670,7 +11258,7 @@ snapshots: it-pushable: 3.2.3 uint8arraylist: 2.4.8 - '@libp2p/interface@1.3.0': + '@libp2p/interface@1.3.1': dependencies: '@multiformats/multiaddr': 12.2.1 it-pushable: 3.2.3 @@ -11738,25 +11326,25 @@ snapshots: '@metamask/eth-json-rpc-provider@1.0.1': dependencies: - '@metamask/json-rpc-engine': 7.3.2 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color - '@metamask/json-rpc-engine@7.3.2': + '@metamask/json-rpc-engine@7.3.3': dependencies: '@metamask/rpc-errors': 6.2.1 - '@metamask/safe-event-emitter': 3.0.0 - '@metamask/utils': 8.3.0 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.4.0 transitivePeerDependencies: - supports-color '@metamask/json-rpc-middleware-stream@6.0.2': dependencies: - '@metamask/json-rpc-engine': 7.3.2 - '@metamask/safe-event-emitter': 3.0.0 - '@metamask/utils': 8.3.0 + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.4.0 readable-stream: 3.6.2 transitivePeerDependencies: - supports-color @@ -11772,12 +11360,12 @@ snapshots: '@metamask/providers@15.0.0': dependencies: - '@metamask/json-rpc-engine': 7.3.2 + '@metamask/json-rpc-engine': 7.3.3 '@metamask/json-rpc-middleware-stream': 6.0.2 '@metamask/object-multiplex': 2.0.0 '@metamask/rpc-errors': 6.2.1 - '@metamask/safe-event-emitter': 3.0.0 - '@metamask/utils': 8.3.0 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.4.0 detect-browser: 5.3.0 extension-port-stream: 3.0.0 fast-deep-equal: 3.1.3 @@ -11789,16 +11377,16 @@ snapshots: '@metamask/rpc-errors@6.2.1': dependencies: - '@metamask/utils': 8.3.0 + '@metamask/utils': 8.4.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color '@metamask/safe-event-emitter@2.0.0': {} - '@metamask/safe-event-emitter@3.0.0': {} + '@metamask/safe-event-emitter@3.1.1': {} - '@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8))': + '@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5(bufferutil@4.0.8))': dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0(encoding@0.1.13) @@ -11807,27 +11395,27 @@ snapshots: eciesjs: 0.3.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.7.4(bufferutil@4.0.8) + socket.io-client: 4.7.5(bufferutil@4.0.8) utf-8-validate: 6.0.3 uuid: 8.3.2 transitivePeerDependencies: - supports-color - '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)': + '@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)': dependencies: i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 - react-i18next: 14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) + react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) optionalDependencies: react: 18.3.1 react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) - '@metamask/sdk@0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)': + '@metamask/sdk@0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 15.0.0 - '@metamask/sdk-communication-layer': 0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.4(bufferutil@4.0.8)) - '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) + '@metamask/sdk-communication-layer': 0.18.5(cross-fetch@4.0.0(encoding@0.1.13))(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5(bufferutil@4.0.8)) + '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0(encoding@0.1.13) @@ -11843,7 +11431,7 @@ snapshots: react-native-webview: 11.26.1(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0(rollup@4.17.2) - socket.io-client: 4.7.4(bufferutil@4.0.8) + socket.io-client: 4.7.5(bufferutil@4.0.8) util: 0.12.5 uuid: 8.3.2 optionalDependencies: @@ -11862,21 +11450,22 @@ snapshots: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 debug: 4.3.4 - semver: 7.6.0 - superstruct: 1.0.3 + semver: 7.6.1 + superstruct: 1.0.4 transitivePeerDependencies: - supports-color - '@metamask/utils@8.3.0': + '@metamask/utils@8.4.0': dependencies: '@ethereumjs/tx': 4.2.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 '@types/debug': 4.1.12 debug: 4.3.4 - pony-cause: 2.1.10 - semver: 7.6.0 - superstruct: 1.0.3 + pony-cause: 2.1.11 + semver: 7.6.1 + superstruct: 1.0.4 + uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -11884,7 +11473,7 @@ snapshots: dependencies: '@moralisweb3/common-core': 2.26.1(debug@4.3.4) '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) - axios: 1.6.7(debug@4.3.4) + axios: 1.6.8(debug@4.3.4) transitivePeerDependencies: - debug @@ -11910,7 +11499,7 @@ snapshots: '@moralisweb3/common-aptos-utils@2.26.1(debug@4.3.4)': dependencies: '@moralisweb3/common-core': 2.26.1(debug@4.3.4) - '@noble/hashes': 1.3.3 + '@noble/hashes': 1.4.0 transitivePeerDependencies: - debug @@ -11927,7 +11516,7 @@ snapshots: '@moralisweb3/common-core@2.26.1(debug@4.3.4)': dependencies: - axios: 1.6.7(debug@4.3.4) + axios: 1.6.8(debug@4.3.4) transitivePeerDependencies: - debug @@ -11993,49 +11582,49 @@ snapshots: transitivePeerDependencies: - debug - '@motionone/animation@10.16.3': + '@motionone/animation@10.17.0': dependencies: - '@motionone/easing': 10.16.3 - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@motionone/easing': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 tslib: 2.6.2 - '@motionone/dom@10.16.4': + '@motionone/dom@10.17.0': dependencies: - '@motionone/animation': 10.16.3 - '@motionone/generators': 10.16.4 - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@motionone/animation': 10.17.0 + '@motionone/generators': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 - '@motionone/easing@10.16.3': + '@motionone/easing@10.17.0': dependencies: - '@motionone/utils': 10.16.3 + '@motionone/utils': 10.17.0 tslib: 2.6.2 - '@motionone/generators@10.16.4': + '@motionone/generators@10.17.0': dependencies: - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 tslib: 2.6.2 '@motionone/svelte@10.16.4': dependencies: - '@motionone/dom': 10.16.4 + '@motionone/dom': 10.17.0 tslib: 2.6.2 - '@motionone/types@10.16.3': {} + '@motionone/types@10.17.0': {} - '@motionone/utils@10.16.3': + '@motionone/utils@10.17.0': dependencies: - '@motionone/types': 10.16.3 + '@motionone/types': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 '@motionone/vue@10.16.4': dependencies: - '@motionone/dom': 10.16.4 + '@motionone/dom': 10.17.0 tslib: 2.6.2 '@multiformats/dns@1.0.6': @@ -12067,16 +11656,12 @@ snapshots: dependencies: '@chainsafe/is-ip': 2.0.2 '@chainsafe/netmask': 2.0.0 - '@libp2p/interface': 1.3.0 + '@libp2p/interface': 1.3.1 '@multiformats/dns': 1.0.6 multiformats: 13.1.0 uint8-varint: 2.0.4 uint8arrays: 5.0.3 - '@noble/curves@1.1.0': - dependencies: - '@noble/hashes': 1.3.1 - '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 @@ -12087,12 +11672,12 @@ snapshots: '@noble/hashes@1.2.0': {} - '@noble/hashes@1.3.1': {} - '@noble/hashes@1.3.2': {} '@noble/hashes@1.3.3': {} + '@noble/hashes@1.4.0': {} + '@noble/secp256k1@1.7.1': {} '@nodelib/fs.scandir@2.1.5': @@ -12139,82 +11724,75 @@ snapshots: '@pagefind/windows-x64@1.1.0': optional: true - '@parcel/watcher-android-arm64@2.4.0': + '@parcel/watcher-android-arm64@2.4.1': optional: true - '@parcel/watcher-darwin-arm64@2.4.0': + '@parcel/watcher-darwin-arm64@2.4.1': optional: true - '@parcel/watcher-darwin-x64@2.4.0': + '@parcel/watcher-darwin-x64@2.4.1': optional: true - '@parcel/watcher-freebsd-x64@2.4.0': + '@parcel/watcher-freebsd-x64@2.4.1': optional: true - '@parcel/watcher-linux-arm-glibc@2.4.0': + '@parcel/watcher-linux-arm-glibc@2.4.1': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.0': + '@parcel/watcher-linux-arm64-glibc@2.4.1': optional: true - '@parcel/watcher-linux-arm64-musl@2.4.0': + '@parcel/watcher-linux-arm64-musl@2.4.1': optional: true - '@parcel/watcher-linux-x64-glibc@2.4.0': + '@parcel/watcher-linux-x64-glibc@2.4.1': optional: true - '@parcel/watcher-linux-x64-musl@2.4.0': + '@parcel/watcher-linux-x64-musl@2.4.1': optional: true - '@parcel/watcher-wasm@2.4.0': + '@parcel/watcher-wasm@2.4.1': dependencies: is-glob: 4.0.3 micromatch: 4.0.5 - '@parcel/watcher-win32-arm64@2.4.0': + '@parcel/watcher-win32-arm64@2.4.1': optional: true - '@parcel/watcher-win32-ia32@2.4.0': + '@parcel/watcher-win32-ia32@2.4.1': optional: true - '@parcel/watcher-win32-x64@2.4.0': + '@parcel/watcher-win32-x64@2.4.1': optional: true - '@parcel/watcher@2.4.0': + '@parcel/watcher@2.4.1': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 micromatch: 4.0.5 node-addon-api: 7.1.0 optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.0 - '@parcel/watcher-darwin-arm64': 2.4.0 - '@parcel/watcher-darwin-x64': 2.4.0 - '@parcel/watcher-freebsd-x64': 2.4.0 - '@parcel/watcher-linux-arm-glibc': 2.4.0 - '@parcel/watcher-linux-arm64-glibc': 2.4.0 - '@parcel/watcher-linux-arm64-musl': 2.4.0 - '@parcel/watcher-linux-x64-glibc': 2.4.0 - '@parcel/watcher-linux-x64-musl': 2.4.0 - '@parcel/watcher-win32-arm64': 2.4.0 - '@parcel/watcher-win32-ia32': 2.4.0 - '@parcel/watcher-win32-x64': 2.4.0 + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/utils@2.4.2': - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 + '@pkgr/core@0.1.1': {} - '@playwright/test@1.43.1': + '@playwright/test@1.44.0': dependencies: - playwright: 1.43.1 + playwright: 1.44.0 '@pnpm/config.env-replace@1.1.0': {} @@ -12228,7 +11806,7 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@polka/url@1.0.0-next.24': {} + '@polka/url@1.0.0-next.25': {} '@protobufjs/aspromise@1.1.2': {} @@ -12294,7 +11872,7 @@ snapshots: hermes-profile-transformer: 0.0.6 node-stream-zip: 1.15.0 ora: 5.4.1 - semver: 7.6.2 + semver: 7.6.1 strip-ansi: 5.2.0 wcwidth: 1.0.1 yaml: 2.4.2 @@ -12365,7 +11943,7 @@ snapshots: node-fetch: 2.7.0(encoding@0.1.13) open: 6.4.0 ora: 5.4.1 - semver: 7.6.2 + semver: 7.6.1 shell-quote: 1.8.1 sudo-prompt: 9.2.1 transitivePeerDependencies: @@ -12393,7 +11971,7 @@ snapshots: fs-extra: 8.1.0 graceful-fs: 4.2.11 prompts: 2.4.2 - semver: 7.6.2 + semver: 7.6.1 transitivePeerDependencies: - bufferutil - encoding @@ -12539,12 +12117,12 @@ snapshots: react: 18.3.1 react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) - '@readme/better-ajv-errors@1.6.0(ajv@8.12.0)': + '@readme/better-ajv-errors@1.6.0(ajv@8.13.0)': dependencies: '@babel/code-frame': 7.24.2 '@babel/runtime': 7.24.5 '@humanwhocodes/momoa': 2.0.4 - ajv: 8.12.0 + ajv: 8.13.0 chalk: 4.1.2 json-to-ast: 2.1.0 jsonpointer: 5.0.1 @@ -12562,10 +12140,10 @@ snapshots: '@apidevtools/openapi-schemas': 2.1.0 '@apidevtools/swagger-methods': 3.0.2 '@jsdevtools/ono': 7.1.3 - '@readme/better-ajv-errors': 1.6.0(ajv@8.12.0) + '@readme/better-ajv-errors': 1.6.0(ajv@8.13.0) '@readme/json-schema-ref-parser': 1.2.0 - ajv: 8.12.0 - ajv-draft-04: 1.0.0(ajv@8.12.0) + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) call-me-maybe: 1.0.2 openapi-types: 12.1.3 @@ -12628,9 +12206,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true - '@safe-global/safe-apps-provider@0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)': + '@safe-global/safe-apps-provider@0.18.1(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8)': dependencies: - '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -12638,58 +12216,52 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4)': + '@safe-global/safe-apps-sdk@8.1.0(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8)': dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.15.0 - viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + '@safe-global/safe-gateway-typescript-sdk': 3.21.1 + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@safe-global/safe-gateway-typescript-sdk@3.15.0': {} + '@safe-global/safe-gateway-typescript-sdk@3.21.1': {} - '@scure/base@1.1.5': {} + '@scure/base@1.1.6': {} '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.5 - - '@scure/bip32@1.3.1': - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 '@scure/bip32@1.3.2': dependencies: '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 '@scure/bip32@1.3.3': dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 '@scure/bip39@1.2.1': dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 '@scure/bip39@1.2.2': dependencies: '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 '@shikijs/core@1.5.1': {} @@ -12713,7 +12285,7 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@socket.io/component-emitter@3.1.0': {} + '@socket.io/component-emitter@3.1.2': {} '@solidity-parser/parser@0.18.0': {} @@ -12801,144 +12373,98 @@ snapshots: dependencies: lodash: 4.17.21 - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))': - dependencies: - '@sveltejs/kit': 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) - import-meta-resolve: 4.0.0 - - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))': + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))': dependencies: - '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) - import-meta-resolve: 4.0.0 + '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + import-meta-resolve: 4.1.0 - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))': + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))': dependencies: - '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) - import-meta-resolve: 4.0.0 + '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + import-meta-resolve: 4.1.0 - '@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': + '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 - devalue: 4.3.2 + devalue: 5.0.0 esm-env: 1.0.0 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.7 + magic-string: 0.30.10 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.13 + svelte: 4.2.16 tiny-glob: 0.2.9 vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) - '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': + '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 esm-env: 1.0.0 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.9 + magic-string: 0.30.10 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.15 + svelte: 4.2.16 tiny-glob: 0.2.9 vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) - '@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) - '@types/cookie': 0.6.0 - cookie: 0.6.0 - devalue: 5.0.0 - esm-env: 1.0.0 - import-meta-resolve: 4.0.0 - kleur: 4.1.5 - magic-string: 0.30.9 - mrmime: 2.0.0 - sade: 1.8.1 - set-cookie-parser: 2.6.0 - sirv: 2.0.4 - svelte: 4.2.15 - tiny-glob: 0.2.9 - vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) - - '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) debug: 4.3.4 - svelte: 4.2.13 + svelte: 4.2.16 vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) debug: 4.3.4 - svelte: 4.2.15 + svelte: 4.2.16 vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) - debug: 4.3.4 - svelte: 4.2.15 - vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.13)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.13 - svelte-hmr: 0.16.0(svelte@4.2.13) + magic-string: 0.30.10 + svelte: 4.2.16 + svelte-hmr: 0.16.0(svelte@4.2.16) vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) vitefu: 0.2.5(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)))(svelte@4.2.16)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.15 - svelte-hmr: 0.16.0(svelte@4.2.15) + magic-string: 0.30.10 + svelte: 4.2.16 + svelte-hmr: 0.16.0(svelte@4.2.16) vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)))(svelte@4.2.15)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) - debug: 4.3.4 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.15 - svelte-hmr: 0.16.0(svelte@4.2.15) - vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) - vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)) - transitivePeerDependencies: - - supports-color - '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 @@ -12955,7 +12481,7 @@ snapshots: mkdirp: 2.1.6 path-browserify: 1.0.1 - '@tsconfig/node10@1.0.9': {} + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -12990,7 +12516,7 @@ snapshots: '@types/bn.js@5.1.5': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.11 '@types/cookie@0.6.0': {} @@ -13000,7 +12526,7 @@ snapshots: '@types/dns-packet@5.6.5': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.11 '@types/dom-screen-wake-lock@1.0.3': {} @@ -13031,11 +12557,16 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/jest@29.5.12': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} - '@types/mdast@4.0.3': + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.2 @@ -13055,10 +12586,6 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@18.19.31': - dependencies: - undici-types: 5.26.5 - '@types/node@18.19.33': dependencies: undici-types: 5.26.5 @@ -13067,27 +12594,21 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.12.7': - dependencies: - undici-types: 5.26.5 - '@types/object-hash@3.0.6': {} '@types/pbkdf2@3.1.2': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.11 '@types/pug@2.0.10': {} '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 20.12.11 '@types/secp256k1@4.0.6': dependencies: - '@types/node': 20.12.7 - - '@types/semver@7.5.7': {} + '@types/node': 20.12.11 '@types/semver@7.5.8': {} @@ -13109,102 +12630,36 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0)(typescript@5.4.3)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.55.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.4 - eslint: 8.55.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.4 - eslint: 8.56.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3)': + '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.8.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/type-utils': 7.8.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.8.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3)': - dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 8.55.0 - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3)': - dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 8.56.0 + semver: 7.6.1 + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.8.0(eslint@8.56.0)(typescript@5.4.3)': + '@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 7.8.0 '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -13213,110 +12668,42 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@7.4.0': - dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 - - '@typescript-eslint/scope-manager@7.7.0': - dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 - '@typescript-eslint/scope-manager@7.8.0': dependencies: '@typescript-eslint/types': 7.8.0 '@typescript-eslint/visitor-keys': 7.8.0 - '@typescript-eslint/type-utils@7.4.0(eslint@8.55.0)(typescript@5.4.3)': - dependencies: - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) - debug: 4.3.4 - eslint: 8.55.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@7.4.0(eslint@8.56.0)(typescript@5.4.3)': - dependencies: - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) - debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@7.8.0(eslint@8.56.0)(typescript@5.4.3)': + '@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.8.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.3.0(typescript@5.4.3) + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@7.4.0': {} - - '@typescript-eslint/types@7.7.0': {} - '@typescript-eslint/types@7.8.0': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.3)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 - tsutils: 3.21.0(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3)': - dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.3)': - dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) + semver: 7.6.1 + tsutils: 3.21.0(typescript@5.4.5) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.3)': + '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 7.8.0 '@typescript-eslint/visitor-keys': 7.8.0 @@ -13324,66 +12711,38 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) + semver: 7.6.1 + ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.4.3)': + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3) - eslint: 8.56.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 8.57.0 eslint-scope: 5.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.4.0(eslint@8.55.0)(typescript@5.4.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - eslint: 8.55.0 - semver: 7.6.0 + semver: 7.6.1 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.4.0(eslint@8.56.0)(typescript@5.4.3)': + '@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - eslint: 8.56.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.8.0(eslint@8.56.0)(typescript@5.4.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.8.0 '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.3) - eslint: 8.56.0 - semver: 7.6.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.1 transitivePeerDependencies: - supports-color - typescript @@ -13393,16 +12752,6 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.4.0': - dependencies: - '@typescript-eslint/types': 7.4.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@7.7.0': - dependencies: - '@typescript-eslint/types': 7.7.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.8.0': dependencies: '@typescript-eslint/types': 7.8.0 @@ -13410,78 +12759,48 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitest/coverage-v8@1.4.0(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0))': + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0))': dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 debug: 4.3.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 istanbul-reports: 3.1.7 - magic-string: 0.30.7 - magicast: 0.3.3 + magic-string: 0.30.10 + magicast: 0.3.4 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 + strip-literal: 2.1.0 test-exclude: 6.0.0 - v8-to-istanbul: 9.2.0 - vitest: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) + vitest: 1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.31.0) transitivePeerDependencies: - supports-color - '@vitest/expect@1.5.0': + '@vitest/expect@1.6.0': dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 - '@vitest/expect@1.5.3': + '@vitest/runner@1.6.0': dependencies: - '@vitest/spy': 1.5.3 - '@vitest/utils': 1.5.3 - chai: 4.4.1 - - '@vitest/runner@1.5.0': - dependencies: - '@vitest/utils': 1.5.0 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/runner@1.5.3': - dependencies: - '@vitest/utils': 1.5.3 + '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 - '@vitest/snapshot@1.5.0': - dependencies: - magic-string: 0.30.9 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/snapshot@1.5.3': + '@vitest/snapshot@1.6.0': dependencies: - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 - '@vitest/spy@1.5.0': - dependencies: - tinyspy: 2.2.0 - - '@vitest/spy@1.5.3': + '@vitest/spy@1.6.0': dependencies: - tinyspy: 2.2.0 - - '@vitest/utils@1.5.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + tinyspy: 2.2.1 - '@vitest/utils@1.5.3': + '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -13548,10 +12867,10 @@ snapshots: '@vscode/l10n@0.0.18': {} - '@wagmi/cli@2.1.4(bufferutil@4.0.8)(typescript@5.4.3)': + '@wagmi/cli@2.1.4(bufferutil@4.0.8)(typescript@5.4.5)': dependencies: - abitype: 0.9.10(typescript@5.4.3)(zod@3.22.4) - bundle-require: 4.0.2(esbuild@0.19.12) + abitype: 0.9.10(typescript@5.4.5)(zod@3.23.8) + bundle-require: 4.1.0(esbuild@0.19.12) cac: 6.7.14 change-case: 4.1.2 chokidar: 3.6.0 @@ -13567,26 +12886,26 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.0 prettier: 3.2.5 - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) - zod: 3.22.4 + viem: 2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) + zod: 3.23.8 optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - bufferutil - utf-8-validate - '@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/connectors@4.3.5(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8)': dependencies: '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2) - '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) - '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) - '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) - '@walletconnect/ethereum-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) + '@metamask/sdk': 0.18.6(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2) + '@safe-global/safe-apps-provider': 0.18.1(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8) + '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8) + '@wagmi/core': 2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@6.0.3)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) + '@walletconnect/ethereum-provider': 2.13.0(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1) '@walletconnect/modal': 2.6.2(react@18.3.1) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + viem: 2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13603,39 +12922,25 @@ snapshots: - '@vercel/kv' - bufferutil - encoding + - ioredis - react - react-dom - react-i18next - react-native - rollup - supports-color + - uWebSockets.js - utf-8-validate - zod - '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(utf-8-validate@6.0.4)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8))(zod@3.23.8)': - dependencies: - eventemitter3: 5.0.1 - mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) - zustand: 4.4.1(react@18.3.1) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - '@types/react' - - bufferutil - - immer - - react - - utf-8-validate - - zod - - '@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@6.0.3)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8)': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + mipd: 0.0.5(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) + viem: 2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) zustand: 4.4.1(react@18.3.1) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - '@types/react' - bufferutil @@ -13644,62 +12949,25 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)': - dependencies: - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8) - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.9 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - isomorphic-unfetch: 3.1.0(encoding@0.1.13) - lodash.isequal: 4.5.0 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@walletconnect/core@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)': + '@walletconnect/core@2.13.0(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8) '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.12.2 - '@walletconnect/utils': 2.12.2 + '@walletconnect/types': 2.13.0 + '@walletconnect/utils': 2.13.0 events: 3.3.0 isomorphic-unfetch: 3.1.0(encoding@0.1.13) lodash.isequal: 4.5.0 - uint8arrays: 3.1.1 + uint8arrays: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13715,56 +12983,25 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(react@18.3.1) - '@walletconnect/sign-client': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) - '@walletconnect/types': 2.11.2 - '@walletconnect/universal-provider': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - react - - supports-color - - utf-8-validate - - '@walletconnect/ethereum-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)': + '@walletconnect/ethereum-provider@2.13.0(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.6.2(react@18.3.1) - '@walletconnect/sign-client': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) - '@walletconnect/types': 2.12.2 - '@walletconnect/universal-provider': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) - '@walletconnect/utils': 2.12.2 + '@walletconnect/sign-client': 2.13.0(bufferutil@4.0.8)(encoding@0.1.13) + '@walletconnect/types': 2.13.0 + '@walletconnect/universal-provider': 2.13.0(bufferutil@4.0.8)(encoding@0.1.13) + '@walletconnect/utils': 2.13.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -13782,8 +13019,9 @@ snapshots: - '@vercel/kv' - bufferutil - encoding + - ioredis - react - - supports-color + - uWebSockets.js - utf-8-validate '@walletconnect/events@1.0.1': @@ -13791,36 +13029,36 @@ snapshots: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 - '@walletconnect/heartbeat@1.2.1': + '@walletconnect/heartbeat@1.2.2': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 - tslib: 1.14.1 + events: 3.3.0 - '@walletconnect/jsonrpc-http-connection@1.0.7(encoding@0.1.13)': + '@walletconnect/jsonrpc-http-connection@1.0.8(encoding@0.1.13)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 cross-fetch: 3.1.8(encoding@0.1.13) - tslib: 1.14.1 + events: 3.3.0 transitivePeerDependencies: - encoding - '@walletconnect/jsonrpc-provider@1.0.13': + '@walletconnect/jsonrpc-provider@1.0.14': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - tslib: 1.14.1 + events: 3.3.0 - '@walletconnect/jsonrpc-types@1.0.3': + '@walletconnect/jsonrpc-types@1.0.4': dependencies: + events: 3.3.0 keyvaluestorage-interface: 1.0.0 - tslib: 1.14.1 '@walletconnect/jsonrpc-utils@1.0.8': dependencies: '@walletconnect/environment': 1.0.1 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.8)': @@ -13837,7 +13075,7 @@ snapshots: dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.1 - unstorage: 1.10.1(idb-keyval@6.2.1) + unstorage: 1.10.2(idb-keyval@6.2.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13850,7 +13088,8 @@ snapshots: - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' - - supports-color + - ioredis + - uWebSockets.js '@walletconnect/logger@2.1.2': dependencies: @@ -13882,10 +13121,9 @@ snapshots: - '@types/react' - react - '@walletconnect/relay-api@1.0.9': + '@walletconnect/relay-api@1.0.10': dependencies: - '@walletconnect/jsonrpc-types': 1.0.3 - tslib: 1.14.1 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/relay-auth@1.0.4': dependencies: @@ -13894,51 +13132,22 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 tslib: 1.14.1 - uint8arrays: 3.1.1 + uint8arrays: 3.1.0 '@walletconnect/safe-json@1.0.2': dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)': - dependencies: - '@walletconnect/core': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@walletconnect/sign-client@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)': + '@walletconnect/sign-client@2.13.0(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@walletconnect/core': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) + '@walletconnect/core': 2.13.0(bufferutil@4.0.8)(encoding@0.1.13) '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.12.2 - '@walletconnect/utils': 2.12.2 + '@walletconnect/types': 2.13.0 + '@walletconnect/utils': 2.13.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -13955,41 +13164,19 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate '@walletconnect/time@1.0.2': dependencies: tslib: 1.14.1 - '@walletconnect/types@2.11.2': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.1.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - supports-color - - '@walletconnect/types@2.12.2': + '@walletconnect/types@2.13.0': dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 events: 3.3.0 @@ -14006,47 +13193,19 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - supports-color - - '@walletconnect/universal-provider@2.11.2(bufferutil@4.0.8)(encoding@0.1.13)': - dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.11.2(bufferutil@4.0.8)(encoding@0.1.13) - '@walletconnect/types': 2.11.2 - '@walletconnect/utils': 2.11.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - bufferutil - - encoding - - supports-color - - utf-8-validate + - ioredis + - uWebSockets.js - '@walletconnect/universal-provider@2.12.2(bufferutil@4.0.8)(encoding@0.1.13)': + '@walletconnect/universal-provider@2.13.0(bufferutil@4.0.8)(encoding@0.1.13)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.12.2(bufferutil@4.0.8)(encoding@0.1.13) - '@walletconnect/types': 2.12.2 - '@walletconnect/utils': 2.12.2 + '@walletconnect/sign-client': 2.13.0(bufferutil@4.0.8)(encoding@0.1.13) + '@walletconnect/types': 2.13.0 + '@walletconnect/utils': 2.13.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14063,56 +13222,26 @@ snapshots: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate - '@walletconnect/utils@2.11.2': - dependencies: - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.9 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.2 - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - query-string: 7.1.3 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/kv' - - supports-color - - '@walletconnect/utils@2.12.2': + '@walletconnect/utils@2.13.0': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.12.2 + '@walletconnect/types': 2.13.0 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 query-string: 7.1.3 - uint8arrays: 3.1.1 + uint8arrays: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14126,7 +13255,8 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - supports-color + - ioredis + - uWebSockets.js '@walletconnect/window-getters@1.0.1': dependencies: @@ -14206,17 +13336,17 @@ snapshots: lit: 3.1.0 qrcode: 1.5.3 - '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(react@18.3.1)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))': + '@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.5(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(react@18.3.1)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))': dependencies: - '@wagmi/connectors': 4.3.1(@wagmi/core@2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) - '@wagmi/core': 2.8.1(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.3)(viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4))(zod@3.22.4) + '@wagmi/connectors': 4.3.5(@wagmi/core@2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8))(bufferutil@4.0.8)(encoding@0.1.13)(react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)(rollup@4.17.2)(typescript@5.4.5)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(zod@3.23.8))(zod@3.23.8) + '@wagmi/core': 2.9.3(bufferutil@4.0.8)(react@18.3.1)(typescript@5.4.5)(utf-8-validate@6.0.3)(viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8))(zod@3.23.8) '@web3modal/polyfills': 4.1.11 '@web3modal/scaffold': 4.1.11(react@18.3.1) '@web3modal/scaffold-react': 4.1.11(react@18.3.1) '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) '@web3modal/scaffold-vue': 4.1.11(react@18.3.1) '@web3modal/siwe': 4.1.11(react@18.3.1) - viem: 2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + viem: 2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) optionalDependencies: react: 18.3.1 transitivePeerDependencies: @@ -14229,39 +13359,29 @@ snapshots: '@webgpu/types@0.1.21': {} - '@zerodevx/svelte-toast@0.9.5(svelte@4.2.15)': + '@zerodevx/svelte-toast@0.9.5(svelte@4.2.16)': dependencies: - svelte: 4.2.15 - - abitype@0.9.10(typescript@5.4.3)(zod@3.22.4): - optionalDependencies: - typescript: 5.4.3 - zod: 3.22.4 + svelte: 4.2.16 - abitype@0.9.8(typescript@5.4.3)(zod@3.22.4): + abitype@0.9.10(typescript@5.4.5)(zod@3.23.8): optionalDependencies: - typescript: 5.4.3 - zod: 3.22.4 - - abitype@0.9.8(typescript@5.4.3)(zod@3.23.8): - optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 zod: 3.23.8 - abitype@1.0.0(typescript@5.4.3)(zod@3.22.4): + abitype@0.9.8(typescript@5.4.5)(zod@3.23.8): optionalDependencies: - typescript: 5.4.3 - zod: 3.22.4 + typescript: 5.4.5 + zod: 3.23.8 - abitype@1.0.0(typescript@5.4.3)(zod@3.23.8): + abitype@1.0.0(typescript@5.4.5)(zod@3.23.8): optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 zod: 3.23.8 - abitype@1.0.2(typescript@5.4.3)(zod@3.22.4): + abitype@1.0.2(typescript@5.4.5)(zod@3.23.8): optionalDependencies: - typescript: 5.4.3 - zod: 3.22.4 + typescript: 5.4.5 + zod: 3.23.8 abort-controller@3.0.0: dependencies: @@ -14282,15 +13402,15 @@ snapshots: aes-js@3.0.0: {} - agent-base@7.1.0: + agent-base@7.1.1: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - ajv-draft-04@1.0.0(ajv@8.12.0): + ajv-draft-04@1.0.0(ajv@8.13.0): optionalDependencies: - ajv: 8.12.0 + ajv: 8.13.0 ajv@6.12.6: dependencies: @@ -14299,7 +13419,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + ajv@8.13.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -14336,7 +13456,7 @@ snapshots: ansi-styles@6.2.1: {} - antlr4@4.13.1: {} + antlr4@4.13.1-patch-1: {} any-promise@1.3.0: {} @@ -14363,16 +13483,17 @@ snapshots: dependencies: dequal: 2.0.3 - array-buffer-byte-length@1.0.0: + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 - array-includes@3.1.7: + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 @@ -14380,37 +13501,39 @@ snapshots: array-union@2.1.0: {} - array.prototype.findlastindex@1.2.3: + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.4 array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.2: + arraybuffer.prototype.slice@1.0.3: dependencies: - array-buffer-byte-length: 1.0.0 + array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 get-intrinsic: 1.2.4 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 asap@2.0.6: {} @@ -14528,31 +13651,23 @@ snapshots: atomic-sleep@1.0.0: {} - autoprefixer@10.4.18(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001593 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - autoprefixer@10.4.19(postcss@8.4.38): dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001615 + caniuse-lite: 1.0.30001617 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.38 postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.5: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 - axios@1.6.7(debug@4.3.4): + axios@1.6.8(debug@4.3.4): dependencies: - follow-redirects: 1.15.5(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -14620,11 +13735,9 @@ snapshots: bech32@1.1.4: {} - big-integer@1.6.52: {} - bignumber.js@9.1.2: {} - binary-extensions@2.2.0: {} + binary-extensions@2.3.0: {} bl@4.1.0: dependencies: @@ -14642,7 +13755,7 @@ snapshots: blob-to-it@2.0.6: dependencies: - browser-readablestream-to-it: 2.0.6 + browser-readablestream-to-it: 2.0.7 bn.js@4.11.6: {} @@ -14665,10 +13778,6 @@ snapshots: widest-line: 4.0.1 wrap-ansi: 8.1.0 - bplist-parser@0.2.0: - dependencies: - big-integer: 1.6.52 - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -14686,7 +13795,7 @@ snapshots: browser-readablestream-to-it@1.0.3: {} - browser-readablestream-to-it@2.0.6: {} + browser-readablestream-to-it@2.0.7: {} browserify-aes@1.2.0: dependencies: @@ -14699,10 +13808,10 @@ snapshots: browserslist@4.23.0: dependencies: - caniuse-lite: 1.0.30001593 - electron-to-chromium: 1.4.676 + caniuse-lite: 1.0.30001617 + electron-to-chromium: 1.4.761 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.15(browserslist@4.23.0) bs58@4.0.1: dependencies: @@ -14742,13 +13851,15 @@ snapshots: bufferutil@4.0.8: dependencies: - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 + + builtin-modules@3.3.0: {} - bundle-name@3.0.0: + builtins@5.1.0: dependencies: - run-applescript: 5.0.0 + semver: 7.6.1 - bundle-require@4.0.2(esbuild@0.19.12): + bundle-require@4.1.0(esbuild@0.19.12): dependencies: esbuild: 0.19.12 load-tsconfig: 0.2.5 @@ -14768,7 +13879,7 @@ snapshots: http-cache-semantics: 4.1.1 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.0 + normalize-url: 8.0.1 responselike: 3.0.0 call-bind@1.0.7: @@ -14777,7 +13888,7 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.1 + set-function-length: 1.2.2 call-me-maybe@1.0.2: {} @@ -14806,9 +13917,7 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001593: {} - - caniuse-lite@1.0.30001615: {} + caniuse-lite@1.0.30001617: {} canvaskit-wasm@0.39.1: dependencies: @@ -14886,7 +13995,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chromatic@11.3.0: {} + chromatic@11.3.2: {} chrome-launcher@0.15.2: dependencies: @@ -14914,10 +14023,10 @@ snapshots: cli-boxes@3.0.0: {} - cli-color@2.0.3: + cli-color@2.0.4: dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 es6-iterator: 2.0.3 memoizee: 0.4.15 timers-ext: 0.1.7 @@ -14962,8 +14071,6 @@ snapshots: clsx@2.1.1: {} - cluster-key-slot@1.1.2: {} - code-block-writer@12.0.0: {} code-error-fragment@0.0.230: {} @@ -15042,6 +14149,8 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.7: {} + config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -15068,7 +14177,7 @@ snapshots: convert-source-map@2.0.0: {} - cookie-es@1.0.0: {} + cookie-es@1.1.0: {} cookie@0.6.0: {} @@ -15085,14 +14194,14 @@ snapshots: js-yaml: 3.14.1 parse-json: 4.0.0 - cosmiconfig@8.3.6(typescript@5.4.3): + cosmiconfig@8.3.6(typescript@5.4.5): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 crc-32@1.2.2: {} @@ -15133,7 +14242,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.1.1: {} + crossws@0.2.4: {} crypto-js@3.3.0: {} @@ -15159,26 +14268,17 @@ snapshots: culori@3.3.0: {} - d@1.0.1: + d@1.0.2: dependencies: - es5-ext: 0.10.62 - type: 1.2.0 + es5-ext: 0.10.64 + type: 2.7.2 dag-jose@4.0.0: dependencies: '@ipld/dag-cbor': 9.2.0 multiformats: 11.0.2 - daisyui@4.10.1(postcss@8.4.38): - dependencies: - css-selector-tokenizer: 0.8.0 - culori: 3.3.0 - picocolors: 1.0.0 - postcss-js: 4.0.1(postcss@8.4.38) - transitivePeerDependencies: - - postcss - - daisyui@4.10.3(postcss@8.4.38): + daisyui@4.11.1(postcss@8.4.38): dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 @@ -15192,11 +14292,27 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - date-fns@2.30.0: + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: dependencies: - '@babel/runtime': 7.23.9 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 - dayjs@1.10.1: {} + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.24.5 dayjs@1.11.10: {} @@ -15240,19 +14356,7 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@3.0.0: - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - - default-browser@4.0.0: - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - - defaults@1.0.4: + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -15266,8 +14370,6 @@ snapshots: define-lazy-prop@2.0.0: {} - define-lazy-prop@3.0.0: {} - define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -15280,8 +14382,6 @@ snapshots: denodeify@1.2.1: {} - denque@2.1.0: {} - depd@2.0.0: {} dequal@2.0.3: {} @@ -15302,8 +14402,6 @@ snapshots: dependencies: base-64: 1.0.0 - devalue@4.3.2: {} - devalue@5.0.0: {} devlop@1.1.0: @@ -15331,9 +14429,9 @@ snapshots: dns-over-http-resolver@2.1.3: dependencies: debug: 4.3.4 - native-fetch: 4.0.2(undici@5.28.3) + native-fetch: 4.0.2(undici@5.28.4) receptacle: 1.3.2 - undici: 5.28.3 + undici: 5.28.4 transitivePeerDependencies: - supports-color @@ -15362,12 +14460,12 @@ snapshots: dset@3.1.3: {} - duplexify@4.1.2: + duplexify@4.1.3: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 - stream-shift: 1.0.1 + stream-shift: 1.0.3 eastasianwidth@0.2.0: {} @@ -15383,7 +14481,7 @@ snapshots: dependencies: encoding: 0.1.13 - electron-to-chromium@1.4.676: {} + electron-to-chromium@1.4.761: {} elliptic@6.5.4: dependencies: @@ -15395,6 +14493,16 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + elliptic@6.5.5: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + emmet@2.4.7: dependencies: '@emmetio/abbreviation': 2.3.3 @@ -15420,7 +14528,7 @@ snapshots: engine.io-client@6.5.3(bufferutil@4.0.8): dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 engine.io-parser: 5.2.2 ws: 8.11.0(bufferutil@4.0.8) @@ -15432,11 +14540,6 @@ snapshots: engine.io-parser@5.2.2: {} - enhanced-resolve@5.16.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - entities@4.5.0: {} envinfo@7.13.0: {} @@ -15456,47 +14559,54 @@ snapshots: accepts: 1.3.8 escape-html: 1.0.3 - es-abstract@1.22.3: + es-abstract@1.23.3: dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 - es-set-tostringtag: 2.0.2 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 es-define-property@1.0.0: dependencies: @@ -15506,15 +14616,19 @@ snapshots: es-module-lexer@1.5.2: {} - es-set-tostringtag@2.0.2: + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 - has-tostringtag: 1.0.0 - hasown: 2.0.1 + has-tostringtag: 1.0.2 + hasown: 2.0.2 es-shim-unscopables@1.0.2: dependencies: - hasown: 2.0.1 + hasown: 2.0.2 es-to-primitive@1.2.1: dependencies: @@ -15522,31 +14636,32 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - es5-ext@0.10.62: + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 - es6-symbol: 3.1.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 next-tick: 1.1.0 es6-iterator@2.0.3: dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 es6-promise@3.3.1: {} - es6-symbol@3.1.3: + es6-symbol@3.1.4: dependencies: - d: 1.0.1 + d: 1.0.2 ext: 1.7.0 es6-weak-map@2.0.3: dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 es6-iterator: 2.0.3 - es6-symbol: 3.1.3 + es6-symbol: 3.1.4 esbuild@0.18.20: optionalDependencies: @@ -15663,37 +14778,21 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.0(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - semver: 7.6.0 - - eslint-compat-utils@0.5.0(eslint@8.56.0): - dependencies: - eslint: 8.56.0 - semver: 7.6.0 - - eslint-config-prettier@9.1.0(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - - eslint-config-prettier@9.1.0(eslint@8.56.0): + eslint-compat-utils@0.5.0(eslint@8.57.0): dependencies: - eslint: 8.56.0 + eslint: 8.57.0 + semver: 7.6.1 - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0))(eslint-plugin-n@17.6.0(eslint@8.55.0))(eslint-plugin-promise@6.1.1(eslint@8.55.0))(eslint@8.55.0): + eslint-config-prettier@9.1.0(eslint@8.57.0): dependencies: - eslint: 8.55.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0) - eslint-plugin-n: 17.6.0(eslint@8.55.0) - eslint-plugin-promise: 6.1.1(eslint@8.55.0) + eslint: 8.57.0 - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0))(eslint-plugin-n@17.6.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0): + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0): dependencies: - eslint: 8.56.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) - eslint-plugin-n: 17.6.0(eslint@8.56.0) - eslint-plugin-promise: 6.1.1(eslint@8.56.0) + eslint: 8.57.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) + eslint-plugin-n: 16.6.2(eslint@8.57.0) + eslint-plugin-promise: 6.1.1(eslint@8.57.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -15703,252 +14802,127 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.55.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.55.0)(typescript@5.4.3) - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) - eslint: 8.56.0 + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-es-x@7.6.0(eslint@8.55.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.10.0 - eslint: 8.55.0 - eslint-compat-utils: 0.5.0(eslint@8.55.0) - - eslint-plugin-es-x@7.6.0(eslint@8.56.0): + eslint-plugin-es-x@7.6.0(eslint@8.57.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 - eslint: 8.56.0 - eslint-compat-utils: 0.5.0(eslint@8.56.0) - - eslint-plugin-es@3.0.1(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 + eslint: 8.57.0 + eslint-compat-utils: 0.5.0(eslint@8.57.0) - eslint-plugin-es@3.0.1(eslint@8.56.0): + eslint-plugin-es@3.0.1(eslint@8.57.0): dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint@8.55.0): - dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) - hasown: 2.0.0 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.14.2 - optionalDependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.55.0)(typescript@5.4.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0): dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) - hasown: 2.0.1 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-n@17.6.0(eslint@8.55.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - enhanced-resolve: 5.16.1 - eslint: 8.55.0 - eslint-plugin-es-x: 7.6.0(eslint@8.55.0) - get-tsconfig: 4.7.5 - globals: 15.2.0 - ignore: 5.3.1 - minimatch: 9.0.4 - semver: 7.6.2 - - eslint-plugin-n@17.6.0(eslint@8.56.0): + eslint-plugin-n@16.6.2(eslint@8.57.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - enhanced-resolve: 5.16.1 - eslint: 8.56.0 - eslint-plugin-es-x: 7.6.0(eslint@8.56.0) - get-tsconfig: 4.7.5 - globals: 15.2.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + builtins: 5.1.0 + eslint: 8.57.0 + eslint-plugin-es-x: 7.6.0(eslint@8.57.0) + get-tsconfig: 4.7.4 + globals: 13.24.0 ignore: 5.3.1 - minimatch: 9.0.4 - semver: 7.6.2 - - eslint-plugin-node@11.1.0(eslint@8.55.0): - dependencies: - eslint: 8.55.0 - eslint-plugin-es: 3.0.1(eslint@8.55.0) - eslint-utils: 2.1.0 - ignore: 5.3.0 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 minimatch: 3.1.2 resolve: 1.22.8 - semver: 6.3.1 + semver: 7.6.1 - eslint-plugin-node@11.1.0(eslint@8.56.0): + eslint-plugin-node@11.1.0(eslint@8.57.0): dependencies: - eslint: 8.56.0 - eslint-plugin-es: 3.0.1(eslint@8.56.0) + eslint: 8.57.0 + eslint-plugin-es: 3.0.1(eslint@8.57.0) eslint-utils: 2.1.0 ignore: 5.3.1 minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 - eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.55.0))(eslint@8.55.0)(prettier@3.2.5): - dependencies: - eslint: 8.55.0 - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.6 - optionalDependencies: - '@types/eslint': 8.56.10 - eslint-config-prettier: 9.1.0(eslint@8.55.0) - - eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.56.0))(eslint@8.56.0)(prettier@3.2.5): + eslint-plugin-prettier@5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): dependencies: - eslint: 8.56.0 + eslint: 8.57.0 prettier: 3.2.5 prettier-linter-helpers: 1.0.0 - synckit: 0.8.6 + synckit: 0.8.8 optionalDependencies: '@types/eslint': 8.56.10 - eslint-config-prettier: 9.1.0(eslint@8.56.0) + eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-promise@6.1.1(eslint@8.55.0): + eslint-plugin-promise@6.1.1(eslint@8.57.0): dependencies: - eslint: 8.55.0 + eslint: 8.57.0 - eslint-plugin-promise@6.1.1(eslint@8.56.0): + eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): dependencies: - eslint: 8.56.0 + eslint: 8.57.0 - eslint-plugin-simple-import-sort@12.0.0(eslint@8.56.0): - dependencies: - eslint: 8.56.0 - - eslint-plugin-storybook@0.8.0(eslint@8.56.0)(typescript@5.4.3): + eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.4.5): dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.4.3) - eslint: 8.56.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.13)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4 - eslint: 8.56.0 - eslint-compat-utils: 0.5.0(eslint@8.56.0) - esutils: 2.0.3 - known-css-properties: 0.30.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) - postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - semver: 7.6.0 - svelte-eslint-parser: 0.35.0(svelte@4.2.13) - optionalDependencies: - svelte: 4.2.13 - transitivePeerDependencies: - - supports-color - - ts-node - - eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4 - eslint: 8.56.0 - eslint-compat-utils: 0.5.0(eslint@8.56.0) - esutils: 2.0.3 - known-css-properties: 0.30.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) - postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - semver: 7.6.0 - svelte-eslint-parser: 0.35.0(svelte@4.2.15) - optionalDependencies: - svelte: 4.2.15 - transitivePeerDependencies: - - supports-color - - ts-node - - eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.15)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + eslint-plugin-svelte@2.38.0(eslint@8.57.0)(svelte@4.2.16)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.56.0 - eslint-compat-utils: 0.5.0(eslint@8.56.0) + eslint: 8.57.0 + eslint-compat-utils: 0.5.0(eslint@8.57.0) esutils: 2.0.3 known-css-properties: 0.30.0 postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) postcss-safe-parser: 6.0.0(postcss@8.4.38) postcss-selector-parser: 6.0.16 - semver: 7.6.0 - svelte-eslint-parser: 0.35.0(svelte@4.2.15) + semver: 7.6.1 + svelte-eslint-parser: 0.36.0(svelte@4.2.16) optionalDependencies: - svelte: 4.2.15 + svelte: 4.2.16 transitivePeerDependencies: - supports-color - ts-node @@ -15971,55 +14945,12 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint@8.55.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - eslint@8.56.0: + eslint@8.57.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -16051,7 +14982,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -16059,6 +14990,13 @@ snapshots: esm-env@1.0.0: {} + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.2 + espree@9.6.1: dependencies: acorn: 8.11.3 @@ -16116,7 +15054,7 @@ snapshots: eth-block-tracker@7.1.0: dependencies: '@metamask/eth-json-rpc-provider': 1.0.1 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 json-rpc-random-id: 1.0.1 pify: 3.0.0 @@ -16125,7 +15063,7 @@ snapshots: eth-json-rpc-filters@6.0.1: dependencies: - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 async-mutex: 0.2.6 eth-query: 2.1.2 json-rpc-engine: 6.1.0 @@ -16144,9 +15082,9 @@ snapshots: dependencies: crypto-js: 3.3.0 - ethereum-bloom-filters@1.0.10: + ethereum-bloom-filters@1.1.0: dependencies: - js-sha3: 0.8.0 + '@noble/hashes': 1.4.0 ethereum-cryptography@0.1.3: dependencies: @@ -16173,13 +15111,6 @@ snapshots: '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 - ethereum-cryptography@2.1.2: - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/bip32': 1.3.1 - '@scure/bip39': 1.2.1 - ethereum-cryptography@2.1.3: dependencies: '@noble/curves': 1.3.0 @@ -16238,8 +15169,8 @@ snapshots: event-emitter@0.3.5: dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 event-target-shim@5.0.1: {} @@ -16266,18 +15197,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@7.2.0: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -16290,6 +15209,14 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + expressive-code@0.35.3: dependencies: '@expressive-code/core': 0.35.3 @@ -16330,7 +15257,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-redact@3.3.0: {} + fast-redact@3.5.0: {} fast-safe-stringify@2.1.1: {} @@ -16404,7 +15331,7 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 @@ -16412,15 +15339,15 @@ snapshots: dependencies: is-buffer: 2.0.5 - flatted@3.2.9: {} + flatted@3.3.1: {} flattie@1.1.1: {} flow-enums-runtime@0.0.6: {} - flow-parser@0.236.0: {} + flow-parser@0.235.1: {} - follow-redirects@1.15.5(debug@4.3.4): + follow-redirects@1.15.6(debug@4.3.4): optionalDependencies: debug: 4.3.4 @@ -16435,7 +15362,7 @@ snapshots: forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/36c303b7ffdd842d06b1ec2744c9b9b5fb3083f3: {} - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc: {} + forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/978ac6fadb62f5f0b723c996f64be52eddba6801: {} form-data-encoder@2.1.4: {} @@ -16475,7 +15402,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -16496,7 +15423,7 @@ snapshots: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 get-iterator@1.0.2: {} @@ -16506,12 +15433,13 @@ snapshots: get-stream@8.0.1: {} - get-symbol-description@1.0.0: + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 + es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.5: + get-tsconfig@4.7.4: dependencies: resolve-pkg-maps: 1.0.0 @@ -16525,13 +15453,13 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.3.10: + glob@10.3.12: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.1 + minipass: 7.1.0 + path-scurry: 1.10.2 glob@7.2.3: dependencies: @@ -16547,24 +15475,19 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.0.1 + minimatch: 5.1.6 once: 1.4.0 globals@11.12.0: {} - globals@13.23.0: - dependencies: - type-fest: 0.20.2 - globals@13.24.0: dependencies: type-fest: 0.20.2 - globals@15.2.0: {} - - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globalyzer@0.1.0: {} @@ -16620,17 +15543,20 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 - h3@1.10.2: + h3@1.11.1: dependencies: - cookie-es: 1.0.0 + cookie-es: 1.1.0 + crossws: 0.2.4 defu: 6.1.4 destr: 2.0.3 - iron-webcrypto: 1.0.0 + iron-webcrypto: 1.1.1 ohash: 1.1.3 - radix3: 1.1.0 - ufo: 1.4.0 + radix3: 1.1.2 + ufo: 1.5.3 uncrypto: 0.1.3 unenv: 1.9.0 + transitivePeerDependencies: + - uWebSockets.js has-bigints@1.0.2: {} @@ -16646,7 +15572,7 @@ snapshots: has-symbols@1.0.3: {} - has-tostringtag@1.0.0: + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 @@ -16663,11 +15589,7 @@ snapshots: hashlru@2.3.0: {} - hasown@2.0.0: - dependencies: - function-bind: 1.1.2 - - hasown@2.0.1: + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -16890,7 +15812,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -16904,24 +15826,22 @@ snapshots: https-proxy-agent@7.0.4: dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color human-signals@2.1.0: {} - human-signals@4.3.1: {} - human-signals@5.0.0: {} i18next-browser-languagedetector@7.1.0: dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 i18next@22.5.1: dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 iconv-lite@0.4.24: dependencies: @@ -16935,8 +15855,6 @@ snapshots: ieee754@1.2.1: {} - ignore@5.3.0: {} - ignore@5.3.1: {} image-size@1.1.1: @@ -16953,8 +15871,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-meta-resolve@4.0.0: {} - import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} @@ -16987,13 +15903,13 @@ snapshots: interface-store@5.1.8: {} - internal-slot@1.0.6: + internal-slot@1.0.7: dependencies: - get-intrinsic: 1.2.4 - hasown: 2.0.1 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 - intl-messageformat@10.5.11: + intl-messageformat@10.5.12: dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/fast-memoize': 2.2.0 @@ -17004,20 +15920,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - ioredis@5.3.2: - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.3.4 - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - ipfs-core-types@0.14.1: dependencies: '@ipld/dag-pb': 4.1.0 @@ -17026,7 +15928,7 @@ snapshots: '@libp2p/interface-peer-info': 1.0.10 '@libp2p/interface-pubsub': 3.0.7 '@multiformats/multiaddr': 11.6.1 - '@types/node': 18.19.31 + '@types/node': 18.19.33 interface-datastore: 7.0.4 ipfs-unixfs: 9.0.1 multiformats: 11.0.2 @@ -17040,7 +15942,7 @@ snapshots: '@multiformats/multiaddr-to-uri': 9.0.8 any-signal: 3.0.1 blob-to-it: 2.0.6 - browser-readablestream-to-it: 2.0.6 + browser-readablestream-to-it: 2.0.7 err-code: 3.0.1 ipfs-core-types: 0.14.1 ipfs-unixfs: 9.0.1 @@ -17110,7 +16012,7 @@ snapshots: transitivePeerDependencies: - encoding - iron-webcrypto@1.0.0: {} + iron-webcrypto@1.1.1: {} is-absolute-url@4.0.1: {} @@ -17124,13 +16026,12 @@ snapshots: is-arguments@1.1.1: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 - is-array-buffer@3.0.2: + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-typed-array: 1.1.12 is-arrayish@0.2.1: {} @@ -17142,24 +16043,32 @@ snapshots: is-binary-path@2.1.0: dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-buffer@2.0.5: {} + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + is-callable@1.2.7: {} is-core-module@2.13.1: dependencies: - hasown: 2.0.1 + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 is-date-object@1.0.5: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-decimal@2.0.1: {} @@ -17181,7 +16090,7 @@ snapshots: is-generator-function@1.0.10: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-glob@4.0.3: dependencies: @@ -17199,11 +16108,11 @@ snapshots: is-interactive@2.0.0: {} - is-negative-zero@2.0.2: {} + is-negative-zero@2.0.3: {} is-number-object@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -17228,9 +16137,9 @@ snapshots: is-regex@1.1.4: dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 - is-shared-array-buffer@1.0.2: + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 @@ -17240,15 +16149,15 @@ snapshots: is-string@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - is-typed-array@1.1.12: + is-typed-array@1.1.13: dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 is-unicode-supported@0.1.0: {} @@ -17293,9 +16202,9 @@ snapshots: transitivePeerDependencies: - encoding - isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): + isows@1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)): dependencies: - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) istanbul-lib-coverage@3.2.2: {} @@ -17358,6 +16267,13 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -17369,6 +16285,13 @@ snapshots: jest-get-type@29.6.3: {} + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.24.2 @@ -17426,7 +16349,7 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@8.0.3: {} + js-tokens@9.0.0: {} js-yaml@3.14.1: dependencies: @@ -17455,7 +16378,7 @@ snapshots: '@babel/register': 7.23.7(@babel/core@7.24.5) babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) chalk: 4.1.2 - flow-parser: 0.236.0 + flow-parser: 0.235.1 graceful-fs: 4.2.11 micromatch: 4.0.5 neo-async: 2.6.2 @@ -17466,7 +16389,7 @@ snapshots: transitivePeerDependencies: - supports-color - jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -17476,18 +16399,18 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 + nwsapi: 2.2.9 parse5: 7.1.2 rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + ws: 8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -17530,8 +16453,6 @@ snapshots: jsonc-parser@2.3.1: {} - jsonc-parser@3.2.0: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -17547,7 +16468,7 @@ snapshots: keccak@3.0.4: dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 readable-stream: 3.6.2 keyv@4.5.4: @@ -17623,26 +16544,28 @@ snapshots: lines-and-columns@1.2.4: {} - listhen@1.6.0: + listhen@1.7.2: dependencies: - '@parcel/watcher': 2.4.0 - '@parcel/watcher-wasm': 2.4.0 + '@parcel/watcher': 2.4.1 + '@parcel/watcher-wasm': 2.4.1 citty: 0.1.6 clipboardy: 4.0.0 consola: 3.2.3 - crossws: 0.1.1 + crossws: 0.2.4 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.10.2 + h3: 1.11.1 http-shutdown: 1.2.2 jiti: 1.21.0 - mlly: 1.5.0 + mlly: 1.7.0 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 - ufo: 1.4.0 + ufo: 1.5.3 untun: 0.1.3 uqr: 0.1.2 + transitivePeerDependencies: + - uWebSockets.js lit-element@3.3.3: dependencies: @@ -17650,17 +16573,17 @@ snapshots: '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 - lit-element@4.0.4: + lit-element@4.0.5: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 - lit-html: 3.1.2 + lit-html: 3.1.3 lit-html@2.8.0: dependencies: '@types/trusted-types': 2.0.7 - lit-html@3.1.2: + lit-html@3.1.3: dependencies: '@types/trusted-types': 2.0.7 @@ -17673,8 +16596,8 @@ snapshots: lit@3.1.0: dependencies: '@lit/reactive-element': 2.0.4 - lit-element: 4.0.4 - lit-html: 3.1.2 + lit-element: 4.0.5 + lit-html: 3.1.3 load-tsconfig@0.2.5: {} @@ -17687,8 +16610,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.5.0 - pkg-types: 1.0.3 + mlly: 1.7.0 + pkg-types: 1.1.0 locate-character@3.0.0: {} @@ -17711,10 +16634,6 @@ snapshots: lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} - - lodash.isarguments@3.1.0: {} - lodash.isequal@4.5.0: {} lodash.merge@4.6.2: {} @@ -17766,36 +16685,24 @@ snapshots: lowercase-keys@3.0.0: {} - lru-cache@10.2.0: {} + lru-cache@10.2.2: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lru-queue@0.1.0: dependencies: - es5-ext: 0.10.62 + es5-ext: 0.10.64 magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - magic-string@0.30.7: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magic-string@0.30.9: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magicast@0.3.3: + magicast@0.3.4: dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 source-map-js: 1.2.0 make-dir@2.1.0: @@ -17805,7 +16712,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.0 + semver: 7.6.1 make-error@1.3.6: {} @@ -17827,13 +16734,13 @@ snapshots: mdast-util-definitions@6.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@types/unist': 3.0.2 unist-util-visit: 5.0.0 mdast-util-directive@3.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@types/unist': 3.0.2 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 @@ -17846,14 +16753,14 @@ snapshots: mdast-util-find-and-replace@3.0.1: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 mdast-util-from-markdown@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@types/unist': 3.0.2 decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -17870,7 +16777,7 @@ snapshots: mdast-util-gfm-autolink-literal@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 @@ -17878,7 +16785,7 @@ snapshots: mdast-util-gfm-footnote@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 @@ -17888,7 +16795,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: @@ -17896,7 +16803,7 @@ snapshots: mdast-util-gfm-table@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 mdast-util-from-markdown: 2.0.0 @@ -17906,7 +16813,7 @@ snapshots: mdast-util-gfm-task-list-item@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 @@ -17929,7 +16836,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 @@ -17940,7 +16847,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@types/unist': 3.0.2 ccount: 2.0.1 devlop: 1.1.0 @@ -17968,7 +16875,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 mdast-util-to-markdown: 2.1.0 @@ -17977,13 +16884,13 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 mdast-util-to-hast@13.1.0: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.0 @@ -17994,7 +16901,7 @@ snapshots: mdast-util-to-markdown@2.1.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@types/unist': 3.0.2 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 @@ -18005,7 +16912,7 @@ snapshots: mdast-util-to-string@4.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdn-data@2.0.30: {} @@ -18013,8 +16920,8 @@ snapshots: memoizee@0.4.15: dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 es6-weak-map: 2.0.3 event-emitter: 0.3.5 is-promise: 2.2.2 @@ -18038,7 +16945,7 @@ snapshots: buffer-reverse: 1.0.1 crypto-js: 4.2.0 treeify: 1.1.0 - web3-utils: 1.10.3 + web3-utils: 1.10.4 metro-babel-transformer@0.80.9: dependencies: @@ -18520,7 +17427,7 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@5.0.1: + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 @@ -18528,33 +17435,19 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.4: dependencies: brace-expansion: 2.0.1 minimist@1.2.8: {} - minipass@7.0.4: {} - - mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8): - dependencies: - viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod + minipass@7.1.0: {} - mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4): + mipd@0.0.5(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8): dependencies: - viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4) + viem: 1.21.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -18568,12 +17461,12 @@ snapshots: mkdirp@2.1.6: {} - mlly@1.5.0: + mlly@1.7.0: dependencies: acorn: 8.11.3 pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.4.0 + pkg-types: 1.1.0 + ufo: 1.5.3 moralis@2.26.1(debug@4.3.4): dependencies: @@ -18595,11 +17488,11 @@ snapshots: motion@10.16.2: dependencies: - '@motionone/animation': 10.16.3 - '@motionone/dom': 10.16.4 + '@motionone/animation': 10.17.0 + '@motionone/dom': 10.17.0 '@motionone/svelte': 10.16.4 - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 '@motionone/vue': 10.16.4 mri@1.2.0: {} @@ -18638,9 +17531,9 @@ snapshots: dependencies: node-fetch: 2.7.0(encoding@0.1.13) - native-fetch@4.0.2(undici@5.28.3): + native-fetch@4.0.2(undici@5.28.4): dependencies: - undici: 5.28.3 + undici: 5.28.4 natural-compare@1.4.0: {} @@ -18673,7 +17566,7 @@ snapshots: dependencies: minimatch: 3.1.2 - node-fetch-native@1.6.2: {} + node-fetch-native@1.6.4: {} node-fetch@2.7.0(encoding@0.1.13): dependencies: @@ -18683,10 +17576,7 @@ snapshots: node-forge@1.3.1: {} - node-gyp-build@4.8.0: {} - - node-gyp-build@4.8.1: - optional: true + node-gyp-build@4.8.1: {} node-int64@0.4.0: {} @@ -18698,7 +17588,7 @@ snapshots: normalize-range@0.1.2: {} - normalize-url@8.0.0: {} + normalize-url@8.0.1: {} not@0.1.0: {} @@ -18706,10 +17596,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.2.0: - dependencies: - path-key: 4.0.0 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -18725,7 +17611,7 @@ snapshots: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - nwsapi@2.2.7: {} + nwsapi@2.2.9: {} ob1@0.80.9: {} @@ -18750,30 +17636,30 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - object.fromentries@2.0.7: + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - object.groupby@1.0.1: + object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.4 + es-abstract: 1.23.3 - object.values@1.1.7: + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 - ofetch@1.3.3: + ofetch@1.3.4: dependencies: destr: 2.0.3 - node-fetch-native: 1.6.2 - ufo: 1.4.0 + node-fetch-native: 1.6.4 + ufo: 1.5.3 ohash@1.1.3: {} @@ -18816,23 +17702,16 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - open@9.1.0: - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - openapi-types@12.1.3: {} - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 ora@5.4.1: dependencies: @@ -18933,7 +17812,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.0 + semver: 7.6.1 pagefind@1.1.0: optionalDependencies: @@ -18972,7 +17851,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -19015,10 +17894,10 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.1: + path-scurry@1.10.2: dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.2.2 + minipass: 7.1.0 path-to-regexp@6.2.2: {} @@ -19056,7 +17935,7 @@ snapshots: pino-abstract-transport@0.5.0: dependencies: - duplexify: 4.1.2 + duplexify: 4.1.3 split2: 4.2.0 pino-std-serializers@4.0.0: {} @@ -19064,7 +17943,7 @@ snapshots: pino@7.11.0: dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.3.0 + fast-redact: 3.5.0 on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pino-std-serializers: 4.0.0 @@ -19085,17 +17964,17 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-types@1.0.3: + pkg-types@1.1.0: dependencies: - jsonc-parser: 3.2.0 - mlly: 1.5.0 + confbox: 0.1.7 + mlly: 1.7.0 pathe: 1.1.2 - playwright-core@1.43.1: {} + playwright-core@1.44.0: {} - playwright@1.43.1: + playwright@1.44.0: dependencies: - playwright-core: 1.43.1 + playwright-core: 1.44.0 optionalDependencies: fsevents: 2.3.2 @@ -19103,7 +17982,9 @@ snapshots: pngjs@5.0.0: {} - pony-cause@2.1.10: {} + pony-cause@2.1.11: {} + + possible-typed-array-names@1.0.0: {} postcss-import@15.1.0(postcss@8.4.38): dependencies: @@ -19124,62 +18005,38 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.38 - postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): + postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.12.11)(typescript@5.4.3) + ts-node: 10.9.2(@types/node@20.12.11)(typescript@5.4.5) - postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)): dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 + lilconfig: 3.1.1 + yaml: 2.4.2 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + ts-node: 10.9.2(@types/node@20.12.11)(typescript@5.4.5) - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): + postcss-nested@5.0.6(postcss@8.4.38): dependencies: - lilconfig: 3.1.1 - yaml: 2.3.4 - optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.12.11)(typescript@5.4.3) + postcss-selector-parser: 6.0.16 - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + postcss-nested@6.0.1(postcss@8.4.38): dependencies: - lilconfig: 3.1.1 - yaml: 2.3.4 - optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + postcss-selector-parser: 6.0.16 - postcss-load-config@5.1.0(postcss@8.4.38): + postcss-nesting@12.1.2(postcss@8.4.38): dependencies: - lilconfig: 3.1.1 - yaml: 2.4.2 - optionalDependencies: - postcss: 8.4.38 - optional: true - - postcss-nested@5.0.6(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.15 - - postcss-nested@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.15 - - postcss-nesting@12.1.0(postcss@8.4.38): - dependencies: - '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.15) - '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.16) + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) postcss: 8.4.38 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 postcss-safe-parser@6.0.0(postcss@8.4.38): dependencies: @@ -19189,11 +18046,6 @@ snapshots: dependencies: postcss: 8.4.38 - postcss-selector-parser@6.0.15: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-selector-parser@6.0.16: dependencies: cssesc: 3.0.0 @@ -19207,7 +18059,7 @@ snapshots: picocolors: 1.0.0 source-map-js: 1.2.0 - preact@10.19.5: {} + preact@10.21.0: {} preferred-pm@3.1.3: dependencies: @@ -19222,15 +18074,10 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-svelte@3.2.2(prettier@3.2.5)(svelte@4.2.13): + prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.16): dependencies: prettier: 3.2.5 - svelte: 4.2.13 - - prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.15): - dependencies: - prettier: 3.2.5 - svelte: 4.2.15 + svelte: 4.2.16 prettier@2.8.8: optional: true @@ -19248,7 +18095,7 @@ snapshots: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 prismjs@1.29.0: {} @@ -19283,7 +18130,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.7 + '@types/node': 20.12.11 long: 5.2.3 proxy-compare@2.5.1: {} @@ -19335,7 +18182,7 @@ snapshots: quick-lru@5.1.1: {} - radix3@1.1.0: {} + radix3@1.1.2: {} randombytes@2.1.0: dependencies: @@ -19370,7 +18217,7 @@ snapshots: - bufferutil - utf-8-validate - react-i18next@14.1.1(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1): + react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.24.5 html-parse-stringify: 3.0.1 @@ -19381,8 +18228,6 @@ snapshots: react-is@17.0.2: {} - react-is@18.2.0: {} - react-is@18.3.1: {} react-native-fetch-api@3.0.0: @@ -19495,12 +18340,6 @@ snapshots: dependencies: ms: 2.1.3 - redis-errors@1.2.0: {} - - redis-parser@3.0.0: - dependencies: - redis-errors: 1.2.0 - regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 @@ -19515,11 +18354,12 @@ snapshots: dependencies: '@babel/runtime': 7.24.5 - regexp.prototype.flags@1.5.1: + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 regexpp@3.2.0: {} @@ -19575,7 +18415,7 @@ snapshots: remark-directive@3.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-directive: 3.0.0 micromark-extension-directive: 3.0.0 unified: 11.0.4 @@ -19584,7 +18424,7 @@ snapshots: remark-gfm@4.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 @@ -19602,7 +18442,7 @@ snapshots: remark-parse@11.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.0 micromark-util-types: 2.0.0 unified: 11.0.4 @@ -19612,7 +18452,7 @@ snapshots: remark-rehype@11.1.0: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-to-hast: 13.1.0 unified: 11.0.4 vfile: 6.0.1 @@ -19625,7 +18465,7 @@ snapshots: remark-stringify@11.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 unified: 11.0.4 @@ -19758,10 +18598,6 @@ snapshots: rrweb-cssom@0.6.0: {} - run-applescript@5.0.0: - dependencies: - execa: 5.1.1 - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -19770,7 +18606,7 @@ snapshots: dependencies: mri: 1.2.0 - safe-array-concat@1.0.1: + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -19781,10 +18617,10 @@ snapshots: safe-buffer@5.2.1: {} - safe-regex-test@1.0.0: + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + es-errors: 1.3.0 is-regex: 1.1.4 safe-stable-stringify@2.4.3: {} @@ -19812,15 +18648,15 @@ snapshots: secp256k1@4.0.3: dependencies: - elliptic: 6.5.4 + elliptic: 6.5.5 node-addon-api: 2.0.2 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 secp256k1@5.0.0: dependencies: - elliptic: 6.5.4 + elliptic: 6.5.5 node-addon-api: 5.1.0 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 section-matter@1.0.0: dependencies: @@ -19836,9 +18672,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.1: {} semver@7.6.2: {} @@ -19881,7 +18715,7 @@ snapshots: set-cookie-parser@2.6.0: {} - set-function-length@1.2.1: + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -19890,9 +18724,10 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.1: + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 @@ -19913,7 +18748,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.2 + semver: 7.6.1 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.3 '@img/sharp-darwin-x64': 0.33.3 @@ -19947,9 +18782,10 @@ snapshots: dependencies: '@shikijs/core': 1.5.1 - side-channel@1.0.4: + side-channel@1.0.6: dependencies: call-bind: 1.0.7 + es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 @@ -19965,7 +18801,7 @@ snapshots: sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 @@ -19999,9 +18835,9 @@ snapshots: dot-case: 3.0.4 tslib: 2.6.2 - socket.io-client@4.7.4(bufferutil@4.0.8): + socket.io-client@4.7.5(bufferutil@4.0.8): dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 engine.io-client: 6.5.3(bufferutil@4.0.8) socket.io-parser: 4.2.4 @@ -20012,7 +18848,7 @@ snapshots: socket.io-parser@4.2.4: dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -20023,7 +18859,7 @@ snapshots: dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.15.5(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.4) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -20031,15 +18867,15 @@ snapshots: transitivePeerDependencies: - debug - solhint@4.5.4(typescript@5.4.3): + solhint@4.5.4(typescript@5.4.5): dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 - antlr4: 4.13.1 + antlr4: 4.13.1-patch-1 ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.4.3) + cosmiconfig: 8.3.6(typescript@5.4.5) fast-diff: 1.3.0 glob: 8.1.0 ignore: 5.3.1 @@ -20047,9 +18883,9 @@ snapshots: latest-version: 7.0.0 lodash: 4.17.21 pluralize: 8.0.0 - semver: 7.6.0 + semver: 7.6.1 strip-ansi: 6.0.1 - table: 6.8.1 + table: 6.8.2 text-table: 0.2.0 optionalDependencies: prettier: 2.8.8 @@ -20102,8 +18938,6 @@ snapshots: dependencies: type-fest: 0.7.1 - standard-as-callback@2.1.0: {} - starlight-links-validator@0.8.0(@astrojs/starlight@0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)))(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)): dependencies: '@astrojs/starlight': 0.22.2(astro@4.8.3(@types/node@20.12.11)(terser@5.31.0)(typescript@5.4.5)) @@ -20140,7 +18974,7 @@ snapshots: stream-replace-string@2.0.0: {} - stream-shift@1.0.1: {} + stream-shift@1.0.3: {} stream-to-it@0.2.4: dependencies: @@ -20166,23 +19000,24 @@ snapshots: get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 - string.prototype.trim@1.2.8: + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.7: + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 - string.prototype.trimstart@1.0.7: + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 string_decoder@1.1.1: dependencies: @@ -20229,9 +19064,9 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.0.0: + strip-literal@2.1.0: dependencies: - js-tokens: 8.0.3 + js-tokens: 9.0.0 strnum@1.0.5: {} @@ -20245,9 +19080,9 @@ snapshots: sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.10 + glob: 10.3.12 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -20255,7 +19090,7 @@ snapshots: sudo-prompt@9.2.1: {} - superstruct@1.0.3: {} + superstruct@1.0.4: {} supports-color@5.5.0: dependencies: @@ -20271,7 +19106,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13): + svelte-check@3.7.1(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.16): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -20279,31 +19114,9 @@ snapshots: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.13 - svelte-preprocess: 5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss - - svelte-check@3.7.1(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - chokidar: 3.6.0 - fast-glob: 3.3.2 - import-fresh: 3.3.0 - picocolors: 1.0.0 - sade: 1.8.1 - svelte: 4.2.15 - svelte-preprocess: 5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3) - typescript: 5.4.3 + svelte: 4.2.16 + svelte-preprocess: 5.1.4(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.16)(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -20315,15 +19128,11 @@ snapshots: - stylus - sugarss - svelte-copy@1.4.2(svelte@4.2.15): - dependencies: - svelte: 4.2.15 - - svelte-countdown@1.1.2: + svelte-copy@1.4.2(svelte@4.2.16): dependencies: - dayjs: 1.10.1 + svelte: 4.2.16 - svelte-eslint-parser@0.35.0(svelte@4.2.13): + svelte-eslint-parser@0.36.0(svelte@4.2.16): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -20331,100 +19140,44 @@ snapshots: postcss: 8.4.38 postcss-scss: 4.0.9(postcss@8.4.38) optionalDependencies: - svelte: 4.2.13 + svelte: 4.2.16 - svelte-eslint-parser@0.35.0(svelte@4.2.15): + svelte-hmr@0.16.0(svelte@4.2.16): dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - postcss: 8.4.38 - postcss-scss: 4.0.9(postcss@8.4.38) - optionalDependencies: - svelte: 4.2.15 + svelte: 4.2.16 - svelte-hmr@0.16.0(svelte@4.2.13): + svelte-i18n@4.0.0(svelte@4.2.16): dependencies: - svelte: 4.2.13 - - svelte-hmr@0.16.0(svelte@4.2.15): - dependencies: - svelte: 4.2.15 - - svelte-i18n@4.0.0(svelte@4.2.13): - dependencies: - cli-color: 2.0.3 + cli-color: 2.0.4 deepmerge: 4.3.1 esbuild: 0.19.12 estree-walker: 2.0.2 - intl-messageformat: 10.5.11 + intl-messageformat: 10.5.12 sade: 1.8.1 - svelte: 4.2.13 + svelte: 4.2.16 tiny-glob: 0.2.9 - svelte-i18n@4.0.0(svelte@4.2.15): - dependencies: - cli-color: 2.0.3 - deepmerge: 4.3.1 - esbuild: 0.19.12 - estree-walker: 2.0.2 - intl-messageformat: 10.5.11 - sade: 1.8.1 - svelte: 4.2.15 - tiny-glob: 0.2.9 - - svelte-preprocess@5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3): - dependencies: - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.9 - sorcery: 0.11.0 - strip-indent: 3.0.0 - svelte: 4.2.13 - optionalDependencies: - '@babel/core': 7.24.5 - postcss: 8.4.38 - postcss-load-config: 5.1.0(postcss@8.4.38) - typescript: 5.4.3 - - svelte-preprocess@5.1.3(@babel/core@7.24.5)(postcss-load-config@5.1.0(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.3): + svelte-preprocess@5.1.4(@babel/core@7.24.5)(postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)))(postcss@8.4.38)(svelte@4.2.16)(typescript@5.4.5): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.9 + magic-string: 0.30.10 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.15 + svelte: 4.2.16 optionalDependencies: '@babel/core': 7.24.5 postcss: 8.4.38 - postcss-load-config: 5.1.0(postcss@8.4.38) - typescript: 5.4.3 + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) + typescript: 5.4.5 - svelte-scrolling@1.4.0(svelte@4.2.15): + svelte-scrolling@1.4.0(svelte@4.2.16): dependencies: - svelte: 4.2.15 + svelte: 4.2.16 - svelte@4.2.13: + svelte@4.2.16: dependencies: - '@ampproject/remapping': 2.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.7 - periscopic: 3.1.0 - - svelte@4.2.15: - dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 @@ -20436,21 +19189,21 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.9 + magic-string: 0.30.10 periscopic: 3.1.0 symbol-tree@3.2.4: {} - synckit@0.8.6: + synckit@0.8.8: dependencies: - '@pkgr/utils': 2.4.2 + '@pkgr/core': 0.1.1 tslib: 2.6.2 system-architecture@0.1.0: {} - table@6.8.1: + table@6.8.2: dependencies: - ajv: 8.12.0 + ajv: 8.13.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -20461,34 +19214,7 @@ snapshots: flat: 4.1.1 lodash: 4.17.21 - tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)): - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3)) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.15 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)): + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -20507,16 +19233,14 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5)) postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node - tapable@2.2.1: {} - temp-dir@2.0.0: {} temp@0.8.4: @@ -20563,7 +19287,7 @@ snapshots: timers-ext@0.1.7: dependencies: - es5-ext: 0.10.62 + es5-ext: 0.10.64 next-tick: 1.1.0 tiny-glob@0.2.9: @@ -20571,13 +19295,11 @@ snapshots: globalyzer: 0.1.0 globrex: 0.1.2 - tinybench@2.6.0: {} + tinybench@2.8.0: {} - tinypool@0.8.3: {} + tinypool@0.8.4: {} - tinyspy@2.2.0: {} - - titleize@3.0.0: {} + tinyspy@2.2.1: {} tmp@0.0.33: dependencies: @@ -20595,7 +19317,7 @@ snapshots: totalist@3.0.1: {} - tough-cookie@4.1.3: + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 @@ -20614,15 +19336,15 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.4.3): + ts-api-utils@1.3.0(typescript@5.4.5): dependencies: - typescript: 5.4.3 + typescript: 5.4.5 ts-dedent@2.2.0: {} - ts-essentials@9.4.1(typescript@5.4.3): + ts-essentials@9.4.2(typescript@5.4.5): optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 ts-interface-checker@0.1.13: {} @@ -20631,10 +19353,10 @@ snapshots: '@ts-morph/common': 0.20.0 code-block-writer: 12.0.0 - ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.3): + ts-node@10.9.2(@types/node@20.12.11)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 @@ -20645,38 +19367,15 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - - ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.7 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.4.3 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tsconfck@3.0.3(typescript@5.4.3): - optionalDependencies: - typescript: 5.4.3 - tsconfck@3.0.3(typescript@5.4.5): optionalDependencies: typescript: 5.4.5 - tsconfig-paths@3.14.2: + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -20687,10 +19386,10 @@ snapshots: tslib@2.6.2: {} - tsutils@3.21.0(typescript@5.4.3): + tsutils@3.21.0(typescript@5.4.5): dependencies: tslib: 1.14.1 - typescript: 5.4.3 + typescript: 5.4.5 tween-functions@1.2.0: {} @@ -20706,48 +19405,49 @@ snapshots: type-fest@2.19.0: {} - type@1.2.0: {} - type@2.7.2: {} - typed-array-buffer@1.0.0: + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 - is-typed-array: 1.1.12 + es-errors: 1.3.0 + is-typed-array: 1.1.13 - typed-array-byte-length@1.0.0: + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 has-proto: 1.0.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 - typed-array-byte-offset@1.0.0: + typed-array-byte-offset@1.0.2: dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 has-proto: 1.0.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 - typed-array-length@1.0.4: + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 typesafe-path@0.2.2: {} typescript-auto-import-cache@0.3.2: dependencies: - semver: 7.6.2 - - typescript@5.4.3: {} + semver: 7.6.1 typescript@5.4.5: {} - ufo@1.4.0: {} + ufo@1.5.3: {} uint8-varint@2.0.4: dependencies: @@ -20758,7 +19458,7 @@ snapshots: dependencies: uint8arrays: 5.0.3 - uint8arrays@3.1.1: + uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 @@ -20781,16 +19481,16 @@ snapshots: undici-types@5.26.5: {} - undici@5.28.3: + undici@5.28.4: dependencies: - '@fastify/busboy': 2.1.0 + '@fastify/busboy': 2.1.1 unenv@1.9.0: dependencies: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.6.2 + node-fetch-native: 1.6.4 pathe: 1.1.2 unfetch@4.2.0: {} @@ -20901,25 +19601,22 @@ snapshots: unpipe@1.0.0: {} - unstorage@1.10.1(idb-keyval@6.2.1): + unstorage@1.10.2(idb-keyval@6.2.1): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.10.2 - ioredis: 5.3.2 - listhen: 1.6.0 - lru-cache: 10.2.0 + h3: 1.11.1 + listhen: 1.7.2 + lru-cache: 10.2.2 mri: 1.2.0 - node-fetch-native: 1.6.2 - ofetch: 1.3.3 - ufo: 1.4.0 + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + ufo: 1.5.3 optionalDependencies: idb-keyval: 6.2.1 transitivePeerDependencies: - - supports-color - - untildify@4.0.0: {} + - uWebSockets.js untun@0.1.3: dependencies: @@ -20927,7 +19624,7 @@ snapshots: consola: 3.2.3 pathe: 1.1.2 - update-browserslist-db@1.0.13(browserslist@4.23.0): + update-browserslist-db@1.0.15(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.2 @@ -20957,13 +19654,8 @@ snapshots: react: 18.3.1 utf-8-validate@6.0.3: - dependencies: - node-gyp-build: 4.8.0 - - utf-8-validate@6.0.4: dependencies: node-gyp-build: 4.8.1 - optional: true utf8@3.0.0: {} @@ -20974,20 +19666,16 @@ snapshots: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.13 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 utils-merge@1.0.1: {} uuid@8.3.2: {} - v8-compile-cache-lib@3.0.1: {} + uuid@9.0.1: {} - v8-to-istanbul@9.2.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 + v8-compile-cache-lib@3.0.1: {} valtio@1.11.2(react@18.3.1): dependencies: @@ -21028,75 +19716,41 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.4.3)(zod@3.23.8) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.4.3)(zod@3.22.4) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - typescript: 5.4.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(utf-8-validate@6.0.4)(zod@3.23.8): + viem@1.21.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.3)(zod@3.23.8) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + abitype: 0.9.8(typescript@5.4.5)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.9.31(bufferutil@4.0.8)(typescript@5.4.3)(zod@3.22.4): + viem@2.10.2(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@6.0.3)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.3)(zod@3.22.4) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + abitype: 1.0.0(typescript@5.4.5)(zod@3.23.8) + isows: 1.0.3(ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)) + ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) optionalDependencies: - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - vite-node@1.5.0(@types/node@20.12.11)(terser@5.31.0): + vite-node@1.6.0(@types/node@20.12.11)(terser@5.31.0): dependencies: cac: 6.7.14 debug: 4.3.4 @@ -21113,73 +19767,28 @@ snapshots: - supports-color - terser - vite-node@1.5.3(@types/node@20.12.11)(terser@5.31.0): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-node@1.5.3(@types/node@20.12.7)(terser@5.31.0): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)): + vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)): dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.3) + tsconfck: 3.0.3(typescript@5.4.5) optionalDependencies: vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)): + vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(terser@5.31.0)): dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.3) + tsconfck: 3.0.3(typescript@5.4.5) optionalDependencies: vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)): - dependencies: - debug: 4.3.4 - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.3) - optionalDependencies: - vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) - transitivePeerDependencies: - - supports-color - - typescript - vite@4.5.3(@types/node@20.12.11)(terser@5.31.0): dependencies: esbuild: 0.18.20 @@ -21200,16 +19809,6 @@ snapshots: fsevents: 2.3.3 terser: 5.31.0 - vite@5.2.11(@types/node@20.12.7)(terser@5.31.0): - dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.17.2 - optionalDependencies: - '@types/node': 20.12.7 - fsevents: 2.3.3 - terser: 5.31.0 - vitefu@0.2.5(vite@4.5.3(@types/node@20.12.11)(terser@5.31.0)): optionalDependencies: vite: 4.5.3(@types/node@20.12.11)(terser@5.31.0) @@ -21218,116 +19817,44 @@ snapshots: optionalDependencies: vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) - vitefu@0.2.5(vite@5.2.11(@types/node@20.12.7)(terser@5.31.0)): - optionalDependencies: - vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) - - vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)): + vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)): dependencies: cross-fetch: 3.1.8(encoding@0.1.13) - vitest: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) + vitest: 1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.31.0) transitivePeerDependencies: - encoding - vitest-mock-extended@1.3.1(typescript@5.4.3)(vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)): + vitest-mock-extended@1.3.1(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0)): dependencies: - ts-essentials: 9.4.1(typescript@5.4.3) - typescript: 5.4.3 - vitest: 1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0) - - vitest@1.5.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.0): - dependencies: - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.7 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.3 - vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) - vite-node: 1.5.0(@types/node@20.12.11)(terser@5.31.0) - why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.12.11 - jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser + ts-essentials: 9.4.2(typescript@5.4.5) + typescript: 5.4.5 + vitest: 1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.31.0) - vitest@1.5.3(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0): + vitest@1.6.0(@types/node@20.12.11)(jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3))(terser@5.31.0): dependencies: - '@vitest/expect': 1.5.3 - '@vitest/runner': 1.5.3 - '@vitest/snapshot': 1.5.3 - '@vitest/spy': 1.5.3 - '@vitest/utils': 1.5.3 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.3 + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 vite: 5.2.11(@types/node@20.12.11)(terser@5.31.0) - vite-node: 1.5.3(@types/node@20.12.11)(terser@5.31.0) + vite-node: 1.6.0(@types/node@20.12.11)(terser@5.31.0) why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.12.11 - jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vitest@1.5.3(@types/node@20.12.7)(jsdom@24.0.0(bufferutil@4.0.8))(terser@5.31.0): - dependencies: - '@vitest/expect': 1.5.3 - '@vitest/runner': 1.5.3 - '@vitest/snapshot': 1.5.3 - '@vitest/spy': 1.5.3 - '@vitest/utils': 1.5.3 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.9 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.3 - vite: 5.2.11(@types/node@20.12.7)(terser@5.31.0) - vite-node: 1.5.3(@types/node@20.12.7)(terser@5.31.0) - why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.12.7 - jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) + jsdom: 24.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) transitivePeerDependencies: - less - lightningcss @@ -21378,7 +19905,7 @@ snapshots: volar-service-typescript@0.0.43(@volar/language-service@2.2.2): dependencies: path-browserify: 1.0.1 - semver: 7.6.2 + semver: 7.6.1 typescript-auto-import-cache: 0.3.2 vscode-languageserver-textdocument: 1.0.11 vscode-nls: 5.2.0 @@ -21439,22 +19966,11 @@ snapshots: '@ethersproject/abi': 5.7.0 web3-utils: 1.10.4 - web3-utils@1.10.3: - dependencies: - '@ethereumjs/util': 8.1.0 - bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereum-cryptography: 2.1.2 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 - web3-utils@1.10.4: dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 + ethereum-bloom-filters: 1.1.0 ethereum-cryptography: 2.1.3 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 @@ -21507,13 +20023,13 @@ snapshots: load-yaml-file: 0.2.0 path-exists: 4.0.0 - which-typed-array@1.1.13: + which-typed-array@1.1.15: dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 which@2.0.2: dependencies: @@ -21532,6 +20048,8 @@ snapshots: dependencies: string-width: 5.1.2 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -21576,15 +20094,15 @@ snapshots: optionalDependencies: bufferutil: 4.0.8 - ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.4 + utf-8-validate: 6.0.3 - ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): + ws@8.17.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): optionalDependencies: bufferutil: 4.0.8 - utf-8-validate: 6.0.4 + utf-8-validate: 6.0.3 xml-name-validator@5.0.0: {} @@ -21600,12 +20118,8 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - yaml@1.10.2: {} - yaml@2.3.4: {} - yaml@2.4.2: {} yargs-parser@18.1.3: From 92b657cb85020829da75586411e256b475df4be1 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 14 May 2024 18:47:22 +0800 Subject: [PATCH 098/100] test(taiko-client): enable a skipped unit test (#17165) --- packages/taiko-client/prover/prover_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/taiko-client/prover/prover_test.go b/packages/taiko-client/prover/prover_test.go index 3e175f0dcd2..d539c12b517 100644 --- a/packages/taiko-client/prover/prover_test.go +++ b/packages/taiko-client/prover/prover_test.go @@ -232,7 +232,6 @@ func (s *ProverTestSuite) TestOnBlockVerified() { } func (s *ProverTestSuite) TestContestWrongBlocks() { - s.T().Skip() s.p.cfg.ContesterMode = false s.Nil(s.p.initEventHandlers()) e := s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer()) From 5a9b0ecb0e1a7740c80d7fa1dff98266347bc337 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 14 May 2024 18:48:08 +0800 Subject: [PATCH 099/100] feat(taiko-client): remove an unused file (#17166) --- .../driver/chain_syncer/blob/syncer.go | 7 +- packages/taiko-client/pkg/rpc/blob_tx.go | 137 ------------------ packages/taiko-client/pkg/rpc/blob_tx_test.go | 74 ---------- .../proposer/transaction_builder/blob.go | 10 +- 4 files changed, 6 insertions(+), 222 deletions(-) delete mode 100644 packages/taiko-client/pkg/rpc/blob_tx.go delete mode 100644 packages/taiko-client/pkg/rpc/blob_tx_test.go diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index fdaed3bd418..b9590e2e7f0 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -255,12 +255,7 @@ func (s *Syncer) onBlockProposed( } txListBytes, err := txListFetcher.Fetch(ctx, tx, &event.Meta) if err != nil { - if errors.Is(err, rpc.ErrBlobInvalid) { - log.Info("Invalid blob detected", "blockID", event.BlockId) - txListBytes = []byte{} - } else { - return fmt.Errorf("failed to fetch tx list: %w", err) - } + return fmt.Errorf("failed to fetch tx list: %w", err) } // Decompress the transactions list and try to insert a new head block to L2 EE. diff --git a/packages/taiko-client/pkg/rpc/blob_tx.go b/packages/taiko-client/pkg/rpc/blob_tx.go deleted file mode 100644 index 97c7f0119b0..00000000000 --- a/packages/taiko-client/pkg/rpc/blob_tx.go +++ /dev/null @@ -1,137 +0,0 @@ -package rpc - -import ( - "errors" - "math/big" - - "github.com/ethereum-optimism/optimism/op-service/eth" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto/kzg4844" - "github.com/ethereum/go-ethereum/params" - "github.com/holiman/uint256" -) - -var ( - ErrBlobInvalid = errors.New("invalid blob encoding") -) - -// TransactBlobTx creates, signs and then sends blob transactions. -func (c *EthClient) TransactBlobTx( - opts *bind.TransactOpts, - contract common.Address, - input []byte, - sidecar *types.BlobTxSidecar, -) (*types.Transaction, error) { - // Sign the transaction and schedule it for execution - if opts.Signer == nil { - return nil, errors.New("no signer to authorize the transaction with") - } - // Create blob tx - blobTx, err := c.CreateBlobTx(opts, contract, input, sidecar) - if err != nil { - return nil, err - } - signedTx, err := opts.Signer(opts.From, types.NewTx(blobTx)) - if err != nil { - return nil, err - } - if opts.NoSend { - return signedTx, nil - } - if err := c.SendTransaction(opts.Context, signedTx); err != nil { - return nil, err - } - return signedTx, nil -} - -// CreateBlobTx creates a blob transaction by given parameters. -func (c *EthClient) CreateBlobTx( - opts *bind.TransactOpts, - contract common.Address, - input []byte, - sidecar *types.BlobTxSidecar, -) (*types.BlobTx, error) { - // Fetch the nonce for the account - var ( - nonce *hexutil.Uint64 - gas *hexutil.Uint64 - ) - if opts.Nonce != nil { - curNonce := hexutil.Uint64(opts.Nonce.Uint64()) - nonce = &curNonce - } - - if input == nil { - input = []byte{} - } - - if opts.GasLimit != 0 { - gasVal := hexutil.Uint64(opts.GasLimit) - gas = &gasVal - } - - rawTx, err := c.FillTransaction(opts.Context, &TransactionArgs{ - From: &opts.From, - To: &contract, - Gas: gas, - GasPrice: (*hexutil.Big)(opts.GasPrice), - MaxFeePerGas: (*hexutil.Big)(opts.GasFeeCap), - MaxPriorityFeePerGas: (*hexutil.Big)(opts.GasTipCap), - Value: (*hexutil.Big)(opts.Value), - Nonce: nonce, - Data: (*hexutil.Bytes)(&input), - AccessList: nil, - ChainID: nil, - BlobFeeCap: nil, - BlobHashes: sidecar.BlobHashes(), - }) - if err != nil { - return nil, err - } - - blobFeeCap := rawTx.BlobGasFeeCap() - if blobFeeCap == nil || blobFeeCap.Uint64() < params.BlobTxMinBlobGasprice { - blobFeeCap = new(big.Int).SetUint64(uint64(params.BlobTxMinBlobGasprice)) - } - - return &types.BlobTx{ - ChainID: uint256.MustFromBig(rawTx.ChainId()), - Nonce: rawTx.Nonce(), - GasTipCap: uint256.MustFromBig(rawTx.GasTipCap()), - GasFeeCap: uint256.MustFromBig(rawTx.GasFeeCap()), - Gas: rawTx.Gas(), - To: *rawTx.To(), - Value: uint256.MustFromBig(rawTx.Value()), - Data: rawTx.Data(), - AccessList: rawTx.AccessList(), - BlobFeeCap: uint256.MustFromBig(blobFeeCap), - BlobHashes: sidecar.BlobHashes(), - Sidecar: sidecar, - }, nil -} - -// MakeSidecar makes a sidecar which only includes one blob with the given data. -func MakeSidecar(data []byte) (*types.BlobTxSidecar, error) { - var blob eth.Blob - if err := blob.FromData(data); err != nil { - return nil, err - } - - sideCar := &types.BlobTxSidecar{Blobs: []kzg4844.Blob{*blob.KZGBlob()}} - for _, blob := range sideCar.Blobs { - commitment, err := kzg4844.BlobToCommitment(blob) - if err != nil { - return nil, err - } - proof, err := kzg4844.ComputeBlobProof(blob, commitment) - if err != nil { - return nil, err - } - sideCar.Commitments = append(sideCar.Commitments, commitment) - sideCar.Proofs = append(sideCar.Proofs, proof) - } - return sideCar, nil -} diff --git a/packages/taiko-client/pkg/rpc/blob_tx_test.go b/packages/taiko-client/pkg/rpc/blob_tx_test.go deleted file mode 100644 index 9cbebe95d0f..00000000000 --- a/packages/taiko-client/pkg/rpc/blob_tx_test.go +++ /dev/null @@ -1,74 +0,0 @@ -package rpc - -import ( - "context" - "os" - "testing" - "time" - - "github.com/ethereum-optimism/optimism/op-service/eth" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/stretchr/testify/assert" - - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" -) - -func TestSendingBlobTx(t *testing.T) { - t.SkipNow() - // Load environment variables. - utils.LoadEnv() - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - url := os.Getenv("L1_NODE_WS_ENDPOINT") - l1Client, err := NewEthClient(ctx, url, time.Second*20) - assert.NoError(t, err) - - priv := os.Getenv("L1_PROPOSER_PRIVATE_KEY") - sk, err := crypto.ToECDSA(common.FromHex(priv)) - assert.NoError(t, err) - - opts, err := bind.NewKeyedTransactorWithChainID(sk, l1Client.ChainID) - assert.NoError(t, err) - opts.Context = ctx - //opts.NoSend = true - - balance, err := l1Client.BalanceAt(ctx, opts.From, nil) - assert.NoError(t, err) - t.Logf("address: %s, balance: %s", opts.From.String(), balance.String()) - - data, dErr := os.ReadFile("./tx_blob.go") - assert.NoError(t, dErr) - //data := []byte{'s'} - sideCar, sErr := MakeSidecar(data) - assert.NoError(t, sErr) - - tx, err := l1Client.TransactBlobTx(opts, common.Address{}, nil, sideCar) - assert.NoError(t, err) - - receipt, err := bind.WaitMined(ctx, l1Client, tx) - assert.NoError(t, err) - assert.Equal(t, true, receipt.Status == types.ReceiptStatusSuccessful) - - t.Log("blob hash: ", tx.BlobHashes()[0].String()) - t.Log("block number: ", receipt.BlockNumber.Uint64()) - t.Log("tx hash: ", receipt.TxHash.String()) -} - -func TestMakeSideCar(t *testing.T) { - origin, err := os.ReadFile("./blob_tx.go") - assert.NoError(t, err) - - sideCar, mErr := MakeSidecar(origin) - assert.NoError(t, mErr) - - blob := eth.Blob(sideCar.Blobs[0]) - origin1, dErr := blob.ToData() - assert.NoError(t, dErr) - assert.Equal(t, hexutil.Bytes(origin), origin1) -} diff --git a/packages/taiko-client/proposer/transaction_builder/blob.go b/packages/taiko-client/proposer/transaction_builder/blob.go index cd6a4230f61..278d6e810ea 100644 --- a/packages/taiko-client/proposer/transaction_builder/blob.go +++ b/packages/taiko-client/proposer/transaction_builder/blob.go @@ -63,14 +63,14 @@ func (b *BlobTransactionBuilder) Build( includeParentMetaHash bool, txListBytes []byte, ) (*txmgr.TxCandidate, error) { - // Make a sidecar then calculate the blob hash. - sideCar, err := rpc.MakeSidecar(txListBytes) - if err != nil { + var blob = ð.Blob{} + if err := blob.FromData(txListBytes); err != nil { return nil, err } - var blob = ð.Blob{} - if err := blob.FromData(txListBytes); err != nil { + // Make a sidecar then calculate the blob hash. + sideCar, _, err := txmgr.MakeSidecar([]*eth.Blob{blob}) + if err != nil { return nil, err } From 1a3cf6f1fceba87d030c182ffade5ebf198f1c2e Mon Sep 17 00:00:00 2001 From: Korbinian Date: Tue, 14 May 2024 13:35:22 +0200 Subject: [PATCH 100/100] chore(repo): add taikoon ui to release please (#17167) --- release-please-config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/release-please-config.json b/release-please-config.json index 109eacb690a..143972fcbc6 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -11,6 +11,7 @@ "packages/protocol": {}, "packages/relayer": {}, "packages/taikoon": {}, + "packages/taikoon-ui": {}, "packages/taiko-client": {}, "packages/supplementary-contracts": {} },

    A-DJNzBo0$qC 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

    LZUe)taxoEEfC)@kKqbWp_{SD9` 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

    yKy}iVB?mAMJf-YQJo5^nW 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 F|3CSO$m0M2 literal 0 HcmV?d00001 diff --git a/packages/docs-site/src/assets/content/docs/core-concepts/taiko-nodes.png b/packages/docs-site/src/assets/content/docs/core-concepts/taiko-nodes.png new file mode 100644 index 0000000000000000000000000000000000000000..569edac5da33f27a65a966cabbc2055f860112b9 GIT binary patch literal 59427 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

    {);hTe+RAhIA+B7qMI{(KL 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%0D>Hje-jb;9 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

    MM?PVY~S!*KBId1nAA2n(}Zx_ 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 XdMPn`1bi)0Qz6O(nWG0Vkk}i$J z`G5;xq(Y$**4%*&j$s%mON~}?@1ZCdhJon7<8ga4dgGgYCXK}P7JP!;xVsHzG~)Ep zG4!7%diywI=%KqBxVwVbK`-|crA(!YagQu~M`BOmrX8-U3DgM{E+a&V3oSYdVl=3j zd`lumkRE|TNwYVQ?cbC>6?e(Hl<06pks)n|A1q2rLf=wv?l97z#Re@5{mmx0a$P2-dP)Z_rXzIxwd(Tb^?hVd?5Gl{6?UKAq#8fB<0c8ohM3f^2 zytNGVj=t}q@0i~^foep5eS>aD!S#b>d3%#QID=2qolJv}ELTgk%9u{4IGqIK3rc;Q4 z?Q%SImPY{Z+l`;tTzMwev#O#_^=`MOi>aM z!Q|QJ@e6)$-WNjA21%b)tnwL8uD87EGvr~(OvAkj4mA`y^&O(CutOpj`ysL!Jl9e2 zqJ`IO;I{Vom~06OfeWcnHC=;wbp_8~^Mn8JKSF))Px(LuDj^bF<6ZwdzFWn@-lHdJ zqvX2jxYZ>GvpKIme$L(HTh^}OogC(#{DmRiMv1jG0oe%(_anrUC*w*p>959a2dUtb9j2rcxrg?utR58h;ofS z=wZJ9WK>Mrl>Nf??rfO;9YNPHyMVvJBNAyvjHWy=U0ekZD?@(7?3|{AB1^W|9+OCkKTj2M&Otqj$zwkmlxfV z@oWTlH|g}(3Wl9yq$V(((Y6~7&Q8fc`U>0}L(JHH`ZJcVE_wLT7sy8yei+z3{V}a` zoPGQEP}WmCU0+cPM>Q(Q z-v5vyS~jmgqj=V*lbVh6b<5≥2;|b;f`BmzbAN$nW2SddJj56o$LynzL_yn^<>@ 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 z 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